From 3367a408b25efd4f720dd600e894e10269020013 Mon Sep 17 00:00:00 2001 From: Andrew Schultz Date: Thu, 8 Nov 2018 12:03:24 -0500 Subject: [PATCH 001/627] Add single2 method to Pair that can compute and return the Hessian matrix --- src/pair.cpp | 14 +++++++++++++- src/pair.h | 14 ++++++++++---- src/pair_lj_smooth_linear.cpp | 27 +++++++++++++++++++++++++-- src/pair_lj_smooth_linear.h | 1 + 4 files changed, 49 insertions(+), 7 deletions(-) diff --git a/src/pair.cpp b/src/pair.cpp index 18d561bdb5..f76bb54c36 100644 --- a/src/pair.cpp +++ b/src/pair.cpp @@ -301,7 +301,7 @@ void Pair::init_style() specific pair style can override this function ------------------------------------------------------------------------- */ -void Pair::init_list(int /*which*/, NeighList *ptr) +void Pair::init_list(int which, NeighList *ptr) { list = ptr; } @@ -1740,6 +1740,18 @@ void Pair::init_bitmap(double inner, double outer, int ntablebits, /* ---------------------------------------------------------------------- */ +void Pair::pairTensor(double fforce, double dfac, double delr[3], double phiTensor[6]) { + int m = 0; + for (int k=0; k<3; k++) { + phiTensor[m] = fforce; + for (int l=k; l<3; l++) { + if (l>k) phiTensor[m] = 0; + phiTensor[m++] += delr[k]*delr[l] * dfac; + } + } +} +/* ---------------------------------------------------------------------- */ + double Pair::memory_usage() { double bytes = comm->nthreads*maxeatom * sizeof(double); diff --git a/src/pair.h b/src/pair.h index c1a9e6eef8..a9506480be 100644 --- a/src/pair.h +++ b/src/pair.h @@ -145,6 +145,16 @@ class Pair : protected Pointers { return 0.0; } + void pairTensor(double fforce, double dfac, double delr[3], double phiTensor[6]); + + virtual double single2(int, int, int, int, + double, double[3], double, double, + double& fforce, double d2u[6]) { + fforce = 0.0; + for (int i=0; i<6; i++) d2u[i] = 0; + return 0.0; + } + virtual void settings(int, char **) = 0; virtual void coeff(int, char **) = 0; @@ -207,10 +217,6 @@ class Pair : protected Pointers { typedef union {int i; float f;} union_int_float_t; - // Accessor for the user-intel package to determine virial calc for hybrid - - inline int fdotr_is_set() const { return vflag_fdotr; } - protected: int vflag_fdotr; int maxeatom,maxvatom; diff --git a/src/pair_lj_smooth_linear.cpp b/src/pair_lj_smooth_linear.cpp index 17c789bcee..4cf8d6d3db 100644 --- a/src/pair_lj_smooth_linear.cpp +++ b/src/pair_lj_smooth_linear.cpp @@ -326,9 +326,9 @@ void PairLJSmoothLinear::read_restart_settings(FILE *fp) /* ---------------------------------------------------------------------- */ -double PairLJSmoothLinear::single(int /*i*/, int /*j*/, int itype, int jtype, +double PairLJSmoothLinear::single(int i, int j, int itype, int jtype, double rsq, - double /*factor_coul*/, double factor_lj, + double factor_coul, double factor_lj, double &fforce) { double r2inv,r6inv,forcelj,philj,r,rinv; @@ -347,3 +347,26 @@ double PairLJSmoothLinear::single(int /*i*/, int /*j*/, int itype, int jtype, return factor_lj*philj; } + +double PairLJSmoothLinear::single2(int i, int j, int itype, int jtype, double rsq, + double delr[3], double factor_coul, double factor_lj, + double &fforce, double d2u[6]) +{ + double r2inv,r6inv,forcelj,philj,r,rinv; + + r2inv = 1.0/rsq; + r6inv = r2inv*r2inv*r2inv; + rinv = sqrt(r2inv); + r = sqrt(rsq); + forcelj = r6inv*(lj1[itype][jtype]*r6inv-lj2[itype][jtype]); + forcelj = rinv*forcelj - dljcut[itype][jtype]; + fforce = factor_lj*forcelj*rinv; + + philj = r6inv*(lj3[itype][jtype]*r6inv-lj4[itype][jtype]); + philj = philj - ljcut[itype][jtype] + + (r-cut[itype][jtype])*dljcut[itype][jtype]; + + double d2r = factor_lj * r6inv * (13.0*lj1[itype][jtype]*r6inv - 7.0*lj2[itype][jtype])/rsq; + pairTensor(fforce, -(fforce + d2r) / rsq, delr, d2u); + return factor_lj*philj; +} diff --git a/src/pair_lj_smooth_linear.h b/src/pair_lj_smooth_linear.h index c18c442a18..9cee9f2951 100644 --- a/src/pair_lj_smooth_linear.h +++ b/src/pair_lj_smooth_linear.h @@ -38,6 +38,7 @@ class PairLJSmoothLinear : public Pair { void write_restart_settings(FILE *); void read_restart_settings(FILE *); double single(int, int, int, int, double, double, double, double &); + double single2(int, int, int, int, double, double[3], double, double, double&, double[6]); protected: double cut_global; -- GitLab From 29cd4eb5b6584d62dfc331ad9e58343264334b62 Mon Sep 17 00:00:00 2001 From: Andrew Schultz Date: Thu, 8 Nov 2018 12:03:51 -0500 Subject: [PATCH 002/627] Add HMA compute --- doc/src/compute.txt | 71 +----- doc/src/compute_hma.txt | 147 +++++++++++++ doc/src/computes.txt | 9 +- src/compute_hma.cpp | 470 ++++++++++++++++++++++++++++++++++++++++ src/compute_hma.h | 66 ++++++ 5 files changed, 689 insertions(+), 74 deletions(-) create mode 100644 doc/src/compute_hma.txt create mode 100644 src/compute_hma.cpp create mode 100644 src/compute_hma.h diff --git a/doc/src/compute.txt b/doc/src/compute.txt index 857795ffe5..676c00d7a5 100644 --- a/doc/src/compute.txt +++ b/doc/src/compute.txt @@ -173,65 +173,43 @@ There are also additional accelerated compute styles included in the LAMMPS distribution for faster performance on CPUs, GPUs, and KNLs. The individual style names on the "Commands compute"_Commands_compute.html doc page are followed by one or more of -(g,i,k,o,t) to indicate which accelerated styles exist. +(g,i,k,o,t) to indicate which accerlerated styles exist. -"ackland/atom"_compute_ackland_atom.html - "aggregate/atom"_compute_cluster_atom.html - aggregate ID for each atom -"angle"_compute_angle.html - -"angle/local"_compute_angle_local.html - "angle/local"_compute_bond_local.html - theta and energy of each angle "angmom/chunk"_compute_angmom_chunk.html - angular momentum for each chunk -"basal/atom"_compute_basal_atom.html - "body/local"_compute_body_local.html - attributes of body sub-particles "bond"_compute_bond.html - values computed by a bond style "bond/local"_compute_bond_local.html - distance and energy of each bond "centro/atom"_compute_centro_atom.html - centro-symmetry parameter for each atom "chunk/atom"_compute_chunk_atom.html - assign chunk IDs to each atom -"chunk/spread/atom"_compute_chunk_spread_atom.html - spreads chunk values to each atom in chunk "cluster/atom"_compute_cluster_atom.html - cluster ID for each atom "cna/atom"_compute_cna_atom.html - common neighbor analysis (CNA) for each atom -"cnp/atom"_compute_cnp_atom.html - "com"_compute_com.html - center-of-mass of group of atoms "com/chunk"_compute_com_chunk.html - center-of-mass for each chunk "contact/atom"_compute_contact_atom.html - contact count for each spherical particle "coord/atom"_compute_coord_atom.html - coordination number for each atom "damage/atom"_compute_damage_atom.html - Peridynamic damage for each atom -"dihedral"_compute_dihedral.html - "dihedral/local"_compute_dihedral_local.html - angle of each dihedral "dilatation/atom"_compute_dilatation_atom.html - Peridynamic dilatation for each atom -"dipole/chunk"_compute_dipole_chunk.html - "displace/atom"_compute_displace_atom.html - displacement of each atom -"dpd"_compute_dpd.html - -"dpd/atom"_compute_dpd_atom.html - -"edpd/temp/atom"_compute_edpd_temp_atom.html - -"entropy/atom"_compute_entropy_atom.html - "erotate/asphere"_compute_erotate_asphere.html - rotational energy of aspherical particles "erotate/rigid"_compute_erotate_rigid.html - rotational energy of rigid bodies "erotate/sphere"_compute_erotate_sphere.html - rotational energy of spherical particles "erotate/sphere/atom"_compute_erotate_sphere.html - rotational energy for each spherical particle -"erotate/sphere/atom"_compute_erotate_sphere_atom.html - "event/displace"_compute_event_displace.html - detect event on atom displacement -"fep"_compute_fep.html - -"force/tally"_compute_tally.html - "fragment/atom"_compute_cluster_atom.html - fragment ID for each atom -"global/atom"_compute_global_atom.html - "group/group"_compute_group_group.html - energy/force between two groups of atoms "gyration"_compute_gyration.html - radius of gyration of group of atoms "gyration/chunk"_compute_gyration_chunk.html - radius of gyration for each chunk "heat/flux"_compute_heat_flux.html - heat flux through a group of atoms -"heat/flux/tally"_compute_tally.html - "hexorder/atom"_compute_hexorder_atom.html - bond orientational order parameter q6 -"improper"_compute_improper.html - +"hma"_compute_hma.html - harmonically mapped averaging for atomic crystals "improper/local"_compute_improper_local.html - angle of each improper "inertia/chunk"_compute_inertia_chunk.html - inertia tensor for each chunk "ke"_compute_ke.html - translational kinetic energy "ke/atom"_compute_ke_atom.html - kinetic energy for each atom -"ke/atom/eff"_compute_ke_atom_eff.html - -"ke/eff"_compute_ke_eff.html - "ke/rigid"_compute_ke_rigid.html - translational kinetic energy of rigid bodies -"meso/e/atom"_compute_meso_e_atom.html - -"meso/rho/atom"_compute_meso_rho_atom.html - -"meso/t/atom"_compute_meso_t_atom.html - "msd"_compute_msd.html - mean-squared displacement of group of atoms "msd/chunk"_compute_msd_chunk.html - mean-squared displacement for each chunk "msd/nongauss"_compute_msd_nongauss.html - MSD and non-Gaussian parameter of group of atoms @@ -241,77 +219,36 @@ compute"_Commands_compute.html doc page are followed by one or more of "pair/local"_compute_pair_local.html - distance/energy/force of each pairwise interaction "pe"_compute_pe.html - potential energy "pe/atom"_compute_pe_atom.html - potential energy for each atom -"pe/mol/tally"_compute_tally.html - -"pe/tally"_compute_tally.html - "plasticity/atom"_compute_plasticity_atom.html - Peridynamic plasticity for each atom "pressure"_compute_pressure.html - total pressure and pressure tensor -"pressure/cylinder"_compute_pressure_cylinder.html - -"pressure/uef"_compute_pressure_uef.html - "property/atom"_compute_property_atom.html - convert atom attributes to per-atom vectors/arrays -"property/chunk"_compute_property_chunk.html - extract various per-chunk attributes "property/local"_compute_property_local.html - convert local attributes to localvectors/arrays -"ptm/atom"_compute_ptm_atom.html - +"property/chunk"_compute_property_chunk.html - extract various per-chunk attributes "rdf"_compute_rdf.html - radial distribution function g(r) histogram of group of atoms "reduce"_compute_reduce.html - combine per-atom quantities into a single global value -"reduce/chunk"_compute_reduce_chunk.html - reduce per-atom quantities within each chunk "reduce/region"_compute_reduce.html - same as compute reduce, within a region "rigid/local"_compute_rigid_local.html - extract rigid body attributes -"saed"_compute_saed.html - "slice"_compute_slice.html - extract values from global vector or array -"smd/contact/radius"_compute_smd_contact_radius.html - -"smd/damage"_compute_smd_damage.html - -"smd/hourglass/error"_compute_smd_hourglass_error.html - -"smd/internal/energy"_compute_smd_internal_energy.html - -"smd/plastic/strain"_compute_smd_plastic_strain.html - -"smd/plastic/strain/rate"_compute_smd_plastic_strain_rate.html - -"smd/rho"_compute_smd_rho.html - -"smd/tlsph/defgrad"_compute_smd_tlsph_defgrad.html - -"smd/tlsph/dt"_compute_smd_tlsph_dt.html - -"smd/tlsph/num/neighs"_compute_smd_tlsph_num_neighs.html - -"smd/tlsph/shape"_compute_smd_tlsph_shape.html - -"smd/tlsph/strain"_compute_smd_tlsph_strain.html - -"smd/tlsph/strain/rate"_compute_smd_tlsph_strain_rate.html - -"smd/tlsph/stress"_compute_smd_tlsph_stress.html - -"smd/triangle/vertices"_compute_smd_triangle_vertices.html - -"smd/triangle/vertices"_compute_smd_triangle_vertices.html - -"smd/ulsph/num/neighs"_compute_smd_ulsph_num_neighs.html - -"smd/ulsph/strain"_compute_smd_ulsph_strain.html - -"smd/ulsph/strain/rate"_compute_smd_ulsph_strain_rate.html - -"smd/ulsph/stress"_compute_smd_ulsph_stress.html - -"smd/vol"_compute_smd_vol.html - "sna/atom"_compute_sna_atom.html - calculate bispectrum coefficients for each atom "snad/atom"_compute_sna_atom.html - derivative of bispectrum coefficients for each atom "snav/atom"_compute_sna_atom.html - virial contribution from bispectrum coefficients for each atom -"spin"_compute_spin.html - "stress/atom"_compute_stress_atom.html - stress tensor for each atom -"stress/mop"_compute_stress_mop.html - -"stress/mop/profile"_compute_stress_mop.html - -"stress/tally"_compute_tally.html - -"tdpd/cc/atom"_compute_tdpd_cc_atom.html - "temp"_compute_temp.html - temperature of group of atoms "temp/asphere"_compute_temp_asphere.html - temperature of aspherical particles "temp/body"_compute_temp_body.html - temperature of body particles "temp/chunk"_compute_temp_chunk.html - temperature of each chunk "temp/com"_compute_temp_com.html - temperature after subtracting center-of-mass velocity -"temp/cs"_compute_temp_cs.html - "temp/deform"_compute_temp_deform.html - temperature excluding box deformation velocity -"temp/deform/eff"_compute_temp_deform_eff.html - -"temp/drude"_compute_temp_drude.html - -"temp/eff"_compute_temp_eff.html - "temp/partial"_compute_temp_partial.html - temperature excluding one or more dimensions of velocity "temp/profile"_compute_temp_profile.html - temperature excluding a binned velocity profile "temp/ramp"_compute_temp_ramp.html - temperature excluding ramped velocity component "temp/region"_compute_temp_region.html - temperature of a region of atoms -"temp/region/eff"_compute_temp_region_eff.html - -"temp/rotate"_compute_temp_rotate.html - "temp/sphere"_compute_temp_sphere.html - temperature of spherical particles -"temp/uef"_compute_temp_uef.html - "ti"_compute_ti.html - thermodynamic integration free energy values "torque/chunk"_compute_torque_chunk.html - torque applied on each chunk "vacf"_compute_vacf.html - velocity-autocorrelation function of group of atoms "vcm/chunk"_compute_vcm_chunk.html - velocity of center-of-mass for each chunk -"voronoi/atom"_compute_voronoi_atom.html - Voronoi volume and neighbors for each atom -"xrd"_compute_xrd.html - :ul +"voronoi/atom"_compute_voronoi_atom.html - Voronoi volume and neighbors for each atom :ul [Restrictions:] none diff --git a/doc/src/compute_hma.txt b/doc/src/compute_hma.txt new file mode 100644 index 0000000000..f71ddc9e2e --- /dev/null +++ b/doc/src/compute_hma.txt @@ -0,0 +1,147 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Section_commands.html#comm) + +:line + +compute hma command :h3 + +[Syntax:] + +compute ID group-ID hma temp-ID keyword ... :pre + +ID, group-ID are documented in "compute"_compute.html command :l +hma = style name of this compute command :l +temp-ID = ID of fix that specifies the set temperature during canonical simulation :l +keyword = {anharmonic} {u} {p Pharm} {cv} :l + {anharmonic} = compute will return anharmonic property values + {u} = compute will return potential energy + {p} = compute will return pressure. the following keyword must be the difference between the harmonic pressure and lattice pressure as described below + {cv} = compute will return the heat capacity :pre +:ule + +[Examples:] + +compute 2 all hma 1 u +compute 2 all hma 1 anharmonic u p 0.9 +compute 2 all hma 1 u cv :pre + + + +[Description:] + +Define a computation that calculates the properties of a solid (potential +energy, pressure or heat capacity), using the harmonically-mapped averaging +(HMA) method. +This command yields much higher precision than the equivalent compute commands +("compute pe"_compute_pe.html, "compute pressure"_compute_pressure.html, etc.) +commands during a canonical simulation of an atomic crystal. + + +In this method, the analytically known harmonic behavior of a crystal is removed from the traditional ensemble +averages, which leads to an accurate and precise measurement of the anharmonic contributions without contamination +by noise produced by the already-known harmonic behavior. +A detailed description of this method can be found in ("Moustafa"_#hma-Moustafa). The potential energy is computed by the formula: + +\begin\{equation\} +\left< U\right>_\{HMA\} = \frac\{d(N-1)\}\{2\beta\} + \left< U + \frac\{1\}\{2\} F\bullet\Delta r \right> +\end\{equation\} + +where \(N\) is the number of atoms in the system, \(\beta\) is the reciprocal of the thermodynamic temperature, \(d\) is the +dimensionality of the system (2 or 3 for 2d/3d), \(F\bullet\Delta r\) is the sum of dot products of the +atomic force vectors and displacement (from lattice sites) vectors, and \(U\) is the sum of +pair, bond, angle, dihedral, improper, kspace (long-range), and fix energies. + +The pressure is computed by the formula: + +\begin\{equation\} +\left< P\right>_\{HMA\} = \Delta \hat P + \left< P_\{vir\} + \frac\{\beta \Delta \hat P - \rho\}\{d(N-1)\} F\bullet\Delta r \right> +\end\{equation\} + +where \(\rho\) is the number density of the system, \(\Delta \hat P\) is the +difference between theh harmonic and lattice pressure, and \(P_\{vir\}\) is +the virial pressure computed as the sum of pair, bond, angle, dihedral, +improper, kspace (long-range), and fix contributions to the force on each +atom. Although the method will work for any value of \(\Delta \hat P\) +specified (use pressure "units"_units.html), the precision of the resultant +pressure is sensitive to \(\Delta \hat P\); the precision tends to be +best when \(\Delta \hat P\) is the actual the difference between the lattice +pressure and harmonic pressure. + +\begin\{equation\} +\left_\{HMA\} = \frac\{d k_B (N-1)\}\{2\} + \beta \left( \left< +U_\{HMA\}^2 \right> - \left^2 \right)/T + \frac\{1\}\{4 T\} +\left< F\bullet\Delta r + \Delta r \bullet \Phi \bullet \Delta r \right> +\end\{equation\} + +where \(\Phi\) is the Hessian of second derivatives. The compute hma command +computes the full expression for \(C_V\) except for the +\(\left^2\) in the variance term, which can be obtained by +passing the {u} keyword; you must add this extra contribution to the \(C_V\) +value reported by this compute. The variance term can cause significant +roundoff error when computing \(C_V\). To address this, the {anharmonic} +keyword can be passed and/or the output format can be speicified with more +digits. + +thermo_modify format float '%22.15e' :pre + +The {anharmonic} keyword will instruct the compute to return anharmonic +properties rather than the full properties (lattice, harmonic and anharmonic). +When using this keyword, the compute must be first active (it must be included +via a "thermo_style custom"_thermo_style.html command) while the atoms are +still at their lattice sites (before equilibration). + +The temp-ID specified with compute hma command should be same as the fix-ID of Nose-Hoover ("fix nvt"_fix_nh.html) or +Berendsen ("fix temp/berendsen"_fix_temp_berendsen.html) thermostat used for the simulation. While using this command, Langevin thermostat +("fix langevin"_fix_langevin.html) +should be avoided as its extra forces interfere with the HMA implementation. + + + +NOTE: Compute hma command should be used right after the energy minimization, when the atoms are at their lattice sites. +The simulation should not be started before this command has been used in the input script. + + +The following example illustrates the placement of this command in the input script: + + +min_style cg +minimize 1e-35 1e-15 50000 500000 +compute 1 all hma thermostatid u +fix thermostatid all nvt temp 600.0 600.0 100.0 :pre + + + +NOTE: Compute hma should be used when the atoms of the solid do not diffuse. Diffusion will reduce the precision in the potential energy computation. + + +NOTE: The "fix_modify energy yes"_fix_modify.html command must also be specified if a fix is to contribute potential energy to this command. + +:line + +[Output info:] + +This compute calculates a global vector that includes the n properties +requested as arguments to the command (the potential energy, pressure or heat +capacity). The elements of the vector can be accessed by indices 1-n by any +command that uses global vector values as input. See the "Howto +output"_Howto_output.html doc page for an overview of LAMMPS output options. + +The vector values calculated by this compute are "extensive". The +scalar value will be in energy "units"_units.html. + +[Restrictions:] Usage restricted to canonical (NVT) ensemble simulation only. + +[Related commands:] + +"compute pe"_compute_pe.html, "compute pressure"_compute_pressure.html + +[Default:] none + +:line + +:link(hma-Moustafa) +[(Moustafa)] Sabry G. Moustafa, Andrew J. Schultz, and David A. Kofke, {Very fast averaging of thermal properties of crystals by molecular simulation}, +"Phys. Rev. E \[92\], 043303 (2015)"_https://link.aps.org/doi/10.1103/PhysRevE.92.043303 diff --git a/doc/src/computes.txt b/doc/src/computes.txt index 926b8da222..c636633b38 100644 --- a/doc/src/computes.txt +++ b/doc/src/computes.txt @@ -6,7 +6,6 @@ Computes :h1 :maxdepth: 1 compute_ackland_atom - compute_adf compute_angle compute_angle_local compute_angmom_chunk @@ -16,7 +15,6 @@ Computes :h1 compute_bond_local compute_centro_atom compute_chunk_atom - compute_chunk_spread_atom compute_cluster_atom compute_cna_atom compute_cnp_atom @@ -46,6 +44,7 @@ Computes :h1 compute_gyration_chunk compute_heat_flux compute_hexorder_atom + compute_hma compute_improper compute_improper_local compute_inertia_chunk @@ -68,15 +67,12 @@ Computes :h1 compute_pe_atom compute_plasticity_atom compute_pressure - compute_pressure_cylinder compute_pressure_uef compute_property_atom compute_property_chunk compute_property_local - compute_ptm_atom compute_rdf compute_reduce - compute_reduce_chunk compute_rigid_local compute_saed compute_slice @@ -94,7 +90,7 @@ Computes :h1 compute_smd_tlsph_strain compute_smd_tlsph_strain_rate compute_smd_tlsph_stress - compute_smd_triangle_vertices + compute_smd_triangle_mesh_vertices compute_smd_ulsph_num_neighs compute_smd_ulsph_strain compute_smd_ulsph_strain_rate @@ -103,7 +99,6 @@ Computes :h1 compute_sna_atom compute_spin compute_stress_atom - compute_stress_mop compute_tally compute_tdpd_cc_atom compute_temp diff --git a/src/compute_hma.cpp b/src/compute_hma.cpp new file mode 100644 index 0000000000..ac976080ce --- /dev/null +++ b/src/compute_hma.cpp @@ -0,0 +1,470 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include +#include +#include +#include "compute_hma.h" +#include "atom.h" +#include "update.h" +#include "force.h" +#include "pair.h" +#include "bond.h" +#include "angle.h" +#include "dihedral.h" +#include "improper.h" +#include "kspace.h" +#include "group.h" +#include "domain.h" +#include "modify.h" +#include "fix.h" +#include "fix_store.h" +#include "memory.h" +#include "error.h" +#include "comm.h" +#include "neighbor.h" +#include "neigh_request.h" +#include "neigh_list.h" + +#include + + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +ComputeHMA::ComputeHMA(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg), id_temp(NULL), deltaR(NULL) +{ + if (narg < 4) error->all(FLERR,"Illegal compute hma command"); + if (igroup) error->all(FLERR,"Compute hma must use group all"); + if (strcmp(arg[3],"NULL") == 0) {error->all(FLERR,"fix ID specifying the set temperature of canonical simulation is required");} + else { + int n = strlen(arg[3]) + 1; + id_temp = new char[n]; + strcpy(id_temp,arg[3]); + } + + create_attribute = 1; + extscalar = 1; + timeflag = 1; + +// (from compute displace/atom) create a new fix STORE style +// our new fix's id (id_fix)= compute-ID + COMPUTE_STORE +// our new fix's group = same as compute group + + int n = strlen(id) + strlen("_COMPUTE_STORE") + 1; + id_fix = new char[n]; + strcpy(id_fix,id); + strcat(id_fix,"_COMPUTE_STORE"); + + char **newarg = new char*[6]; + newarg[0] = id_fix; + newarg[1] = group->names[igroup]; + newarg[2] = (char *) "STORE"; + newarg[3] = (char *) "peratom"; + newarg[4] = (char *) "1"; + newarg[5] = (char *) "3"; + modify->add_fix(6,newarg); + fix = (FixStore *) modify->fix[modify->nfix-1]; + + delete [] newarg; + + // calculate xu,yu,zu for fix store array + // skip if reset from restart file + + if (fix->restart_reset) fix->restart_reset = 0; + else { + double **xoriginal = fix->astore; + double **x = atom->x; + imageint *image = atom->image; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) + domain->unmap(x[i],image[i],xoriginal[i]); + } + + vector_flag = 1; + extvector = -1; + comm_forward = 0; // 3 if 2nd derivative needed + + computeU = computeP = computeCv = -1; + returnAnharmonic = 0; + std::vector extvec; + for (int iarg=4; iarg narg) error->all(FLERR,"Illegal fix hma command"); + computeP = extvec.size(); + deltaPcap = force->numeric(FLERR, arg[iarg+1]); + extvec.push_back(0); + iarg++; + } + else if (!strcasecmp(arg[iarg], "cv")) { + computeCv = extvec.size(); + comm_forward = 3; + extvec.push_back(1); + } + else if (!strcasecmp(arg[iarg], "anharmonic")) { + returnAnharmonic = -1; + } + else { + error->all(FLERR,"Illegal fix hma command"); + } + } + + if (extvec.size() == 0) { + error->all(FLERR,"Illegal fix hma command"); + } + size_vector = extvec.size(); + memory->create(vector, size_vector, "hma::vector"); + extlist = new int[size_vector]; + for (int i=0; i-1 || computeCv>-1) { + peflag = 1; + } + if (computeP>-1) { + pressflag = 1; + } + + nmax = 0; +} + +/* ---------------------------------------------------------------------- */ + +ComputeHMA::~ComputeHMA() +{ + // check nfix in case all fixes have already been deleted + if (modify->nfix) modify->delete_fix(id_fix); + + delete [] id_fix; + delete [] id_temp; + delete [] extlist; + memory->destroy(vector); + memory->destroy(deltaR); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeHMA::init() { + int irequest = neighbor->request(this,instance_me); + neighbor->requests[irequest]->pair = 0; + neighbor->requests[irequest]->compute = 1; + neighbor->requests[irequest]->occasional = 1; +} + +void ComputeHMA::init_list(int id, NeighList *ptr) { + list = ptr; +} + +void ComputeHMA::setup() +{ + int dummy=0; + int ifix = modify->find_fix(id_temp); + if (ifix < 0) error->all(FLERR,"Could not find compute hma temperature ID"); + double * temperat = (double *) modify->fix[ifix]->extract("t_target",dummy); + if (temperat==NULL) error->all(FLERR,"Could not find compute hma temperature ID"); + finaltemp = * temperat; + + + // set fix which stores original atom coords + + int ifix2 = modify->find_fix(id_fix); + if (ifix2 < 0) error->all(FLERR,"Could not find compute hma ID"); + fix = (FixStore *) modify->fix[ifix2]; +} + +/* ---------------------------------------------------------------------- */ + +void ComputeHMA::compute_vector() +{ + invoked_vector = update->ntimestep; + +// dx,dy,dz = displacement of atom from original position + // original unwrapped position is stored by fix + // for triclinic, need to unwrap current atom coord via h matrix + + // grow deltaR array if necessary + + if (comm_forward>0 && atom->nmax > nmax) { + memory->destroy(deltaR); + nmax = atom->nmax; + memory->create(deltaR,nmax,3,"hma:deltaR"); + } + + double **xoriginal = fix->astore; + double fdr = 0.0; + double **x = atom->x; + double **f = atom->f; + + imageint *image = atom->image; + int nlocal = atom->nlocal; + + double *h = domain->h; + double xprd = domain->xprd; + double yprd = domain->yprd; + double zprd = domain->zprd; + + double u = 0.0; + if (computeU>-1 || computeCv>-1) { + if (force->pair) u += force->pair->eng_vdwl + force->pair->eng_coul; + if (force->bond) u += force->bond->energy; + if (force->angle) u += force->angle->energy; + if (force->dihedral) u += force->dihedral->energy; + if (force->improper) u += force->improper->energy; + } + + int dimension = domain->dimension; + double p = 0, vol = 0; + if (computeP>-1) { + p = virial_compute(dimension); + vol = xprd * yprd; + if (dimension == 3) vol *= zprd; + p *= force->nktv2p / (dimension*vol); + if (returnAnharmonic == -1) { + pLat = p; + } + } + + if (domain->triclinic == 0) { + for (int i = 0; i < nlocal; i++) { + int xbox = (image[i] & IMGMASK) - IMGMAX; + int ybox = (image[i] >> IMGBITS & IMGMASK) - IMGMAX; + int zbox = (image[i] >> IMG2BITS) - IMGMAX; + double dx = x[i][0] + xbox*xprd - xoriginal[i][0]; + double dy = x[i][1] + ybox*yprd - xoriginal[i][1]; + double dz = x[i][2] + zbox*zprd - xoriginal[i][2]; + if (comm_forward>0) { + deltaR[i][0] = dx; + deltaR[i][1] = dy; + deltaR[i][2] = dz; + } + fdr += dx*f[i][0] + dy*f[i][1] + dz*f[i][2]; + } + } + else { + for (int i = 0; i < nlocal; i++) { + int xbox = (image[i] & IMGMASK) - IMGMAX; + int ybox = (image[i] >> IMGBITS & IMGMASK) - IMGMAX; + int zbox = (image[i] >> IMG2BITS) - IMGMAX; + double dx = x[i][0] + h[0]*xbox + h[5]*ybox + h[4]*zbox - xoriginal[i][0]; + double dy = x[i][1] + h[1]*ybox + h[3]*zbox - xoriginal[i][1]; + double dz = x[i][2] + h[2]*zbox - xoriginal[i][2]; + if (comm_forward>0) { + deltaR[i][0] = dx; + deltaR[i][1] = dy; + deltaR[i][2] = dz; + } + fdr += ((dx*f[i][0])+(dy*f[i][1])+(dz*f[i][2])); + } + } + + double phiSum = 0.0; + if (computeCv>-1) { + comm->forward_comm_compute(this); + int *type = atom->type; + double** cutsq = force->pair->cutsq; + if (force->pair) { + double **x = atom->x; + double **f = atom->f; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + double *special_coul = force->special_coul; + int newton_pair = force->newton_pair; + + if (update->firststep == update->ntimestep) neighbor->build_one(list,1); + else neighbor->build_one(list); + int inum = list->inum; + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + + for (int ii = 0; ii < inum; ii++) { + int i = ilist[ii]; + double fac = (newton_pair || i < nlocal) ? 1.0 : 0.5; + double* ix = x[i]; + int itype = type[i]; + int *jlist = firstneigh[i]; + int jnum = numneigh[i]; + double *idr = deltaR[i]; + for (int jj = 0; jj < jnum; jj++) { + int j = jlist[jj]; + if (!newton_pair && j>=nlocal) fac -= 0.5; + double factor_lj = special_lj[sbmask(j)]; + double factor_coul = special_coul[sbmask(j)]; + j &= NEIGHMASK; + double* jx = x[j]; + double delr[3]; + delr[0] = ix[0] - jx[0]; + delr[1] = ix[1] - jx[1]; + delr[2] = ix[2] - jx[2]; + double rsq = delr[0]*delr[0] + delr[1]*delr[1] + delr[2]*delr[2]; + int jtype = type[j]; + if (rsq < cutsq[itype][jtype]) { + double* jdr = deltaR[j]; + double fforce, d2u[6]; + force->pair->single2(i, j, itype, jtype, rsq, delr, factor_coul, factor_lj, fforce, d2u); + int m = 0; + for (int k=0; k<3; k++) { + double a = fac; + for (int l=k; l<3; l++) { + phiSum += a*(idr[k]*jdr[l]+jdr[k]*idr[l])*d2u[m]; + phiSum -= a*(idr[k]*idr[l]*d2u[m] + jdr[k]*jdr[l]*d2u[m]); + m++; + if (k==l) a *= 2; + } + } + } + } + } + } + } + +//adding PE for this processor + +//adding the energies of all processors + + double fdrTotal; + MPI_Allreduce(&fdr,&fdrTotal,1,MPI_DOUBLE,MPI_SUM,world); + double uTotal; + if (computeU>-1 || computeCv>-1) { + MPI_Allreduce(&u,&uTotal,1,MPI_DOUBLE,MPI_SUM,world); + if (returnAnharmonic == -1) { + uLat = uTotal; + } + if (computeU>-1) { + if (returnAnharmonic) { + vector[computeU] = uTotal - uLat + 0.5*fdrTotal; + } + else { + vector[computeU] = uTotal + 0.5*fdrTotal + 0.5*dimension*(atom->natoms - 1)*force->boltz*finaltemp; + } + } + } + + if (computeP>-1) { + double fv = ((deltaPcap)-(force->boltz*finaltemp*force->nktv2p*atom->natoms/vol))/(force->boltz*finaltemp*dimension*(atom->natoms - 1)); + if (returnAnharmonic) { + vector[computeP] = p - pLat + (fv*fdrTotal); + } + else { + vector[computeP] = p + (fv*fdrTotal) + deltaPcap; + } + } + + if (computeCv>-1) { + if (computeU==-1) MPI_Allreduce(&u,&uTotal,1,MPI_DOUBLE,MPI_SUM,world); + double buTot; + if (returnAnharmonic) { + buTot = (uTotal - uLat + 0.5*fdrTotal)/finaltemp; + } + else { + buTot = (uTotal + 0.5*fdrTotal)/finaltemp + 0.5*dimension*(atom->natoms - 1)*force->boltz; + } + double one = -0.25*(fdr + phiSum)/finaltemp; + double Cv; + MPI_Allreduce(&one,&Cv,1,MPI_DOUBLE,MPI_SUM,world); + vector[computeCv] = Cv + buTot*buTot; + if (!returnAnharmonic) { + vector[computeCv] += 0.5*dimension*(atom->natoms-1); + } + } + if (returnAnharmonic == -1) { + returnAnharmonic = 1; + } +} + +double ComputeHMA::virial_compute(int n) { + double v = 0; + + // sum contributions to virial from forces and fixes + + if (force->pair) v += sumVirial(n, force->pair->virial); + if (force->bond) v += sumVirial(n, force->bond->virial); + if (force->angle) v += sumVirial(n, force->angle->virial); + if (force->dihedral) v += sumVirial(n, force->dihedral->virial); + if (force->improper) v += sumVirial(n, force->improper->virial); + for (int i = 0; i < modify->nfix; i++) + if (modify->fix[i]->thermo_virial) v += sumVirial(n, modify->fix[i]->virial); + + // sum virial across procs + + double virial; + MPI_Allreduce(&v,&virial,1,MPI_DOUBLE,MPI_SUM,world); + + // KSpace virial contribution is already summed across procs + + if (force->kspace) + for (int i = 0; i < n; i++) virial += force->kspace->virial[i]; + return virial; +} + +/* ---------------------------------------------------------------------- */ + +int ComputeHMA::pack_forward_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + double **xoriginal = fix->astore; + imageint *image = atom->image; + double **x = atom->x; + double *h = domain->h; + double xprd = domain->xprd; + double yprd = domain->yprd; + double zprd = domain->zprd; + + int m = 0; + for (int ii = 0; ii < n; ii++) { + int i = list[ii]; + buf[m++] = deltaR[i][0]; + buf[m++] = deltaR[i][1]; + buf[m++] = deltaR[i][2]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void ComputeHMA::unpack_forward_comm(int n, int first, double *buf) +{ + double **xoriginal = fix->astore; + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + deltaR[i][0] = buf[m++]; + deltaR[i][1] = buf[m++]; + deltaR[i][2] = buf[m++]; + } +} + + +/* ---------------------------------------------------------------------- + initialize one atom's storage values, called when atom is created +------------------------------------------------------------------------- */ + +void ComputeHMA::set_arrays(int i) +{ + double **xoriginal = fix->astore; + double **x = atom->x; + xoriginal[i][0] = x[i][0]; + xoriginal[i][1] = x[i][1]; + xoriginal[i][2] = x[i][2]; +} diff --git a/src/compute_hma.h b/src/compute_hma.h new file mode 100644 index 0000000000..f40103c3c4 --- /dev/null +++ b/src/compute_hma.h @@ -0,0 +1,66 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef COMPUTE_CLASS + +ComputeStyle(HMA,ComputeHMA) + +#else + +#ifndef LMP_COMPUTE_HMA_H +#define LMP_COMPUTE_HMA_H + +#include "compute.h" + +namespace LAMMPS_NS { + +class ComputeHMA : public Compute { + public: + ComputeHMA(class LAMMPS *, int, char **); + ~ComputeHMA(); + void setup(); + void init(); + void init_list(int, class NeighList *); + void compute_vector(); + void set_arrays(int); + int pack_forward_comm(int, int *, double *, int, int *); + void unpack_forward_comm(int, int, double *); + + private: + int nmax; + int atomsingroup; + char *id_fix; + char *id_temp; + double finaltemp; + class FixStore *fix; + double boltz, nktv2p, inv_volume; + double deltaPcap; + double virial_compute(int); + static double sumVirial(int n, double* v) { + double x = 0; + for (int i=0; i Date: Fri, 9 Nov 2018 21:28:41 -0500 Subject: [PATCH 003/627] Cleanup, add memory_usage method --- src/compute_hma.cpp | 23 +++++++++++++---------- src/compute_hma.h | 1 + 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/compute_hma.cpp b/src/compute_hma.cpp index ac976080ce..c0a7901640 100644 --- a/src/compute_hma.cpp +++ b/src/compute_hma.cpp @@ -59,9 +59,9 @@ ComputeHMA::ComputeHMA(LAMMPS *lmp, int narg, char **arg) : extscalar = 1; timeflag = 1; -// (from compute displace/atom) create a new fix STORE style -// our new fix's id (id_fix)= compute-ID + COMPUTE_STORE -// our new fix's group = same as compute group + // (from compute displace/atom) create a new fix STORE style + // our new fix's id (id_fix)= compute-ID + COMPUTE_STORE + // our new fix's group = same as compute group int n = strlen(id) + strlen("_COMPUTE_STORE") + 1; id_fix = new char[n]; @@ -169,7 +169,8 @@ void ComputeHMA::init() { neighbor->requests[irequest]->occasional = 1; } -void ComputeHMA::init_list(int id, NeighList *ptr) { +void ComputeHMA::init_list(int id, NeighList *ptr) +{ list = ptr; } @@ -196,12 +197,7 @@ void ComputeHMA::compute_vector() { invoked_vector = update->ntimestep; -// dx,dy,dz = displacement of atom from original position - // original unwrapped position is stored by fix - // for triclinic, need to unwrap current atom coord via h matrix - // grow deltaR array if necessary - if (comm_forward>0 && atom->nmax > nmax) { memory->destroy(deltaR); nmax = atom->nmax; @@ -391,7 +387,8 @@ void ComputeHMA::compute_vector() } } -double ComputeHMA::virial_compute(int n) { +double ComputeHMA::virial_compute(int n) +{ double v = 0; // sum contributions to virial from forces and fixes @@ -468,3 +465,9 @@ void ComputeHMA::set_arrays(int i) xoriginal[i][1] = x[i][1]; xoriginal[i][2] = x[i][2]; } + +double ComputeHMA::memory_usage() +{ + double bytes = nmax * 3 * sizeof(double); + return bytes; +} diff --git a/src/compute_hma.h b/src/compute_hma.h index f40103c3c4..44906b53a1 100644 --- a/src/compute_hma.h +++ b/src/compute_hma.h @@ -35,6 +35,7 @@ class ComputeHMA : public Compute { void set_arrays(int); int pack_forward_comm(int, int *, double *, int, int *); void unpack_forward_comm(int, int, double *); + double memory_usage(); private: int nmax; -- GitLab From 101948ce1e2c0084b1b4e9774446e9e751a98132 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eugen=20Ro=C5=BEi=C4=87?= Date: Thu, 21 Feb 2019 01:49:04 +0100 Subject: [PATCH 004/627] Added a Morse potential option to 'fix wall/region' --- src/fix_wall_region.cpp | 34 ++++++++++++++++++++++++++++++---- src/fix_wall_region.h | 2 ++ 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/src/fix_wall_region.cpp b/src/fix_wall_region.cpp index ff147d7446..2b16ec3bf4 100644 --- a/src/fix_wall_region.cpp +++ b/src/fix_wall_region.cpp @@ -31,7 +31,7 @@ using namespace LAMMPS_NS; using namespace FixConst; using namespace MathConst; -enum{LJ93,LJ126,LJ1043,COLLOID,HARMONIC}; +enum{LJ93,LJ126,LJ1043,MORSE,COLLOID,HARMONIC}; /* ---------------------------------------------------------------------- */ @@ -39,7 +39,7 @@ FixWallRegion::FixWallRegion(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), idregion(NULL) { - if (narg != 8) error->all(FLERR,"Illegal fix wall/region command"); + if (narg < 8) error->all(FLERR,"Illegal fix wall/region command"); scalar_flag = 1; vector_flag = 1; @@ -63,6 +63,7 @@ FixWallRegion::FixWallRegion(LAMMPS *lmp, int narg, char **arg) : if (strcmp(arg[4],"lj93") == 0) style = LJ93; else if (strcmp(arg[4],"lj126") == 0) style = LJ126; else if (strcmp(arg[4],"lj1043") == 0) style = LJ1043; + else if (strcmp(arg[4],"morse") == 0) style = MORSE; else if (strcmp(arg[4],"colloid") == 0) style = COLLOID; else if (strcmp(arg[4],"harmonic") == 0) style = HARMONIC; else error->all(FLERR,"Illegal fix wall/region command"); @@ -73,6 +74,14 @@ FixWallRegion::FixWallRegion(LAMMPS *lmp, int narg, char **arg) : sigma = force->numeric(FLERR,arg[6]); cutoff = force->numeric(FLERR,arg[7]); + if (style == MORSE) { + if (narg != 9) + error->all(FLERR,"Illegal fix wall/region command"); + else + alpha = force->numeric(FLERR,arg[8]); + } else if (narg != 8) + error->all(FLERR,"Illegal fix wall/region command"); + if (cutoff <= 0.0) error->all(FLERR,"Fix wall/region cutoff <= 0.0"); eflag = 0; @@ -157,12 +166,15 @@ void FixWallRegion::init() coeff5 = coeff1 * 10.0; coeff6 = coeff2 * 4.0; coeff7 = coeff3 * 3.0; - double rinv = 1.0/cutoff; double r2inv = rinv*rinv; double r4inv = r2inv*r2inv; offset = coeff1*r4inv*r4inv*r2inv - coeff2*r4inv - coeff3*pow(cutoff+coeff4,-3.0); + } else if (style == MORSE) { + coeff1 = 2 * epsilon * alpha; + double alpha_dr = -alpha * (cutoff - sigma); + offset = epsilon * (exp(2.0*alpha_dr) - 2.0*exp(alpha_dr)); } else if (style == COLLOID) { coeff1 = -4.0/315.0 * epsilon * pow(sigma,6.0); coeff2 = -2.0/3.0 * epsilon; @@ -253,6 +265,7 @@ void FixWallRegion::post_force(int vflag) if (style == LJ93) lj93(region->contact[m].r); else if (style == LJ126) lj126(region->contact[m].r); else if (style == LJ1043) lj1043(region->contact[m].r); + else if (style == MORSE) morse(region->contact[m].r); else if (style == COLLOID) colloid(region->contact[m].r,radius[i]); else harmonic(region->contact[m].r); @@ -287,7 +300,7 @@ void FixWallRegion::post_force(int vflag) /* ---------------------------------------------------------------------- */ -void FixWallRegion::post_force_respa(int vflag, int ilevel, int /*iloop*/) +void FixWallRegion::post_force_respa(int vflag, int ilevel, int iloop) { if (ilevel == ilevel_respa) post_force(vflag); } @@ -375,6 +388,19 @@ void FixWallRegion::lj1043(double r) coeff3*pow(r+coeff4,-3.0) - offset; } +/* ---------------------------------------------------------------------- + Morse interaction for particle with wall + compute eng and fwall = magnitude of wall force +------------------------------------------------------------------------- */ + +void FixWallRegion::morse(double r) +{ + double dr = r - sigma; + double dexp = exp(-alpha * dr); + fwall = coeff1 * (dexp*dexp - dexp) / r; + eng = epsilon * (dexp*dexp - 2.0*dexp) - offset; +} + /* ---------------------------------------------------------------------- colloid interaction for finite-size particle of rad with wall compute eng and fwall = magnitude of wall force diff --git a/src/fix_wall_region.h b/src/fix_wall_region.h index e3688c99ee..663a12b257 100644 --- a/src/fix_wall_region.h +++ b/src/fix_wall_region.h @@ -41,6 +41,7 @@ class FixWallRegion : public Fix { private: int style,iregion; double epsilon,sigma,cutoff; + double alpha; int eflag; double ewall[4],ewall_all[4]; int ilevel_respa; @@ -53,6 +54,7 @@ class FixWallRegion : public Fix { void lj93(double); void lj126(double); void lj1043(double); + void morse(double); void colloid(double, double); void harmonic(double); }; -- GitLab From 4ea7d733e8eab688c29948d45e61536f367b4ee2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eugen=20Ro=C5=BEi=C4=87?= Date: Thu, 21 Feb 2019 02:17:19 +0100 Subject: [PATCH 005/627] Initial commit... --- src/USER-MISC/pair_cosine_squared.cpp | 473 ++++++++++++++++++++++++++ src/USER-MISC/pair_cosine_squared.h | 95 ++++++ 2 files changed, 568 insertions(+) create mode 100644 src/USER-MISC/pair_cosine_squared.cpp create mode 100644 src/USER-MISC/pair_cosine_squared.h diff --git a/src/USER-MISC/pair_cosine_squared.cpp b/src/USER-MISC/pair_cosine_squared.cpp new file mode 100644 index 0000000000..db3d8a6aa7 --- /dev/null +++ b/src/USER-MISC/pair_cosine_squared.cpp @@ -0,0 +1,473 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing authors: Eugen Rozic (University College London) +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "pair_cosine_squared.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "update.h" +#include "integrate.h" +#include "respa.h" +#include "math_const.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace MathConst; + +/* ---------------------------------------------------------------------- */ + +PairCosineSquared::PairCosineSquared(LAMMPS *lmp) : Pair(lmp) +{ + writedata = 1; +} + +/* ---------------------------------------------------------------------- */ + +PairCosineSquared::~PairCosineSquared() +{ + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(epsilon); + memory->destroy(sigma); + memory->destroy(w); + memory->destroy(cut); + memory->destroy(wcaflag); + + memory->destroy(lj12_e); + memory->destroy(lj6_e); + memory->destroy(lj12_f); + memory->destroy(lj6_f); + } +} + +/* ---------------------------------------------------------------------- + allocate all arrays +------------------------------------------------------------------------- */ + +void PairCosineSquared::allocate() +{ + allocated = 1; + int n = atom->ntypes; + memory->create(setflag, n+1, n+1, "pair:setflag"); + memory->create(cutsq, n+1, n+1, "pair:cutsq"); + + memory->create(cut, n+1, n+1, "pair:cut"); + memory->create(epsilon, n+1, n+1, "pair:epsilon"); + memory->create(sigma, n+1, n+1, "pair:sigma"); + memory->create(w, n+1, n+1, "pair:w"); + memory->create(wcaflag, n+1, n+1, "pair:wcaflag"); + + memory->create(lj12_e, n+1, n+1, "pair:lj12_e"); + memory->create(lj6_e, n+1, n+1, "pair:lj6_e"); + memory->create(lj12_f, n+1, n+1, "pair:lj12_f"); + memory->create(lj6_f, n+1, n+1, "pair:lj6_f"); + + for (int i = 1; i <= n; i++) { + for (int j = i; j <= n; j++) { + setflag[i][j] = 0; + wcaflag[i][j] = 0; + } + } +} + +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +void PairCosineSquared::settings(int narg, char **arg) +{ + if (narg != 1) { + error->all(FLERR, "Illegal pair_style command (wrong number of params)"); + } + + cut_global = force->numeric(FLERR, arg[0]); + + // reset cutoffs that have been explicitly set + + if (allocated) { + int i, j; + for (i = 1; i <= atom->ntypes; i++) + for (j = i+1; j <= atom->ntypes; j++) + if (setflag[i][j]) + cut[i][j] = cut_global; + } +} + + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs +------------------------------------------------------------------------- */ + +void PairCosineSquared::coeff(int narg, char **arg) +{ + if (narg < 4 || narg > 6) + error->all(FLERR, "Incorrect args for pair coefficients (too few or too many)"); + + if (!allocated) + allocate(); + + int ilo, ihi, jlo, jhi; + force->bounds(FLERR, arg[0], atom->ntypes, ilo, ihi); + force->bounds(FLERR, arg[1], atom->ntypes, jlo, jhi); + + double epsilon_one = force->numeric(FLERR, arg[2]); + double sigma_one = force->numeric(FLERR, arg[3]); + + double cut_one = cut_global; + double wca_one = 0; + if (narg == 6) { + cut_one = force->numeric(FLERR, arg[4]); + if (strcmp(arg[5], "wca") == 0) { + wca_one = 1; + } else { + error->all(FLERR, "Incorrect args for pair coefficients (unknown option)"); + } + } else if (narg == 5) { + if (strcmp(arg[4], "wca") == 0) { + wca_one = 1; + } else { + cut_one = force->numeric(FLERR, arg[4]); + } + } + + if (cut_one <= sigma_one) + error->all(FLERR, "Incorrect args for pair coefficients (cutoff <= sigma)"); + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + for (int j = MAX(jlo,i); j <= jhi; j++) { + epsilon[i][j] = epsilon_one; + sigma[i][j] = sigma_one; + cut[i][j] = cut_one; + wcaflag[i][j] = wca_one; + setflag[i][j] = 1; + count++; + } + } + + if (count == 0) + error->all(FLERR, "Incorrect args for pair coefficients (none set)"); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style (unneccesary) +------------------------------------------------------------------------- */ + +/* +void PairCosineSquared::init_style() +{ + neighbor->request(this,instance_me); +} +*/ + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ + +double PairCosineSquared::init_one(int i, int j) +{ + if (setflag[i][j] == 0) + error->all(FLERR, "Mixing not supported in pair_style cosine/squared"); + + epsilon[j][i] = epsilon[i][j]; + sigma[j][i] = sigma[i][j]; + cut[j][i] = cut[i][j]; + wcaflag[j][i] = wcaflag[i][j]; + + w[j][i] = w[i][j] = cut[i][j] - sigma[i][j]; + + if (wcaflag[i][j]) { + lj12_e[j][i] = lj12_e[i][j] = epsilon[i][j] * pow(sigma[i][j], 12.0); + lj6_e[j][i] = lj6_e[i][j] = 2.0 * epsilon[i][j] * pow(sigma[i][j], 6.0); + lj12_f[j][i] = lj12_f[i][j] = 12.0 * epsilon[i][j] * pow(sigma[i][j], 12.0); + lj6_f[j][i] = lj6_f[i][j] = 12.0 * epsilon[i][j] * pow(sigma[i][j], 6.0); + } + + // Note: cutsq is set in pair.cpp + + return cut[i][j]; +} + +/* ---------------------------------------------------------------------- + this is here to throw errors & warnings for given options +------------------------------------------------------------------------- */ + +void PairCosineSquared::modify_params(int narg, char **arg) +{ + Pair::modify_params(narg, arg); + + int iarg = 0; + while (iarg < narg) { + if (strcmp(arg[iarg], "mix") == 0) { + error->all(FLERR, "pair_modify mix not supported for pair_style cosine/squared"); + } else if (strcmp(arg[iarg], "shift") == 0) { + error->warning(FLERR, "pair_modify shift is meaningless for pair_style cosine/squared"); + offset_flag = 0; + } else if (strcmp(arg[iarg], "tail") == 0) { + error->warning(FLERR, "pair_modify tail is meaningless for pair_style cosine/squared"); + tail_flag = 0; + } + iarg++; + } +} + +/* ---------------------------------------------------------------------- + proc 0 writes to restart file +------------------------------------------------------------------------- */ + +void PairCosineSquared::write_restart(FILE *fp) +{ + write_restart_settings(fp); + + int i, j; + for (i = 1; i <= atom->ntypes; i++) + for (j = i; j <= atom->ntypes; j++) { + fwrite(&setflag[i][j], sizeof(int), 1, fp); + if (setflag[i][j]) { + fwrite(&epsilon[i][j], sizeof(double), 1, fp); + fwrite(&sigma[i][j], sizeof(double), 1, fp); + fwrite(&cut[i][j], sizeof(double), 1, fp); + fwrite(&wcaflag[i][j], sizeof(int), 1, fp); + } + } +} + +/* ---------------------------------------------------------------------- + proc 0 reads from restart file, bcasts +------------------------------------------------------------------------- */ + +void PairCosineSquared::read_restart(FILE *fp) +{ + read_restart_settings(fp); + allocate(); + + int i,j; + int me = comm->me; + for (i = 1; i <= atom->ntypes; i++) { + for (j = i; j <= atom->ntypes; j++) { + if (me == 0) + fread(&setflag[i][j], sizeof(int), 1, fp); + MPI_Bcast(&setflag[i][j], 1, MPI_INT, 0, world); + if (setflag[i][j]) { + if (me == 0) { + fread(&epsilon[i][j], sizeof(double), 1, fp); + fread(&sigma[i][j], sizeof(double), 1, fp); + fread(&cut[i][j], sizeof(double), 1, fp); + fread(&wcaflag[i][j], sizeof(int), 1, fp); + } + MPI_Bcast(&epsilon[i][j], 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&sigma[i][j], 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&cut[i][j], 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&wcaflag[i][j], 1, MPI_INT, 0, world); + } + } + } +} + +/* ---------------------------------------------------------------------- + proc 0 writes to restart file +------------------------------------------------------------------------- */ + +void PairCosineSquared::write_restart_settings(FILE *fp) +{ + fwrite(&cut_global, sizeof(double), 1, fp); +} + +/* ---------------------------------------------------------------------- + proc 0 reads from restart file, bcasts +------------------------------------------------------------------------- */ + +void PairCosineSquared::read_restart_settings(FILE *fp) +{ + int me = comm->me; + if (me == 0) { + fread(&cut_global, sizeof(double), 1, fp); + } + MPI_Bcast(&cut_global, 1, MPI_DOUBLE, 0, world); +} + +/* ---------------------------------------------------------------------- + proc 0 writes to data file +------------------------------------------------------------------------- */ + +void PairCosineSquared::write_data(FILE *fp) +{ + for (int i = 1; i <= atom->ntypes; i++) + fprintf(fp, "%d %g %g %g %d\n", i, epsilon[i][i], sigma[i][i], + cut[i][i], wcaflag[i][i]); +} + +/* ---------------------------------------------------------------------- + proc 0 writes all pairs to data file +------------------------------------------------------------------------- */ + +void PairCosineSquared::write_data_all(FILE *fp) +{ + for (int i = 1; i <= atom->ntypes; i++) + for (int j = i; j <= atom->ntypes; j++) + fprintf(fp, "%d %d %g %g %g %d\n", i, j, epsilon[i][j], sigma[i][j], + cut[i][j], wcaflag[i][j]); +} + +/* ---------------------------------------------------------------------- */ + +void PairCosineSquared::compute(int eflag, int vflag) +{ + int i, j, ii, jj, inum, jnum, itype, jtype; + int *ilist, *jlist, *numneigh, **firstneigh; + double xtmp, ytmp, ztmp, delx, dely, delz, evdwl, fpair; + double r, rsq, r2inv, r6inv; + double factor_lj, force_lj, force_cos, cosone; + + evdwl = 0.0; + if (eflag || vflag) + ev_setup(eflag, vflag); + else + evflag = vflag_fdotr = 0; + + double **x = atom->x; + double **f = atom->f; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + + inum = list->inum; + ilist = list->ilist; + numneigh = list->numneigh; + firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + itype = type[i]; + jlist = firstneigh[i]; + jnum = numneigh[i]; + + for (jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + factor_lj = special_lj[sbmask(j)]; + j &= NEIGHMASK; + + delx = xtmp - x[j][0]; + dely = ytmp - x[j][1]; + delz = ztmp - x[j][2]; + rsq = delx*delx + dely*dely + delz*delz; + jtype = type[j]; + + if (rsq < cutsq[itype][jtype]) { + + /* + This is exactly what the "single" method does, in fact it could be called + here instead of repeating the code but here energy calculation is optional + so a little bit of calculation is possibly saved + */ + + r = sqrt(rsq); + + if (r <= sigma[itype][jtype]) { + if (wcaflag[itype][jtype]) { + r2inv = 1.0/rsq; + r6inv = r2inv*r2inv*r2inv; + force_lj = r6inv*(lj12_f[itype][jtype]*r6inv - lj6_f[itype][jtype]); + fpair = factor_lj*force_lj*r2inv; + if (eflag) { + evdwl = factor_lj*r6inv * + (lj12_e[itype][jtype]*r6inv - lj6_e[itype][jtype]); + } + } else { + fpair = 0.0; + if (eflag) { + evdwl = -factor_lj*epsilon[itype][jtype]; + } + } + } else { + force_cos = -(MY_PI*epsilon[itype][jtype] / (2.0*w[itype][jtype])) * + sin(MY_PI*(r-sigma[itype][jtype]) / w[itype][jtype]); + fpair = factor_lj*force_cos / r; + if (eflag) { + cosone = cos(MY_PI*(r-sigma[itype][jtype]) / (2.0*w[itype][jtype])); + evdwl = -factor_lj*epsilon[itype][jtype]*cosone*cosone; + } + } + + f[i][0] += delx*fpair; + f[i][1] += dely*fpair; + f[i][2] += delz*fpair; + + if (newton_pair || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + } + + if (evflag) + ev_tally(i, j, nlocal, newton_pair, evdwl, 0.0, fpair, delx, dely, delz); + } + } + } + + if (vflag_fdotr) + virial_fdotr_compute(); +} + +/* ---------------------------------------------------------------------- + This is used be pair_write; + it is called only if rsq < cutsq[itype][jtype], no need to check that +------------------------------------------------------------------------- */ + +double PairCosineSquared::single(int i, int j, int itype, int jtype, double rsq, + double factor_coul, double factor_lj, + double &fforce) +{ + double r, r2inv, r6inv, cosone, force, energy; + + r = sqrt(rsq); + + if (r <= sigma[itype][jtype]) { + if (wcaflag[itype][jtype]) { + r2inv = 1.0/rsq; + r6inv = r2inv*r2inv*r2inv; + force = r6inv*(lj12_f[itype][jtype]*r6inv - lj6_f[itype][jtype])*r2inv; + energy = r6inv*(lj12_e[itype][jtype]*r6inv - lj6_e[itype][jtype]); + } else { + force = 0.0; + energy = -epsilon[itype][jtype]; + } + } else { + cosone = cos(MY_PI*(r-sigma[itype][jtype]) / (2.0*w[itype][jtype])); + force = -(MY_PI*epsilon[itype][jtype] / (2.0*w[itype][jtype])) * + sin(MY_PI*(r-sigma[itype][jtype]) / w[itype][jtype]) / r; + energy = -epsilon[itype][jtype]*cosone*cosone; + } + fforce = factor_lj*force; + return factor_lj*energy; +} + diff --git a/src/USER-MISC/pair_cosine_squared.h b/src/USER-MISC/pair_cosine_squared.h new file mode 100644 index 0000000000..8c294e0d36 --- /dev/null +++ b/src/USER-MISC/pair_cosine_squared.h @@ -0,0 +1,95 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- + Contributing authors: Eugen Rozic (University College London) +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(cosine/squared, PairCosineSquared) + +#else + +#ifndef LMP_PAIR_LJ_COS_SQ_H +#define LMP_PAIR_LJ_COS_SQ_H + +#include "pair.h" + +namespace LAMMPS_NS { + +class PairCosineSquared : public Pair { + public: + PairCosineSquared(class LAMMPS *); + virtual ~PairCosineSquared(); + void settings(int, char **); + void coeff(int, char **); + // void init_style(); + double init_one(int, int); + void modify_params(int, char **); + void write_restart(FILE *); + void read_restart(FILE *); + void write_restart_settings(FILE *); + void read_restart_settings(FILE *); + void write_data(FILE *); + void write_data_all(FILE *); + virtual void compute(int, int); + double single(int, int, int, int, double, double, double, double &); + // void *extract(const char *, int &); + +/* RESPA stuff not implemented... + void compute_inner(); + void compute_middle(); + void compute_outer(int, int); +*/ + + protected: + double cut_global; + double **epsilon, **sigma, **w, **cut; + int **wcaflag; + double **lj12_e, **lj6_e, **lj12_f, **lj6_f; + + virtual void allocate(); +}; + +} // namespace LAMMPS_NS + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +E: Mixing not supported in pair_style cosine/squared + +Self-explanatory. All coefficients need to be specified explicitly. + +E: pair_modify mix not supported for pair_style cosine/squared + +Same as above, only when calling "pair_modify" command + +W: pair_modify shift/tail is meaningless for pair_style cosine/squared + +This style by definition gets to zero at cutoff distance, so there is nothing +to shift and there is no tail contribution + +*/ + -- GitLab From 14353c5ea52ff3780873ad93821838dcae46f387 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eugen=20Ro=C5=BEi=C4=87?= Date: Sun, 3 Mar 2019 01:52:43 +0100 Subject: [PATCH 006/627] Added WCA-only option (sigma == cutoff case with wca) --- src/USER-MISC/pair_cosine_squared.cpp | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/USER-MISC/pair_cosine_squared.cpp b/src/USER-MISC/pair_cosine_squared.cpp index db3d8a6aa7..0229af7a08 100644 --- a/src/USER-MISC/pair_cosine_squared.cpp +++ b/src/USER-MISC/pair_cosine_squared.cpp @@ -153,8 +153,15 @@ void PairCosineSquared::coeff(int narg, char **arg) } } - if (cut_one <= sigma_one) - error->all(FLERR, "Incorrect args for pair coefficients (cutoff <= sigma)"); + if (cut_one < sigma_one) { + error->all(FLERR, "Incorrect args for cosine/squared pair coeffs (cutoff < sigma)"); + } else if (cut_one == sigma_one) { + if (wca_one == 0) { + error->all(FLERR, "Incorrect args for cosine/squared pair coeffs (cutoff = sigma w/o wca)") + } else { + error->warning(FLERR, "Cosine/squared set to WCA only (cutoff = sigma)") + } + } int count = 0; for (int i = ilo; i <= ihi; i++) { @@ -224,10 +231,10 @@ void PairCosineSquared::modify_params(int narg, char **arg) if (strcmp(arg[iarg], "mix") == 0) { error->all(FLERR, "pair_modify mix not supported for pair_style cosine/squared"); } else if (strcmp(arg[iarg], "shift") == 0) { - error->warning(FLERR, "pair_modify shift is meaningless for pair_style cosine/squared"); + error->warning(FLERR, "pair_modify shift has no effect on pair_style cosine/squared"); offset_flag = 0; } else if (strcmp(arg[iarg], "tail") == 0) { - error->warning(FLERR, "pair_modify tail is meaningless for pair_style cosine/squared"); + error->warning(FLERR, "pair_modify tail has no effect on pair_style cosine/squared"); tail_flag = 0; } iarg++; @@ -399,8 +406,12 @@ void PairCosineSquared::compute(int eflag, int vflag) force_lj = r6inv*(lj12_f[itype][jtype]*r6inv - lj6_f[itype][jtype]); fpair = factor_lj*force_lj*r2inv; if (eflag) { - evdwl = factor_lj*r6inv * + evdwl = factor_lj*r6inv* (lj12_e[itype][jtype]*r6inv - lj6_e[itype][jtype]); + if (sigma[itype][jtype] == cut[itype][jtype]) { + // this is the WCA-only case (it requires this shift by definition) + evdwl += factor_lj*epsilon[itype][jtype] + } } } else { fpair = 0.0; @@ -457,6 +468,10 @@ double PairCosineSquared::single(int i, int j, int itype, int jtype, double rsq, r6inv = r2inv*r2inv*r2inv; force = r6inv*(lj12_f[itype][jtype]*r6inv - lj6_f[itype][jtype])*r2inv; energy = r6inv*(lj12_e[itype][jtype]*r6inv - lj6_e[itype][jtype]); + if (sigma[itype][jtype] == cut[itype][jtype]) { + // this is the WCA-only case (it requires this shift by definition) + energy += epsilon[itype][jtype] + } } else { force = 0.0; energy = -epsilon[itype][jtype]; -- GitLab From 05f739a5a007d3da97cf7b89b6ec83df3890b7fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eugen=20Ro=C5=BEi=C4=87?= Date: Sun, 3 Mar 2019 01:55:02 +0100 Subject: [PATCH 007/627] Bugfix for WCA-only option (trivial) --- src/USER-MISC/pair_cosine_squared.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/USER-MISC/pair_cosine_squared.cpp b/src/USER-MISC/pair_cosine_squared.cpp index 0229af7a08..67cefd894b 100644 --- a/src/USER-MISC/pair_cosine_squared.cpp +++ b/src/USER-MISC/pair_cosine_squared.cpp @@ -157,9 +157,9 @@ void PairCosineSquared::coeff(int narg, char **arg) error->all(FLERR, "Incorrect args for cosine/squared pair coeffs (cutoff < sigma)"); } else if (cut_one == sigma_one) { if (wca_one == 0) { - error->all(FLERR, "Incorrect args for cosine/squared pair coeffs (cutoff = sigma w/o wca)") + error->all(FLERR, "Incorrect args for cosine/squared pair coeffs (cutoff = sigma w/o wca)"); } else { - error->warning(FLERR, "Cosine/squared set to WCA only (cutoff = sigma)") + error->warning(FLERR, "Cosine/squared set to WCA only (cutoff = sigma)"); } } @@ -410,7 +410,7 @@ void PairCosineSquared::compute(int eflag, int vflag) (lj12_e[itype][jtype]*r6inv - lj6_e[itype][jtype]); if (sigma[itype][jtype] == cut[itype][jtype]) { // this is the WCA-only case (it requires this shift by definition) - evdwl += factor_lj*epsilon[itype][jtype] + evdwl += factor_lj*epsilon[itype][jtype]; } } } else { @@ -470,7 +470,7 @@ double PairCosineSquared::single(int i, int j, int itype, int jtype, double rsq, energy = r6inv*(lj12_e[itype][jtype]*r6inv - lj6_e[itype][jtype]); if (sigma[itype][jtype] == cut[itype][jtype]) { // this is the WCA-only case (it requires this shift by definition) - energy += epsilon[itype][jtype] + energy += epsilon[itype][jtype]; } } else { force = 0.0; -- GitLab From bbec50bef1795ae2737afb9b1cea75cf1bbdb355 Mon Sep 17 00:00:00 2001 From: Andrew Schultz Date: Fri, 29 Mar 2019 15:06:49 -0400 Subject: [PATCH 008/627] Add HMA examples --- examples/USER/hma/README | 22 + examples/USER/hma/hma.in | 36 + examples/USER/hma/log.6Nov18.hma.g++.1 | 10159 +++++++++++++++++++++++ examples/USER/hma/log.6Nov18.hma.g++.4 | 10159 +++++++++++++++++++++++ 4 files changed, 20376 insertions(+) create mode 100644 examples/USER/hma/README create mode 100644 examples/USER/hma/hma.in create mode 100644 examples/USER/hma/log.6Nov18.hma.g++.1 create mode 100644 examples/USER/hma/log.6Nov18.hma.g++.4 diff --git a/examples/USER/hma/README b/examples/USER/hma/README new file mode 100644 index 0000000000..5af6ec15fa --- /dev/null +++ b/examples/USER/hma/README @@ -0,0 +1,22 @@ +The example input script sets up a simple FCC crystal using the Lennard-Jones +potential. The script sets up the HMA compute to calculate the energy, pressure +and heat capacity. The output columns are: + +1: timestep +2: measured temperature +3: potential energy +4: HMA potential energy +5: pressure +6: HMA pressure +7: HMA heat capacity contribution + +Averages of the potential energy (#3 and #4) agree although #4 (HMA) is more precise. + +Averages of the pressure (#5 and #6) agree once the ideal gas +contribution is included; #6 (HMA) is more precise. + +The heat capacity can be computed from colume #3 (convential) as +Cv = Var(#3)/(k T^2) + +With HMA, the heat capacity can be computed from column #4 and #7 as +Cv = #7 + Var(#4)/(k T^2) diff --git a/examples/USER/hma/hma.in b/examples/USER/hma/hma.in new file mode 100644 index 0000000000..50c6dd96fb --- /dev/null +++ b/examples/USER/hma/hma.in @@ -0,0 +1,36 @@ +# Harmonically mapped average example + +units lj +dimension 3 +boundary p p p +atom_style atomic +atom_modify map array +# ---------- Create Atoms ---------------------------- +lattice fcc 1.0 +region box block 0 4 0 4 0 4 units lattice +create_box 1 box +lattice fcc 1.0 orient x 1 0 0 orient y 0 1 0 orient z 0 0 1 +create_atoms 1 region box +# ---------- Define Interatomic Potential --------------------- +pair_style lj/smooth/linear 3 +pair_coeff * * 1.0 1.0 +mass 1 1.0 + +atom_modify sort 0 1 +velocity all create 0.1 45678 dist gaussian + +compute u all pe + +compute p all pressure NULL pair + +compute hma all HMA settemp u p 9.579586686264458 cv + +timestep 0.005 + +fix settemp all nvt temp 1.0 1.0 0.5 +thermo_style custom elapsed temp c_u c_hma[1] c_p c_hma[2] c_hma[3] +thermo_modify format float '%22.15e' +thermo 500 +run 20000 +thermo 20 +run 200000 diff --git a/examples/USER/hma/log.6Nov18.hma.g++.1 b/examples/USER/hma/log.6Nov18.hma.g++.1 new file mode 100644 index 0000000000..fba304d783 --- /dev/null +++ b/examples/USER/hma/log.6Nov18.hma.g++.1 @@ -0,0 +1,10159 @@ +LAMMPS (31 Aug 2018) +# Harmonically mapped average example + +units lj +dimension 3 +boundary p p p +atom_style atomic +atom_modify map array +# ---------- Create Atoms ---------------------------- +lattice fcc 1.0 +Lattice spacing in x,y,z = 1.5874 1.5874 1.5874 +region box block 0 4 0 4 0 4 units lattice +create_box 1 box +Created orthogonal box = (0 0 0) to (6.3496 6.3496 6.3496) + 1 by 1 by 1 MPI processor grid +lattice fcc 1.0 orient x 1 0 0 orient y 0 1 0 orient z 0 0 1 +Lattice spacing in x,y,z = 1.5874 1.5874 1.5874 +create_atoms 1 region box +Created 256 atoms + Time spent = 0.000558853 secs +# ---------- Define Interatomic Potential --------------------- +pair_style lj/smooth/linear 3 +pair_coeff * * 1.0 1.0 +mass 1 1.0 + +atom_modify sort 0 1 +velocity all create 0.1 45678 dist gaussian + +compute u all pe + +compute p all pressure NULL pair + +compute hma all HMA settemp u p 9.579586686264458 cv + +timestep 0.005 + +fix settemp all nvt temp 1.0 1.0 0.5 +thermo_style custom elapsed temp c_u c_hma[1] c_p c_hma[2] c_hma[3] +thermo_modify format float '%22.15e' +thermo 500 +run 20000 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 3.3 + ghost atom cutoff = 3.3 + binsize = 1.65, bins = 4 4 4 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) pair lj/smooth/linear, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard + (2) compute HMA, occasional, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 3.425 | 3.425 | 3.425 Mbytes +Elapsed Temp c_u c_hma[1] c_p c_hma[2] c_hma[3] + 0 9.999999999999984e-02 -7.321210550029651e+00 -5.827069925029651e+00 -3.541123363606526e+00 6.038463322657933e+00 8.693908581888376e+03 + 500 2.386148283497847e-01 -7.031289207724356e+00 -5.841955950103862e+00 -1.905706169928171e+00 5.923629444055504e+00 8.738341241696249e+03 + 1000 1.033640532939756e+00 -5.899129588008281e+00 -5.989693420271868e+00 4.270084606318116e+00 4.750053066752854e+00 9.185409687897396e+03 + 1500 9.066678783388608e-01 -6.084949363864708e+00 -6.008077972326689e+00 3.223989663631114e+00 4.665397089651815e+00 9.241882696308397e+03 + 2000 8.653666754537616e-01 -6.040261189331211e+00 -6.030563879284796e+00 3.468617809376976e+00 4.524301264317375e+00 9.311127705836057e+03 + 2500 1.037531298248839e+00 -6.132639377068311e+00 -5.988640354751864e+00 2.977362159634933e+00 4.804226829552658e+00 9.182209655823657e+03 + 3000 1.021622746681649e+00 -5.898542445856487e+00 -6.009151612939077e+00 4.221727087636999e+00 4.586592133535478e+00 9.245164803297535e+03 + 3500 1.106519160715706e+00 -5.970546432235779e+00 -6.015249245376119e+00 3.866123627527625e+00 4.609433156737818e+00 9.263945750662717e+03 + 4000 9.930240066865930e-01 -5.912152557873307e+00 -6.025083715886064e+00 4.138611283233161e+00 4.490143097883684e+00 9.294225198089340e+03 + 4500 9.646555658575586e-01 -6.015677130022131e+00 -6.036721545560821e+00 3.568689708725919e+00 4.447849418089985e+00 9.330138922961722e+03 + 5000 9.434923165946090e-01 -6.027456548570741e+00 -6.014550053270733e+00 3.565441638398635e+00 4.639552731684967e+00 9.261770624752438e+03 + 5500 1.026864240931640e+00 -6.061505823962392e+00 -6.019404988381412e+00 3.401241932620071e+00 4.642991445609312e+00 9.276731237911577e+03 + 6000 9.983312526598234e-01 -5.946349587454857e+00 -5.983050555300542e+00 3.979901469071073e+00 4.769158832244731e+00 9.165087115091061e+03 + 6500 1.006036143286260e+00 -5.945850544079388e+00 -6.071303751273131e+00 3.946077295974201e+00 4.225705566446658e+00 9.437216768355414e+03 + 7000 9.981593359539495e-01 -5.990330698910480e+00 -6.037063892399898e+00 3.663774642188439e+00 4.395425413233882e+00 9.331181435130977e+03 + 7500 9.507280203289744e-01 -5.984730396336532e+00 -5.991644972746507e+00 3.755491186444424e+00 4.715786618671108e+00 9.191404619772287e+03 + 8000 9.048837157594684e-01 -6.079029085917312e+00 -5.964267902838972e+00 3.230203589004437e+00 4.889180061475951e+00 9.107693071292861e+03 + 8500 9.883413333994134e-01 -6.002876846326834e+00 -6.011751334719937e+00 3.642240804100097e+00 4.591282118424260e+00 9.253163154010274e+03 + 9000 1.056758147654552e+00 -6.036760797857792e+00 -6.002535828890329e+00 3.520846457975964e+00 4.717371526083967e+00 9.224856128595033e+03 + 9500 1.035347515567710e+00 -5.969647617813958e+00 -5.990309632036265e+00 3.813299824718261e+00 4.694655341617407e+00 9.187302608800977e+03 + 10000 1.023738343179159e+00 -5.877099589117778e+00 -6.048562900734738e+00 4.344908960531808e+00 4.360340091365503e+00 9.366720846528935e+03 + 10500 1.069815794809561e+00 -5.913367214053245e+00 -6.010777075880958e+00 4.147089675758311e+00 4.587747175016184e+00 9.250158711907829e+03 + 11000 9.776294387160251e-01 -5.925772082085378e+00 -5.989277934483906e+00 4.082344757077178e+00 4.717684325105934e+00 9.184160813848264e+03 + 11500 9.499730095716009e-01 -5.976861040295939e+00 -6.004120411932708e+00 3.808317456317362e+00 4.651789926004906e+00 9.229684845202884e+03 + 12000 9.782073857977380e-01 -6.066220802750934e+00 -6.031270148041170e+00 3.304122260466307e+00 4.504814328406108e+00 9.313293791801259e+03 + 12500 9.552683271823048e-01 -6.108551273751968e+00 -5.979666568626595e+00 3.136478232915417e+00 4.876554154588973e+00 9.154740057331765e+03 + 13000 8.742841944497640e-01 -6.013421944223564e+00 -6.021450865532995e+00 3.577734470946406e+00 4.531631162316097e+00 9.283015239817061e+03 + 13500 1.004344955842980e+00 -5.899309998559693e+00 -6.011273141389537e+00 4.232629792927130e+00 4.589720100557810e+00 9.251678010621874e+03 + 14000 9.987696680587935e-01 -5.929715246484374e+00 -6.008152969607664e+00 4.103967501967555e+00 4.653565957595201e+00 9.242036851405348e+03 + 14500 1.006604156366316e+00 -6.153189106822779e+00 -5.973434451881044e+00 2.841124235115949e+00 4.873303280734345e+00 9.135699098879228e+03 + 15000 9.051321416654020e-01 -6.031733280212374e+00 -5.972657495662279e+00 3.559001586802186e+00 4.898223883636946e+00 9.133297115127007e+03 + 15500 9.682672962081463e-01 -6.067136130017134e+00 -5.966412476549884e+00 3.354912150470541e+00 4.933282955614485e+00 9.114211079881910e+03 + 16000 1.015665897061745e+00 -6.059784334366720e+00 -5.980063616786515e+00 3.369338836061829e+00 4.827107533148539e+00 9.155963314807441e+03 + 16500 1.006968180883997e+00 -5.995526549328130e+00 -5.964005551783969e+00 3.802449041277696e+00 4.983447487034876e+00 9.106875404577086e+03 + 17000 1.042050305358167e+00 -5.919486263379956e+00 -6.013086895161285e+00 4.122119914992582e+00 4.584650602653237e+00 9.257241816102296e+03 + 17500 1.013492134662422e+00 -5.898786232899295e+00 -5.988108507110901e+00 4.246935217818169e+00 4.734032896717861e+00 9.180541556032720e+03 + 18000 1.045293495070465e+00 -6.013155802624135e+00 -6.000945960251793e+00 3.631220305239846e+00 4.701331109608827e+00 9.219959027336774e+03 + 18500 9.134705431704426e-01 -5.943263213107316e+00 -6.036334213909798e+00 4.028889501874485e+00 4.494461412575806e+00 9.328923769735196e+03 + 19000 1.007628738828841e+00 -6.062647924602851e+00 -5.961993496778848e+00 3.347669071096405e+00 4.925642371884200e+00 9.100752827583676e+03 + 19500 1.000237087620137e+00 -5.934759822585448e+00 -6.020766118588664e+00 4.035509558295610e+00 4.541648097213850e+00 9.280908870426259e+03 + 20000 9.615364955745067e-01 -5.859940462234714e+00 -5.981549364677676e+00 4.480555066266412e+00 4.782257929522093e+00 9.160435351560425e+03 +Loop time of 33.5763 on 1 procs for 20000 steps with 256 atoms + +Performance: 257324.049 tau/day, 595.658 timesteps/s +99.9% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 30.404 | 30.404 | 30.404 | 0.0 | 90.55 +Neigh | 2.1959 | 2.1959 | 2.1959 | 0.0 | 6.54 +Comm | 0.50746 | 0.50746 | 0.50746 | 0.0 | 1.51 +Output | 0.16503 | 0.16503 | 0.16503 | 0.0 | 0.49 +Modify | 0.237 | 0.237 | 0.237 | 0.0 | 0.71 +Other | | 0.06721 | | | 0.20 + +Nlocal: 256 ave 256 max 256 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 2116 ave 2116 max 2116 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 19135 ave 19135 max 19135 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 19135 +Ave neighs/atom = 74.7461 +Neighbor list builds = 1946 +Dangerous builds = 1902 +thermo 20 +run 200000 +Per MPI rank memory allocation (min/avg/max) = 3.806 | 3.806 | 3.806 Mbytes +Elapsed Temp c_u c_hma[1] c_p c_hma[2] c_hma[3] + 0 9.615364955745067e-01 -5.859940462234714e+00 -5.981549364677676e+00 4.480555066266412e+00 4.782257929522093e+00 9.160435351560425e+03 + 20 1.020600011999315e+00 -5.958432657247554e+00 -5.970407876039725e+00 3.888068459330918e+00 4.819304899867157e+00 9.126408714227488e+03 + 40 9.814651761832457e-01 -5.909251537070915e+00 -5.991660882363840e+00 4.211003703521785e+00 4.737796490044842e+00 9.191407419668969e+03 + 60 1.017977787037964e+00 -5.969196214125930e+00 -5.964268442742594e+00 3.868843363187895e+00 4.897139389041168e+00 9.107658398968413e+03 + 80 1.014099325641110e+00 -5.967528512390698e+00 -5.995071997895454e+00 3.830673462482372e+00 4.672514506373457e+00 9.201917832597679e+03 + 100 9.996875356603929e-01 -5.951588326170250e+00 -6.038052192222564e+00 3.956276886785969e+00 4.459787987673556e+00 9.334249364612955e+03 + 120 1.012056868305871e+00 -5.978870473165807e+00 -6.025850442982817e+00 3.772945936859251e+00 4.503179680043147e+00 9.296565936440789e+03 + 140 9.767869134157122e-01 -5.935832220940478e+00 -5.962749498947353e+00 4.000315968594315e+00 4.845752792843529e+00 9.103038302449055e+03 + 160 9.892523056702491e-01 -5.959324837828405e+00 -5.989985114179447e+00 3.844041265550217e+00 4.667985214080106e+00 9.186300645060488e+03 + 180 9.515078978028194e-01 -5.906073543975624e+00 -5.989405874738726e+00 4.168541295586040e+00 4.690034156707802e+00 9.184525321314130e+03 + 200 9.472636015419604e-01 -5.901747840949999e+00 -6.059197474754500e+00 4.085216465358702e+00 4.181116302801172e+00 9.399653985979861e+03 + 220 9.987356397412785e-01 -5.979817989736361e+00 -6.023113896710152e+00 3.732212025258467e+00 4.483600227395010e+00 9.288140153203587e+03 + 240 1.038054632582729e+00 -6.041406960780349e+00 -5.980798008747044e+00 3.486347567353394e+00 4.834373549133644e+00 9.158206331469573e+03 + 260 9.871325901445797e-01 -5.972400207772776e+00 -5.968492407279171e+00 3.916384667845522e+00 4.938823863009977e+00 9.120560085095371e+03 + 280 9.956901322007337e-01 -5.990610420020357e+00 -5.962602141919667e+00 3.753129205829077e+00 4.913957072950271e+00 9.102601708340648e+03 + 300 1.009984603711227e+00 -6.014944223505186e+00 -6.010674471382663e+00 3.587051537885279e+00 4.611569115314808e+00 9.249843677831494e+03 + 320 9.305773490336505e-01 -5.901476652774451e+00 -6.038002596975854e+00 4.176230329941724e+00 4.392277231015683e+00 9.334082842844762e+03 + 340 1.056836316225221e+00 -6.094477310586364e+00 -5.975940734624987e+00 3.221256895122957e+00 4.901912257769030e+00 9.143345371605477e+03 + 360 1.027370901346992e+00 -6.057905193474668e+00 -5.990495882312443e+00 3.382497773809937e+00 4.769572470060623e+00 9.187901604960492e+03 + 380 1.027053843567510e+00 -6.067567333363834e+00 -5.992992123368923e+00 3.352964818195047e+00 4.781187214462276e+00 9.195571631580398e+03 + 400 9.647458413060627e-01 -5.991119322386009e+00 -6.023522809301189e+00 3.756132264420374e+00 4.570066428130018e+00 9.289383729169578e+03 + 420 9.505543699450696e-01 -5.990054663373088e+00 -5.954997797428323e+00 3.796781777281000e+00 4.998083726568312e+00 9.079390028764674e+03 + 440 9.432138789227676e-01 -5.999500661104858e+00 -5.965348596051710e+00 3.749404409954200e+00 4.945510852504365e+00 9.110957857286596e+03 + 460 9.946517677936523e-01 -6.094506023215614e+00 -5.922729347729346e+00 3.244233981455053e+00 5.230602234451828e+00 8.981356715586544e+03 + 480 9.768158811921931e-01 -6.083372216619380e+00 -5.984015465829660e+00 3.255702454543993e+00 4.826224292986060e+00 9.168060189574073e+03 + 500 9.735587401236447e-01 -6.093252792321985e+00 -5.989449928193141e+00 3.225643293190835e+00 4.821695402459973e+00 9.184679322046662e+03 + 520 9.673953565770059e-01 -6.095243147212247e+00 -5.970259243675635e+00 3.254347301876793e+00 4.972024217180586e+00 9.125967781754774e+03 + 540 9.564831427064477e-01 -6.085367390550866e+00 -5.960762164817647e+00 3.252523065566245e+00 4.968025554322751e+00 9.096994293608030e+03 + 560 9.160259766588862e-01 -6.024333603042241e+00 -6.004486973148659e+00 3.561916257252231e+00 4.675878677357225e+00 9.230818152603229e+03 + 580 9.365262885929674e-01 -6.047282384694587e+00 -5.995736849141418e+00 3.467335056536695e+00 4.763317498328839e+00 9.203985250309977e+03 + 600 9.905085824153109e-01 -6.111632605457764e+00 -5.999026265069876e+00 3.120825308203702e+00 4.767428340485811e+00 9.214080648246067e+03 + 620 8.983062544144987e-01 -5.953208418045645e+00 -6.051189931643725e+00 3.902216336689605e+00 4.339591323019206e+00 9.374838861707278e+03 + 640 9.727178632994492e-01 -6.034356553093311e+00 -5.993377567277118e+00 3.544024007704800e+00 4.779331685738934e+00 9.196711017802761e+03 + 660 9.868479743130403e-01 -6.018937110508205e+00 -6.022262145227385e+00 3.646354583354751e+00 4.627261719449758e+00 9.285527836847134e+03 + 680 1.042099410995170e+00 -6.061895338965634e+00 -6.009701595109138e+00 3.448886151723162e+00 4.748590705902920e+00 9.246864122826662e+03 + 700 1.007797621586424e+00 -5.977163022849595e+00 -6.038029591020394e+00 3.793032147707110e+00 4.443526894199397e+00 9.334177552353092e+03 + 720 1.060607296456946e+00 -6.028231877432784e+00 -6.016093863057161e+00 3.583008768087949e+00 4.652707124984429e+00 9.266521722759040e+03 + 740 1.032187279438618e+00 -5.965848703351575e+00 -6.040028547837692e+00 3.860961083724912e+00 4.435008937391792e+00 9.340337375312332e+03 + 760 1.026294810899552e+00 -5.944279252754226e+00 -6.028390103116603e+00 3.971505547814307e+00 4.488528028921509e+00 9.304396431357543e+03 + 780 1.004838448427803e+00 -5.903901342566534e+00 -6.054572355333297e+00 4.234631152466997e+00 4.369454880896369e+00 9.385298252566547e+03 + 800 1.072022975471984e+00 -6.004117677002591e+00 -6.023784574182003e+00 3.645243430038966e+00 4.532313062992278e+00 9.290217112242535e+03 + 820 1.004076334131657e+00 -5.908459509214397e+00 -5.998944780536973e+00 4.207017478915473e+00 4.687437048430760e+00 9.213783936955662e+03 + 840 1.053090926477705e+00 -5.987174315507324e+00 -6.000355723291464e+00 3.703641389302587e+00 4.627951705989791e+00 9.218103864493949e+03 + 860 1.059694538978974e+00 -6.006624645080397e+00 -5.989214936393363e+00 3.625012862867183e+00 4.724982104291838e+00 9.183981890165787e+03 + 880 1.038407762919759e+00 -5.987136018377438e+00 -6.025552832897892e+00 3.794956680037541e+00 4.574361386078261e+00 9.295652878164343e+03 + 900 1.043007690526313e+00 -6.013465419734895e+00 -6.027614020233820e+00 3.606232258595921e+00 4.524988805042247e+00 9.302022765689335e+03 + 920 9.896570453270673e-01 -5.959465041355689e+00 -6.022233802324223e+00 3.876398191027682e+00 4.515970252111998e+00 9.285436808518602e+03 + 940 9.948607795251544e-01 -5.993672588532680e+00 -5.984650909476759e+00 3.701359263747514e+00 4.753163140986936e+00 9.169980614085634e+03 + 960 1.035827229385980e+00 -6.081034553559161e+00 -5.964961535588436e+00 3.249267281501619e+00 4.915776512931000e+00 9.109798757436427e+03 + 980 9.645096834387771e-01 -6.002594103325545e+00 -5.970445825678690e+00 3.712446235988870e+00 4.897046621167003e+00 9.126545101595195e+03 + 1000 1.009701922889595e+00 -6.096480717012984e+00 -5.972865879407933e+00 3.150534106838672e+00 4.860349633701173e+00 9.133926064502963e+03 + 1020 9.503812786142370e-01 -6.034008329652367e+00 -5.988601219595624e+00 3.507987022353116e+00 4.768721675026509e+00 9.182098355151335e+03 + 1040 9.746274789930985e-01 -6.096484341462583e+00 -5.950936231351280e+00 3.210104652802036e+00 5.045864424558385e+00 9.067059029444334e+03 + 1060 9.407431654685644e-01 -6.068377501281406e+00 -5.992631788204981e+00 3.352843024974694e+00 4.787786631070743e+00 9.194434219962888e+03 + 1080 9.091514504280382e-01 -6.043112056004267e+00 -5.973207871722924e+00 3.505526407055114e+00 4.906927050836144e+00 9.134970839495374e+03 + 1100 9.823903220122076e-01 -6.174514117857894e+00 -5.976777098839887e+00 2.740608171405174e+00 4.876044734311370e+00 9.145905655707946e+03 + 1120 8.981855268428002e-01 -6.082432685610340e+00 -6.020568037873874e+00 3.214706017518917e+00 4.569942398345004e+00 9.280315376370809e+03 + 1140 8.612422145608321e-01 -6.067113629744508e+00 -6.009413636339771e+00 3.288232584945134e+00 4.619554876120258e+00 9.245993039824376e+03 + 1160 9.045004881983270e-01 -6.173092798124903e+00 -6.002290480654269e+00 2.775781332075512e+00 4.756554670565095e+00 9.224085597860292e+03 + 1180 8.261610909928941e-01 -6.091231310673821e+00 -5.987711242384705e+00 3.247882000724438e+00 4.842310252519333e+00 9.179374736097656e+03 + 1200 9.282271319004017e-01 -6.262203325647667e+00 -5.975959661581035e+00 2.263150983099611e+00 4.906806398234071e+00 9.143433281056405e+03 + 1220 8.679135131073991e-01 -6.179410432364137e+00 -5.949695464638571e+00 2.752682811237898e+00 5.071741704194469e+00 9.063282970693110e+03 + 1240 8.583254347975858e-01 -6.158990899882398e+00 -5.940456743778165e+00 2.869393831047280e+00 5.124250773449146e+00 9.035165857395938e+03 + 1260 8.392364297846614e-01 -6.108064463514651e+00 -5.991278083147219e+00 3.109662104369866e+00 4.780267573073615e+00 9.190311837705440e+03 + 1280 8.631940855471624e-01 -6.106811334400191e+00 -5.987869258418657e+00 3.096836280393307e+00 4.779820086906047e+00 9.179852510951436e+03 + 1300 9.465910253599886e-01 -6.185941712773322e+00 -5.966243376948754e+00 2.718706219490234e+00 4.980248062002492e+00 9.113715590844284e+03 + 1320 8.939698422180601e-01 -6.062554909492443e+00 -6.022387835720140e+00 3.339322187895670e+00 4.569967741330808e+00 9.285909078300389e+03 + 1340 9.663415310096390e-01 -6.131157347769264e+00 -5.999184745874027e+00 2.998219610823661e+00 4.756026713600249e+00 9.214559738040494e+03 + 1360 9.326348979354570e-01 -6.051960664761741e+00 -6.011566541804979e+00 3.365357240996571e+00 4.597306545984625e+00 9.252606709869695e+03 + 1380 9.838831860561270e-01 -6.102340308996237e+00 -5.979875506911626e+00 3.181681026634277e+00 4.884892871570987e+00 9.155389025363127e+03 + 1400 9.561080585035765e-01 -6.037376222780178e+00 -5.978052697966062e+00 3.543719619114497e+00 4.884364478882951e+00 9.149781487609316e+03 + 1420 9.616152894373232e-01 -6.020403307929190e+00 -5.978725706122892e+00 3.613292863917748e+00 4.852612103077540e+00 9.151829441811955e+03 + 1440 9.231289155307136e-01 -5.934284213675148e+00 -6.028403994703597e+00 4.048890017676614e+00 4.508439670022217e+00 9.304435171640742e+03 + 1460 1.061667021810408e+00 -6.111519345048196e+00 -5.982690110417253e+00 3.113188388223132e+00 4.852945789733632e+00 9.163980881948735e+03 + 1480 1.059560219796085e+00 -6.084363329559978e+00 -5.987728413345155e+00 3.245236537840204e+00 4.800129180950673e+00 9.179438219977714e+03 + 1500 1.012750280838527e+00 -5.994531923159054e+00 -6.015705850948073e+00 3.690030187222798e+00 4.568446217203522e+00 9.265347935357384e+03 + 1520 9.790047711106866e-01 -5.925333053702159e+00 -6.031653821996447e+00 4.150180624103042e+00 4.539670319471520e+00 9.314481840846052e+03 + 1540 1.025220067885404e+00 -5.977965865465314e+00 -6.045639152412221e+00 3.784324604882108e+00 4.395734118825657e+00 9.357694194805334e+03 + 1560 1.053346800561144e+00 -6.007394640953897e+00 -6.035779256370128e+00 3.638965429074724e+00 4.475976574849684e+00 9.327229361837670e+03 + 1580 1.003756286747422e+00 -5.925712214111871e+00 -6.049388789297026e+00 4.111927361262683e+00 4.401757327661366e+00 9.369295883063558e+03 + 1600 1.040645216151974e+00 -5.976765290845121e+00 -6.024478595502995e+00 3.838056328051300e+00 4.564079149095758e+00 9.292350889159208e+03 + 1620 1.030742510336460e+00 -5.963069451146461e+00 -6.055529072612251e+00 3.826054093709232e+00 4.295136639172486e+00 9.388280332857752e+03 + 1640 1.018291214069761e+00 -5.950336595093376e+00 -6.006532544475585e+00 3.985599254086584e+00 4.662913416438871e+00 9.237118285165081e+03 + 1660 1.009859899650586e+00 -5.949038278212260e+00 -6.024847881588862e+00 3.882239073593950e+00 4.446928599507297e+00 9.293477948668717e+03 + 1680 9.780695418336188e-01 -5.917263721192500e+00 -5.984150165550203e+00 4.205923125606110e+00 4.821850811460366e+00 9.168437667864344e+03 + 1700 9.844247949153297e-01 -5.944284099104667e+00 -6.001674975408905e+00 3.981291226819832e+00 4.651743933871494e+00 9.222151852808516e+03 + 1720 1.035204086152618e+00 -6.041765106493767e+00 -5.948400346256865e+00 3.508107768540726e+00 5.044222669970972e+00 9.059309939352459e+03 + 1740 9.735465874127380e-01 -5.973907150827966e+00 -6.006128340233649e+00 3.849236040922400e+00 4.664216985142023e+00 9.235831751128731e+03 + 1760 1.021647547350805e+00 -6.071789444504817e+00 -5.989492696206266e+00 3.322520166070766e+00 4.795080830181685e+00 9.184829491874758e+03 + 1780 9.829912709311043e-01 -6.046511031752197e+00 -6.038580258282047e+00 3.444541353488311e+00 4.490081082037142e+00 9.335858705823826e+03 + 1800 9.067041211651782e-01 -5.967479188311842e+00 -5.998576782562291e+00 3.876458068413311e+00 4.697890869890072e+00 9.212664495094426e+03 + 1820 9.303027555203129e-01 -6.029911981483854e+00 -5.930260731696491e+00 3.557669590060521e+00 5.129882487320623e+00 9.004180678770081e+03 + 1840 9.484660292210128e-01 -6.076645362889215e+00 -5.951701991424679e+00 3.286465790439809e+00 5.003909964313417e+00 9.069351674519061e+03 + 1860 9.637328962958422e-01 -6.110724043144727e+00 -5.953757959079353e+00 3.119542288695860e+00 5.020865833822242e+00 9.075642905854969e+03 + 1880 8.992123982400598e-01 -6.018902590362062e+00 -5.991568529985308e+00 3.591046499455746e+00 4.748002904071240e+00 9.191203718047062e+03 + 1900 9.136576225450348e-01 -6.037676417633506e+00 -5.999434369818164e+00 3.511791468349679e+00 4.731383224843148e+00 9.215333290945684e+03 + 1920 9.375535911212801e-01 -6.062472661411043e+00 -6.047567016027818e+00 3.282000146257340e+00 4.367590668688988e+00 9.363663142520585e+03 + 1940 9.350410412094516e-01 -6.039333226980075e+00 -6.015832450194493e+00 3.452686812962875e+00 4.587631909999144e+00 9.265750484394532e+03 + 1960 9.309914320231641e-01 -6.003514157522395e+00 -6.027302326423196e+00 3.700951024414730e+00 4.564355677379094e+00 9.301039255333508e+03 + 1980 9.786398925214956e-01 -6.028676277651872e+00 -5.957244057744021e+00 3.550445026623316e+00 4.960619887434501e+00 9.086252584614320e+03 + 2000 1.017743470513826e+00 -6.025728074018636e+00 -5.974009382759989e+00 3.526447486996597e+00 4.823424215645353e+00 9.137407848709952e+03 + 2020 9.921831384791643e-01 -5.930579681929451e+00 -6.026583243819555e+00 4.095294307714560e+00 4.544026998838393e+00 9.298780957635769e+03 + 2040 1.034756316252099e+00 -5.953264022547445e+00 -6.024434590300764e+00 3.912884935097801e+00 4.504212521448473e+00 9.292197153295034e+03 + 2060 1.041898878799784e+00 -5.943857455222254e+00 -5.973584742468068e+00 4.009494240136615e+00 4.838795556488317e+00 9.136119215063945e+03 + 2080 1.051587850596250e+00 -5.949092659230135e+00 -6.022106408040662e+00 3.979419693954676e+00 4.560163449443515e+00 9.285027914872551e+03 + 2100 1.020323879461642e+00 -5.900714442462338e+00 -5.972696865701201e+00 4.295087615259903e+00 4.881753401778361e+00 9.133418294755478e+03 + 2120 1.044581017076930e+00 -5.937354763172756e+00 -6.039917373455466e+00 3.978618766764721e+00 4.389688387008756e+00 9.339992016263102e+03 + 2140 1.072055660059346e+00 -5.984065213816709e+00 -6.034809567899721e+00 3.798878619746003e+00 4.507496685937936e+00 9.324209110359001e+03 + 2160 1.031227062578640e+00 -5.938162908297856e+00 -6.008447238754909e+00 4.021517220865634e+00 4.617933718916242e+00 9.243000022398610e+03 + 2180 1.034755143010538e+00 -5.961335305794837e+00 -6.000325005504487e+00 3.915225660617375e+00 4.691340771248034e+00 9.218057646159879e+03 + 2200 1.039001354083559e+00 -5.991444062035432e+00 -5.983379262141549e+00 3.733477616826287e+00 4.779786945840719e+00 9.166106402515536e+03 + 2220 9.498847331017423e-01 -5.885838586722715e+00 -5.984317424434447e+00 4.321695272838102e+00 4.756214547146445e+00 9.168955183721220e+03 + 2240 9.501942141050930e-01 -5.910020863783831e+00 -6.001311713438006e+00 4.156209699406988e+00 4.632003513479384e+00 9.221083876521356e+03 + 2260 1.026549044077855e+00 -6.043911692494221e+00 -5.985909374576475e+00 3.420934742591152e+00 4.753993027904539e+00 9.173858090843971e+03 + 2280 9.873378131784011e-01 -6.005570184901982e+00 -5.966671314414222e+00 3.687934278815697e+00 4.911297612737165e+00 9.115019236940161e+03 + 2300 9.660380825961528e-01 -5.991868163662822e+00 -5.979463994929207e+00 3.732624032155659e+00 4.803850688562990e+00 9.154115146407163e+03 + 2320 9.851804439154875e-01 -6.036748149167285e+00 -6.010997252042185e+00 3.492100692452209e+00 4.639966328682985e+00 9.250817241884635e+03 + 2340 9.482326737821434e-01 -5.997867538123590e+00 -5.986639006873171e+00 3.689368633512774e+00 4.753844597562276e+00 9.176097066986249e+03 + 2360 9.953533969036702e-01 -6.077373108878684e+00 -5.962167911492571e+00 3.280619420808249e+00 4.942145492145984e+00 9.101280340212683e+03 + 2380 9.555158600898254e-01 -6.023581740385814e+00 -6.025046558822569e+00 3.547031133274983e+00 4.538619919131214e+00 9.294088012067339e+03 + 2400 1.010563190649329e+00 -6.108023021694780e+00 -5.991314693986003e+00 3.084174459512837e+00 4.754331737771976e+00 9.190415795063142e+03 + 2420 9.303996037417740e-01 -5.991673144743388e+00 -5.983113311373838e+00 3.810089780922815e+00 4.859241668760707e+00 9.165260814618883e+03 + 2440 9.761594421211988e-01 -6.057620798964248e+00 -5.983689112842983e+00 3.367003247267722e+00 4.791530429867476e+00 9.167047424311824e+03 + 2460 9.762053469145309e-01 -6.045998557885177e+00 -6.012621894164110e+00 3.485410621104526e+00 4.677064589212911e+00 9.255827985432243e+03 + 2480 9.794895189369441e-01 -6.029820602379265e+00 -6.013111971902220e+00 3.568292288370280e+00 4.664235830221678e+00 9.257340610576595e+03 + 2500 9.901602346720159e-01 -6.013416932535310e+00 -5.998316337917947e+00 3.636029655824388e+00 4.722739606926750e+00 9.211864986791772e+03 + 2520 1.006256892986497e+00 -5.994119228495149e+00 -5.995810750660208e+00 3.701285240106636e+00 4.691572258072658e+00 9.204202979425774e+03 + 2540 1.068647567454971e+00 -6.037162225076347e+00 -5.995673923946281e+00 3.526770949061185e+00 4.765003194443874e+00 9.203773043658322e+03 + 2560 9.345765840500163e-01 -5.793252466848898e+00 -6.072559642621477e+00 4.807504092675140e+00 4.203679066743230e+00 9.441133173025577e+03 + 2580 1.060362174286126e+00 -5.945450448550415e+00 -6.032953948211018e+00 3.968270453044044e+00 4.465811816870048e+00 9.318475555371035e+03 + 2600 1.080011758746663e+00 -5.949340082433418e+00 -6.069588002464240e+00 3.908557299120135e+00 4.218075133997671e+00 9.431912568369982e+03 + 2620 1.113381394285127e+00 -5.988674325747065e+00 -6.035308977841042e+00 3.690519788330698e+00 4.422736399317997e+00 9.325775624233764e+03 + 2640 1.023657166333712e+00 -5.857016009885120e+00 -6.048180465356296e+00 4.458707362785388e+00 4.361011476866018e+00 9.365525943049823e+03 + 2660 1.109488090531586e+00 -5.992004849303601e+00 -5.994857830601346e+00 3.790170239168447e+00 4.773787979059367e+00 9.201251093039617e+03 + 2680 1.032737652275809e+00 -5.893406738708014e+00 -6.008598442737576e+00 4.289615871101264e+00 4.628167280704933e+00 9.243453162978010e+03 + 2700 1.051629171914912e+00 -5.942509257626184e+00 -5.993657008849417e+00 4.038403003349119e+00 4.744704700736395e+00 9.197587475794442e+03 + 2720 1.014722340874505e+00 -5.914614315536612e+00 -6.025274163896979e+00 4.224254414766998e+00 4.588828440925579e+00 9.294780369992295e+03 + 2740 1.039197040881143e+00 -5.981558520348850e+00 -5.997250644504337e+00 3.829334480190060e+00 4.739227874940885e+00 9.208629298257638e+03 + 2760 1.070878298826088e+00 -6.057517124960611e+00 -6.008307276540997e+00 3.382791461497443e+00 4.665362026322305e+00 9.242577588477710e+03 + 2780 9.830312757942556e-01 -5.959283988455138e+00 -6.039760881587464e+00 3.921878249313939e+00 4.459767475189163e+00 9.339520863067426e+03 + 2800 9.801307540648010e-01 -5.981790130528015e+00 -6.034934304254086e+00 3.870926889113588e+00 4.565764819544185e+00 9.324605886665495e+03 + 2820 9.462318991246462e-01 -5.953966927629361e+00 -6.041830260968773e+00 3.959424236510390e+00 4.454899379668600e+00 9.345901684382037e+03 + 2840 9.535508840369477e-01 -5.980222082028534e+00 -6.012182687144961e+00 3.876535132139107e+00 4.693012391672928e+00 9.254461951048976e+03 + 2860 9.627648079880218e-01 -6.002855054410181e+00 -6.018572722364612e+00 3.686783491084446e+00 4.596530209388844e+00 9.274130511816469e+03 + 2880 1.005801764967796e+00 -6.071303014685317e+00 -5.990168863171433e+00 3.418057899300059e+00 4.883942752762154e+00 9.186884425309876e+03 + 2900 9.849232294897350e-01 -6.042206903587623e+00 -6.008418887185501e+00 3.453067575227690e+00 4.647083594087311e+00 9.242919697632258e+03 + 2920 9.411968773959798e-01 -5.977984921752276e+00 -6.021323552518306e+00 3.809540561171684e+00 4.560683436681699e+00 9.282625017763461e+03 + 2940 1.000686166239594e+00 -6.063314862394346e+00 -5.976942496972629e+00 3.353806447158134e+00 4.849769935489987e+00 9.146411942290853e+03 + 2960 9.392082554761829e-01 -5.967112888359170e+00 -5.989627792429555e+00 3.840019384867245e+00 4.710735321524949e+00 9.185226185427615e+03 + 2980 9.447304062331515e-01 -5.967848312745796e+00 -5.984103680657841e+00 3.871254031001020e+00 4.777913192940002e+00 9.168298809431211e+03 + 3000 9.606414785527527e-01 -5.981194174221447e+00 -6.002773462745154e+00 3.784288609205670e+00 4.660376995118439e+00 9.225552721251815e+03 + 3020 9.880595790204920e-01 -6.009494716157877e+00 -5.992218641087182e+00 3.654581812368313e+00 4.753783708888221e+00 9.193173636030911e+03 + 3040 1.011180929173924e+00 -6.029525900679877e+00 -5.989745576332014e+00 3.587552084372791e+00 4.815976862763517e+00 9.185596499324651e+03 + 3060 1.011911136187293e+00 -6.016382547528823e+00 -6.012811783938136e+00 3.638614503821353e+00 4.659118380932961e+00 9.256420456776001e+03 + 3080 1.020026774447945e+00 -6.016400564864076e+00 -6.017117826887823e+00 3.558561438341541e+00 4.554442808805248e+00 9.269676226489781e+03 + 3100 1.007971832853203e+00 -5.987149615203221e+00 -6.005785857028267e+00 3.751523937660454e+00 4.644511753151946e+00 9.234815644439706e+03 + 3120 1.011341027154857e+00 -5.981640734874794e+00 -6.027486903465731e+00 3.730749043776597e+00 4.467493249055780e+00 9.301614192902829e+03 + 3140 1.007076862660630e+00 -5.965252156060949e+00 -6.007617148696273e+00 3.882499579681222e+00 4.639233236007769e+00 9.240442889560381e+03 + 3160 1.073632589572695e+00 -6.054031491915745e+00 -5.988175570421679e+00 3.401162761039406e+00 4.779317653429248e+00 9.180779960820466e+03 + 3180 1.030166609526896e+00 -5.978856982193729e+00 -5.985084017109939e+00 3.840710935495786e+00 4.804954337376373e+00 9.171308501639287e+03 + 3200 1.020630683248332e+00 -5.950649446427690e+00 -6.017463492031761e+00 3.957398786018643e+00 4.573742196719922e+00 9.270722729195708e+03 + 3220 9.968101488815060e-01 -5.896947045257455e+00 -6.010164052361333e+00 4.229104054184100e+00 4.578994479118410e+00 9.248266408994359e+03 + 3240 1.042428406148051e+00 -5.940420358450944e+00 -5.975439308105395e+00 4.005601418669922e+00 4.804517190589120e+00 9.141791687066110e+03 + 3260 1.080066598827196e+00 -5.964930572463833e+00 -5.979451273974031e+00 3.903313057861419e+00 4.819932942718562e+00 9.154080881470041e+03 + 3280 1.072746146537266e+00 -5.920567906594299e+00 -6.040384428456953e+00 4.044621794660398e+00 4.356616784578203e+00 9.341431434208342e+03 + 3300 1.085441613190360e+00 -5.913497649224604e+00 -6.040784403647850e+00 4.101471058690484e+00 4.370570817230624e+00 9.342451133263708e+03 + 3320 1.076712344604172e+00 -5.882368602096050e+00 -5.976627399621725e+00 4.320070893900955e+00 4.778822292006757e+00 9.145409093911379e+03 + 3340 1.093623640378408e+00 -5.898439667333133e+00 -5.961261734807988e+00 4.219166263362994e+00 4.858432230238855e+00 9.098490429666879e+03 + 3360 1.072944271299633e+00 -5.868168079823051e+00 -5.983598523840099e+00 4.349648711679153e+00 4.686829239329781e+00 9.166723610562371e+03 + 3380 1.117417028058658e+00 -5.943277023718887e+00 -5.971003119454888e+00 4.000763826108606e+00 4.841556293793033e+00 9.128192779090085e+03 + 3400 1.037683867890879e+00 -5.843876471677682e+00 -5.989427558972986e+00 4.476469135700259e+00 4.640692268492654e+00 9.184581782035362e+03 + 3420 1.021658763572165e+00 -5.847874001331785e+00 -5.995160526740977e+00 4.484251693906921e+00 4.638509672491197e+00 9.202201969602043e+03 + 3440 1.065258345480367e+00 -5.948706834196946e+00 -6.021101835130653e+00 3.944764126475560e+00 4.529060828024026e+00 9.281956137858011e+03 + 3460 1.031966239432393e+00 -5.942066839140922e+00 -6.009466249572204e+00 3.970214508221928e+00 4.583196663500449e+00 9.246135658337891e+03 + 3480 1.054415802962347e+00 -6.017189121400237e+00 -6.039561024296128e+00 3.495311757239141e+00 4.366848828770149e+00 9.338901754216091e+03 + 3500 1.006713120035035e+00 -5.987115225273905e+00 -6.005650854316645e+00 3.790130531512980e+00 4.683696081170244e+00 9.234350064588838e+03 + 3520 9.694265651904677e-01 -5.963306726200607e+00 -5.966162793792082e+00 3.910760246909794e+00 4.894360264824506e+00 9.113468184892854e+03 + 3540 9.523886622156332e-01 -5.958295393871244e+00 -5.951014673946521e+00 3.993914615308931e+00 5.035721635804457e+00 9.067254570836672e+03 + 3560 9.733982647195688e-01 -6.000797567247605e+00 -6.006092547335903e+00 3.677027906655749e+00 4.646623311593222e+00 9.235746258530027e+03 + 3580 9.738608440074300e-01 -6.009589702599920e+00 -5.993259212848380e+00 3.660396982962986e+00 4.754169182251450e+00 9.196369398150540e+03 + 3600 1.008182083410457e+00 -6.067282747934456e+00 -6.008069012592548e+00 3.324726438250809e+00 4.664740869879974e+00 9.241840845024502e+03 + 3620 1.002095068944762e+00 -6.063250784132899e+00 -5.992218881697625e+00 3.310853870743812e+00 4.718730046678532e+00 9.193189633138662e+03 + 3640 9.629683766275819e-01 -6.007373423042736e+00 -5.974138378824420e+00 3.635931648761555e+00 4.826772415769597e+00 9.137832470439938e+03 + 3660 1.007030923033976e+00 -6.072116412557006e+00 -5.975314120209388e+00 3.288734236995075e+00 4.844587979761419e+00 9.141437924786280e+03 + 3680 9.453196857004574e-01 -5.975910717319501e+00 -6.019637357777501e+00 3.779414660700684e+00 4.528329524515105e+00 9.277403897910148e+03 + 3700 9.996765988317244e-01 -6.049604721879160e+00 -5.971170765744680e+00 3.437491838825863e+00 4.887871752565535e+00 9.128743783552945e+03 + 3720 9.465109335752906e-01 -5.960165110712005e+00 -5.993689640179413e+00 3.930219404439828e+00 4.737716368333798e+00 9.197667412311866e+03 + 3740 9.998547044993243e-01 -6.021687768071473e+00 -6.048088367359931e+00 3.526643281450887e+00 4.375046954857030e+00 9.365263468853485e+03 + 3760 1.018426162079519e+00 -6.030903549796617e+00 -5.993436468656391e+00 3.526410892325625e+00 4.741552670244868e+00 9.196891645020381e+03 + 3780 9.919301478058797e-01 -5.968266890542978e+00 -6.022663169456979e+00 3.831763946607261e+00 4.519412095286113e+00 9.286749062207580e+03 + 3800 1.032802765587220e+00 -5.998284844862726e+00 -6.046348762501665e+00 3.615032409709428e+00 4.339041956759424e+00 9.359889654518405e+03 + 3820 1.009259296190237e+00 -5.930434238432996e+00 -6.010049375019904e+00 4.071052486198413e+00 4.613890051513823e+00 9.247921460503227e+03 + 3840 1.126585385853035e+00 -6.070637489612041e+00 -5.931108859694871e+00 3.331552083578798e+00 5.132747068548887e+00 9.006756904059446e+03 + 3860 9.858165235427868e-01 -5.826058291580198e+00 -6.029707170790079e+00 4.595379584086751e+00 4.425996205101403e+00 9.308414534071862e+03 + 3880 9.918746602449459e-01 -5.802990672416779e+00 -5.986998010402254e+00 4.773592382640776e+00 4.716993772884655e+00 9.177142765501709e+03 + 3900 1.071007285801113e+00 -5.890931339508187e+00 -5.970525541733624e+00 4.325594881923820e+00 4.868552655582372e+00 9.126749130409693e+03 + 3920 1.089491711223534e+00 -5.895780558788224e+00 -5.993777207016893e+00 4.223861574889584e+00 4.661149655828264e+00 9.197953925282025e+03 + 3940 1.048658572352398e+00 -5.818089211285449e+00 -6.028886286520174e+00 4.653984790997178e+00 4.443555364257424e+00 9.305927237018384e+03 + 3960 1.101185247847629e+00 -5.892941942773515e+00 -6.024968922271480e+00 4.258372831016914e+00 4.500253483630549e+00 9.293875687543781e+03 + 3980 1.120313400269944e+00 -5.932846968646495e+00 -6.019595212961144e+00 4.023945209774448e+00 4.525823366672314e+00 9.277298240403734e+03 + 4000 1.091829127582950e+00 -5.918734396430521e+00 -5.985734198674102e+00 4.119797275426038e+00 4.735074042757508e+00 9.173313233656256e+03 + 4020 9.721963004624756e-01 -5.783194037174813e+00 -6.021902596844681e+00 4.757020743483064e+00 4.386319253828455e+00 9.284403214650089e+03 + 4040 1.063373464920160e+00 -5.974536434176336e+00 -6.045427591412041e+00 3.769015665640560e+00 4.361947670422014e+00 9.357007046233530e+03 + 4060 1.015293346186780e+00 -5.966548746963285e+00 -6.006285398183890e+00 3.914527435356471e+00 4.686353434820857e+00 9.236338961582338e+03 + 4080 9.993378842786982e-01 -5.991883149289349e+00 -6.004487612620793e+00 3.703123216914080e+00 4.630746437930532e+00 9.230824719355480e+03 + 4100 9.561151538000644e-01 -5.954860014194095e+00 -6.012220272542246e+00 3.885895556850453e+00 4.556524076944077e+00 9.254585714971439e+03 + 4120 9.408987236223856e-01 -5.946937895081044e+00 -6.003477253968585e+00 4.019013748889695e+00 4.694356000719924e+00 9.227706769291255e+03 + 4140 1.004251879573544e+00 -6.047439193456807e+00 -5.999469157020783e+00 3.364161134212510e+00 4.639612506767302e+00 9.215409979388383e+03 + 4160 9.586432653986863e-01 -5.982433031350787e+00 -6.021278538486745e+00 3.859902493038883e+00 4.636845579741412e+00 9.282466826975768e+03 + 4180 1.019596530380820e+00 -6.075200624225912e+00 -5.972003418600652e+00 3.327443469990194e+00 4.920017794406395e+00 9.131319024056338e+03 + 4200 9.086914438199921e-01 -5.912702595721634e+00 -5.999284005381182e+00 4.175701362648018e+00 4.678537509953052e+00 9.214805411939538e+03 + 4220 9.715150786532474e-01 -6.003188042160390e+00 -5.967304306169579e+00 3.636773451115851e+00 4.842823416165289e+00 9.116939352035424e+03 + 4240 1.005305718437036e+00 -6.046592714837915e+00 -5.941203590097428e+00 3.428614800244865e+00 5.033775463419084e+00 9.037429637655890e+03 + 4260 9.257906715417170e-01 -5.915993439442449e+00 -5.988992329070927e+00 4.082651425180469e+00 4.663480504392084e+00 9.183264967211482e+03 + 4280 9.999548309041966e-01 -6.009850818174981e+00 -5.955710736827855e+00 3.620834930803031e+00 4.931715656048740e+00 9.081585542575438e+03 + 4300 1.021830487647197e+00 -6.020985563180852e+00 -6.013836887115412e+00 3.552511010400049e+00 4.593559814621850e+00 9.259590321663001e+03 + 4320 1.039766526261748e+00 -6.028362336867639e+00 -6.003849233477077e+00 3.588097103167032e+00 4.728855136226136e+00 9.228893642098019e+03 + 4340 1.059382561732061e+00 -6.041040928346275e+00 -6.000815225312564e+00 3.448783252554340e+00 4.679765464281340e+00 9.219566237384897e+03 + 4360 9.601960985591919e-01 -5.879358097120233e+00 -6.027806230706406e+00 4.356576068614383e+00 4.504163913288152e+00 9.302583550401443e+03 + 4380 1.058249279172794e+00 -6.011082182682083e+00 -5.960575171682509e+00 3.632558932859346e+00 4.922578005953594e+00 9.096396761605236e+03 + 4400 1.002980986478341e+00 -5.914417481258615e+00 -5.984633972644812e+00 4.191620143915703e+00 4.788426184409230e+00 9.169933636563908e+03 + 4420 1.082068816461707e+00 -6.017436089080619e+00 -5.983053343078428e+00 3.586038757578460e+00 4.783469805835790e+00 9.165116976022857e+03 + 4440 1.061286486232710e+00 -5.974874890749169e+00 -5.996978928286077e+00 3.859710563955086e+00 4.732785759829409e+00 9.207781248806115e+03 + 4460 1.038420575605546e+00 -5.934923792289783e+00 -6.025381434770757e+00 4.053721441706790e+00 4.534299660306106e+00 9.295149503596334e+03 + 4480 1.086746055791167e+00 -6.005858125526991e+00 -6.019440893004091e+00 3.658459955594631e+00 4.580465602814648e+00 9.276847117278245e+03 + 4500 1.004168006580201e+00 -5.891357210668867e+00 -6.049336854842889e+00 4.245339504612212e+00 4.338195940494049e+00 9.369129634674207e+03 + 4520 1.074376045690063e+00 -6.012947987904671e+00 -5.983343029405423e+00 3.589121564058499e+00 4.759117817113709e+00 9.165986080710611e+03 + 4540 1.065658866546122e+00 -6.026136894492219e+00 -5.952077384549630e+00 3.585952781609784e+00 5.011213948372253e+00 9.070509265396831e+03 + 4560 1.014347533226436e+00 -5.983900639677593e+00 -5.973688214772762e+00 3.746795102680053e+00 4.805436426851234e+00 9.136464519241572e+03 + 4580 1.080895178222875e+00 -6.123232706459804e+00 -5.929630186162070e+00 3.120877493665051e+00 5.232573125107832e+00 9.002296828090088e+03 + 4600 1.023694977760492e+00 -6.082546721213627e+00 -5.982998842510562e+00 3.283069243988292e+00 4.854688568485736e+00 9.164920622509109e+03 + 4620 1.015242909288608e+00 -6.108709820259902e+00 -5.941959479201487e+00 3.116497674912809e+00 5.074003937802107e+00 9.039719718175407e+03 + 4640 9.437963938727322e-01 -6.029091791227970e+00 -5.975115874897527e+00 3.564927016150610e+00 4.874865080466072e+00 9.140801596889612e+03 + 4660 1.032349219695345e+00 -6.180017520349998e+00 -5.940668658696694e+00 2.725226651747389e+00 5.099604854477294e+00 9.035833106021235e+03 + 4680 8.751490224849779e-01 -5.956774824522371e+00 -6.014287728499493e+00 3.945624925148114e+00 4.615376930418346e+00 9.260944839503827e+03 + 4700 9.620283301213486e-01 -6.086762233934897e+00 -5.977006653639287e+00 3.266065562869586e+00 4.896299089548140e+00 9.146596388119653e+03 + 4720 9.288832846089641e-01 -6.033565851287475e+00 -6.002306350916044e+00 3.515603056148436e+00 4.695099944673240e+00 9.224126821863805e+03 + 4740 9.171479947665157e-01 -6.007981814752871e+00 -6.003910283841148e+00 3.643230966849780e+00 4.666610327412265e+00 9.229052171876554e+03 + 4760 9.853995364836978e-01 -6.094701962473504e+00 -5.974474254587436e+00 3.213301259810074e+00 4.903667363669545e+00 9.138862427644885e+03 + 4780 9.490384698113096e-01 -6.022070329756303e+00 -6.021428214332465e+00 3.613064220015441e+00 4.616751346146162e+00 9.282950342019618e+03 + 4800 9.856489968670992e-01 -6.056563941714792e+00 -6.018039145783735e+00 3.373470257286558e+00 4.594685597215588e+00 9.272528922026149e+03 + 4820 9.897056684697090e-01 -6.041354017993713e+00 -5.981655802229364e+00 3.518919709495153e+00 4.861716102683078e+00 9.160827436546373e+03 + 4840 9.512275933944374e-01 -5.962423114536703e+00 -6.021382904494739e+00 3.941539698000876e+00 4.602983460063827e+00 9.282779117091648e+03 + 4860 9.974556488948330e-01 -6.008304304574613e+00 -6.002909434507348e+00 3.646830439109826e+00 4.677808617889510e+00 9.225966721877481e+03 + 4880 1.071064655139168e+00 -6.098181338622992e+00 -5.959279019786360e+00 3.203795283419748e+00 5.001393893244066e+00 9.092454621248857e+03 + 4900 9.704409234167937e-01 -5.932937165041182e+00 -5.983341666542739e+00 4.077860999365625e+00 4.788430551672287e+00 9.165969254440059e+03 + 4920 1.059680802063349e+00 -6.052092435826277e+00 -5.984282167934261e+00 3.422153198810520e+00 4.811530250651517e+00 9.168851646029139e+03 + 4940 9.976110119627312e-01 -5.951119446824801e+00 -6.003892209096567e+00 3.957283656833675e+00 4.654254289310630e+00 9.228993446688221e+03 + 4960 9.754515856461196e-01 -5.913513928462592e+00 -6.061746871802318e+00 4.136522580070434e+00 4.285346080439885e+00 9.407573560105668e+03 + 4980 1.045355579062856e+00 -6.016634841863393e+00 -6.025847765746166e+00 3.585903510377515e+00 4.533001475747270e+00 9.296550655221881e+03 + 5000 9.757168464506525e-01 -5.915662370049439e+00 -6.030359452794837e+00 4.165906739320581e+00 4.507298340880316e+00 9.310464913229451e+03 + 5020 1.010924527008094e+00 -5.969366204432081e+00 -6.033809327852344e+00 3.838693448487930e+00 4.468651061267659e+00 9.321137507991523e+03 + 5040 1.048559112424664e+00 -6.028115724924825e+00 -6.066959224545453e+00 3.522977519302258e+00 4.299932133468471e+00 9.423770270936211e+03 + 5060 1.031725061240572e+00 -6.013183814086882e+00 -6.030091869590448e+00 3.616650222322243e+00 4.519561551107633e+00 9.309659051140223e+03 + 5080 1.011490547826237e+00 -5.994397659536984e+00 -5.953966354534775e+00 3.704962329880044e+00 4.937125139926956e+00 9.076275019279554e+03 + 5100 9.998510673257971e-01 -5.984340965627356e+00 -6.012370532233728e+00 3.767643435423025e+00 4.606693326407823e+00 9.255019995855891e+03 + 5120 1.040691574646468e+00 -6.052579169644728e+00 -5.973184896293180e+00 3.433469573468745e+00 4.889363777277431e+00 9.134908320765669e+03 + 5140 9.530941563442179e-01 -5.930871496783237e+00 -5.995256021530674e+00 4.037184739109076e+00 4.667478834536284e+00 9.202436179321334e+03 + 5160 9.466286786653619e-01 -5.927233285920511e+00 -5.980625460928309e+00 4.140470103086515e+00 4.833883971779358e+00 9.157611049099092e+03 + 5180 9.893774345529118e-01 -5.992872163600977e+00 -5.944770423410557e+00 3.734306613896735e+00 5.010514249790365e+00 9.048278794999967e+03 + 5200 9.989122652156947e-01 -6.005983315413761e+00 -5.968075660677441e+00 3.684872344039691e+00 4.902543963726249e+00 9.119299015050627e+03 + 5220 9.894473034498165e-01 -5.989629378670713e+00 -6.000962221885221e+00 3.724927021705166e+00 4.659852082215644e+00 9.220003678964240e+03 + 5240 9.971788648933735e-01 -6.000014969898450e+00 -5.983900634015466e+00 3.678431402795091e+00 4.770962413120600e+00 9.167695104450562e+03 + 5260 9.880383802563765e-01 -5.983578234475841e+00 -5.976172427753403e+00 3.773413384189942e+00 4.815938672435072e+00 9.144055265842986e+03 + 5280 9.783770157190620e-01 -5.963008888068987e+00 -6.022069406001164e+00 3.816855110166231e+00 4.477720476614055e+00 9.284920980034141e+03 + 5300 1.011596818460412e+00 -6.003750172799442e+00 -6.013112214098848e+00 3.689041184912189e+00 4.635282894999793e+00 9.257357248035451e+03 + 5320 1.059997981633053e+00 -6.063093853469650e+00 -5.986919747911196e+00 3.366118812296346e+00 4.803522314317728e+00 9.176942170936964e+03 + 5340 9.783497976824099e-01 -5.929488288641137e+00 -6.004612595881234e+00 4.032702470814444e+00 4.601327073192834e+00 9.231208711471123e+03 + 5360 1.059745567706651e+00 -6.035030404515558e+00 -5.939953243430296e+00 3.505184553017902e+00 5.051132325112606e+00 9.033602607856410e+03 + 5380 1.014863342614668e+00 -5.948550557313336e+00 -5.972325901094496e+00 3.961143881335394e+00 4.824622178121409e+00 9.132249921902299e+03 + 5400 9.897324472720891e-01 -5.889600958850225e+00 -5.969282641716284e+00 4.285840475903901e+00 4.828295922186413e+00 9.122955462689279e+03 + 5420 1.078236172588016e+00 -5.996725122020378e+00 -5.980336283635626e+00 3.736943020808769e+00 4.831050266978560e+00 9.156767541934090e+03 + 5440 1.084004762944947e+00 -5.983275043051478e+00 -5.983366020347341e+00 3.785085016004242e+00 4.784562610292706e+00 9.166043399978666e+03 + 5460 1.084297857704596e+00 -5.966394586005583e+00 -5.984257122921901e+00 3.861706783670842e+00 4.759137332478693e+00 9.168764419851001e+03 + 5480 1.153904884946485e+00 -6.060333254198593e+00 -5.970304437330078e+00 3.386734019519226e+00 4.903693417892619e+00 9.126122759377435e+03 + 5500 1.077808931407963e+00 -5.945935275087555e+00 -6.053847002352839e+00 3.952932861655575e+00 4.333287024412490e+00 9.383088796157850e+03 + 5520 9.786816592634638e-01 -5.809539653554174e+00 -6.056871941087502e+00 4.689344684602474e+00 4.269124415038306e+00 9.392449300654971e+03 + 5540 1.017367441444998e+00 -5.885321262895590e+00 -6.008598816853474e+00 4.282274636371971e+00 4.574395844405982e+00 9.243452929086670e+03 + 5560 1.052711361242152e+00 -5.962151010836577e+00 -5.977904402783764e+00 3.929488732149212e+00 4.839030317758937e+00 9.149332572700278e+03 + 5580 1.035425238393093e+00 -5.967359900927145e+00 -6.011843502482197e+00 3.849322586420446e+00 4.593890862476246e+00 9.253435065589945e+03 + 5600 1.091397696372464e+00 -6.087413463504488e+00 -5.965079262787088e+00 3.221046605321297e+00 4.923508516996986e+00 9.110152942889883e+03 + 5620 9.871344351288274e-01 -5.970114225847386e+00 -6.021471851996687e+00 3.884573163176955e+00 4.589669726260704e+00 9.283066992292188e+03 + 5640 9.356090245220325e-01 -5.929250743872026e+00 -6.057837391421076e+00 4.090679057663870e+00 4.352314628717824e+00 9.395447721744136e+03 + 5660 9.570236131341587e-01 -5.989829397900140e+00 -6.018915008253314e+00 3.729604022280806e+00 4.562589946649220e+00 9.275199671006494e+03 + 5680 1.006769274817507e+00 -6.084954490916584e+00 -5.976089766181515e+00 3.292537107828805e+00 4.917655204019278e+00 9.143804346081633e+03 + 5700 9.772226525496084e-01 -6.054154103207125e+00 -6.027980248427560e+00 3.456600073305338e+00 4.606894397840540e+00 9.303112449557271e+03 + 5720 1.004681132964730e+00 -6.103537996580522e+00 -5.980211002428537e+00 3.178632718504834e+00 4.886795403716198e+00 9.156395588605385e+03 + 5740 9.629537114872642e-01 -6.046293531496374e+00 -5.980301385354695e+00 3.446842608053926e+00 4.825779723451062e+00 9.156683801735328e+03 + 5760 9.432814310657786e-01 -6.017441989022483e+00 -5.997856050936480e+00 3.633029867370203e+00 4.745495354774160e+00 9.210460024984968e+03 + 5780 9.438639880269430e-01 -6.012985460723320e+00 -6.010682504765166e+00 3.638310316890554e+00 4.651534246383560e+00 9.249850660066708e+03 + 5800 1.013396540903074e+00 -6.105633804982491e+00 -5.983017122842493e+00 3.144377758802217e+00 4.848461722520325e+00 9.164985339179280e+03 + 5820 9.924605588213712e-01 -6.061544550307547e+00 -6.009827671759471e+00 3.381161968027473e+00 4.678128287811613e+00 9.247242714295948e+03 + 5840 9.790768567247068e-01 -6.030616117197404e+00 -6.001454508371686e+00 3.519530007935466e+00 4.686980478557122e+00 9.221531719326957e+03 + 5860 9.865267384262718e-01 -6.028707447766974e+00 -5.959296367723541e+00 3.599082791593898e+00 4.997651954533209e+00 9.092500975018178e+03 + 5880 1.004392276508255e+00 -6.038164096856935e+00 -5.945079514525006e+00 3.541938107758773e+00 5.076444184301268e+00 9.049212008805031e+03 + 5900 9.829846021670952e-01 -5.986019833191618e+00 -5.968206618477462e+00 3.764849623064507e+00 4.867135858539259e+00 9.119695262244757e+03 + 5920 9.951404425776585e-01 -5.980630968966068e+00 -5.976137391136598e+00 3.825038142542648e+00 4.850840961818385e+00 9.143936359961393e+03 + 5940 1.079725312220321e+00 -6.080438292526281e+00 -6.001428032402661e+00 3.270317279673002e+00 4.724006420101069e+00 9.221448861266723e+03 + 5960 9.989169253465102e-01 -5.939895171011616e+00 -6.026045393649169e+00 3.982790120490079e+00 4.488102210401383e+00 9.297192983611458e+03 + 5980 9.783374881607838e-01 -5.894432258850787e+00 -6.041486865680836e+00 4.326536967913803e+00 4.482126658868799e+00 9.344817811866129e+03 + 6000 1.041546319877692e+00 -5.974705612601799e+00 -6.030246193470867e+00 3.815614706266918e+00 4.496692096039618e+00 9.310148842452130e+03 + 6020 1.051890912843227e+00 -5.981522930968983e+00 -6.002336230830966e+00 3.783060230215579e+00 4.663547041560326e+00 9.224219931460868e+03 + 6040 1.046437633435792e+00 -5.968561881988920e+00 -6.015282243198760e+00 3.834808140727155e+00 4.566532596707729e+00 9.263972011743794e+03 + 6060 1.039728880833183e+00 -5.959037025820198e+00 -5.985761787054544e+00 3.923250046454887e+00 4.769792331803838e+00 9.173378181370605e+03 + 6080 1.072441332746860e+00 -6.011392160441919e+00 -5.979704768888013e+00 3.655816589118137e+00 4.837770495028661e+00 9.154836299537148e+03 + 6100 1.018684095824418e+00 -5.942301602409385e+00 -6.027019038936158e+00 3.991129394040049e+00 4.504668763522388e+00 9.300178539178612e+03 + 6120 1.077321872357380e+00 -6.059974814004906e+00 -5.975647366246227e+00 3.425897200241240e+00 4.910118454901943e+00 9.142450846910046e+03 + 6140 9.572651025713240e-01 -5.937997217759268e+00 -5.997908292121036e+00 4.018383218728724e+00 4.674364558534656e+00 9.210623585628760e+03 + 6160 9.437428086284227e-01 -5.988614087691234e+00 -5.955238601319259e+00 3.730600081624487e+00 4.922247289212191e+00 9.080152577679510e+03 + 6180 8.993558712645703e-01 -5.976270306171967e+00 -5.999222734867604e+00 3.770686471983723e+00 4.638890074536516e+00 9.214641427904013e+03 + 6200 1.005502516319027e+00 -6.169504426293264e+00 -5.967201584836466e+00 2.783747729842324e+00 4.945401951750798e+00 9.116649054744739e+03 + 6220 9.143645629047400e-01 -6.058259416269181e+00 -6.002396813551449e+00 3.341686704996195e+00 4.662458414511242e+00 9.224431373030429e+03 + 6240 9.180292769616188e-01 -6.077203530032666e+00 -5.985559911995239e+00 3.221198994539089e+00 4.747430831114052e+00 9.172793988607698e+03 + 6260 9.361532244543671e-01 -6.107968807570139e+00 -5.990173959447031e+00 3.082620076662173e+00 4.759016323278898e+00 9.186907079470320e+03 + 6280 9.169244918505576e-01 -6.074123191940696e+00 -5.966673803722117e+00 3.376217162274156e+00 4.993208177164332e+00 9.115018213151356e+03 + 6300 9.535200288440666e-01 -6.116459456911077e+00 -5.927199422062985e+00 3.068950866784288e+00 5.155711274777767e+00 8.994916798676715e+03 + 6320 9.613177290124841e-01 -6.107179281891756e+00 -5.939951531648578e+00 3.144025915637616e+00 5.104273535944655e+00 9.033638602190102e+03 + 6340 9.905306767367399e-01 -6.118940340932075e+00 -5.959466032124624e+00 3.046515843933387e+00 4.962242003675300e+00 9.093027743636927e+03 + 6360 9.195044884619412e-01 -5.980163506165749e+00 -5.980036732237592e+00 3.814250996041184e+00 4.814978951554864e+00 9.155837004888808e+03 + 6380 9.521204022032809e-01 -5.991538099379107e+00 -5.958431056156011e+00 3.728454124059966e+00 4.918559889545360e+00 9.089862513292219e+03 + 6400 1.018707907979674e+00 -6.051242064607791e+00 -6.005404543330376e+00 3.339034732723152e+00 4.602240873231566e+00 9.233654407248681e+03 + 6420 9.407497928423399e-01 -5.903377523223403e+00 -6.012102398420906e+00 4.218246124971374e+00 4.593931066467254e+00 9.254236770651876e+03 + 6440 9.849100299157684e-01 -5.942937704813716e+00 -6.001027607255208e+00 3.995438044806107e+00 4.661876835603707e+00 9.220214442928758e+03 + 6460 1.070865304036714e+00 -6.049532356078034e+00 -5.982479195741548e+00 3.443919028672649e+00 4.828948651767778e+00 9.163348290350565e+03 + 6480 1.014423973452145e+00 -5.950331077809093e+00 -6.025751133993360e+00 3.911801896728462e+00 4.478728262902427e+00 9.296290736484900e+03 + 6500 1.054343883792371e+00 -5.999675146058478e+00 -5.999572581342661e+00 3.747503623170923e+00 4.748092565640983e+00 9.215711877629525e+03 + 6520 9.879580455720320e-01 -5.895831003709989e+00 -6.038218909782963e+00 4.249775297487751e+00 4.432161906359481e+00 9.334588387667487e+03 + 6540 1.014581840022688e+00 -5.931860340293778e+00 -6.009505015628525e+00 4.056919207461520e+00 4.611071466214722e+00 9.246227498630960e+03 + 6560 1.079115691975294e+00 -6.028066490394108e+00 -5.998251774483101e+00 3.575642241626110e+00 4.746842954199489e+00 9.211675794381028e+03 + 6580 9.909498145204441e-01 -5.902362707862014e+00 -6.019247057253169e+00 4.165647699171476e+00 4.494479677172851e+00 9.276229018258397e+03 + 6600 1.019457493218320e+00 -5.952339796802649e+00 -6.028683887305545e+00 3.902525074647001e+00 4.464145492769551e+00 9.305327661986828e+03 + 6620 1.002956082445952e+00 -5.940935398856265e+00 -6.011796296377248e+00 3.973642188543184e+00 4.566747949289244e+00 9.253297834552495e+03 + 6640 1.034010105212105e+00 -6.007113560478710e+00 -5.978018203045727e+00 3.645221974062047e+00 4.812292018934250e+00 9.149671734008138e+03 + 6660 1.042555111690499e+00 -6.043579367778883e+00 -5.948747092379153e+00 3.466944492727897e+00 5.011486093320335e+00 9.060372779149848e+03 + 6680 9.693288206159477e-01 -5.961949408013727e+00 -5.982692661531932e+00 3.958668718980093e+00 4.839557747270447e+00 9.163954578331099e+03 + 6700 9.501652731260414e-01 -5.960583007119434e+00 -5.980855201421551e+00 3.949934740440664e+00 4.833528663645978e+00 9.158366624263243e+03 + 6720 9.614381634009187e-01 -6.007348896448929e+00 -6.034954041181657e+00 3.606748769686718e+00 4.448235756749052e+00 9.324675206323607e+03 + 6740 9.594738253572362e-01 -6.037485453580036e+00 -6.005346620851628e+00 3.505049222578182e+00 4.689595373572989e+00 9.233453985862467e+03 + 6760 9.321625065563082e-01 -6.027681711734496e+00 -5.972774889542199e+00 3.559434499223746e+00 4.874717969055183e+00 9.133655797604904e+03 + 6780 9.306651908960466e-01 -6.051039835764435e+00 -5.958984978297700e+00 3.435087529701439e+00 4.963680766718587e+00 9.091565776765417e+03 + 6800 9.560581300274191e-01 -6.105567320430523e+00 -5.962754882386369e+00 3.140887487294914e+00 4.960938606697807e+00 9.103057208659622e+03 + 6820 9.635113904575634e-01 -6.126711710079060e+00 -5.980657430914196e+00 3.094450715078799e+00 4.933116987870100e+00 9.157778975190929e+03 + 6840 9.552671459692759e-01 -6.119506842035788e+00 -6.004743295302093e+00 3.063842971815524e+00 4.722833016761859e+00 9.231623746788207e+03 + 6860 9.359675835623258e-01 -6.090100319669534e+00 -5.969200215545214e+00 3.249496486328817e+00 4.943723593441313e+00 9.122748151699549e+03 + 6880 9.458027870708864e-01 -6.094799374890442e+00 -5.970994634339798e+00 3.179946235756467e+00 4.890852214719951e+00 9.128237737498437e+03 + 6900 9.787467483347099e-01 -6.119415746310791e+00 -5.962939559257894e+00 3.053818785004969e+00 4.952329265674395e+00 9.103624544687600e+03 + 6920 9.460049950218078e-01 -6.025587554448097e+00 -5.988831650520934e+00 3.563117778874712e+00 4.774175867182231e+00 9.182782964602371e+03 + 6940 1.021217928965151e+00 -6.071136166007149e+00 -6.001921838686365e+00 3.275596348856908e+00 4.673035727215385e+00 9.222946680297211e+03 + 6960 9.711597655806342e-01 -5.931372903462444e+00 -6.010338909250049e+00 4.074539605009772e+00 4.621104579827440e+00 9.248803802053097e+03 + 6980 1.009093481032663e+00 -5.942710393776651e+00 -5.985948690389844e+00 4.016667187713307e+00 4.768386197455581e+00 9.173956482099673e+03 + 7000 1.002498818114505e+00 -5.904126615547081e+00 -6.012079185901725e+00 4.217945072597616e+00 4.598064708014976e+00 9.254163695766718e+03 + 7020 1.016751810462210e+00 -5.908987088291426e+00 -6.025072709027548e+00 4.191146145764518e+00 4.524564547305959e+00 9.294157555685233e+03 + 7040 1.058157127250388e+00 -5.962289730113469e+00 -6.048309407286286e+00 3.917964750046102e+00 4.424026452217767e+00 9.365934220421901e+03 + 7060 1.005613393312745e+00 -5.883807456672683e+00 -6.077354627941743e+00 4.286676826166834e+00 4.175299017411935e+00 9.456039050603660e+03 + 7080 1.040357681132129e+00 -5.942093401398654e+00 -6.038568043287182e+00 4.012966048905793e+00 4.458993725779284e+00 9.335824668304796e+03 + 7100 1.059819816751772e+00 -5.981914872427253e+00 -5.981032296329150e+00 3.881915442300499e+00 4.886983330834017e+00 9.158903997459436e+03 + 7120 9.828580555396533e-01 -5.883793697499620e+00 -6.007696416816798e+00 4.331494242777085e+00 4.620025654574001e+00 9.240644222187477e+03 + 7140 1.047675115471584e+00 -5.998787368223506e+00 -5.983270987184026e+00 3.702820049178855e+00 4.791917510259753e+00 9.165746988381374e+03 + 7160 1.010496594214760e+00 -5.964892183925705e+00 -6.036084626974207e+00 3.836094633946786e+00 4.427296608967334e+00 9.328163257725235e+03 + 7180 9.707332287557553e-01 -5.930439480074009e+00 -6.047032183940592e+00 4.060456330428669e+00 4.390962982164136e+00 9.362003054842835e+03 + 7200 1.042186728921942e+00 -6.063321280149080e+00 -6.019120892526889e+00 3.362305017288850e+00 4.616110483003354e+00 9.275854019193985e+03 + 7220 9.518454721049487e-01 -5.959084528544982e+00 -6.037029401658884e+00 3.914799062200843e+00 4.467227538850685e+00 9.331085176212033e+03 + 7240 9.658894033754571e-01 -6.006365949457385e+00 -6.004706879926307e+00 3.659004899169161e+00 4.668531533156797e+00 9.231500550126371e+03 + 7260 9.716954402136218e-01 -6.038108694709853e+00 -5.971560551391164e+00 3.563530230196384e+00 4.945659967424191e+00 9.129927028319607e+03 + 7280 9.928310444284584e-01 -6.085965576963126e+00 -5.914651409165964e+00 3.258378325816789e+00 5.242090788089879e+00 8.956904465428192e+03 + 7300 1.030853189965956e+00 -6.151616317720324e+00 -5.940735090869970e+00 2.904476264916390e+00 5.115388903255507e+00 9.036002859372953e+03 + 7320 8.948460086534725e-01 -5.953238733848448e+00 -6.015621522892873e+00 3.966544417310241e+00 4.608332788911740e+00 9.265068667525051e+03 + 7340 9.850518947787603e-01 -6.086842017017735e+00 -5.987366223106482e+00 3.222425493806060e+00 4.793630896273829e+00 9.178308255658276e+03 + 7360 1.031034946032220e+00 -6.150871217997465e+00 -5.958575677607955e+00 2.926367630506823e+00 5.030558381062089e+00 9.090325835971507e+03 + 7380 9.504717002872186e-01 -6.023088656915732e+00 -6.003721824965108e+00 3.568364415112937e+00 4.679571761180979e+00 9.228468454529182e+03 + 7400 9.938308519090427e-01 -6.073183359683384e+00 -5.981305278099306e+00 3.311021066985849e+00 4.838599229528795e+00 9.159741986425757e+03 + 7420 1.009930733075871e+00 -6.075081022937376e+00 -5.975396196325661e+00 3.297761401490151e+00 4.870167102071678e+00 9.141678534967246e+03 + 7440 9.736441665213251e-01 -5.985914145022256e+00 -6.042184023734006e+00 3.733210431756945e+00 4.410100080458489e+00 9.347003706598038e+03 + 7460 1.021604312765205e+00 -6.011219764229052e+00 -6.035378513105234e+00 3.642364883347206e+00 4.503641608745864e+00 9.325978970150041e+03 + 7480 1.056100326328717e+00 -6.009974266967321e+00 -5.999370299081802e+00 3.614157879016557e+00 4.675047503573934e+00 9.215126084853311e+03 + 7500 1.007363868772451e+00 -5.891100777309807e+00 -6.016448917065444e+00 4.318373557797262e+00 4.598605141758455e+00 9.267591713939011e+03 + 7520 1.089762806008584e+00 -5.975878374562923e+00 -6.028952829251605e+00 3.839926237342217e+00 4.535164505274484e+00 9.306139788600980e+03 + 7540 1.012973106967515e+00 -5.839768442679252e+00 -6.091018955356993e+00 4.504169032590799e+00 4.061449707904031e+00 9.498574675590999e+03 + 7560 1.083530570431038e+00 -5.936854462398189e+00 -6.030217517688675e+00 4.053218659128030e+00 4.517113547763945e+00 9.310031259661055e+03 + 7580 1.040424103206520e+00 -5.875511075528949e+00 -6.018045958849482e+00 4.344378035800899e+00 4.525920678572489e+00 9.272498836925623e+03 + 7600 1.085288072866474e+00 -5.950388381029457e+00 -5.982576496087789e+00 3.991246935733240e+00 4.806417797973589e+00 9.163622593627686e+03 + 7620 1.039718684520211e+00 -5.894628474113993e+00 -6.002383320555101e+00 4.259731002922820e+00 4.640985999649388e+00 9.224351534858128e+03 + 7640 1.042586071627145e+00 -5.913308914003086e+00 -6.015341545969797e+00 4.141646690074887e+00 4.555759527823267e+00 9.264194484414133e+03 + 7660 1.060215756013953e+00 -5.959312231108781e+00 -5.978305304245007e+00 3.931060220305807e+00 4.821999055189031e+00 9.150551238863622e+03 + 7680 1.035699906496397e+00 -5.942885159873710e+00 -5.989453403000205e+00 4.000620593546664e+00 4.733218535102000e+00 9.184677665008379e+03 + 7700 1.009615980858888e+00 -5.925206686049202e+00 -5.981626868152309e+00 4.149299634042764e+00 4.825326217411757e+00 9.160725942945523e+03 + 7720 1.014416971583102e+00 -5.953040245075697e+00 -6.048013367249411e+00 3.934439010753561e+00 4.389088646188940e+00 9.365027551199744e+03 + 7740 1.036165532408244e+00 -6.008029857557380e+00 -5.993435792469193e+00 3.624339957250140e+00 4.708141337410785e+00 9.196915537169458e+03 + 7760 1.007852010113247e+00 -5.986043688900468e+00 -6.007735272398434e+00 3.712147391468592e+00 4.587590962261575e+00 9.240805933398660e+03 + 7780 9.839871289128796e-01 -5.968386433557097e+00 -5.993093948846074e+00 3.828243494130702e+00 4.686369117865762e+00 9.195868903008117e+03 + 7800 9.474909311650864e-01 -5.927461600954150e+00 -6.016555661281227e+00 4.099349663299221e+00 4.587757781639865e+00 9.267903673305525e+03 + 7820 1.048438605604947e+00 -6.090001700579502e+00 -5.986517734336616e+00 3.228824574131142e+00 4.823045522389819e+00 9.175722368146386e+03 + 7840 9.250487862157670e-01 -5.920761447908625e+00 -6.004156253034242e+00 4.133449777568130e+00 4.654583901232452e+00 9.229806696702333e+03 + 7860 9.911372459967506e-01 -6.026984064454687e+00 -5.953222784163502e+00 3.557936417604497e+00 4.981485103557715e+00 9.073991445926942e+03 + 7880 9.963964198560328e-01 -6.036501706186205e+00 -5.985332421451309e+00 3.515399037007994e+00 4.809220988376991e+00 9.172062006938484e+03 + 7900 9.723406493460053e-01 -6.001713145150640e+00 -5.991532523476794e+00 3.668371596031432e+00 4.726830301128774e+00 9.191079217436498e+03 + 7920 9.540973117277876e-01 -5.972275101541171e+00 -6.102493394343085e+00 3.775421623559645e+00 4.027688035075367e+00 9.534374456191894e+03 + 7940 9.545742692403106e-01 -5.973347400534109e+00 -6.043731721797710e+00 3.835644086878578e+00 4.431486422244467e+00 9.351792332827028e+03 + 7960 9.727847901504699e-01 -5.999150024032616e+00 -6.038977087917916e+00 3.675509200035209e+00 4.446816035987603e+00 9.337090579596483e+03 + 7980 1.004243730969421e+00 -6.042428896492863e+00 -6.052673403056741e+00 3.499015785486462e+00 4.440190243464407e+00 9.379453642422903e+03 + 8000 1.012258477905718e+00 -6.050600711525896e+00 -6.033290362385436e+00 3.450985167503198e+00 4.550383871035589e+00 9.319545251664364e+03 + 8020 1.011728490139650e+00 -6.046531185536313e+00 -6.013019507037622e+00 3.461357197285424e+00 4.653786441140394e+00 9.257058147785403e+03 + 8040 9.989996303790981e-01 -6.021471235911876e+00 -5.994229820905920e+00 3.594940929090994e+00 4.751365349650541e+00 9.199343244838534e+03 + 8060 9.671757815901910e-01 -5.962221602765267e+00 -6.048273664973887e+00 3.886542549926610e+00 4.392418292211124e+00 9.365836321610950e+03 + 8080 1.020208460272742e+00 -6.021752687843501e+00 -5.993926512261591e+00 3.552375039241109e+00 4.712157245519187e+00 9.198399004924366e+03 + 8100 9.981778009397709e-01 -5.963202012463737e+00 -6.006057337822964e+00 3.904677037904562e+00 4.658595127851719e+00 9.235650734648934e+03 + 8120 1.010239074276646e+00 -5.952746820251543e+00 -6.017577925890014e+00 3.985077027537552e+00 4.612806786380281e+00 9.271087901548155e+03 + 8140 1.016607853097346e+00 -5.931072924400683e+00 -6.016938096863252e+00 4.128315259597166e+00 4.635264151724602e+00 9.269099518328889e+03 + 8160 1.067104860706063e+00 -5.977881125270215e+00 -6.010450667575917e+00 3.826209234939313e+00 4.639189882899588e+00 9.249148478038724e+03 + 8180 1.135940642421255e+00 -6.055040912772896e+00 -5.988820545774976e+00 3.415542052813033e+00 4.795789647683765e+00 9.182771421179992e+03 + 8200 1.056452437837062e+00 -5.921225257420688e+00 -6.034457084922640e+00 4.121465547643301e+00 4.471270871558416e+00 9.323137722040676e+03 + 8220 1.113925903885310e+00 -6.001227537762582e+00 -6.007770578862067e+00 3.659877688918144e+00 4.622306534392560e+00 9.240936124752150e+03 + 8240 1.078517856435575e+00 -5.953492060410785e+00 -5.979739464045510e+00 4.014411018966119e+00 4.863694365522947e+00 9.154939833063012e+03 + 8260 1.117979023678269e+00 -6.024286778702543e+00 -5.924328711175165e+00 3.568164280263094e+00 5.142138972466258e+00 8.986198798695363e+03 + 8280 1.074005991034700e+00 -5.976400387895874e+00 -5.938689721345706e+00 3.796105705354512e+00 5.012646188392366e+00 9.029793612563164e+03 + 8300 9.957096687981000e-01 -5.881088433970347e+00 -5.998957125122426e+00 4.294972166640921e+00 4.618151901924676e+00 9.213816586390252e+03 + 8320 1.034447583534329e+00 -5.965264002386957e+00 -5.983745801699573e+00 3.893830370997175e+00 4.787705019294929e+00 9.167201649599223e+03 + 8340 1.065087501604691e+00 -6.039982967083817e+00 -5.976949152702617e+00 3.488004183312982e+00 4.849954099941081e+00 9.146419365586846e+03 + 8360 1.023533593929409e+00 -6.012718844724199e+00 -6.000612967054978e+00 3.651997625837365e+00 4.721511448792545e+00 9.218933870482979e+03 + 8380 1.037764591524573e+00 -6.067531961837249e+00 -5.992949139127081e+00 3.345345102274758e+00 4.773611211931055e+00 9.195432557250488e+03 + 8400 9.315924296284999e-01 -5.941101451286960e+00 -6.080275983165434e+00 3.970844242549128e+00 4.171682543313727e+00 9.465134894678829e+03 + 8420 9.869458991667961e-01 -6.049644479911886e+00 -5.988453883624965e+00 3.413920544463938e+00 4.765286417557608e+00 9.181605423339453e+03 + 8440 1.031746159244917e+00 -6.134009383321497e+00 -5.945235574251138e+00 2.933521659133599e+00 5.017490083468143e+00 9.049702621681867e+03 + 8460 9.925155791175165e-01 -6.087344565089579e+00 -5.973940658432459e+00 3.229359222348116e+00 4.880542003571135e+00 9.137222659243045e+03 + 8480 9.237768194683385e-01 -5.991546763069630e+00 -6.033401622121576e+00 3.665363716644506e+00 4.425026638949729e+00 9.319875561456594e+03 + 8500 9.545704767401293e-01 -6.038784176793393e+00 -6.022056727098937e+00 3.441093622323465e+00 4.537145227033508e+00 9.284864388150525e+03 + 8520 8.946821667548673e-01 -5.946578495147095e+00 -6.025577314051967e+00 3.989333365882552e+00 4.535709922703064e+00 9.295727544682610e+03 + 8540 1.012435379090851e+00 -6.112735435733456e+00 -5.971562509517301e+00 3.107664427329580e+00 4.918301216102473e+00 9.129975654023896e+03 + 8560 9.878992316678229e-01 -6.066119769781031e+00 -5.999986166440178e+00 3.382021219814443e+00 4.761770604339665e+00 9.217026719039186e+03 + 8580 9.685302014723293e-01 -6.025303504759485e+00 -6.021039648427675e+00 3.563902391840724e+00 4.588386114727610e+00 9.281747287368955e+03 + 8600 1.000242614188331e+00 -6.056009789631392e+00 -6.038568998351090e+00 3.397020324847476e+00 4.497168047332694e+00 9.335843070009472e+03 + 8620 1.007101058771196e+00 -6.050233611417831e+00 -6.005275757554238e+00 3.447108382935594e+00 4.705263337025747e+00 9.233263770125368e+03 + 8640 9.926596022982569e-01 -6.013838583410926e+00 -5.994292182793066e+00 3.668987489427153e+00 4.781225946570625e+00 9.199529637350912e+03 + 8660 9.753719531180020e-01 -5.970341701262394e+00 -6.026199379912557e+00 3.874665397293913e+00 4.553921962536844e+00 9.297653741325003e+03 + 8680 1.074782687566805e+00 -6.097853763719905e+00 -6.005590468478255e+00 3.162340638499193e+00 4.692130757475544e+00 9.234229037818019e+03 + 8700 1.005617251882110e+00 -5.975774042276945e+00 -6.026812750602021e+00 3.832730480661595e+00 4.539658319244419e+00 9.299544786628661e+03 + 8720 1.044011047372157e+00 -6.013880676082564e+00 -5.981691876498203e+00 3.653119053086011e+00 4.837952121500044e+00 9.160933500061130e+03 + 8740 1.022785057904126e+00 -5.959982508245668e+00 -6.035537337172879e+00 3.888404776318141e+00 4.454557256546109e+00 9.326457126686359e+03 + 8760 9.943200577505166e-01 -5.888334100278578e+00 -6.017751555893971e+00 4.333362734967881e+00 4.590227677537760e+00 9.271606281803635e+03 + 8780 1.138742319548021e+00 -6.058640258995050e+00 -6.000320403697350e+00 3.389062852957077e+00 4.723944487044911e+00 9.218049422553368e+03 + 8800 1.092052210262641e+00 -5.928935863782261e+00 -6.022838082625175e+00 4.120415667946348e+00 4.581214596028929e+00 9.287289085700158e+03 + 8820 1.135759260363767e+00 -5.929179256068837e+00 -6.026857353661868e+00 4.074362115504423e+00 4.513479363488484e+00 9.299704746779038e+03 + 8840 1.121726572935529e+00 -5.858050607208816e+00 -6.023926331250714e+00 4.490527140047542e+00 4.538043063413627e+00 9.290634859886797e+03 + 8860 1.163799480109180e+00 -5.892244325673274e+00 -6.031779380810762e+00 4.286266736733428e+00 4.485034857153976e+00 9.314815237120803e+03 + 8880 1.077027190688427e+00 -5.755434151183429e+00 -6.029748294397256e+00 5.028167759630656e+00 4.453013499320397e+00 9.308540743248510e+03 + 8900 1.151985678725246e+00 -5.873201815901925e+00 -6.024131652517024e+00 4.317388511511230e+00 4.450726033350599e+00 9.291238655341736e+03 + 8920 1.102875222674269e+00 -5.820417497895305e+00 -6.035332590723200e+00 4.632016860212458e+00 4.397941139191555e+00 9.325839342001213e+03 + 8940 1.170686397959420e+00 -5.954447328692348e+00 -6.011017320190598e+00 4.009260964094552e+00 4.684427318733706e+00 9.250896304040793e+03 + 8960 1.116558299489435e+00 -5.919422204564552e+00 -6.042714856037228e+00 4.177449547321721e+00 4.469484063089461e+00 9.348649054420734e+03 + 8980 1.093782399482975e+00 -5.931278532925495e+00 -5.998020846490425e+00 4.106344091323497e+00 4.723099398494026e+00 9.210978097172128e+03 + 9000 1.029556567396871e+00 -5.871172309562287e+00 -5.987803978739872e+00 4.465967730880854e+00 4.796250637770687e+00 9.179647528037767e+03 + 9020 1.009823406203204e+00 -5.868740297742549e+00 -5.998662590381961e+00 4.431645869733828e+00 4.685611959988513e+00 9.212910075716196e+03 + 9040 1.093660700864974e+00 -6.017124359938343e+00 -5.995152102151873e+00 3.601202565057382e+00 4.727370669463197e+00 9.202165847216464e+03 + 9060 1.002615093840386e+00 -5.905381854008013e+00 -6.011631061226547e+00 4.169629858284694e+00 4.559530468424193e+00 9.252761555959909e+03 + 9080 1.009480890507454e+00 -5.937095512294461e+00 -5.973602416337368e+00 4.083766029288963e+00 4.874137736849455e+00 9.136160787721135e+03 + 9100 9.926992799928857e-01 -5.931691460053030e+00 -5.970308251239895e+00 4.103659474243251e+00 4.881915883319152e+00 9.126092891105462e+03 + 9120 1.001959434151317e+00 -5.963363822316613e+00 -5.970192794759989e+00 3.932436086047084e+00 4.893223069497149e+00 9.125741670749139e+03 + 9140 1.034937632598562e+00 -6.029604865528968e+00 -6.000855379829725e+00 3.597262059793986e+00 4.762346055647578e+00 9.219679282939271e+03 + 9160 9.952568455848112e-01 -5.990218783821075e+00 -6.008576367607411e+00 3.743770375534544e+00 4.638358288606493e+00 9.243409167863103e+03 + 9180 9.677511903913248e-01 -5.967193866894939e+00 -5.976591341531845e+00 3.899252384207249e+00 4.845290630587630e+00 9.145322491866891e+03 + 9200 1.013208125344860e+00 -6.050627079224326e+00 -5.967247939554268e+00 3.481666039052632e+00 4.960441961918269e+00 9.116763466224924e+03 + 9220 9.537951443020047e-01 -5.975982453248433e+00 -6.013292846329843e+00 3.847978332667470e+00 4.633736281829339e+00 9.257891196415771e+03 + 9240 1.026385895331382e+00 -6.097812486661910e+00 -6.012633246948617e+00 3.150686836341297e+00 4.639799212219772e+00 9.255872228387383e+03 + 9260 9.952007877194865e-01 -6.064415678336472e+00 -6.006927355112740e+00 3.366550789752613e+00 4.696657637992549e+00 9.238327677154941e+03 + 9280 9.919618726159793e-01 -6.070707203371811e+00 -5.977251150972430e+00 3.384637773678713e+00 4.921276888833323e+00 9.147342041644095e+03 + 9300 9.701851505152759e-01 -6.046404177253374e+00 -5.986127210159029e+00 3.434451267875929e+00 4.780570940762166e+00 9.174512181139607e+03 + 9320 9.387965154534705e-01 -6.005444480720042e+00 -6.021597823603404e+00 3.670695257546362e+00 4.577940262988365e+00 9.283457133715476e+03 + 9340 9.874783347088840e-01 -6.081507260446741e+00 -6.032617733805425e+00 3.226898566325981e+00 4.507629793930217e+00 9.317431734523572e+03 + 9360 9.190501573570268e-01 -5.982238740304129e+00 -6.012701790913839e+00 3.794206734742646e+00 4.619283183999841e+00 9.256061148029617e+03 + 9380 9.359257066728851e-01 -6.003750631301298e+00 -5.984534162702907e+00 3.653528156946607e+00 4.763872093377469e+00 9.169606749833063e+03 + 9400 9.958722565418563e-01 -6.078551933176087e+00 -5.979442652587870e+00 3.253432192816212e+00 4.822533019065359e+00 9.154052662736565e+03 + 9420 1.024211416476011e+00 -6.096380757797624e+00 -5.988779968626462e+00 3.171930607287572e+00 4.789790989876694e+00 9.182632666514812e+03 + 9440 1.034521700193158e+00 -6.080466065351087e+00 -5.973995331343151e+00 3.225543777112403e+00 4.836915208078809e+00 9.137412029225439e+03 + 9460 1.012379772002706e+00 -6.007641121488699e+00 -5.975894242700327e+00 3.656101760398049e+00 4.838397251214499e+00 9.143205737511398e+03 + 9480 9.879023246181512e-01 -5.929325849524712e+00 -6.025173163178639e+00 4.069944809158377e+00 4.519574701833675e+00 9.294495126289899e+03 + 9500 1.041111812723053e+00 -5.967702435480341e+00 -6.033988733339302e+00 3.831607935866256e+00 4.450981755788658e+00 9.321691025544878e+03 + 9520 1.047484630139405e+00 -5.946215850088573e+00 -6.008834284070519e+00 3.965661614976770e+00 4.606096876881095e+00 9.244159897614883e+03 + 9540 1.091088305830229e+00 -5.989153254415805e+00 -5.996884763651746e+00 3.782878968264118e+00 4.738483445784158e+00 9.207481228538094e+03 + 9560 1.083276511264488e+00 -5.966211101003869e+00 -5.996948602514702e+00 3.867515823525912e+00 4.691016333237722e+00 9.207676218409555e+03 + 9580 1.017169099749810e+00 -5.863540739833284e+00 -6.048047060126060e+00 4.433126799122403e+00 4.373662955740493e+00 9.365109528161367e+03 + 9600 1.061260902706465e+00 -5.932901184899079e+00 -6.015126944076611e+00 3.998319674021628e+00 4.526166640429132e+00 9.263529553180271e+03 + 9620 1.035081741705939e+00 -5.901364742335772e+00 -6.019292494672020e+00 4.218902022634197e+00 4.541742619458765e+00 9.276286999071146e+03 + 9640 1.122426643453385e+00 -6.045621536420263e+00 -5.996546157933918e+00 3.428958124990193e+00 4.710756542649061e+00 9.206468004867227e+03 + 9660 1.043703867218134e+00 -5.952611700164081e+00 -6.015387355635579e+00 3.919769116767270e+00 4.559301588548639e+00 9.264347172696906e+03 + 9680 1.096148164487773e+00 -6.059219452763040e+00 -5.989326599193350e+00 3.413658301263333e+00 4.814993882344628e+00 9.184333620465593e+03 + 9700 9.607280397378312e-01 -5.891773652972197e+00 -6.032280798261480e+00 4.274197985754116e+00 4.467384214092587e+00 9.316433448982527e+03 + 9720 1.045245860543595e+00 -6.050647842315002e+00 -5.998493887302433e+00 3.398734903312541e+00 4.698210983793166e+00 9.212414202317817e+03 + 9740 1.006121016096058e+00 -6.019557538214365e+00 -5.999714365232612e+00 3.577392670580473e+00 4.691335240562796e+00 9.216175522590778e+03 + 9760 9.978789653408975e-01 -6.030361754024232e+00 -5.971847870172142e+00 3.533504008248505e+00 4.869499784321464e+00 9.130840628523909e+03 + 9780 9.823762561452597e-01 -6.022963664555407e+00 -5.950504683563046e+00 3.550612522134862e+00 4.966683203984072e+00 9.065751808457422e+03 + 9800 9.732680572318851e-01 -6.015949388232504e+00 -5.985618556644621e+00 3.622882776264145e+00 4.797047104922790e+00 9.172951361430429e+03 + 9820 1.041025810369076e+00 -6.119644972017258e+00 -5.999368448119620e+00 3.062961648836695e+00 4.753608061788851e+00 9.215118726224522e+03 + 9840 9.294372549399544e-01 -5.956322729176466e+00 -6.017943557495133e+00 3.876312694818813e+00 4.522476362820665e+00 9.272204555654185e+03 + 9860 9.460294108613490e-01 -5.979261739470184e+00 -5.955076404217027e+00 3.841013347910597e+00 4.979889285602760e+00 9.079656598372037e+03 + 9880 1.036756019088814e+00 -6.107252072569871e+00 -6.026037013169002e+00 3.101819027136038e+00 4.568168466205647e+00 9.297152037446082e+03 + 9900 8.878229505896857e-01 -5.881079542378245e+00 -6.055187534881963e+00 4.340246210532168e+00 4.340491174451060e+00 9.387249390762987e+03 + 9920 9.618062732219242e-01 -5.985668341402605e+00 -5.996932366933933e+00 3.801410610814624e+00 4.736730833111421e+00 9.207623663313429e+03 + 9940 1.038836830858150e+00 -6.091515943718913e+00 -5.975562981387544e+00 3.255966426098923e+00 4.921786279468573e+00 9.142185471548897e+03 + 9960 1.016903338849936e+00 -6.049850604794574e+00 -6.015891554530967e+00 3.429849055044154e+00 4.624847176803829e+00 9.265917510458596e+03 + 9980 1.034748402765150e+00 -6.069020288003499e+00 -5.976744892202777e+00 3.371319227566136e+00 4.901178829825232e+00 9.145804547576199e+03 + 10000 9.984994206490150e-01 -6.006600178899083e+00 -5.989647913281131e+00 3.666362392096620e+00 4.763704924629525e+00 9.185308218479915e+03 + 10020 9.851108337492883e-01 -5.974881777532757e+00 -5.980067177661095e+00 3.896879954653299e+00 4.867104584678305e+00 9.155970505793390e+03 + 10040 1.007505633266816e+00 -5.993796855249520e+00 -6.034841277453326e+00 3.700480417625615e+00 4.464796993727552e+00 9.324308634995754e+03 + 10060 1.028693196520807e+00 -6.012507850738915e+00 -6.006098042431858e+00 3.635932532205734e+00 4.672738643419489e+00 9.235778865066719e+03 + 10080 1.059658709662737e+00 -6.046463641895166e+00 -6.004293180309256e+00 3.474485411308702e+00 4.716634727592833e+00 9.230207422946185e+03 + 10100 1.003774229599662e+00 -5.948005022878164e+00 -6.042902663994946e+00 4.005925248061164e+00 4.461008307406104e+00 9.349201993444954e+03 + 10120 1.025789726975146e+00 -5.964124677045945e+00 -6.044093430515735e+00 3.913324618185590e+00 4.454131660637449e+00 9.352891260791657e+03 + 10140 1.010973540578409e+00 -5.923903070213691e+00 -6.019673001505894e+00 4.120007027565063e+00 4.570081261736262e+00 9.277526389840537e+03 + 10160 1.023248098050766e+00 -5.918558372958229e+00 -6.016066434182749e+00 4.202663932814021e+00 4.642757555939119e+00 9.266421208403395e+03 + 10180 1.042219862874707e+00 -5.921611217644643e+00 -6.016734444646033e+00 4.166356050392580e+00 4.620143760678796e+00 9.268494111422720e+03 + 10200 1.118393306770505e+00 -6.007367443615957e+00 -6.019238775247340e+00 3.655882328798441e+00 4.587715305488407e+00 9.276204687869969e+03 + 10220 1.037211644339839e+00 -5.863600721065480e+00 -6.038511368413548e+00 4.443646755948876e+00 4.439282751541072e+00 9.335641174439026e+03 + 10240 1.125540439354577e+00 -5.974979746613246e+00 -5.956887860611890e+00 3.927448589507544e+00 5.031334998637639e+00 9.085151969005985e+03 + 10260 1.117498548008918e+00 -5.950132348349095e+00 -6.002917684786300e+00 3.930202019245598e+00 4.627100448918755e+00 9.226015458222084e+03 + 10280 1.085808626554846e+00 -5.899561036147876e+00 -6.028583959959111e+00 4.221027053309455e+00 4.480157458552413e+00 9.305004575208241e+03 + 10300 1.119415502370355e+00 -5.957820211144199e+00 -6.044403279795012e+00 3.844801835810768e+00 4.347628456931226e+00 9.353864885044042e+03 + 10320 1.062593396092369e+00 -5.898306978047894e+00 -6.050812164929608e+00 4.219155914897834e+00 4.343447531721631e+00 9.373642986475477e+03 + 10340 1.022711378720038e+00 -5.874727217571833e+00 -5.993243637825312e+00 4.335597474503672e+00 4.655057849051433e+00 9.196325960451750e+03 + 10360 1.023037598649729e+00 -5.917175816199303e+00 -6.012477377814767e+00 4.168098783395341e+00 4.620862468730354e+00 9.255361962769231e+03 + 10380 1.008303988680454e+00 -5.940833610345277e+00 -6.023188543271370e+00 4.015532889359511e+00 4.542638120113204e+00 9.288363142607437e+03 + 10400 1.054560645643758e+00 -6.049460900458026e+00 -5.994139217481457e+00 3.404614050194293e+00 4.722279714848531e+00 9.199064018869454e+03 + 10420 9.691922764701637e-01 -5.956838384668929e+00 -6.012122238042028e+00 3.944787735223039e+00 4.627339294006039e+00 9.254289984139477e+03 + 10440 9.931230087591062e-01 -6.017792880356016e+00 -5.931605114781473e+00 3.632769235906584e+00 5.127672723349226e+00 9.008265153997612e+03 + 10460 9.562678635059454e-01 -5.978752782659028e+00 -5.962629194346910e+00 3.783661010205789e+00 4.876245149411203e+00 9.102667321868223e+03 + 10480 9.663112241381656e-01 -6.002303977197318e+00 -5.979517120675430e+00 3.699528945063555e+00 4.830374601466886e+00 9.154266264594085e+03 + 10500 9.981264873125600e-01 -6.053577148945060e+00 -5.975043743856378e+00 3.412923592840193e+00 4.863874557864571e+00 9.140589870069365e+03 + 10520 9.696919377302500e-01 -6.014968254913319e+00 -5.991303911008362e+00 3.597990757708996e+00 4.733875082456636e+00 9.190358226420247e+03 + 10540 9.559557766884813e-01 -5.995502786996037e+00 -5.977419908880790e+00 3.671118744931031e+00 4.774953429385130e+00 9.147841756688696e+03 + 10560 9.197307537856222e-01 -5.937959720388442e+00 -5.962373741798588e+00 4.094607818688843e+00 4.954418729694181e+00 9.101854762735600e+03 + 10580 9.975861726675496e-01 -6.043977724375615e+00 -5.957843123863436e+00 3.490794787350597e+00 4.985392992777881e+00 9.088067093036254e+03 + 10600 1.026819056244318e+00 -6.072506858844783e+00 -5.957374841250497e+00 3.354736343431122e+00 5.015842205079656e+00 9.086665906544347e+03 + 10620 9.214557791007064e-01 -5.898299097817215e+00 -6.061327607717842e+00 4.170981548226254e+00 4.234846615796479e+00 9.406261959693711e+03 + 10640 9.627495565880440e-01 -5.940181065478112e+00 -6.013053913224126e+00 4.013938882552422e+00 4.595491713758067e+00 9.257161203701642e+03 + 10660 1.056126749278196e+00 -6.057449058005408e+00 -5.962385073100544e+00 3.382933846526166e+00 4.928805958954017e+00 9.101951259092571e+03 + 10680 1.029495670252706e+00 -5.994633643461212e+00 -6.005955940385111e+00 3.726074635494272e+00 4.661060254437453e+00 9.235340120936957e+03 + 10700 1.039121460643558e+00 -5.985437606561888e+00 -5.986145317798027e+00 3.759752672247453e+00 4.755688884811583e+00 9.174564263220094e+03 + 10720 1.076830867408513e+00 -6.015848259973812e+00 -5.950336991928004e+00 3.607612852195457e+00 4.983788691150457e+00 9.065212342431018e+03 + 10740 1.016202328145503e+00 -5.898157011859024e+00 -5.987169259733083e+00 4.237898314759217e+00 4.726776212865534e+00 9.177687594081841e+03 + 10760 1.068078512654131e+00 -5.943778356654711e+00 -6.013856118877746e+00 3.977487254523228e+00 4.575089899339902e+00 9.259644478772056e+03 + 10780 1.065462406204430e+00 -5.910458201703106e+00 -6.048994797055880e+00 4.108768354887745e+00 4.313269785903276e+00 9.368029711176088e+03 + 10800 1.124079978813171e+00 -5.971183160612850e+00 -6.005504434004209e+00 3.859667564844583e+00 4.662589501831509e+00 9.233917393201002e+03 + 10820 1.094246965279270e+00 -5.903007153775795e+00 -6.023941640363835e+00 4.217649496503872e+00 4.523224959964034e+00 9.290684940347754e+03 + 10840 1.036831329218040e+00 -5.799877327217703e+00 -6.063788162391363e+00 4.713403407355159e+00 4.197986551718252e+00 9.413891651442000e+03 + 10860 1.044655193573991e+00 -5.800938571010285e+00 -6.051881099261248e+00 4.772274358793347e+00 4.331323528345576e+00 9.376997201183980e+03 + 10880 1.124112862968799e+00 -5.917601014836281e+00 -6.055844385269884e+00 4.106187755911050e+00 4.312372929788868e+00 9.389218797829870e+03 + 10900 1.077387991827628e+00 -5.861645880125255e+00 -6.056176991432302e+00 4.426782155093280e+00 4.309754410376027e+00 9.390315748361112e+03 + 10920 1.169797992334755e+00 -6.034864483419414e+00 -6.000484901182565e+00 3.484207326877281e+00 4.681620208304421e+00 9.218523850506726e+03 + 10940 1.042796849782627e+00 -5.901389506994596e+00 -6.007608007336572e+00 4.241784099971941e+00 4.631861033748509e+00 9.240393082720917e+03 + 10960 1.016270753139657e+00 -5.921829170238494e+00 -5.981686269197214e+00 4.104652558016708e+00 4.760943832939614e+00 9.160922630475716e+03 + 10980 1.020959050938291e+00 -5.975906510316869e+00 -5.991670903589995e+00 3.793817051319277e+00 4.703295465613014e+00 9.191488642756658e+03 + 11000 1.055544433330639e+00 -6.064185316644144e+00 -5.964035730769369e+00 3.411266660628330e+00 4.986341080819615e+00 9.106945257096446e+03 + 11020 9.386633408299155e-01 -5.918852407237668e+00 -5.981313136409038e+00 4.145253259115609e+00 4.786594086447000e+00 9.159762034968173e+03 + 11040 1.003913117468434e+00 -6.035415674516419e+00 -5.961249686162828e+00 3.535016755069509e+00 4.960889337345435e+00 9.098463571331144e+03 + 11060 1.006087125885276e+00 -6.054127815862659e+00 -5.985551353871114e+00 3.347494319971502e+00 4.741270976900150e+00 9.172746772434743e+03 + 11080 9.548088766076680e-01 -5.991024488118587e+00 -5.992929283384212e+00 3.741345946701323e+00 4.730408317519987e+00 9.195372111167528e+03 + 11100 9.605747048778263e-01 -6.009317824307352e+00 -5.977393474483607e+00 3.627952683645830e+00 4.811267240610947e+00 9.147777205772856e+03 + 11120 9.371575242362759e-01 -5.978511463158938e+00 -6.000441342761206e+00 3.807437032587885e+00 4.681512270273758e+00 9.218401112068268e+03 + 11140 1.054586794945487e+00 -6.153420818107269e+00 -5.980397706095547e+00 2.847777999705193e+00 4.841303484116549e+00 9.156997786295657e+03 + 11160 9.644018104064676e-01 -6.019512757497020e+00 -6.015954240864851e+00 3.581406875197081e+00 4.601840428377667e+00 9.266103733200795e+03 + 11180 9.810890694815781e-01 -6.040645909295389e+00 -6.013698312806616e+00 3.474833868656902e+00 4.629571137822516e+00 9.259164509898741e+03 + 11200 9.487046495259399e-01 -5.986721593521511e+00 -5.981879824476934e+00 3.763571624342837e+00 4.791373811458136e+00 9.161518348392448e+03 + 11220 9.859079532350460e-01 -6.032479828763271e+00 -5.970035396144976e+00 3.547010091389429e+00 4.905575686728399e+00 9.125286920763130e+03 + 11240 9.768596978375125e-01 -6.002050746507216e+00 -6.009093916877307e+00 3.684331879434569e+00 4.643888905242408e+00 9.244982775917779e+03 + 11260 1.000431019361460e+00 -6.017516860468419e+00 -6.017820795995877e+00 3.542066395090113e+00 4.540321150257580e+00 9.271841222513038e+03 + 11280 9.661017669476601e-01 -5.944098952712189e+00 -6.014545877349188e+00 3.987855231649211e+00 4.583338088757205e+00 9.261728149348497e+03 + 11300 9.706164279367708e-01 -5.921863814907089e+00 -5.983741477025912e+00 4.106117125345909e+00 4.750806013922356e+00 9.167207428666130e+03 + 11320 1.013985310373838e+00 -5.952034579557037e+00 -6.012188121117321e+00 3.971445448946632e+00 4.626034504577015e+00 9.254497076981568e+03 + 11340 1.050277027360306e+00 -5.973505128679848e+00 -6.036344390230028e+00 3.838136179321394e+00 4.477303415155969e+00 9.328933998630973e+03 + 11360 1.067212651981315e+00 -5.971773862689867e+00 -6.018353652719678e+00 3.856266257445431e+00 4.588797894895046e+00 9.273476522414045e+03 + 11380 1.081779181886474e+00 -5.971111422259604e+00 -6.056435791642803e+00 3.833896705624649e+00 4.343950972722828e+00 9.391122224738248e+03 + 11400 1.097403093526767e+00 -5.981373031483263e+00 -6.053478007646010e+00 3.732294638435476e+00 4.318256707099984e+00 9.381955171022511e+03 + 11420 1.029033935210177e+00 -5.876823839184764e+00 -6.047808775595789e+00 4.388816997860358e+00 4.406995033154857e+00 9.364387828387156e+03 + 11440 1.059217126642086e+00 -5.927703644184177e+00 -5.988665493414898e+00 4.151894670762655e+00 4.801842298664175e+00 9.182268187862921e+03 + 11460 1.028696277919683e+00 -5.896133388195913e+00 -5.978350802918429e+00 4.261896892787568e+00 4.789791774347069e+00 9.150647239846912e+03 + 11480 1.050916689029432e+00 -5.948785306511120e+00 -5.980145800430473e+00 3.951379958420772e+00 4.771303149315096e+00 9.156191465409578e+03 + 11500 1.060655903931912e+00 -5.993846189671455e+00 -5.991169714237948e+00 3.721989933494625e+00 4.737358669617055e+00 9.189911092753464e+03 + 11520 1.009664368787817e+00 -5.961602559262605e+00 -5.971210048487654e+00 3.902429375990025e+00 4.847261686105642e+00 9.128861688595483e+03 + 11540 1.009981993799828e+00 -6.014853923912263e+00 -5.969874505672382e+00 3.648191756590710e+00 4.906470536666584e+00 9.124781548298022e+03 + 11560 9.653157363217941e-01 -6.002311087073635e+00 -6.020526032257248e+00 3.669083539544142e+00 4.564490505546179e+00 9.280184264787636e+03 + 11580 9.827024786170135e-01 -6.073302048756975e+00 -6.022120826929208e+00 3.281020027651540e+00 4.574910523655061e+00 9.285097316141888e+03 + 11600 9.531938091622449e-01 -6.056863872033605e+00 -5.996534954418502e+00 3.422905128952865e+00 4.769323109768619e+00 9.206412537218959e+03 + 11620 9.752829218495953e-01 -6.102706099653068e+00 -5.975714444420897e+00 3.162138491246283e+00 4.891344227484538e+00 9.142658431130356e+03 + 11640 9.259220074579443e-01 -6.033042367536347e+00 -5.991662667582348e+00 3.536632262043902e+00 4.774240902667637e+00 9.191449839013008e+03 + 11660 9.587523444204059e-01 -6.078531104525986e+00 -5.983323876814975e+00 3.273942120753274e+00 4.820636755540773e+00 9.165926621384979e+03 + 11680 9.573196814752961e-01 -6.068884248620989e+00 -6.013927042748625e+00 3.304211671979201e+00 4.619784452698442e+00 9.259860967701119e+03 + 11700 9.016201059758417e-01 -5.975496682964903e+00 -6.000175548166907e+00 3.817124643933108e+00 4.675414780901155e+00 9.217584079303042e+03 + 11720 9.906638503361345e-01 -6.092308948784274e+00 -5.980059235447971e+00 3.154493149449595e+00 4.799048374013648e+00 9.155952914969155e+03 + 11740 9.776391605190644e-01 -6.051225747319669e+00 -5.980727140814255e+00 3.453354005041947e+00 4.858167913220131e+00 9.157993178995952e+03 + 11760 9.745887845529185e-01 -6.023410256967221e+00 -6.017995453713411e+00 3.528159904396655e+00 4.559252542618125e+00 9.272381558265204e+03 + 11780 9.369199809960895e-01 -5.944047179422365e+00 -6.029829131973734e+00 3.943517232460340e+00 4.450943986196127e+00 9.308841946193925e+03 + 11800 9.772189735715376e-01 -5.978606264826636e+00 -6.060631210010444e+00 3.795017903978089e+00 4.324017975413422e+00 9.404101905965301e+03 + 11820 1.018430229912655e+00 -6.017150052048595e+00 -6.024259097919700e+00 3.590994791336468e+00 4.550173549823290e+00 9.291681938554253e+03 + 11840 9.622632429653328e-01 -5.913153099233442e+00 -6.000605277389734e+00 4.182148865023239e+00 4.679984924868983e+00 9.218898694165218e+03 + 11860 1.065063540437112e+00 -6.046399070708226e+00 -5.992611792411036e+00 3.426711501985380e+00 4.735566377522261e+00 9.194382906277740e+03 + 11880 1.002502760808567e+00 -5.938081502795338e+00 -6.015167050488839e+00 4.086942765212848e+00 4.644305621406813e+00 9.263642976598003e+03 + 11900 1.048416567394966e+00 -5.993809541110108e+00 -5.979874734672318e+00 3.757607069452106e+00 4.837622884422226e+00 9.155376533015546e+03 + 11920 1.045314677798976e+00 -5.980027549548176e+00 -6.015840351682799e+00 3.741390712115300e+00 4.535748060245073e+00 9.265722452117601e+03 + 11940 9.879107710303084e-01 -5.889660942584376e+00 -5.988803712985581e+00 4.312216907237365e+00 4.742923777299514e+00 9.182684228239719e+03 + 11960 1.030885496599534e+00 -5.949297188635499e+00 -6.020666668236100e+00 3.939600913374911e+00 4.529786317116989e+00 9.280589144309221e+03 + 11980 1.050274073229787e+00 -5.977785872258659e+00 -5.989794601627848e+00 3.756385867081570e+00 4.687429884698821e+00 9.185747709900292e+03 + 12000 1.020725896371546e+00 -5.939522719490583e+00 -5.999362443031330e+00 4.043259586181069e+00 4.699650633442807e+00 9.215059346518627e+03 + 12020 1.068033529351182e+00 -6.021079976247308e+00 -5.978271592568855e+00 3.587617701140103e+00 4.833430064797746e+00 9.150451931296786e+03 + 12040 1.050892785066724e+00 -6.016796002115467e+00 -6.014501248167917e+00 3.535815017275052e+00 4.548991849553905e+00 9.261622652833232e+03 + 12060 9.658500762597488e-01 -5.925402848315420e+00 -6.028876818442834e+00 4.063100091859031e+00 4.468936542842290e+00 9.305911645168475e+03 + 12080 1.045958879576089e+00 -6.095161631829183e+00 -5.932352547076914e+00 3.252210579925705e+00 5.187085539197672e+00 9.010545616699797e+03 + 12100 9.570018742982238e-01 -6.017819053404588e+00 -6.009151438493580e+00 3.636424460120083e+00 4.686195246248160e+00 9.245169688714950e+03 + 12120 9.433342389461870e-01 -6.044534140975789e+00 -5.994549947606646e+00 3.434649004227996e+00 4.721665977582541e+00 9.200322813828034e+03 + 12140 9.462687305885389e-01 -6.079508454970265e+00 -5.960559199110566e+00 3.283321147599708e+00 4.966346182083953e+00 9.096363772321780e+03 + 12160 8.910896609733795e-01 -6.014494650383254e+00 -5.978704190894199e+00 3.706088487906533e+00 4.911602844848396e+00 9.151781155649049e+03 + 12180 9.568152034725037e-01 -6.118235388188965e+00 -5.995325683641637e+00 3.053174488729216e+00 4.758941032455281e+00 9.202725599076035e+03 + 12200 9.471491390131267e-01 -6.103241373287179e+00 -5.958680539586132e+00 3.164452874415270e+00 4.994543552243394e+00 9.090652684233850e+03 + 12220 9.516127978497880e-01 -6.102284960556728e+00 -5.962069908771221e+00 3.117276333393444e+00 4.922412858954965e+00 9.100994608449209e+03 + 12240 9.895284848741711e-01 -6.143789147630965e+00 -5.986276521334877e+00 2.924220948951471e+00 4.828682824143753e+00 9.174956395488045e+03 + 12260 9.229758221131442e-01 -6.026514993302938e+00 -5.901247746120077e+00 3.662999352274793e+00 5.382303270642637e+00 8.916361558326858e+03 + 12280 8.874285471993554e-01 -5.947033519904397e+00 -5.940755265351851e+00 4.068534731052413e+00 5.104585440249886e+00 9.036042800012468e+03 + 12300 9.122181307090483e-01 -5.948362085166613e+00 -6.019812651288089e+00 3.955232354070918e+00 4.544952146462025e+00 9.277952346029193e+03 + 12320 1.062527964817957e+00 -6.136630469711283e+00 -5.975825483495633e+00 2.987508013985336e+00 4.910875129326797e+00 9.142992737561446e+03 + 12340 9.431794986015637e-01 -5.930461687191942e+00 -6.041480279179327e+00 4.094796845458520e+00 4.457310910195370e+00 9.344804450824277e+03 + 12360 1.019039083746880e+00 -6.020873271870316e+00 -6.038743040939598e+00 3.500822665473204e+00 4.398211686139561e+00 9.336369508485508e+03 + 12380 1.029484715546167e+00 -6.020074457926896e+00 -6.012962149384893e+00 3.590573499164287e+00 4.631413475438657e+00 9.256887430092194e+03 + 12400 9.917700965792271e-01 -5.954213673838062e+00 -5.996921747288610e+00 3.929721039863783e+00 4.684484673057730e+00 9.207614570720825e+03 + 12420 9.481275080566788e-01 -5.882600124019753e+00 -6.002331039849366e+00 4.332414128745494e+00 4.644900681752511e+00 9.224161961006477e+03 + 12440 9.954148179874700e-01 -5.946104601502890e+00 -5.915552605421094e+00 4.020635664595039e+00 5.196069954002829e+00 8.959604254082707e+03 + 12460 1.031638274520333e+00 -5.990231671001813e+00 -5.958309522009293e+00 3.775038626206746e+00 4.958340545658388e+00 9.089490214231828e+03 + 12480 1.014848719406440e+00 -5.958913525150632e+00 -5.992104446820566e+00 3.891686521244034e+00 4.701099112736745e+00 9.192800416655562e+03 + 12500 1.039211560876270e+00 -5.990155825859240e+00 -6.014682230339302e+00 3.736340173533593e+00 4.595505763560249e+00 9.262182369176380e+03 + 12520 1.053907238681274e+00 -6.011484142939248e+00 -6.021205813593180e+00 3.651517404623368e+00 4.595694067304821e+00 9.282257219573410e+03 + 12540 1.043385930323635e+00 -6.001222520270105e+00 -5.992207133922096e+00 3.669556122978664e+00 4.721323866515462e+00 9.193166611119485e+03 + 12560 9.769367992808742e-01 -5.910153679631581e+00 -6.020286059232671e+00 4.244977591917491e+00 4.612580425317373e+00 9.279416093122856e+03 + 12580 1.057912966517759e+00 -6.040181222259123e+00 -6.010493723241304e+00 3.543354753689537e+00 4.713824967175481e+00 9.249291505753310e+03 + 12600 1.088755828363539e+00 -6.102953215321034e+00 -5.973708696503108e+00 3.164460486399427e+00 4.906602513976608e+00 9.136538121852356e+03 + 12620 9.637905850356971e-01 -5.939989389510406e+00 -6.059072054861244e+00 4.001640237853886e+00 4.317849145426468e+00 9.399267929717131e+03 + 12640 9.675735469780228e-01 -5.976124962154703e+00 -6.015711473688024e+00 3.802418082202862e+00 4.575106206985673e+00 9.265352565594218e+03 + 12660 1.008311562812418e+00 -6.075778093532571e+00 -5.985841109101320e+00 3.298275979965813e+00 4.814708062273417e+00 9.173649194710226e+03 + 12680 9.458033468053731e-01 -6.025552491141647e+00 -6.005746408759344e+00 3.580511289155156e+00 4.694240879175680e+00 9.234701566866359e+03 + 12700 9.101565640450048e-01 -6.014176745803566e+00 -6.011677683091690e+00 3.629035723890684e+00 4.643385728710982e+00 9.252960203924962e+03 + 12720 9.592228398963907e-01 -6.125153470692678e+00 -6.018374182914302e+00 2.979158233024656e+00 4.592301427489472e+00 9.273560567887194e+03 + 12740 9.438591170518340e-01 -6.128841875453158e+00 -5.972160474559272e+00 2.992104792356599e+00 4.891793642657721e+00 9.131805035660593e+03 + 12760 9.419367777358212e-01 -6.140634277998831e+00 -5.975297035352732e+00 2.989524806440289e+00 4.938916839569801e+00 9.141381682158626e+03 + 12780 9.335891670554377e-01 -6.130694396654655e+00 -6.009198570861613e+00 2.936271071016743e+00 4.633918904138669e+00 9.245317253865836e+03 + 12800 9.419126867775685e-01 -6.138974700012927e+00 -5.985635995536536e+00 2.918716059536643e+00 4.799210629727907e+00 9.173027877516230e+03 + 12820 9.566068378767565e-01 -6.149185771405964e+00 -5.959923356544177e+00 2.887426481814926e+00 4.974200556215351e+00 9.094439153018089e+03 + 12840 8.680355279830988e-01 -6.001626311814348e+00 -6.015981130584516e+00 3.702985956406570e+00 4.620558365627238e+00 9.266167163014232e+03 + 12860 9.428994932292935e-01 -6.094612678351087e+00 -5.954204522792125e+00 3.275476122501676e+00 5.081721479813085e+00 9.076997626686623e+03 + 12880 1.015114810725502e+00 -6.181403971235684e+00 -5.936081719043171e+00 2.770160375611435e+00 5.178838711196685e+00 9.021882452435035e+03 + 12900 1.004606022822095e+00 -6.143084268414085e+00 -5.990184850986178e+00 2.935562522613102e+00 4.813534638592524e+00 9.186944098233704e+03 + 12920 9.774498352261826e-01 -6.083085136670594e+00 -5.994274546637798e+00 3.253187707011113e+00 4.763151858373815e+00 9.199482130086359e+03 + 12940 9.677009577739466e-01 -6.052411418511741e+00 -5.996468074193715e+00 3.398305914033805e+00 4.719541254312466e+00 9.206210417222328e+03 + 12960 9.811208819242638e-01 -6.055868917520762e+00 -5.950267811594409e+00 3.430667194765073e+00 5.037045086712521e+00 9.065000039446672e+03 + 12980 9.589686764632543e-01 -6.005264969934738e+00 -5.979773494626130e+00 3.653273023617234e+00 4.799649019632321e+00 9.155055630880710e+03 + 13000 9.623158166166383e-01 -5.990330530601011e+00 -6.017560186231721e+00 3.740733259603906e+00 4.584376363196779e+00 9.271015003012189e+03 + 13020 9.918431235434656e-01 -6.015109826902791e+00 -6.014260760592631e+00 3.540996774990364e+00 4.545872245135892e+00 9.260891341939994e+03 + 13040 9.917158285868454e-01 -5.997489820236130e+00 -5.997166970639603e+00 3.721392197053691e+00 4.723246049397758e+00 9.208316168283072e+03 + 13060 9.767074055940901e-01 -5.958053545711565e+00 -5.974615004196152e+00 3.932789392811709e+00 4.837690935315795e+00 9.139251485303535e+03 + 13080 1.010432337925047e+00 -5.990461795565110e+00 -5.941286381767460e+00 3.831706248045781e+00 5.114079083942582e+00 9.037666321513232e+03 + 13100 1.057813457744726e+00 -6.043294400068824e+00 -5.984790923095892e+00 3.423141459924419e+00 4.759077478086800e+00 9.170408111641862e+03 + 13120 1.038732115618878e+00 -6.000893333579627e+00 -5.949316933853328e+00 3.698244283353420e+00 4.994403952003887e+00 9.062104045939413e+03 + 13140 1.039629229077769e+00 -5.988123656960269e+00 -5.945513168532421e+00 3.780853614225959e+00 5.025529632730437e+00 9.050532630419071e+03 + 13160 1.059799711726345e+00 -6.004404446692083e+00 -5.983659883847587e+00 3.616721046464140e+00 4.735839536527962e+00 9.166954915791481e+03 + 13180 1.045101419781784e+00 -5.973384544532364e+00 -6.019490534437324e+00 3.789640873100682e+00 4.524893144187525e+00 9.276976280021188e+03 + 13200 9.828143421093938e-01 -5.876351592211674e+00 -6.002213715254975e+00 4.368260654661329e+00 4.645540867046103e+00 9.223824775866859e+03 + 13220 9.841375046419810e-01 -5.876463427427820e+00 -6.031037423108485e+00 4.305060185616577e+00 4.417472382169676e+00 9.312564426691099e+03 + 13240 1.051963059880574e+00 -5.977049866977263e+00 -6.010805458921764e+00 3.828916359284499e+00 4.635086526678204e+00 9.250244991236163e+03 + 13260 1.085427755060753e+00 -6.033173494298611e+00 -6.000040216215819e+00 3.541654950261243e+00 4.731911360370853e+00 9.217169665582427e+03 + 13280 1.026191272575016e+00 -5.961454789480383e+00 -6.017665294485574e+00 3.903252784300558e+00 4.580483366013217e+00 9.271345818736534e+03 + 13300 9.893545628543342e-01 -5.935939878425217e+00 -6.053837274382641e+00 4.001092184665404e+00 4.324107092514821e+00 9.383023187165973e+03 + 13320 1.017426546816271e+00 -6.019687778656925e+00 -5.982504082209016e+00 3.635182475850031e+00 4.848697015012355e+00 9.163419947266422e+03 + 13340 1.015468177274977e+00 -6.066584345191529e+00 -5.989793488513505e+00 3.312055581363150e+00 4.753000563755031e+00 9.185741806858139e+03 + 13360 9.343203322336090e-01 -5.994203720277369e+00 -6.028203747175231e+00 3.716816492935294e+00 4.521583077000610e+00 9.303843982294393e+03 + 13380 9.517143517019200e-01 -6.059163039507457e+00 -6.002975837537313e+00 3.411000823769389e+00 4.733636432423358e+00 9.226178457838138e+03 + 13400 9.620689462683979e-01 -6.099823452704063e+00 -5.992341471230464e+00 3.148054306200648e+00 4.765232476604931e+00 9.193566226387971e+03 + 13420 9.388801397787644e-01 -6.081197622432939e+00 -5.990144295267878e+00 3.284113464809745e+00 4.806955759848372e+00 9.186825913402536e+03 + 13440 9.202371770225128e-01 -6.060849502548947e+00 -5.991313308709848e+00 3.352909069233559e+00 4.752196654948890e+00 9.190404610828540e+03 + 13460 9.049631624782820e-01 -6.036479062626970e+00 -6.009117321890004e+00 3.481912210390387e+00 4.639027559917743e+00 9.245066000850933e+03 + 13480 9.391703091589585e-01 -6.078301309568737e+00 -5.980263007941661e+00 3.257782202678379e+00 4.820733301999193e+00 9.156584736660247e+03 + 13500 9.330573482551512e-01 -6.054176438359347e+00 -5.979413513803845e+00 3.399852596528873e+00 4.829152878851753e+00 9.153968949925698e+03 + 13520 9.010024151139526e-01 -5.984594346774619e+00 -6.034268487381922e+00 3.796859116695365e+00 4.511622514279818e+00 9.322550923155895e+03 + 13540 9.647321867159638e-01 -6.052556231673164e+00 -5.988344073516386e+00 3.436649314344653e+00 4.805365463280237e+00 9.181301979446038e+03 + 13560 9.944488293876476e-01 -6.069112023876447e+00 -5.951043728724810e+00 3.395725017616723e+00 5.073691439387050e+00 9.067365762513704e+03 + 13580 9.689443368391509e-01 -6.002724699338702e+00 -5.958027657150615e+00 3.721200971512336e+00 4.977858304601257e+00 9.088629516102366e+03 + 13600 1.017768333815674e+00 -6.045204071675910e+00 -5.948173767283750e+00 3.490288637881658e+00 5.047451661092518e+00 9.058629524412479e+03 + 13620 9.951900915305153e-01 -5.984311521089371e+00 -6.020952683926789e+00 3.745544341135308e+00 4.535145113921227e+00 9.281473334067881e+03 + 13640 1.010104472379224e+00 -5.986157579107998e+00 -6.052503241670323e+00 3.700292524648948e+00 4.319325463257979e+00 9.378935722652122e+03 + 13660 9.665759256792122e-01 -5.908079714554942e+00 -6.010465446292135e+00 4.192015697141136e+00 4.604100981365398e+00 9.249199962721705e+03 + 13680 1.019921594570815e+00 -5.977409693616421e+00 -6.018997983797384e+00 3.822614121022965e+00 4.583807723036770e+00 9.275459908730872e+03 + 13700 1.075648729941505e+00 -6.055504712025390e+00 -6.026285508699770e+00 3.361822369394123e+00 4.529603556546935e+00 9.297926924066951e+03 + 13720 1.019071102584764e+00 -5.973068271159070e+00 -6.050181981113328e+00 3.819549818843288e+00 4.376750962977889e+00 9.371727148238519e+03 + 13740 1.004586217260948e+00 -5.955604670964619e+00 -6.031186902816487e+00 3.883483455493209e+00 4.449478583887204e+00 9.313035333132730e+03 + 13760 1.059512337978601e+00 -6.042683548125341e+00 -6.009180491677015e+00 3.444634140129649e+00 4.637013874837166e+00 9.245252786426678e+03 + 13780 9.580622244218194e-01 -5.899697445292140e+00 -5.993841885035435e+00 4.239953733092989e+00 4.699361791282024e+00 9.198151296070644e+03 + 13800 1.037598070071333e+00 -6.025840891061420e+00 -5.986725564028316e+00 3.521566820569805e+00 4.746173081471180e+00 9.176342007764264e+03 + 13820 9.708924135690336e-01 -5.935790996106090e+00 -6.030435423281469e+00 3.989894876808374e+00 4.446431929789576e+00 9.310684550860882e+03 + 13840 9.602819063892584e-01 -5.928319903827726e+00 -5.967220120146290e+00 4.122326894767640e+00 4.898955832877426e+00 9.116673796631043e+03 + 13860 1.025095402485861e+00 -6.031321668245525e+00 -5.971727983622753e+00 3.480211775332939e+00 4.822407934529785e+00 9.130460554499901e+03 + 13880 1.010952403370913e+00 -6.018374363518667e+00 -5.971051848424547e+00 3.627320627850045e+00 4.899053832656030e+00 9.128393882975772e+03 + 13900 9.954852305458934e-01 -6.003466446066224e+00 -5.980928686400139e+00 3.731538741981649e+00 4.860954045691352e+00 9.158576020955768e+03 + 13920 1.016268356203339e+00 -6.040393583269869e+00 -5.981421243530807e+00 3.450737595293037e+00 4.789365896014811e+00 9.160099600531272e+03 + 13940 9.786833210774085e-01 -5.993806793602945e+00 -6.042654092684542e+00 3.701015891320091e+00 4.420527140898462e+00 9.348443506908668e+03 + 13960 9.891011305972971e-01 -6.023162590321609e+00 -5.990267208547309e+00 3.515827538648122e+00 4.704717911340030e+00 9.187209310112599e+03 + 13980 9.442672768223425e-01 -5.973580542903748e+00 -6.031816817120200e+00 3.779916672551878e+00 4.445514973966699e+00 9.314946270218148e+03 + 14000 9.662230875744618e-01 -6.029866675288530e+00 -6.036209942950221e+00 3.548577440083888e+00 4.512153415552960e+00 9.328525980611725e+03 + 14020 9.057001366030705e-01 -5.971819198831652e+00 -6.065881574534823e+00 3.803918754415768e+00 4.263798037022558e+00 9.420405868558724e+03 + 14040 9.301819357908376e-01 -6.042189919170998e+00 -6.026279973313184e+00 3.461961196613779e+00 4.553318567785511e+00 9.297890887721753e+03 + 14060 8.853153103102254e-01 -6.005653860336191e+00 -5.986461143461435e+00 3.714038311477717e+00 4.824245861835905e+00 9.175522205344349e+03 + 14080 9.634333916627276e-01 -6.144536272065914e+00 -5.960215555196624e+00 2.925784099731376e+00 4.984182179533591e+00 9.095330944708730e+03 + 14100 9.146867688940616e-01 -6.087054630302132e+00 -5.995379551379986e+00 3.200206912203148e+00 4.726619402046726e+00 9.202877988891187e+03 + 14120 9.320601300576017e-01 -6.120416620742057e+00 -5.984551569168874e+00 3.032236014892496e+00 4.812394166074492e+00 9.169693796201498e+03 + 14140 9.579624282181181e-01 -6.156442505095035e+00 -5.971433627928624e+00 2.884273812240886e+00 4.946623414961636e+00 9.129577299428871e+03 + 14160 8.326997641141263e-01 -5.960054838466997e+00 -6.033563054381723e+00 3.953368026075111e+00 4.531272474933104e+00 9.320357899573894e+03 + 14180 9.342928401337091e-01 -6.091357131979897e+00 -5.986228416183719e+00 3.259737759445618e+00 4.863403114163461e+00 9.174812310653626e+03 + 14200 9.392304837995251e-01 -6.065838061702508e+00 -6.009689871706525e+00 3.384721608663775e+00 4.707133204525030e+00 9.246814632189415e+03 + 14220 9.353550765957238e-01 -6.021225879618004e+00 -5.991932337424866e+00 3.584200322791232e+00 4.752408375225237e+00 9.192279963690353e+03 + 14240 9.516997093865492e-01 -6.004685039595415e+00 -5.978853743004056e+00 3.738064415579393e+00 4.886391717987205e+00 9.152216323487915e+03 + 14260 9.744973590202504e-01 -6.001012259015856e+00 -5.991118878569472e+00 3.711526796643562e+00 4.768336118162376e+00 9.189799641186473e+03 + 14280 9.750995025775289e-01 -5.969265575310930e+00 -6.051209223073906e+00 3.842915230055302e+00 4.372382123861784e+00 9.374920599762667e+03 + 14300 1.018366323221876e+00 -6.011298827059964e+00 -5.999794814759222e+00 3.651329113011656e+00 4.717386931882663e+00 9.216428120614755e+03 + 14320 9.979290218700698e-01 -5.965919006478767e+00 -6.011467246638254e+00 3.905903568887151e+00 4.644358525323991e+00 9.252276033007809e+03 + 14340 1.052726667664419e+00 -6.037436691027604e+00 -6.002583273323571e+00 3.521525333453916e+00 4.721659051459429e+00 9.224988001035070e+03 + 14360 1.030879212583412e+00 -5.998053751675562e+00 -6.013217845216550e+00 3.683691292169797e+00 4.596616720421551e+00 9.257675920509515e+03 + 14380 1.011231685314199e+00 -5.967098045691603e+00 -5.993112280840384e+00 3.901644853731905e+00 4.752267089817725e+00 9.195921194674658e+03 + 14400 1.064733780866991e+00 -6.045409331912724e+00 -5.997739293580194e+00 3.484811887017156e+00 4.758540624037134e+00 9.210109199271268e+03 + 14420 1.029990037786566e+00 -5.995528438258201e+00 -5.987971467337595e+00 3.758574219667636e+00 4.801967516131228e+00 9.180157716110933e+03 + 14440 1.046846247597656e+00 -6.024125187028860e+00 -5.974091570165323e+00 3.594818602892671e+00 4.882119373600283e+00 9.137688259168341e+03 + 14460 1.001521376197511e+00 -5.961888553046335e+00 -6.005424624489557e+00 3.926026168955821e+00 4.676035309543554e+00 9.233707345828185e+03 + 14480 1.053895832952659e+00 -6.047984239191268e+00 -6.008159553253616e+00 3.429322317435656e+00 4.658001826939883e+00 9.242130150625930e+03 + 14500 9.921460814263839e-01 -5.969313102670810e+00 -6.006104545531834e+00 3.848091808048848e+00 4.636829649683470e+00 9.235801958039723e+03 + 14520 9.943852645897678e-01 -5.987614268106825e+00 -6.041976592007347e+00 3.735686836261388e+00 4.423529959882156e+00 9.346357195075043e+03 + 14540 1.023016709090836e+00 -6.049106863874751e+00 -5.990298674743202e+00 3.462787238011426e+00 4.800472960542640e+00 9.187293631468870e+03 + 14560 9.884333435519419e-01 -6.019921560248269e+00 -5.992157310805880e+00 3.579885737309376e+00 4.739312354111287e+00 9.192986916183747e+03 + 14580 1.049897411424165e+00 -6.139732067402549e+00 -5.983188251073981e+00 2.929159951447253e+00 4.828058769883175e+00 9.165503039540958e+03 + 14600 9.651573841839691e-01 -6.044158789801968e+00 -5.995332456429395e+00 3.453723079967800e+00 4.734091442043784e+00 9.202714395870797e+03 + 14620 9.453523274364023e-01 -6.046054717876401e+00 -5.992371740194324e+00 3.502586541198240e+00 4.810842506462675e+00 9.193658634593347e+03 + 14640 9.853353847441770e-01 -6.136595985130529e+00 -5.988422068601172e+00 2.921387128129163e+00 4.772224686680209e+00 9.181548848121294e+03 + 14660 8.923250831768785e-01 -6.027125297262975e+00 -6.005525625693679e+00 3.552217959068511e+00 4.676246615757786e+00 9.234021551433425e+03 + 14680 9.228874180822773e-01 -6.093024565484999e+00 -5.982354304744548e+00 3.176718975315279e+00 4.812204738654453e+00 9.162980552178109e+03 + 14700 9.572710976781926e-01 -6.157851480222909e+00 -6.004274331361785e+00 2.816443893015322e+00 4.698307647762880e+00 9.230200114807767e+03 + 14720 9.176331832190230e-01 -6.105741058493149e+00 -5.996835784938701e+00 3.134225757831238e+00 4.759576691617497e+00 9.207332262974975e+03 + 14740 8.830362594213180e-01 -6.052974543814891e+00 -5.974715328513976e+00 3.459413437129864e+00 4.908789961962148e+00 9.139584403103012e+03 + 14760 9.091010829605519e-01 -6.076518086052246e+00 -6.027547969791208e+00 3.282443998626163e+00 4.563637984298051e+00 9.301820460729452e+03 + 14780 9.708361502904458e-01 -6.140048433627999e+00 -5.992879852440447e+00 2.947959954202735e+00 4.793024721645994e+00 9.195219942439348e+03 + 14800 9.222220010180092e-01 -6.022285400635354e+00 -6.010178988033177e+00 3.547995178954994e+00 4.617512073577994e+00 9.248322725980086e+03 + 14820 9.332349448915777e-01 -5.979593942277390e+00 -6.018790312403501e+00 3.822117625442727e+00 4.597046002559921e+00 9.274827087037835e+03 + 14840 1.012458235412856e+00 -6.036131265473125e+00 -5.996320833027842e+00 3.552907760980256e+00 4.781505424725577e+00 9.205767767045592e+03 + 14860 1.006789647209557e+00 -5.986823355632439e+00 -6.034798996925952e+00 3.703265347610308e+00 4.427781791096462e+00 9.324175055935153e+03 + 14880 1.019824177045552e+00 -5.981645440070493e+00 -6.022213546705503e+00 3.784020704152293e+00 4.551072357959856e+00 9.285378699247032e+03 + 14900 1.008427924971822e+00 -5.951206752684636e+00 -6.034167513272133e+00 3.898129512916136e+00 4.421755987486515e+00 9.322246493739389e+03 + 14920 1.016067588044179e+00 -5.955080092730041e+00 -6.001980037163976e+00 3.903192632953148e+00 4.633885894270554e+00 9.223090311148435e+03 + 14940 9.943516113113841e-01 -5.918571601138767e+00 -6.033267921724736e+00 4.094807240738207e+00 4.436203218735327e+00 9.319435690527122e+03 + 14960 1.038363945597395e+00 -5.982554952527606e+00 -6.024513467468314e+00 3.771802691415798e+00 4.530870405567057e+00 9.292460141753703e+03 + 14980 1.021125360889804e+00 -5.959952334247435e+00 -6.041158491683223e+00 3.848690013495274e+00 4.382391690886729e+00 9.343815768686029e+03 + 15000 9.832357746842078e-01 -5.910430194942424e+00 -6.001923502476149e+00 4.147872886149311e+00 4.622504155747076e+00 9.222927883713255e+03 + 15020 1.003089927786025e+00 -5.947370401790578e+00 -5.996890339145149e+00 3.930887048308773e+00 4.646535904833288e+00 9.207494463419454e+03 + 15040 1.041801518997001e+00 -6.013870785578861e+00 -6.010821645086613e+00 3.621984011903171e+00 4.639492648462625e+00 9.250301615584005e+03 + 15060 1.006697359125730e+00 -5.975496490226733e+00 -5.996150903307937e+00 3.824521070447352e+00 4.705920234274984e+00 9.205240662727867e+03 + 15080 1.012631413497304e+00 -5.999607206315405e+00 -6.003502616685140e+00 3.706355611479565e+00 4.683987562323743e+00 9.227813430641863e+03 + 15100 1.027255146869554e+00 -6.042384192595095e+00 -5.998238370266910e+00 3.473302656425250e+00 4.726794799777610e+00 9.211644696096027e+03 + 15120 9.894155504952339e-01 -6.008699273450648e+00 -5.980242673304412e+00 3.644298205295747e+00 4.807700406980079e+00 9.156487202256354e+03 + 15140 9.832774122211521e-01 -6.020080304146821e+00 -5.978151429201674e+00 3.583278459744251e+00 4.824040548151716e+00 9.150113982641389e+03 + 15160 1.033127892111074e+00 -6.115063577947739e+00 -5.992888920138225e+00 3.080943117045043e+00 4.782488908654463e+00 9.195248184745780e+03 + 15180 9.982011358099073e-01 -6.084855415484716e+00 -5.981584756380695e+00 3.296452584062660e+00 4.889448689720798e+00 9.160598923735270e+03 + 15200 9.722445357820864e-01 -6.066008956350461e+00 -5.987541368873890e+00 3.331657739749601e+00 4.782230769859993e+00 9.178845260531720e+03 + 15220 9.697117600045936e-01 -6.076980706488086e+00 -5.964637407185260e+00 3.322542062430765e+00 4.967634672096969e+00 9.108814339770330e+03 + 15240 9.832485597782736e-01 -6.109452710834826e+00 -5.974101731613088e+00 3.117294526507890e+00 4.894500794695452e+00 9.137751148142410e+03 + 15260 9.530744039852279e-01 -6.075001847666452e+00 -6.008808987456170e+00 3.291602992817331e+00 4.671692639456783e+00 9.244114475685166e+03 + 15280 9.350713136243083e-01 -6.053466727689420e+00 -5.968473396226428e+00 3.447470623822618e+00 4.935515485758656e+00 9.120521198299575e+03 + 15300 1.018558224795023e+00 -6.175915200941908e+00 -5.956287137417533e+00 2.761827135832458e+00 5.022965463922409e+00 9.083356648807123e+03 + 15320 9.223022270300407e-01 -6.025468412608612e+00 -5.977945831421264e+00 3.584919117801911e+00 4.857801133075331e+00 9.149457418138692e+03 + 15340 9.507897179144256e-01 -6.048682332276661e+00 -5.948228117698299e+00 3.444455850149162e+00 5.021279495497583e+00 9.058799777776147e+03 + 15360 1.001344669912450e+00 -6.086469755467908e+00 -5.985102541136126e+00 3.225468516271051e+00 4.807534747489860e+00 9.171394484469665e+03 + 15380 9.736032232818543e-01 -5.996117397311394e+00 -6.031414157338427e+00 3.717760397190810e+00 4.515080938959631e+00 9.313751795539005e+03 + 15400 9.660825305161991e-01 -5.934922969023227e+00 -6.009910917126087e+00 4.047014936067699e+00 4.616422533713615e+00 9.247514364767621e+03 + 15420 1.051481913102264e+00 -6.017158126143888e+00 -6.012312108276678e+00 3.611131510649913e+00 4.638958095162272e+00 9.254892312865863e+03 + 15440 1.099503085714131e+00 -6.055511174579758e+00 -6.026779592155419e+00 3.361026906408012e+00 4.526008098886575e+00 9.299448593902765e+03 + 15460 1.044939292337747e+00 -5.954397370079508e+00 -6.027894300748307e+00 3.983947054569640e+00 4.561916305056133e+00 9.302886859304908e+03 + 15480 1.111268001139891e+00 -6.042927797800162e+00 -5.990274548919131e+00 3.485485845470278e+00 4.787828948609089e+00 9.187227962608147e+03 + 15500 1.009552530804799e+00 -5.888964164140117e+00 -6.027934097424412e+00 4.311729058516539e+00 4.513742196070448e+00 9.302972745392335e+03 + 15520 1.030246793721443e+00 -5.922429131783099e+00 -5.980888862399471e+00 4.092362270345772e+00 4.756677450532488e+00 9.158440348080954e+03 + 15540 9.975922210702153e-01 -5.878299052398336e+00 -5.983743040819674e+00 4.410757828427396e+00 4.805282129507598e+00 9.167175216530726e+03 + 15560 1.082418671989176e+00 -6.012082066018948e+00 -5.981664419063939e+00 3.661487487040021e+00 4.836150322971342e+00 9.160854457807143e+03 + 15580 1.042842259432051e+00 -5.968012360496712e+00 -6.027916461617234e+00 3.847893442011583e+00 4.503914823247863e+00 9.302954905183999e+03 + 15600 9.653681620221185e-01 -5.872321953026235e+00 -6.051562613523336e+00 4.363348494344606e+00 4.334120884367687e+00 9.376017262160663e+03 + 15620 1.039465066011725e+00 -6.006774385734478e+00 -5.962908953256215e+00 3.685101084428548e+00 4.936983185872472e+00 9.103522105930297e+03 + 15640 9.959993876069543e-01 -5.967575392147994e+00 -5.965987970319528e+00 3.869014656861653e+00 4.878129878653439e+00 9.112918577795066e+03 + 15660 1.039514543615304e+00 -6.058726867450306e+00 -5.971587057383079e+00 3.397063867146809e+00 4.897434141394857e+00 9.130035600839274e+03 + 15680 9.186810047381179e-01 -5.907155615932896e+00 -6.055283683674707e+00 4.160714266887610e+00 4.310139979169731e+00 9.387538328122100e+03 + 15700 9.852933271298693e-01 -6.032771273925749e+00 -6.007576608349518e+00 3.493909053596011e+00 4.638580722196631e+00 9.240318332336854e+03 + 15720 9.958565645542300e-01 -6.071000268390845e+00 -5.976853072587240e+00 3.357048121285746e+00 4.897655888821513e+00 9.146121541915845e+03 + 15740 9.479532805469607e-01 -6.019202457797280e+00 -5.986378713860523e+00 3.649269408000298e+00 4.837748425143114e+00 9.175269743283417e+03 + 15760 9.597754537155575e-01 -6.050471197120063e+00 -6.002816946227338e+00 3.437929066877525e+00 4.711567149975049e+00 9.225698505442859e+03 + 15780 9.587271125857375e-01 -6.060165679976816e+00 -5.977881776449152e+00 3.397055459805893e+00 4.869542367254656e+00 9.149242219198843e+03 + 15800 8.988244408203014e-01 -5.975257475101839e+00 -5.940456213488443e+00 3.817880514506519e+00 5.017714744168469e+00 9.035150109434859e+03 + 15820 9.524300343673753e-01 -6.049913923969113e+00 -5.939527099622970e+00 3.429400536465309e+00 5.063258764166720e+00 9.032333577428828e+03 + 15840 9.387125985957174e-01 -6.015463356773948e+00 -5.986087733911527e+00 3.606963586137629e+00 4.775642958476592e+00 9.174389475113712e+03 + 15860 9.442015499304807e-01 -6.001048429168136e+00 -5.999132947280391e+00 3.690804105165445e+00 4.701803098584736e+00 9.214403304535377e+03 + 15880 1.040460992919469e+00 -6.108541595362967e+00 -6.019497522492548e+00 3.087561493861394e+00 4.598866339809084e+00 9.277014361750218e+03 + 15900 1.006307656520622e+00 -6.005912562994236e+00 -5.990916974180545e+00 3.694756899663111e+00 4.780863891191201e+00 9.189190949267684e+03 + 15920 9.739650855508706e-01 -5.891259265195796e+00 -6.021120702384584e+00 4.242856157162151e+00 4.497171688831672e+00 9.282005751951348e+03 + 15940 1.043529363485901e+00 -5.923286296156697e+00 -6.044643440085450e+00 4.056327576174173e+00 4.359476075777945e+00 9.354618170961621e+03 + 15960 1.032482521468340e+00 -5.863832363752441e+00 -6.021722886296762e+00 4.440108801777649e+00 4.533476987848764e+00 9.283842919130395e+03 + 15980 1.090211966623664e+00 -5.929399980603203e+00 -6.015511943810689e+00 4.071797202943952e+00 4.577328984423326e+00 9.264742121177609e+03 + 16000 1.119917871770703e+00 -5.970547985839363e+00 -6.006814286928043e+00 3.876388679874490e+00 4.668141966831338e+00 9.237978198065348e+03 + 16020 1.038670480226327e+00 -5.856963451948980e+00 -6.035899006772087e+00 4.420738700713010e+00 4.393263054731107e+00 9.327570749707285e+03 + 16040 1.111960006598479e+00 -5.979498946201963e+00 -5.959517961937144e+00 3.791270375491699e+00 4.906004279187609e+00 9.093176530397619e+03 + 16060 1.014578791306964e+00 -5.852527921606540e+00 -6.034214102547810e+00 4.442263699061439e+00 4.398993532251034e+00 9.322328904493563e+03 + 16080 1.070143013802163e+00 -5.958127181542800e+00 -6.045957559482914e+00 3.933772825697144e+00 4.429437203857947e+00 9.358660726208411e+03 + 16100 1.059385820968090e+00 -5.973587218445555e+00 -6.005730123436942e+00 3.871573200981748e+00 4.687003666422731e+00 9.234642397685626e+03 + 16120 1.029147721603271e+00 -5.961962182250252e+00 -6.040404587610968e+00 3.920161692165637e+00 4.469733261661405e+00 9.341479963451662e+03 + 16140 1.084545860741448e+00 -6.079749110082415e+00 -5.965772735817823e+00 3.352040935149971e+00 5.006510913964171e+00 9.112270055112816e+03 + 16160 1.001544712843063e+00 -5.988560144066131e+00 -6.008293208888090e+00 3.735685358272912e+00 4.622375046383311e+00 9.242501135975748e+03 + 16180 1.021610862144649e+00 -6.046708635009876e+00 -5.947599647485053e+00 3.500237023900787e+00 5.069336167334580e+00 9.056884226831984e+03 + 16200 9.996196822025203e-01 -6.035980717875709e+00 -5.963088802893962e+00 3.561561116568659e+00 4.980117772381245e+00 9.104081147135690e+03 + 16220 9.667280948315832e-01 -6.003873912140834e+00 -6.029266740648056e+00 3.676163162286024e+00 4.530353611470045e+00 9.307120620459347e+03 + 16240 1.044814511361942e+00 -6.133482541393508e+00 -5.996537979429706e+00 2.960421670791425e+00 4.746778537690048e+00 9.206449716741608e+03 + 16260 9.828113555857294e-01 -6.055053703745427e+00 -5.997998235710874e+00 3.397160823790285e+00 4.724782150549835e+00 9.210913682184944e+03 + 16280 9.836200616351478e-01 -6.066448569737368e+00 -5.986829781708607e+00 3.329342005862354e+00 4.786525407691126e+00 9.176661220746782e+03 + 16300 9.706816758214837e-01 -6.053160736146162e+00 -6.006920116031742e+00 3.385326521662988e+00 4.650847318072824e+00 9.238294350015800e+03 + 16320 9.386393254113247e-01 -6.007429758212115e+00 -5.955763681525857e+00 3.699919327205507e+00 4.996593934837527e+00 9.081736223915159e+03 + 16340 1.006175033992813e+00 -6.103511373014333e+00 -5.966370993012679e+00 3.124911492572879e+00 4.912392776947598e+00 9.114084855988927e+03 + 16360 9.449112569405301e-01 -6.003778301851324e+00 -6.004391352276248e+00 3.627280468316835e+00 4.623760237907673e+00 9.230528527875267e+03 + 16380 9.963027094050009e-01 -6.064812716379080e+00 -5.965389259077392e+00 3.350432476367847e+00 4.921337353924430e+00 9.111087226040068e+03 + 16400 1.014161861864463e+00 -6.068100585936381e+00 -5.991555765197051e+00 3.340021717886150e+00 4.779553923844110e+00 9.191138998277158e+03 + 16420 9.630807216164625e-01 -5.962556997959725e+00 -5.999339510013300e+00 3.890338466661848e+00 4.679127590374874e+00 9.215008359607682e+03 + 16440 1.042241325292144e+00 -6.044672656004720e+00 -5.976653483744734e+00 3.471736052071346e+00 4.862312665121074e+00 9.145504342133841e+03 + 16460 1.001279370843563e+00 -5.940600374719270e+00 -5.989486927483195e+00 4.008885886377403e+00 4.728171735237356e+00 9.184792441285039e+03 + 16480 1.006910426607016e+00 -5.906953155649825e+00 -5.975235335073020e+00 4.169410384592255e+00 4.777323543711156e+00 9.141146286262157e+03 + 16500 1.111025541553890e+00 -6.022240757674968e+00 -5.966771416757488e+00 3.553932484943734e+00 4.872446024344673e+00 9.115328194534928e+03 + 16520 1.064529453378381e+00 -5.926147619288513e+00 -6.007275850023660e+00 4.077552128599220e+00 4.611701273164875e+00 9.239402807591428e+03 + 16540 1.074024504345767e+00 -5.925433266325845e+00 -6.024506086833570e+00 4.062009574146015e+00 4.493118107321229e+00 9.292438858568908e+03 + 16560 1.102003404249147e+00 -5.963960317218174e+00 -6.058823659801582e+00 3.797482493305224e+00 4.252762500136474e+00 9.398518125555918e+03 + 16580 1.053479012049155e+00 -5.898744507071199e+00 -6.044286845375987e+00 4.189570204657825e+00 4.353843575507670e+00 9.353473808470189e+03 + 16600 1.099383376681937e+00 -5.980586518079263e+00 -5.987018179436031e+00 3.832879653911318e+00 4.795948059104374e+00 9.177215251869593e+03 + 16620 1.057877377693240e+00 -5.934993035161610e+00 -5.975679199285806e+00 4.069402999275983e+00 4.835776748711298e+00 9.142522169908640e+03 + 16640 1.096410518871104e+00 -6.008649279470569e+00 -5.967281847206526e+00 3.678556379607090e+00 4.916094577256681e+00 9.116883957867251e+03 + 16660 1.004496589334081e+00 -5.890957468562389e+00 -6.007502950185087e+00 4.293880951539177e+00 4.624658760706651e+00 9.240084361635689e+03 + 16680 1.019662639971786e+00 -5.931355049517618e+00 -6.012084920449190e+00 4.109406119380905e+00 4.645842707584671e+00 9.254167945428246e+03 + 16700 1.043591898595632e+00 -5.984075066170873e+00 -6.009995685516705e+00 3.729608626620457e+00 4.580768419133815e+00 9.247756112618841e+03 + 16720 9.651169108758548e-01 -5.885026314512714e+00 -6.042297323062252e+00 4.328137530956362e+00 4.425063062254993e+00 9.347343300611061e+03 + 16740 1.025443653125723e+00 -5.993401393192968e+00 -6.056046010240834e+00 3.702573411402036e+00 4.342858326090031e+00 9.389911064706876e+03 + 16760 1.040321625566783e+00 -6.034073341909074e+00 -5.997101654410751e+00 3.542229264351756e+00 4.754526415317273e+00 9.208147637483760e+03 + 16780 9.859775011202554e-01 -5.968991458205546e+00 -5.983237602138166e+00 3.890539593259309e+00 4.808736030214556e+00 9.165634010108388e+03 + 16800 9.884653421519799e-01 -5.984580875168528e+00 -6.021679281104608e+00 3.807460535710798e+00 4.594435747866063e+00 9.283709998166285e+03 + 16820 1.062280055040524e+00 -6.106553201186487e+00 -5.966033022081692e+00 3.125250965947634e+00 4.932139579794802e+00 9.113097466572090e+03 + 16840 1.010264574921863e+00 -6.041056549723880e+00 -5.986331963349495e+00 3.449011581359245e+00 4.763248624923334e+00 9.175142850191049e+03 + 16860 9.734692393836242e-01 -5.994898905507279e+00 -6.025793627473734e+00 3.681624955123896e+00 4.504222680649743e+00 9.296401595530804e+03 + 16880 9.578470383813710e-01 -5.978413189180635e+00 -6.018094246722809e+00 3.814413437190905e+00 4.586558664159933e+00 9.272696678412965e+03 + 16900 9.544746446363546e-01 -5.979279196178286e+00 -6.036303196646175e+00 3.827116398296035e+00 4.499675763173863e+00 9.328824825582569e+03 + 16920 9.790937728005572e-01 -6.019920930596426e+00 -5.963884077374939e+00 3.558784536610578e+00 4.880556819483364e+00 9.106524369040393e+03 + 16940 9.979087284754528e-01 -6.048847328415294e+00 -5.975871213036347e+00 3.473593830425984e+00 4.892633977949255e+00 9.143118078260639e+03 + 16960 1.001372384316250e+00 -6.053325648519742e+00 -5.983008823678847e+00 3.347450299795585e+00 4.751220389525482e+00 9.164970104888862e+03 + 16980 9.495369561054742e-01 -5.972332810885871e+00 -5.988802375661896e+00 3.900722625474983e+00 4.806151835874136e+00 9.182673663902007e+03 + 17000 1.004652804553360e+00 -6.044052056270499e+00 -5.970439510000572e+00 3.468775027194833e+00 4.891469659381471e+00 9.126519084373687e+03 + 17020 9.504618321210833e-01 -5.945855898328440e+00 -6.025813754187435e+00 3.946928114512158e+00 4.487797732731599e+00 9.296471653958220e+03 + 17040 9.983326289373902e-01 -5.987683425417126e+00 -6.033128197146650e+00 3.760844449876864e+00 4.499893538050242e+00 9.319030020133772e+03 + 17060 1.037531948287053e+00 -6.000301804220634e+00 -6.053640672452377e+00 3.678189730507182e+00 4.371909694957332e+00 9.382441504698101e+03 + 17080 1.071576028171232e+00 -5.999175394344467e+00 -6.011137293860008e+00 3.734975150861554e+00 4.666288072745356e+00 9.251286249569876e+03 + 17100 1.081463689206868e+00 -5.962188168661991e+00 -6.001824629087645e+00 3.940893639798026e+00 4.713294950311493e+00 9.222634003107041e+03 + 17120 1.089739097842401e+00 -5.936591719396770e+00 -5.998052803917646e+00 4.015194653830019e+00 4.662275595439056e+00 9.211083623665278e+03 + 17140 1.095062054425581e+00 -5.919251033059413e+00 -5.985926074688694e+00 4.101040800105736e+00 4.718182393141062e+00 9.173885563448477e+03 + 17160 1.071433007647596e+00 -5.872272233969349e+00 -6.016217837204072e+00 4.314569469066353e+00 4.488011539782468e+00 9.266875182613381e+03 + 17180 1.119594979875887e+00 -5.942729821417191e+00 -5.987977119343153e+00 3.984910203084596e+00 4.725093216396998e+00 9.180161367041119e+03 + 17200 1.054708662091585e+00 -5.854703743288421e+00 -6.006614074586382e+00 4.491109658008900e+00 4.618817027648215e+00 9.237323055784636e+03 + 17220 1.066125323894024e+00 -5.888626101234864e+00 -5.963631510740051e+00 4.306677850796348e+00 4.875985182367957e+00 9.105711603604965e+03 + 17240 1.084034748602998e+00 -5.936699012285631e+00 -5.999056755722497e+00 4.045048038894926e+00 4.686980226250829e+00 9.214102177940282e+03 + 17260 1.043937442965128e+00 -5.908788449510177e+00 -6.024302339365368e+00 4.161939004967312e+00 4.498640373702119e+00 9.291776724046724e+03 + 17280 1.038133033742346e+00 -5.934069048245194e+00 -5.998489327863095e+00 4.005530476846223e+00 4.635619262274180e+00 9.212415672608238e+03 + 17300 1.053403595654856e+00 -5.993219027709928e+00 -6.027715446049482e+00 3.746324213218287e+00 4.548240440809083e+00 9.302284131722656e+03 + 17320 9.804201492613073e-01 -5.918520887386850e+00 -6.015699229815652e+00 4.139777174183189e+00 4.581764093657124e+00 9.265295255489031e+03 + 17340 1.009418364913800e+00 -5.988561663032932e+00 -5.989948503175782e+00 3.764276232328435e+00 4.756312781615374e+00 9.186183034808422e+03 + 17360 9.856701866056794e-01 -5.971713635179905e+00 -5.936392196807986e+00 3.914590182061049e+00 5.117411347167529e+00 9.022807187983572e+03 + 17380 9.720941125870967e-01 -5.963082935112788e+00 -5.977274446888640e+00 3.849284019028471e+00 4.767794162282177e+00 9.147428668226667e+03 + 17400 1.024905459126536e+00 -6.048799989359965e+00 -5.995817597246074e+00 3.390803626240889e+00 4.695036720757534e+00 9.204221936015509e+03 + 17420 1.026567097003944e+00 -6.056620477627159e+00 -5.965658930403348e+00 3.386912226582850e+00 4.909227506995913e+00 9.111943347269387e+03 + 17440 1.008675691728021e+00 -6.033161235131350e+00 -6.016006282911424e+00 3.441059898403239e+00 4.539566288770327e+00 9.266269625405585e+03 + 17460 9.080984743903288e-01 -5.887010572457441e+00 -6.085385614325908e+00 4.182494666418110e+00 4.043394477570856e+00 9.481036018013001e+03 + 17480 9.944630232760490e-01 -6.018677164324184e+00 -6.011120618402915e+00 3.610259490708203e+00 4.653650346759831e+00 9.251217081557557e+03 + 17500 9.759776930851446e-01 -5.993427419008173e+00 -5.992912873755718e+00 3.743618696159810e+00 4.746573294625026e+00 9.195312300845768e+03 + 17520 1.010669362886012e+00 -6.044221591353360e+00 -6.000416481077136e+00 3.444882730921969e+00 4.696418452946955e+00 9.218329125910859e+03 + 17540 9.696818064539382e-01 -5.982387257154176e+00 -5.985346195434657e+00 3.772825948990143e+00 4.755835267489407e+00 9.172112083508009e+03 + 17560 9.680526626590338e-01 -5.977833277252081e+00 -6.004938515963047e+00 3.787176163303919e+00 4.631533688103421e+00 9.232217942798026e+03 + 17580 1.014847341131473e+00 -6.041027730257754e+00 -6.002889013966105e+00 3.447511959480200e+00 4.666510370374117e+00 9.225909519957588e+03 + 17600 9.639929781539910e-01 -5.958297852564044e+00 -6.016722680928043e+00 3.886107046858323e+00 4.550622641179274e+00 9.268450157788748e+03 + 17620 1.034196136801247e+00 -6.052735836127812e+00 -6.005093962045483e+00 3.402367666734574e+00 4.675934680271492e+00 9.232696278514597e+03 + 17640 9.664300240503234e-01 -5.938142550798120e+00 -6.025207511888059e+00 4.077629333046271e+00 4.577688853208656e+00 9.294609892481116e+03 + 17660 1.018496691878853e+00 -5.998708777162175e+00 -6.025393291009647e+00 3.687772443624044e+00 4.534545835696692e+00 9.295173734317876e+03 + 17680 1.000893067325556e+00 -5.949594417650285e+00 -6.015691959030227e+00 3.923164327209895e+00 4.543622016044798e+00 9.265292685990989e+03 + 17700 9.875844681225524e-01 -5.901365411726051e+00 -6.051410544350759e+00 4.167749972521387e+00 4.306167601581083e+00 9.375555653763018e+03 + 17720 1.091080435620308e+00 -6.023496503815850e+00 -5.981246069651732e+00 3.538051346224706e+00 4.780659877428628e+00 9.159581426765624e+03 + 17740 1.044076003381774e+00 -5.922805327342090e+00 -6.015064694861939e+00 4.077079855160536e+00 4.547312289770577e+00 9.263340055211049e+03 + 17760 1.049183665095641e+00 -5.901273140642618e+00 -6.004902191024042e+00 4.223927839828479e+00 4.628873795994624e+00 9.232092851863188e+03 + 17780 1.005755360987675e+00 -5.814601715463706e+00 -6.043867885901649e+00 4.662909328192946e+00 4.346427498713062e+00 9.352179170585412e+03 + 17800 1.123798019815680e+00 -5.973260817185960e+00 -5.989676699570317e+00 3.826812094106307e+00 4.732549557105740e+00 9.185376142099378e+03 + 17820 1.098409247446478e+00 -5.927303556103620e+00 -6.036001301245498e+00 4.116500032396906e+00 4.492340758870546e+00 9.327888138208251e+03 + 17840 1.081979724386392e+00 -5.907038809368990e+00 -6.006526392232447e+00 4.202932719003422e+00 4.631659622547763e+00 9.237085743300939e+03 + 17860 1.126965292422963e+00 -5.986932840313537e+00 -6.008254895813187e+00 3.794832492086718e+00 4.672397949830306e+00 9.242401210729473e+03 + 17880 1.044496481306441e+00 -5.892342411053446e+00 -6.063586350752452e+00 4.231022726723773e+00 4.247713525058054e+00 9.413268314620746e+03 + 17900 1.072806564419027e+00 -5.974786835003923e+00 -6.020788033829181e+00 3.827999723056787e+00 4.563853720739644e+00 9.280970728889348e+03 + 17920 1.046715333447897e+00 -5.987292007077288e+00 -6.037255987939306e+00 3.704566270182039e+00 4.417665360171289e+00 9.331776613406993e+03 + 17940 9.871622359596613e-01 -5.948360585014385e+00 -5.992190839105964e+00 3.966349846148713e+00 4.714669744444965e+00 9.193103374892153e+03 + 17960 1.035759543109347e+00 -6.057212635947933e+00 -5.978937516486671e+00 3.414218575338493e+00 4.863686424320649e+00 9.152497791373864e+03 + 17980 9.276315670765530e-01 -5.922255371906326e+00 -6.041109556066617e+00 4.086760594213454e+00 4.404281476139506e+00 9.343664760364230e+03 + 18000 9.994602941231261e-01 -6.044402664126796e+00 -6.008713400103766e+00 3.446190129203910e+00 4.651123406119905e+00 9.243835523090673e+03 + 18020 1.024094209922603e+00 -6.092357347850473e+00 -5.989967330668676e+00 3.184781648302612e+00 4.772720971764443e+00 9.186307080193828e+03 + 18040 9.816932130083108e-01 -6.036685205199944e+00 -6.038198072298032e+00 3.442041014620181e+00 4.433353897627533e+00 9.334672024833904e+03 + 18060 9.977535787655942e-01 -6.065099527563580e+00 -5.989271096559059e+00 3.324435072370272e+00 4.759853657610006e+00 9.184128048579842e+03 + 18080 9.623895290207776e-01 -6.014803089909850e+00 -5.997080714813748e+00 3.635374973102222e+00 4.737139593432719e+00 9.208090313060540e+03 + 18100 9.765507279857853e-01 -6.035197675566198e+00 -5.967303356423883e+00 3.524843539810195e+00 4.914703226937302e+00 9.116943479876903e+03 + 18120 8.971790237430630e-01 -5.911094583522542e+00 -5.987842040163612e+00 4.138079145932101e+00 4.697383373268544e+00 9.179731030369752e+03 + 18140 9.865708333596941e-01 -6.030732792353082e+00 -5.960608388102626e+00 3.523216367340401e+00 4.925881548263009e+00 9.096502323646715e+03 + 18160 1.018304057735848e+00 -6.060007905136610e+00 -5.978821511271845e+00 3.396764996153095e+00 4.862949833278423e+00 9.152140998120156e+03 + 18180 9.924347898217442e-01 -6.003039951609093e+00 -6.044040735654973e+00 3.636484284390367e+00 4.401051437548098e+00 9.352710476723580e+03 + 18200 1.046266652036784e+00 -6.063193289205522e+00 -5.980215979800755e+00 3.364001410870856e+00 4.840469962170157e+00 9.156420428805473e+03 + 18220 9.726369871085755e-01 -5.933046065279984e+00 -5.997515360623295e+00 4.042440923452824e+00 4.672248253000320e+00 9.209419649889160e+03 + 18240 1.000680729655884e+00 -5.952705788170711e+00 -5.984881541696477e+00 3.964530960987230e+00 4.779772805060518e+00 9.170657502295988e+03 + 18260 1.005699594500001e+00 -5.933831727269307e+00 -5.965193077998222e+00 4.031329006744192e+00 4.851247277705419e+00 9.110487394114312e+03 + 18280 1.077118484116914e+00 -6.011938987463949e+00 -5.972701543788044e+00 3.684112583728944e+00 4.909420057290776e+00 9.133430880844697e+03 + 18300 9.990112283295048e-01 -5.869349721883754e+00 -6.063486223444696e+00 4.390070705230780e+00 4.275308870741332e+00 9.412953534466322e+03 + 18320 1.040505685339923e+00 -5.907535782941021e+00 -6.083224876144481e+00 4.192043052185379e+00 4.183209091211805e+00 9.474289646547797e+03 + 18340 1.118563194171285e+00 -6.005459271936644e+00 -6.024560363388957e+00 3.669413871015970e+00 4.559732448012436e+00 9.292612414694271e+03 + 18360 1.099393745030746e+00 -5.968688166288169e+00 -6.017803029209755e+00 3.891664277870881e+00 4.609639134474663e+00 9.271781544877773e+03 + 18380 1.117738317076156e+00 -5.995555976155166e+00 -5.996983086373443e+00 3.770579879062371e+00 4.762385191344435e+00 9.207792792265043e+03 + 18400 1.041770755613395e+00 -5.891764186029680e+00 -6.045957724228440e+00 4.228174764257883e+00 4.342771606547684e+00 9.358681210779096e+03 + 18420 1.027575024167783e+00 -5.896844691165052e+00 -6.006378082023485e+00 4.254539594701370e+00 4.625581914154795e+00 9.236629354358782e+03 + 18440 9.989424698645518e-01 -5.899582655153067e+00 -6.011609444866338e+00 4.285069783216396e+00 4.641794620593111e+00 9.252695105814415e+03 + 18460 9.898219988333975e-01 -5.942674866239423e+00 -6.016005933572570e+00 4.015193117013204e+00 4.594114780440277e+00 9.266239727358099e+03 + 18480 1.026359620543620e+00 -6.057202511932885e+00 -6.004236257917090e+00 3.397831111686383e+00 4.701971538746394e+00 9.230053984421727e+03 + 18500 1.025869181359671e+00 -6.104348736506338e+00 -5.980135102916621e+00 3.149434696908707e+00 4.862688602978540e+00 9.156148937043179e+03 + 18520 9.257468031412428e-01 -5.985508593853569e+00 -5.968532681737250e+00 3.747011174971259e+00 4.844489489357073e+00 9.120690588770034e+03 + 18540 9.340806757226165e-01 -6.013734562159490e+00 -5.958988502605152e+00 3.649352495324135e+00 4.963712841210480e+00 9.091553000402706e+03 + 18560 9.226833792012186e-01 -6.005056593501181e+00 -5.976790663540826e+00 3.632684873062655e+00 4.794992217033538e+00 9.145934760950819e+03 + 18580 9.311594308010234e-01 -6.018663656889939e+00 -6.000516935066948e+00 3.579601491288220e+00 4.683802776191961e+00 9.218636263102730e+03 + 18600 9.607203064403740e-01 -6.057463871834262e+00 -5.955373607285648e+00 3.427018480028718e+00 5.013236577484237e+00 9.080575271012531e+03 + 18620 9.025656325655277e-01 -5.959512809406918e+00 -6.003138478082454e+00 3.913893345316668e+00 4.663388004731328e+00 9.226692349740581e+03 + 18640 9.730086473705979e-01 -6.048463371971904e+00 -6.005550051740422e+00 3.411077202110857e+00 4.657492127694869e+00 9.234092058435956e+03 + 18660 1.002472387886004e+00 -6.072877927236409e+00 -5.982358126008788e+00 3.261899576598261e+00 4.781678283141228e+00 9.162989967540645e+03 + 18680 9.711716833875289e-01 -6.003946690768953e+00 -6.001325737761383e+00 3.652237620909838e+00 4.667287538670473e+00 9.221112953806361e+03 + 18700 9.776417394181699e-01 -5.988458674580767e+00 -5.979462286343042e+00 3.755231075232557e+00 4.806889728680154e+00 9.154073594432006e+03 + 18720 1.039190126550525e+00 -6.052037776888484e+00 -5.957968682897910e+00 3.451047259390530e+00 4.991206554229651e+00 9.088430624222481e+03 + 18740 9.325208894434228e-01 -5.865345146103860e+00 -5.972654384319705e+00 4.448344864899459e+00 4.832158613013132e+00 9.133259869567599e+03 + 18760 1.084241230871755e+00 -6.063466760942323e+00 -5.967047270512539e+00 3.388286944221928e+00 4.941942579137670e+00 9.116138044654517e+03 + 18780 1.034219873855957e+00 -5.963788043205668e+00 -5.997381780233737e+00 3.895170755445824e+00 4.702270318816648e+00 9.209028014885711e+03 + 18800 1.027524200554626e+00 -5.937247518026616e+00 -6.022333489177877e+00 4.047352395997275e+00 4.558775582635252e+00 9.285686377859194e+03 + 18820 1.042606426753261e+00 -5.948458897748116e+00 -5.996695846363409e+00 3.981339670646384e+00 4.704355647053702e+00 9.206885418062458e+03 + 18840 9.846616524895233e-01 -5.855936295245451e+00 -6.007386985369196e+00 4.490771455757740e+00 4.621118156148643e+00 9.239709606457935e+03 + 18860 9.827531597377804e-01 -5.849516640861546e+00 -6.042610475340859e+00 4.474940278318243e+00 4.366165599563711e+00 9.348301574462605e+03 + 18880 1.050487278046361e+00 -5.950384094827135e+00 -6.026505050937897e+00 3.987098763425120e+00 4.550000453757239e+00 9.298600101965494e+03 + 18900 1.074138258592828e+00 -5.994380072357722e+00 -6.042641419571380e+00 3.675249633927108e+00 4.398125509806937e+00 9.348436647143119e+03 + 18920 1.028872113531929e+00 -5.944464597756838e+00 -6.026192001243607e+00 3.999349926340737e+00 4.530058528244892e+00 9.297621926705824e+03 + 18940 9.864816662423845e-01 -5.903289603680446e+00 -6.046110197351942e+00 4.322969185004393e+00 4.502871234727228e+00 9.359127182003991e+03 + 18960 1.017886900590775e+00 -5.980194419187219e+00 -6.017157491682779e+00 3.806612103760398e+00 4.594364421473908e+00 9.269780889266749e+03 + 18980 1.017402625954216e+00 -6.014395730210121e+00 -5.964721089189772e+00 3.658423675158015e+00 4.943663151022712e+00 9.109076160724047e+03 + 19000 1.004287339989931e+00 -6.033159874134210e+00 -5.990131374134492e+00 3.492090827465359e+00 4.739167133102596e+00 9.186774145313242e+03 + 19020 1.012003890115472e+00 -6.086529560837555e+00 -6.003170364216685e+00 3.243757788628426e+00 4.722419195419445e+00 9.226780850812249e+03 + 19040 9.904504368572550e-01 -6.095940836385743e+00 -5.951680686907650e+00 3.234185543242030e+00 5.062549645731217e+00 9.069307441178707e+03 + 19060 9.707812024583312e-01 -6.099050664648521e+00 -5.962276201579887e+00 3.156676833149988e+00 4.942056965869842e+00 9.101615000972597e+03 + 19080 9.139075685781860e-01 -6.033038264457056e+00 -5.998883057777602e+00 3.459541841611653e+00 4.655666323866225e+00 9.213632432227274e+03 + 19100 9.048712739197019e-01 -6.026449745193111e+00 -5.977604799619012e+00 3.612187516897309e+00 4.892662753114683e+00 9.148426105659002e+03 + 19120 9.631546844864886e-01 -6.110122601418831e+00 -5.960133220159843e+00 3.127228955195803e+00 4.988491193166649e+00 9.095063047858830e+03 + 19140 9.236839053940779e-01 -6.044185621452637e+00 -6.008911316341555e+00 3.472067772666047e+00 4.674618291294957e+00 9.244430932171934e+03 + 19160 9.670729016046413e-01 -6.099982789136825e+00 -6.020983681350573e+00 3.135649673010194e+00 4.589274774991274e+00 9.281588487230300e+03 + 19180 9.580095918540483e-01 -6.075635498830700e+00 -6.018922944640721e+00 3.282261854081981e+00 4.607914116480240e+00 9.275251908513370e+03 + 19200 8.922788928148744e-01 -5.965079138059791e+00 -6.049427972223858e+00 3.841842459176597e+00 4.357498400466623e+00 9.369438040271903e+03 + 19220 9.423147495619238e-01 -6.022499256917360e+00 -6.068763917847466e+00 3.549002562262404e+00 4.283343719768598e+00 9.429359298703985e+03 + 19240 9.799665788917042e-01 -6.059909797718247e+00 -6.028200856075808e+00 3.397667228117023e+00 4.579744877970772e+00 9.303863178924732e+03 + 19260 1.015346789799016e+00 -6.092682360552907e+00 -5.994008358836891e+00 3.236361801155677e+00 4.802963188761454e+00 9.198694526828720e+03 + 19280 9.919143538314130e-01 -6.037126368621372e+00 -6.019497042861907e+00 3.544176039753963e+00 4.645406356394156e+00 9.276993348453632e+03 + 19300 9.881370581412801e-01 -6.008714595357652e+00 -6.016175405301644e+00 3.684555706437927e+00 4.641714581182917e+00 9.266780736411991e+03 + 19320 1.018084585246837e+00 -6.029793084329337e+00 -6.041317531518627e+00 3.505960208476635e+00 4.439785049313297e+00 9.344322210806500e+03 + 19340 9.740381644227906e-01 -5.942429014489933e+00 -5.986019521512296e+00 4.065539464440732e+00 4.815236027509159e+00 9.174186360396217e+03 + 19360 1.021906166421283e+00 -5.993270469396553e+00 -6.015263339168603e+00 3.748676750640689e+00 4.622390289023976e+00 9.263963389812870e+03 + 19380 1.027484245533571e+00 -5.981602644101094e+00 -6.050172399655223e+00 3.737291167499331e+00 4.343553019972148e+00 9.371726755284320e+03 + 19400 1.038869437118971e+00 -5.983189176747636e+00 -6.017254154423726e+00 3.777219291736456e+00 4.581612918382094e+00 9.270096488671337e+03 + 19420 1.020331082493819e+00 -5.944418898241981e+00 -6.031883929479714e+00 3.989733550958557e+00 4.487495806421650e+00 9.315176884390854e+03 + 19440 1.028754324950355e+00 -5.948210483208362e+00 -6.035511565467589e+00 3.975187300755447e+00 4.473890976624149e+00 9.326377269375100e+03 + 19460 1.031645237676291e+00 -5.946593043577979e+00 -6.039842305503716e+00 4.007752915246380e+00 4.472301222992156e+00 9.339780355803092e+03 + 19480 1.063097915790032e+00 -5.994061120155066e+00 -6.011542299575819e+00 3.681921458358527e+00 4.581541820920791e+00 9.252521387117764e+03 + 19500 1.044312172277415e+00 -5.972941576951937e+00 -6.017977759897184e+00 3.872961001350828e+00 4.614356269552434e+00 9.272301568102153e+03 + 19520 1.055211755483276e+00 -6.001883753103421e+00 -6.013867367722170e+00 3.729638643268829e+00 4.660826873669602e+00 9.259665643535405e+03 + 19540 1.031960801232421e+00 -5.991310518353628e+00 -5.977074735049409e+00 3.741497848456379e+00 4.823241919169551e+00 9.146797905896567e+03 + 19560 1.029964378920267e+00 -6.023271707986305e+00 -5.983519620786972e+00 3.588845231167448e+00 4.817107867481625e+00 9.166494178496401e+03 + 19580 9.636180115883948e-01 -5.967384758908694e+00 -5.993489410450480e+00 3.889132268773828e+00 4.739235319939125e+00 9.197072548817028e+03 + 19600 9.519328731428395e-01 -5.996270494745978e+00 -5.992429058897695e+00 3.734249817307903e+00 4.756307936409019e+00 9.193805618471592e+03 + 19620 1.003945377929180e+00 -6.114906973677165e+00 -6.001890354696376e+00 3.084460805992188e+00 4.733419721445143e+00 9.222855037388083e+03 + 19640 9.309550556126024e-01 -6.040386395538083e+00 -6.043421327867108e+00 3.450985243713201e+00 4.433558192625682e+00 9.350842482920929e+03 + 19660 9.149862525941476e-01 -6.039778053892229e+00 -5.995330863769185e+00 3.456728344278707e+00 4.711950988145663e+00 9.202727738638236e+03 + 19680 9.417089830562242e-01 -6.090097743919928e+00 -5.933302581640321e+00 3.250094397750714e+00 5.150436483533162e+00 9.013425848713612e+03 + 19700 9.425583203580494e-01 -6.091227855303219e+00 -5.971179488802461e+00 3.162745886576703e+00 4.852082184448731e+00 9.128804691185211e+03 + 19720 9.338559095126143e-01 -6.071924893702485e+00 -6.002960688022274e+00 3.311249037823965e+00 4.707252179016074e+00 9.226141378791503e+03 + 19740 9.896657881631955e-01 -6.143304236475532e+00 -5.973313307851650e+00 2.928959044230785e+00 4.905073262400305e+00 9.135322291705972e+03 + 19760 9.530370160237346e-01 -6.073813637508671e+00 -5.970252018811771e+00 3.356702411662521e+00 4.951369252328821e+00 9.125944990224894e+03 + 19780 9.393735981940707e-01 -6.035263782604650e+00 -5.981417350208623e+00 3.538797291210644e+00 4.847991838737109e+00 9.160083131614023e+03 + 19800 9.369171586216624e-01 -6.007974223559207e+00 -5.987295135985382e+00 3.745405313587274e+00 4.864147834514637e+00 9.178090390901396e+03 + 19820 9.667283728408363e-01 -6.026113953318115e+00 -6.019467790750278e+00 3.567860618582071e+00 4.606023912536920e+00 9.276898613878775e+03 + 19840 9.611870292986935e-01 -5.993533785216806e+00 -6.037232389145746e+00 3.734373640911056e+00 4.483449494813978e+00 9.331709711526455e+03 + 19860 1.046762414261234e+00 -6.100109318212309e+00 -6.013525901441813e+00 3.148051246568854e+00 4.645226624405479e+00 9.258648999658166e+03 + 19880 9.678062274943662e-01 -5.967315502618262e+00 -6.042937379739211e+00 3.889697325490058e+00 4.455464804613905e+00 9.349346239823937e+03 + 19900 1.039716218700582e+00 -6.063884040710181e+00 -5.988872455416274e+00 3.337031087723430e+00 4.767759218486351e+00 9.182940953958598e+03 + 19920 1.004228614601709e+00 -6.002674241545346e+00 -5.993521317203074e+00 3.754962208350164e+00 4.807519716333957e+00 9.197170733169616e+03 + 19940 1.063514127644385e+00 -6.083491000907729e+00 -5.975925569183282e+00 3.237659264177161e+00 4.855316618835698e+00 9.143299688604857e+03 + 19960 9.721350344990661e-01 -5.940961294793323e+00 -6.009243744094235e+00 4.011507354052708e+00 4.619418963491994e+00 9.245439653729172e+03 + 19980 1.074187014857956e+00 -6.087382586660635e+00 -5.986087606112245e+00 3.202703342846972e+00 4.784354796503409e+00 9.174389068442630e+03 + 20000 9.586956696805027e-01 -5.913583827036164e+00 -6.017783122639313e+00 4.180401105070656e+00 4.582072624928488e+00 9.271720245627213e+03 + 20020 9.756039964612050e-01 -5.938223060474987e+00 -6.014121543857206e+00 4.011867522438195e+00 4.576046685605153e+00 9.260448170246575e+03 + 20040 1.024830635088957e+00 -6.011083601480799e+00 -5.963956967611655e+00 3.669974047694331e+00 4.940582472193974e+00 9.106730927556020e+03 + 20060 1.018188185198244e+00 -5.999196044138616e+00 -6.032412392897958e+00 3.684332960720981e+00 4.493599545931479e+00 9.316823066095676e+03 + 20080 1.008828101022529e+00 -5.986381730614814e+00 -6.007381611468565e+00 3.738859135837844e+00 4.618274570254545e+00 9.239744045065223e+03 + 20100 1.003299685049185e+00 -5.981369048667415e+00 -6.005502564494861e+00 3.806933232966970e+00 4.668354850436272e+00 9.233940306012060e+03 + 20120 1.022102642631560e+00 -6.014727227319523e+00 -5.982229948081949e+00 3.584039058050297e+00 4.770643464370156e+00 9.162557847804454e+03 + 20140 1.012819585775307e+00 -6.006347815049013e+00 -5.992605040478459e+00 3.705351617878134e+00 4.784264756149747e+00 9.194342555830035e+03 + 20160 8.721997668502887e-01 -5.804559639797571e+00 -6.011743968543839e+00 4.731787235765315e+00 4.542102758432990e+00 9.253123265222814e+03 + 20180 1.059535973210264e+00 -6.088678107722265e+00 -5.961953522182384e+00 3.196080748060212e+00 4.923752928796441e+00 9.100615883003573e+03 + 20200 1.003960046226445e+00 -6.014397153652652e+00 -6.036276037300642e+00 3.597313985049986e+00 4.471682049396929e+00 9.328723981327856e+03 + 20220 9.419011277147145e-01 -5.936985823250719e+00 -6.015118429815407e+00 4.100721860467189e+00 4.652072342590962e+00 9.263509124530357e+03 + 20240 1.014058596329688e+00 -6.065875002694027e+00 -6.015096131487900e+00 3.309102076176239e+00 4.600682212646743e+00 9.263457950822092e+03 + 20260 9.477983078027976e-01 -5.994893495345016e+00 -6.046683254738086e+00 3.658011871577773e+00 4.360627058703400e+00 9.360915255937643e+03 + 20280 9.581065112073174e-01 -6.040470410067775e+00 -5.979596495529517e+00 3.474472948974026e+00 4.824020386460533e+00 9.154522435342553e+03 + 20300 9.655075211039569e-01 -6.078804069114625e+00 -5.981554191274677e+00 3.288130147198975e+00 4.846553995125915e+00 9.160511877585135e+03 + 20320 9.031511743790760e-01 -6.009761700494803e+00 -5.980599899218661e+00 3.683938323662654e+00 4.851389899364422e+00 9.157583338571396e+03 + 20340 9.741028720809839e-01 -6.131236638392272e+00 -5.967985419300072e+00 3.023511103671520e+00 4.960924866743442e+00 9.119032287623524e+03 + 20360 9.477872715902415e-01 -6.101909667217741e+00 -5.980645917326064e+00 3.178841672367231e+00 4.875156889749888e+00 9.157716852212659e+03 + 20380 9.373815732368236e-01 -6.088527336394848e+00 -5.949180378873124e+00 3.225238405839897e+00 5.025390199801622e+00 9.061714593003970e+03 + 20400 9.386721056251052e-01 -6.083386884752374e+00 -5.959337286331024e+00 3.267072370186400e+00 4.979384360935102e+00 9.092657456738305e+03 + 20420 9.325818861371803e-01 -6.058568025188599e+00 -6.017504144146249e+00 3.321408658786559e+00 4.557203818346787e+00 9.270872752526846e+03 + 20440 1.027756094246380e+00 -6.178193185261197e+00 -5.957337899773229e+00 2.740728844868564e+00 5.008914071385451e+00 9.086560474003487e+03 + 20460 9.359892949609220e-01 -6.013235328454130e+00 -5.981091563811965e+00 3.677683228189272e+00 4.862257698996089e+00 9.159068455995706e+03 + 20480 9.327347354459434e-01 -5.973656117344914e+00 -5.950084192481249e+00 3.850390075043141e+00 4.985743715353894e+00 9.064422611075741e+03 + 20500 9.760494945605893e-01 -5.996437193959518e+00 -5.942126101844713e+00 3.682995683398277e+00 4.994858378935827e+00 9.040223208407604e+03 + 20520 1.064669288018811e+00 -6.088403582552969e+00 -5.943944413774862e+00 3.235894337751839e+00 5.065401239859845e+00 9.045753558106526e+03 + 20540 1.009725622962596e+00 -5.976545498924846e+00 -6.006050935365019e+00 3.866114941922778e+00 4.696690159931772e+00 9.235621627260673e+03 + 20560 1.020798984763025e+00 -5.972371040192424e+00 -6.004248307383287e+00 3.907148847628986e+00 4.724104646427895e+00 9.230093763275461e+03 + 20580 1.014922822370177e+00 -5.949992799170198e+00 -6.060201214859090e+00 3.926516418225993e+00 4.293682640643170e+00 9.402761357281825e+03 + 20600 1.035017376094610e+00 -5.971567829417104e+00 -6.014885569684968e+00 3.818858765598949e+00 4.570121597582232e+00 9.262810752706142e+03 + 20620 9.924369341528846e-01 -5.905762941359292e+00 -6.018472973992654e+00 4.176942399028769e+00 4.529743949826828e+00 9.273840434356111e+03 + 20640 1.004272831117531e+00 -5.924050201231220e+00 -6.041376329475145e+00 4.107810685982058e+00 4.434105901445766e+00 9.344483719382340e+03 + 20660 1.070359738187667e+00 -6.026410415796454e+00 -6.010289110988638e+00 3.527965995096381e+00 4.620537022066714e+00 9.248648496506170e+03 + 20680 1.000825115648316e+00 -5.932211821589053e+00 -6.010017101372076e+00 4.069007760003320e+00 4.622237803161068e+00 9.247787116688058e+03 + 20700 9.784156218282832e-01 -5.909927785735512e+00 -6.008098789581702e+00 4.192575580135307e+00 4.628862484136737e+00 9.241912890781110e+03 + 20720 1.039485448953510e+00 -6.014092252199362e+00 -6.021722885459310e+00 3.616764717950337e+00 4.572948440935031e+00 9.283851138223044e+03 + 20740 1.013762993461398e+00 -5.991488397536363e+00 -6.002718241581963e+00 3.780626821542098e+00 4.716143319219515e+00 9.225383928898778e+03 + 20760 1.036376896970358e+00 -6.045063907797879e+00 -5.959670082530110e+00 3.475712869761939e+00 4.966057429101223e+00 9.093653642481759e+03 + 20780 1.008532386633857e+00 -6.024832133862389e+00 -5.991730606321353e+00 3.545473997403356e+00 4.735548090988816e+00 9.191680694821633e+03 + 20800 9.766464118561824e-01 -5.999505501909324e+00 -6.035131726297457e+00 3.645216668497414e+00 4.440645374920349e+00 9.325224648828233e+03 + 20820 9.446024657198889e-01 -5.979101014292813e+00 -6.007702836761771e+00 3.828887378173619e+00 4.664651287439140e+00 9.240714759292758e+03 + 20840 9.885425562321638e-01 -6.072009022762399e+00 -5.976413150704073e+00 3.331797246600941e+00 4.880723537373238e+00 9.144780038997740e+03 + 20860 9.675983912233611e-01 -6.069147026429859e+00 -5.999250852093621e+00 3.340290374433711e+00 4.741645023870417e+00 9.214751658438629e+03 + 20880 1.007539415987811e+00 -6.159230621788292e+00 -5.990059441077380e+00 2.834137761311104e+00 4.805544860108766e+00 9.186574161792309e+03 + 20900 8.864583481580945e-01 -6.012238019642031e+00 -5.990784656387733e+00 3.604326951909681e+00 4.727515483613091e+00 9.188796655063423e+03 + 20920 9.141891206472920e-01 -6.080614552103516e+00 -5.976176165510761e+00 3.259981731047744e+00 4.859683108651440e+00 9.144051829374790e+03 + 20940 9.069619256446170e-01 -6.091130535634698e+00 -5.980376751131521e+00 3.228218811822532e+00 4.864184181532535e+00 9.156919333980681e+03 + 20960 9.526248411065934e-01 -6.173727628757638e+00 -5.980775418837575e+00 2.789399720139843e+00 4.897361168758833e+00 9.158141587012338e+03 + 20980 9.096096454652371e-01 -6.118938499719637e+00 -6.038931110782706e+00 3.093165923539658e+00 4.552580731918942e+00 9.336952740840952e+03 + 21000 9.365221698226965e-01 -6.166605096059263e+00 -5.965616149211142e+00 2.832983088109319e+00 4.987092723850239e+00 9.111817307814172e+03 + 21020 9.112556346184451e-01 -6.127281989138037e+00 -5.980966953033772e+00 2.993054343407086e+00 4.833217922896434e+00 9.158719775518490e+03 + 21040 9.268235798308070e-01 -6.132785689707513e+00 -5.996859333116735e+00 2.967800132931297e+00 4.748310307011243e+00 9.207412308662158e+03 + 21060 9.244367475843404e-01 -6.093304357783126e+00 -5.981558294458706e+00 3.197356825093093e+00 4.839020013349320e+00 9.160544662434511e+03 + 21080 8.957194235632201e-01 -5.999548611178652e+00 -5.995281077980962e+00 3.704663401607085e+00 4.729168237626849e+00 9.202559323533784e+03 + 21100 9.843736734404599e-01 -6.075922437371969e+00 -5.997632261086396e+00 3.293515621839609e+00 4.743069929436992e+00 9.209783856209737e+03 + 21120 9.081205549317221e-01 -5.913372455935938e+00 -6.001748078532727e+00 4.175738278484628e+00 4.668271777450468e+00 9.222406346748190e+03 + 21140 9.737673673871678e-01 -5.972066505713202e+00 -5.985939544226416e+00 3.894349284933486e+00 4.814688150944840e+00 9.173920528639239e+03 + 21160 1.016562213495425e+00 -6.004467334952213e+00 -6.032226365365413e+00 3.653250336275875e+00 4.493853687947204e+00 9.316256487405703e+03 + 21180 1.029830237359170e+00 -6.000884522002250e+00 -6.050430119233621e+00 3.667181401043314e+00 4.382682914584391e+00 9.372520531395354e+03 + 21200 1.033156538720732e+00 -5.990760422829060e+00 -5.993000899215175e+00 3.787066692664143e+00 4.774201530542470e+00 9.195596300194788e+03 + 21220 1.061892922765096e+00 -6.021939963897680e+00 -5.990187704182897e+00 3.627675232080608e+00 4.810001621009198e+00 9.186942744340467e+03 + 21240 1.045921093388182e+00 -5.990383124417299e+00 -5.974194067069547e+00 3.775227737758645e+00 4.868187810297969e+00 9.138010290881450e+03 + 21260 1.068873558382580e+00 -6.019154586544250e+00 -5.986908808568401e+00 3.625957498919632e+00 4.811117746074974e+00 9.176895525859767e+03 + 21280 1.031638557717918e+00 -5.961335127595028e+00 -6.022029766283485e+00 3.962963709722696e+00 4.614445701908597e+00 9.284780972826964e+03 + 21300 1.011440818498198e+00 -5.932982530892483e+00 -6.046533574497506e+00 4.050427334110070e+00 4.398399669762822e+00 9.360434439791457e+03 + 21320 1.004474598014488e+00 -5.929860919434580e+00 -6.017367660051163e+00 4.079207621346967e+00 4.576730375102199e+00 9.270446925032566e+03 + 21340 1.014423505839948e+00 -5.955968371467351e+00 -6.017158822560202e+00 3.937392677489328e+00 4.586027638122482e+00 9.269786182435941e+03 + 21360 1.010594055482384e+00 -5.963883585107683e+00 -6.070783879634211e+00 3.904902496701473e+00 4.291064462763035e+00 9.435614470467932e+03 + 21380 1.055327599875555e+00 -6.052826924943264e+00 -6.001990462072757e+00 3.419658579153863e+00 4.711569415873518e+00 9.223184820365814e+03 + 21400 9.975408411506242e-01 -5.992208190105005e+00 -6.021850149561996e+00 3.705000970293903e+00 4.534792252013459e+00 9.284260834483148e+03 + 21420 1.025642296858505e+00 -6.062190618954173e+00 -6.018367055593384e+00 3.360055822319629e+00 4.611697504811791e+00 9.273536254476159e+03 + 21440 1.016766395486329e+00 -6.079802132743065e+00 -5.980606199480831e+00 3.315393813540257e+00 4.884992212853070e+00 9.157621278326009e+03 + 21460 9.884973136514468e-01 -6.065133912753671e+00 -5.962649803357463e+00 3.390972160097218e+00 4.979451775614922e+00 9.102755922781651e+03 + 21480 1.010045460136650e+00 -6.119545900930342e+00 -5.958397366361438e+00 3.059819775078156e+00 4.985159598227938e+00 9.089785348669584e+03 + 21500 9.578084942327825e-01 -6.059314701002214e+00 -5.978579715789180e+00 3.348996709232883e+00 4.812589488024709e+00 9.151423119973959e+03 + 21520 9.349516294469200e-01 -6.035245550338884e+00 -6.002073164638952e+00 3.509186141398508e+00 4.699667113497616e+00 9.223424354614353e+03 + 21540 9.485861074112382e-01 -6.061787962923744e+00 -5.994808200048660e+00 3.397018227220127e+00 4.781626390733664e+00 9.201108127693344e+03 + 21560 9.512816409476849e-01 -6.066516277500308e+00 -5.989075768216615e+00 3.302934764173889e+00 4.747610152360936e+00 9.183574236931976e+03 + 21580 9.426794807895247e-01 -6.047964168488923e+00 -6.002976249111178e+00 3.422451600340873e+00 4.680779195265902e+00 9.226193791750682e+03 + 21600 9.449658705086974e-01 -6.038657325959218e+00 -5.977819523435237e+00 3.489491714430772e+00 4.838831791142988e+00 9.149097409079393e+03 + 21620 9.676819121743778e-01 -6.051111354044293e+00 -6.001066440797603e+00 3.372741846150461e+00 4.660107482438255e+00 9.220332183394996e+03 + 21640 9.777314517561777e-01 -6.031447106639646e+00 -6.020783341253719e+00 3.548447118661793e+00 4.609680109720141e+00 9.280978746535984e+03 + 21660 1.009192771368310e+00 -6.032766848594189e+00 -6.000590934896252e+00 3.522246636256921e+00 4.707005711917033e+00 9.218869083287937e+03 + 21680 9.848068732729762e-01 -5.943658805804026e+00 -5.988675122241485e+00 3.992938760823892e+00 4.734448105587548e+00 9.182307674139849e+03 + 21700 9.850759726715091e-01 -5.892786542244903e+00 -6.033034956550161e+00 4.240749148245754e+00 4.435421049932992e+00 9.318730682554666e+03 + 21720 1.069009067469885e+00 -5.977671844398080e+00 -5.978449292470763e+00 3.789812511153447e+00 4.785348284010405e+00 9.150998118247298e+03 + 21740 9.985408225603840e-01 -5.850813519849134e+00 -5.994194924080292e+00 4.506217486924694e+00 4.682899275628788e+00 9.199207884679307e+03 + 21760 1.006665657395554e+00 -5.849959949410122e+00 -6.013709872425877e+00 4.505062700051891e+00 4.564785301876740e+00 9.259178029298280e+03 + 21780 1.075698481524050e+00 -5.948212204628414e+00 -6.020590101010090e+00 3.956502386303996e+00 4.540897304837141e+00 9.280367584291802e+03 + 21800 1.072724877866037e+00 -5.949090381355365e+00 -6.044677002447319e+00 3.955825524782365e+00 4.406952354490558e+00 9.354708236722661e+03 + 21820 1.083362560344358e+00 -5.979752018580949e+00 -6.011245002695928e+00 3.787977412481804e+00 4.607139824170053e+00 9.251589064039325e+03 + 21840 1.008298683611080e+00 -5.885785902874779e+00 -6.005374769194457e+00 4.279631116163903e+00 4.592933339439054e+00 9.233545001151000e+03 + 21860 1.042594847959691e+00 -5.954409882112978e+00 -5.989907250401030e+00 3.943344889009151e+00 4.739513507099168e+00 9.186069773565097e+03 + 21880 1.037313946132831e+00 -5.967067749895882e+00 -6.011126282825774e+00 3.858866275201810e+00 4.605875361082431e+00 9.251238336109820e+03 + 21900 1.013766167698136e+00 -5.955929350455447e+00 -6.026652121017448e+00 3.948403410587580e+00 4.542302317707199e+00 9.299053677199034e+03 + 21920 1.020658019567199e+00 -5.991852672124380e+00 -6.021677855296451e+00 3.742317996111643e+00 4.571057178905432e+00 9.283738749959868e+03 + 21940 9.744100464971485e-01 -5.949939182578109e+00 -6.012624954792670e+00 3.987329325038448e+00 4.627377920390538e+00 9.255840082354114e+03 + 21960 9.675134840772445e-01 -5.964091547591459e+00 -6.031460403349347e+00 3.875148110523191e+00 4.488305715464666e+00 9.313864275290711e+03 + 21980 9.965240078580956e-01 -6.028855341028070e+00 -5.980371027582361e+00 3.577373509105057e+00 4.855777939833571e+00 9.156886667697847e+03 + 22000 9.514271935528292e-01 -5.978725219301328e+00 -6.002184008286664e+00 3.829364883209661e+00 4.694660886619998e+00 9.223739474557260e+03 + 22020 9.940460504694612e-01 -6.053964678985806e+00 -5.986831637509244e+00 3.415995010383648e+00 4.801483323346661e+00 9.176663964427968e+03 + 22040 9.719485391705455e-01 -6.029278208990231e+00 -5.991723920364276e+00 3.545435232982013e+00 4.761077769779633e+00 9.191655688369992e+03 + 22060 9.844209782252207e-01 -6.053751321569300e+00 -5.979806655652412e+00 3.423732491828641e+00 4.848334206423482e+00 9.155156884698168e+03 + 22080 9.592794508616364e-01 -6.016574359548541e+00 -6.020250549548290e+00 3.663958804235392e+00 4.642849552368268e+00 9.279315264681192e+03 + 22100 1.023651492186338e+00 -6.109115730645064e+00 -6.010538965456517e+00 3.139821084557475e+00 4.705864124975221e+00 9.249457870362703e+03 + 22120 1.008033729000489e+00 -6.082937691699531e+00 -6.028868719305971e+00 3.263651504590349e+00 4.574123911220603e+00 9.305888837061453e+03 + 22140 9.824960942319197e-01 -6.041214244588620e+00 -6.000853581009070e+00 3.488894169952543e+00 4.720651346018823e+00 9.219666248041431e+03 + 22160 1.010276049584021e+00 -6.075113036284337e+00 -5.989512184668444e+00 3.258883682275347e+00 4.750417018942787e+00 9.184895881659224e+03 + 22180 9.353748266889038e-01 -5.949551967301566e+00 -6.028225921052252e+00 3.961522276614026e+00 4.509764259422592e+00 9.303903094277826e+03 + 22200 9.996989232830139e-01 -6.020325095745490e+00 -6.009770851143893e+00 3.580917270329521e+00 4.641521376095965e+00 9.247069465388709e+03 + 22220 9.861438845340266e-01 -5.961722502281965e+00 -6.007642542328646e+00 3.957152664314655e+00 4.693472688263383e+00 9.240476624924002e+03 + 22240 1.046043078650233e+00 -5.997881735028341e+00 -5.964315165180904e+00 3.679828328467466e+00 4.872572766941348e+00 9.107825262752171e+03 + 22260 1.053182331913205e+00 -5.949519124357746e+00 -6.010140922069191e+00 3.963550163355416e+00 4.615450419703420e+00 9.248211566984630e+03 + 22280 1.096347242595124e+00 -5.964582630634802e+00 -6.031121718245451e+00 3.855072185912874e+00 4.472994447961998e+00 9.312851940279308e+03 + 22300 1.073406091764057e+00 -5.902286317063940e+00 -6.018406385786178e+00 4.283642576212900e+00 4.616863172087251e+00 9.273639020026389e+03 + 22320 1.082572063366422e+00 -5.901086255333301e+00 -6.010931580131981e+00 4.211076609642139e+00 4.580327756139044e+00 9.250653831293233e+03 + 22340 1.181265590861121e+00 -6.045206200201357e+00 -6.032171183353801e+00 3.452369293262064e+00 4.527218377163067e+00 9.316088359244253e+03 + 22360 1.070377914366425e+00 -5.893945485931649e+00 -6.016880076334583e+00 4.243722153004058e+00 4.537812710844032e+00 9.268955739288724e+03 + 22380 1.014543204043877e+00 -5.829672271678801e+00 -5.981786851422060e+00 4.632704599328211e+00 4.759239142787278e+00 9.161192506153317e+03 + 22400 1.069340436156244e+00 -5.933349382029788e+00 -6.018674882507375e+00 3.992111131769074e+00 4.502158903948240e+00 9.274442725661889e+03 + 22420 1.119155558288320e+00 -6.039960209364453e+00 -5.971688244840399e+00 3.515656067588013e+00 4.907684252937493e+00 9.130348613789605e+03 + 22440 9.734179805720071e-01 -5.856359845697537e+00 -6.014674676508955e+00 4.407584241039862e+00 4.498515983379813e+00 9.262138398825888e+03 + 22460 1.040780816899016e+00 -5.985593721370673e+00 -5.975410562713689e+00 3.767570694760452e+00 4.826043967607568e+00 9.141688790996766e+03 + 22480 1.024306935468777e+00 -5.988592252014897e+00 -5.947910658708029e+00 3.777813271464962e+00 5.011413275689216e+00 9.057835723060265e+03 + 22500 9.840836883913052e-01 -5.951782520760736e+00 -5.962194322211336e+00 3.947054966223592e+00 4.887268791073176e+00 9.101342073097358e+03 + 22520 9.992756851528051e-01 -5.991191696073945e+00 -5.913112153546153e+00 3.756400387987090e+00 5.204745203951831e+00 8.952231025049852e+03 + 22540 9.837775373285002e-01 -5.978395146362014e+00 -5.968802148716978e+00 3.823783034856672e+00 4.878867511846052e+00 9.121517918125746e+03 + 22560 1.019555877357196e+00 -6.040789817867394e+00 -5.991431098364913e+00 3.472009768291402e+00 4.755435173911808e+00 9.190762857809254e+03 + 22580 9.463161607538978e-01 -5.938498921292265e+00 -6.049693568904718e+00 4.011622944475823e+00 4.373126070569007e+00 9.370215388010241e+03 + 22600 9.898006887993822e-01 -6.009656070448387e+00 -6.027632766083134e+00 3.598216233656488e+00 4.494991265437112e+00 9.302064298511470e+03 + 22620 9.703096377169923e-01 -5.987251063387972e+00 -5.972646183852948e+00 3.788208775985933e+00 4.872072254373843e+00 9.133244423999313e+03 + 22640 9.441460560558099e-01 -5.949753448375971e+00 -5.995070278999011e+00 4.006842213288429e+00 4.746625959094063e+00 9.201904599576317e+03 + 22660 1.054618695011741e+00 -6.111589657622789e+00 -5.948460051883800e+00 3.128259562524306e+00 5.064975002902484e+00 9.059509561344194e+03 + 22680 9.582606069399543e-01 -5.966437417074094e+00 -6.008598380471077e+00 3.866905073332547e+00 4.624810297119073e+00 9.243457425567231e+03 + 22700 9.460516819600393e-01 -5.945374419853894e+00 -6.002081388564481e+00 4.042012454108173e+00 4.716392264396932e+00 9.223413993480221e+03 + 22720 1.040581912797539e+00 -6.081430718517721e+00 -5.953596058683428e+00 3.240347787265607e+00 4.974394186383794e+00 9.075149659419869e+03 + 22740 9.535704020508389e-01 -5.943054055505801e+00 -5.991033890392194e+00 4.053058297781253e+00 4.777550661008129e+00 9.189526224982092e+03 + 22760 9.974254094980254e-01 -5.992677587976494e+00 -5.972812250639418e+00 3.762867175099884e+00 4.876937016240396e+00 9.133754013189860e+03 + 22780 1.004783522576845e+00 -5.978358447020567e+00 -6.018810047434065e+00 3.782968263145299e+00 4.550688913706064e+00 9.274863629923353e+03 + 22800 1.080523698017781e+00 -6.054307864097428e+00 -5.962099331798464e+00 3.434685608582307e+00 4.964161270267216e+00 9.101060874423354e+03 + 22820 1.063693743997020e+00 -5.983574287729931e+00 -5.993230009828820e+00 3.744249741259245e+00 4.688805090749262e+00 9.196285771164730e+03 + 22840 1.119112864451027e+00 -6.015462251321929e+00 -5.961193020173469e+00 3.612882258490450e+00 4.924504581881285e+00 9.098295137522528e+03 + 22860 1.063782555745310e+00 -5.890024205836619e+00 -5.987539362433659e+00 4.297581793887479e+00 4.737634674285562e+00 9.178777961110016e+03 + 22880 1.068451338663774e+00 -5.861001028075132e+00 -6.013749277712171e+00 4.448042305103737e+00 4.570938217972621e+00 9.259266197591669e+03 + 22900 1.068906187388771e+00 -5.839502786681755e+00 -6.046575195377505e+00 4.538483471093286e+00 4.349441656010607e+00 9.360536486486935e+03 + 22920 1.111270344287865e+00 -5.896598072330429e+00 -6.028859095114656e+00 4.265777692275742e+00 4.506314432121578e+00 9.305808052386701e+03 + 22940 1.119718320805876e+00 -5.915827619680201e+00 -5.991195709505258e+00 4.154103336072158e+00 4.721328101122471e+00 9.190014538502810e+03 + 22960 1.105020944910178e+00 -5.910177952835169e+00 -5.967183170094396e+00 4.197972649005118e+00 4.870639869973776e+00 9.116555807129311e+03 + 22980 1.021123989721004e+00 -5.807945552474302e+00 -6.032231819232560e+00 4.687579603982824e+00 4.399693152069294e+00 9.316255854639892e+03 + 23000 1.144029870539443e+00 -6.023475325563410e+00 -6.019558874552592e+00 3.563935559727535e+00 4.586424427500488e+00 9.277181656122446e+03 + 23020 1.091103485819771e+00 -5.985391724783264e+00 -6.009059842420667e+00 3.741842292170433e+00 4.605936298067103e+00 9.244894553436716e+03 + 23040 1.023574239504814e+00 -5.923342553679900e+00 -5.982409594774756e+00 4.084761431822979e+00 4.745589341261248e+00 9.163104484241052e+03 + 23060 9.952255141534451e-01 -5.908449471125698e+00 -6.023783446825103e+00 4.158628551360158e+00 4.496363015019118e+00 9.290184483163805e+03 + 23080 1.001403901351069e+00 -5.938150107064108e+00 -6.056905579539535e+00 3.955646867601502e+00 4.273734567297628e+00 9.392542303126103e+03 + 23100 1.027451214775791e+00 -5.994019202958555e+00 -5.988975959549632e+00 3.702739677653376e+00 4.731698761746809e+00 9.183241952688044e+03 + 23120 1.013257738501018e+00 -5.987349157230756e+00 -6.005869350688939e+00 3.746995560980489e+00 4.640649744152931e+00 9.235067754429323e+03 + 23140 1.036110992070139e+00 -6.034287519024865e+00 -5.973202125597413e+00 3.513212437853774e+00 4.863974219848284e+00 9.134968835715928e+03 + 23160 9.360748138517090e-01 -5.896440434896551e+00 -6.004644535775131e+00 4.216635066153907e+00 4.595310374378606e+00 9.231322570716842e+03 + 23180 1.026066821955168e+00 -6.038099086107348e+00 -5.928296953753506e+00 3.504583103006823e+00 5.135083938807652e+00 8.998247400933033e+03 + 23200 9.560960622990720e-01 -5.939639739019891e+00 -5.997572306913449e+00 4.019557574005027e+00 4.686899804124312e+00 9.209599082812059e+03 + 23220 9.820471201951061e-01 -5.982215508457016e+00 -5.998659008715363e+00 3.723330331301858e+00 4.628909208194992e+00 9.212933404207432e+03 + 23240 9.418746555245011e-01 -5.925615721121098e+00 -6.020567219513699e+00 4.084619760982378e+00 4.539393563515178e+00 9.280289579632277e+03 + 23260 1.014601203315200e+00 -6.036707515405468e+00 -5.995162462178644e+00 3.503680193404550e+00 4.742238318109182e+00 9.202196986540424e+03 + 23280 9.388994381726942e-01 -5.928133972456029e+00 -5.976393187828457e+00 4.105271839647507e+00 4.828159956889586e+00 9.144698832051074e+03 + 23300 9.542630305527271e-01 -5.950432322003468e+00 -5.973462127287819e+00 3.947909377253916e+00 4.815668671460324e+00 9.135738502720045e+03 + 23320 9.924028584752060e-01 -6.001282462041309e+00 -6.023426900656155e+00 3.663895990895331e+00 4.536739197528084e+00 9.289116967440455e+03 + 23340 1.004880788203612e+00 -6.013758343791251e+00 -6.031047686738633e+00 3.596504558901734e+00 4.497226476180693e+00 9.312609423010450e+03 + 23360 1.001626532896770e+00 -6.003802855534238e+00 -5.995821690203309e+00 3.719997732066550e+00 4.765826818478092e+00 9.204227877097685e+03 + 23380 1.075079859372530e+00 -6.106255996314603e+00 -5.975570499735172e+00 3.097138628478355e+00 4.847554973352690e+00 9.142202597418596e+03 + 23400 1.080998360726217e+00 -6.105552819587765e+00 -5.975717473836726e+00 3.115059447338586e+00 4.860594094595877e+00 9.142638568486771e+03 + 23420 9.269649245232087e-01 -5.866191048896711e+00 -6.031509639548976e+00 4.459941157371730e+00 4.510656226877201e+00 9.314004663519225e+03 + 23440 1.044080876356171e+00 -6.025678328778124e+00 -6.016087240496591e+00 3.527163211134529e+00 4.582236724263202e+00 9.266496527060257e+03 + 23460 1.007026315920273e+00 -5.955704464726350e+00 -5.985788390553695e+00 3.888176174897633e+00 4.715429617324538e+00 9.173457191378859e+03 + 23480 1.032818932394846e+00 -5.976226719858841e+00 -5.988906246413413e+00 3.810509633646745e+00 4.737701830020002e+00 9.183011841605983e+03 + 23500 1.087663353514909e+00 -6.037608708573009e+00 -6.004531187988261e+00 3.506907679548012e+00 4.696843921475401e+00 9.230964891534377e+03 + 23520 9.849033068221833e-01 -5.867422697183307e+00 -6.059389077016779e+00 4.357319617590001e+00 4.255018957884935e+00 9.400284885803161e+03 + 23540 1.058612545373282e+00 -5.964902548644724e+00 -6.014654950315041e+00 3.904130572765705e+00 4.618444583215465e+00 9.262073840245957e+03 + 23560 1.096445406158602e+00 -6.013747574932844e+00 -5.983950739595115e+00 3.645279096644945e+00 4.816377136199550e+00 9.167835940152110e+03 + 23580 1.021920940851455e+00 -5.900664264312986e+00 -5.994217737140208e+00 4.203482924410968e+00 4.666284406083925e+00 9.199274654210272e+03 + 23600 1.106586320532422e+00 -6.026640714960187e+00 -5.938142022461502e+00 3.573286208726709e+00 5.081459396182565e+00 9.028105304869983e+03 + 23620 1.031811840247262e+00 -5.921324431279090e+00 -6.020982003015754e+00 4.128534598579947e+00 4.556285399708637e+00 9.281550359591085e+03 + 23640 1.021191360886209e+00 -5.920870321020116e+00 -5.998713046809233e+00 4.105838583983660e+00 4.658853606379666e+00 9.213060295173513e+03 + 23660 9.872272921241033e-01 -5.890653174973520e+00 -6.023119448966434e+00 4.265095266583923e+00 4.504453422226962e+00 9.288165939887182e+03 + 23680 1.012687471101928e+00 -5.959179157843993e+00 -6.024480283763479e+00 3.874395108736938e+00 4.499425938390673e+00 9.292364121601302e+03 + 23700 9.934297238211419e-01 -5.962928502233890e+00 -6.001805855219794e+00 3.861556840771734e+00 4.638317063675745e+00 9.222605207181952e+03 + 23720 1.078226194596499e+00 -6.124120487956777e+00 -6.004538780371904e+00 2.995351044577188e+00 4.682007714738971e+00 9.230995142334918e+03 + 23740 9.403619580013592e-01 -5.958193796616512e+00 -6.059036450516951e+00 3.891960369018971e+00 4.312906244972392e+00 9.399166996234069e+03 + 23760 1.012222690981270e+00 -6.099402651171915e+00 -5.976651702140102e+00 3.140908086043059e+00 4.845763031031701e+00 9.145525785806172e+03 + 23780 9.305538574137315e-01 -6.002194836756610e+00 -5.999902237015148e+00 3.695005359351923e+00 4.708169821846062e+00 9.216744952368213e+03 + 23800 9.304659910525171e-01 -6.017635132405653e+00 -5.985174734338973e+00 3.568907173128490e+00 4.755299802057738e+00 9.171601896644212e+03 + 23820 9.663426486823621e-01 -6.077715637619503e+00 -5.987059904476306e+00 3.282620684705434e+00 4.803179933343033e+00 9.177383333311871e+03 + 23840 9.768528292112534e-01 -6.095334867204607e+00 -6.023412476181182e+00 3.148048716204886e+00 4.561038215415431e+00 9.289081452640989e+03 + 23860 9.728887630069939e-01 -6.089337438589326e+00 -5.984068468589230e+00 3.224631306464780e+00 4.829102022525790e+00 9.168225142368639e+03 + 23880 9.388410794631378e-01 -6.033714612426442e+00 -5.986022127306610e+00 3.514474623913572e+00 4.788332253859863e+00 9.174200288748556e+03 + 23900 9.398909621796898e-01 -6.023834787390280e+00 -6.011440829856431e+00 3.565139647439149e+00 4.636307669557240e+00 9.252203423194616e+03 + 23920 9.617276936542071e-01 -6.040298793827024e+00 -6.014503874899810e+00 3.488551622556811e+00 4.636670038787674e+00 9.261629845246161e+03 + 23940 9.982468550161129e-01 -6.075217026117334e+00 -5.996074885780695e+00 3.320448620161547e+00 4.774895037181163e+00 9.205009635862118e+03 + 23960 9.950743358065683e-01 -6.050015329793554e+00 -6.008786555733002e+00 3.444909133640445e+00 4.681651134428307e+00 9.244035468228272e+03 + 23980 9.984518829605556e-01 -6.034363734355538e+00 -6.015387406415675e+00 3.493260527924752e+00 4.602225539532707e+00 9.264340947957600e+03 + 24000 9.901066727809733e-01 -5.999955087889771e+00 -6.002442554528635e+00 3.686744449890698e+00 4.672461031516127e+00 9.224518900457093e+03 + 24020 9.929144194602537e-01 -5.984044373109232e+00 -5.950715316965018e+00 3.786412932251656e+00 4.977793530286505e+00 9.066342661911020e+03 + 24040 1.053449424471868e+00 -6.053023077655664e+00 -5.953513403951625e+00 3.384182363420871e+00 4.955582308901699e+00 9.074876687387617e+03 + 24060 9.935963053243630e-01 -5.944789489477801e+00 -6.008585743944305e+00 3.975164767478685e+00 4.608836801893545e+00 9.243394778199807e+03 + 24080 1.008598837588408e+00 -5.952312361908022e+00 -5.983852095747551e+00 3.948743651748072e+00 4.767637619283461e+00 9.167542194563657e+03 + 24100 1.039617793378025e+00 -5.988883696873023e+00 -6.007373191184286e+00 3.770035663566809e+00 4.663866125991538e+00 9.239687609096258e+03 + 24120 1.032876852952362e+00 -5.976306552788454e+00 -6.023190614570858e+00 3.822725042292434e+00 4.553509504252758e+00 9.288373326818131e+03 + 24140 1.025908166184252e+00 -5.967606891553671e+00 -6.020841763957241e+00 3.852449591463940e+00 4.546766716052756e+00 9.281136792898273e+03 + 24160 1.015692766037965e+00 -5.954689844650210e+00 -6.008156189477858e+00 3.958481694382245e+00 4.651469668491773e+00 9.242101515639601e+03 + 24180 1.006454058534310e+00 -5.945568399362463e+00 -6.017971298147499e+00 3.974610237219224e+00 4.558861588083172e+00 9.272309808642991e+03 + 24200 1.024115924726461e+00 -5.978118008870537e+00 -6.033761538569079e+00 3.789874096924634e+00 4.470360338587216e+00 9.320981050546647e+03 + 24220 1.014009007421846e+00 -5.971649602304685e+00 -6.037922524755314e+00 3.785225670718830e+00 4.404676294305718e+00 9.333851538324097e+03 + 24240 1.030588317741757e+00 -6.006672940371399e+00 -6.011131369064864e+00 3.665240487915033e+00 4.639639500417551e+00 9.251259649248190e+03 + 24260 1.032799083574534e+00 -6.020154086524438e+00 -6.049082870836463e+00 3.580558749123652e+00 4.414445192889101e+00 9.368330949739693e+03 + 24280 8.944599349795245e-01 -5.829340751136027e+00 -6.064005914682426e+00 4.525360427909154e+00 4.177876744509038e+00 9.414576138284774e+03 + 24300 9.984967493431696e-01 -5.998065518296047e+00 -6.012397270671221e+00 3.687733260887534e+00 4.605438120917771e+00 9.255152399831215e+03 + 24320 1.000641457247221e+00 -6.016333819899034e+00 -5.992009949304992e+00 3.607765897294534e+00 4.747437326352333e+00 9.192521933323615e+03 + 24340 9.728665242258239e-01 -5.987664549132372e+00 -5.974382593663725e+00 3.810742786184715e+00 4.887009829861654e+00 9.138570172302190e+03 + 24360 1.049782005888907e+00 -6.113353404207963e+00 -5.998355015900117e+00 3.051074317684598e+00 4.711412859291327e+00 9.211986554953890e+03 + 24380 9.076967398382690e-01 -5.915401481724168e+00 -6.048827615953693e+00 4.073693600363690e+00 4.307540089990217e+00 9.367521527726327e+03 + 24400 9.853708998684139e-01 -6.042337333545764e+00 -5.963533815626914e+00 3.492684247633987e+00 4.945186242329008e+00 9.105453058091221e+03 + 24420 9.779519209529595e-01 -6.039217823812852e+00 -5.982024902690989e+00 3.507927951457429e+00 4.836338555115105e+00 9.161959571779769e+03 + 24440 1.028652883327693e+00 -6.120956960367353e+00 -5.989536879812207e+00 3.008273216642551e+00 4.762907656381937e+00 9.184961740985927e+03 + 24460 9.754193826709597e-01 -6.048594076886068e+00 -5.974945186944693e+00 3.462235479865352e+00 4.885138803037610e+00 9.140287951871136e+03 + 24480 9.656359340516233e-01 -6.038614144376597e+00 -5.979534522678211e+00 3.520536971938327e+00 4.859781302272367e+00 9.154351555935047e+03 + 24500 1.008526626519664e+00 -6.105233611852269e+00 -5.988412824788652e+00 3.131829585097349e+00 4.802632622375015e+00 9.181522130583477e+03 + 24520 9.969122859136935e-01 -6.087314278833569e+00 -5.999540133622036e+00 3.257531189292348e+00 4.761543914102045e+00 9.215644215804412e+03 + 24540 9.181038418559867e-01 -5.964679850640079e+00 -5.994147339615951e+00 3.867771643814020e+00 4.698564762035376e+00 9.199112627833223e+03 + 24560 1.007928009966990e+00 -6.087389977851733e+00 -5.943300740239629e+00 3.249019148156082e+00 5.076401848262242e+00 9.043824272441392e+03 + 24580 9.846035585755484e-01 -6.033939775796517e+00 -5.964125514380301e+00 3.528363626743388e+00 4.929247919517339e+00 9.107247058342849e+03 + 24600 9.619141770738985e-01 -5.975134743821143e+00 -6.025218221592451e+00 3.837838139796431e+00 4.550251060040445e+00 9.294615637178467e+03 + 24620 1.023646910950984e+00 -6.033321914606761e+00 -6.012999052096410e+00 3.476467437844374e+00 4.593164459331623e+00 9.257011041563977e+03 + 24640 9.883181429912322e-01 -5.948330359022422e+00 -6.035392655396787e+00 3.937262828286544e+00 4.437337649658119e+00 9.326028120266761e+03 + 24660 1.008587650953296e+00 -5.947951848998422e+00 -6.033533098607539e+00 3.966342186939557e+00 4.474921408028435e+00 9.320276445989561e+03 + 24680 1.023254873262603e+00 -5.942590734834437e+00 -6.032882377788955e+00 4.014909530314265e+00 4.496440943882837e+00 9.318280958244395e+03 + 24700 1.073539035883313e+00 -5.997036371014651e+00 -6.029657702130103e+00 3.701454470217791e+00 4.514137738818192e+00 9.308328241112104e+03 + 24720 1.038188085381236e+00 -5.931371427502929e+00 -6.004637934558472e+00 4.103791422207566e+00 4.683083800739309e+00 9.231289125006366e+03 + 24740 9.802546081976065e-01 -5.838075729215221e+00 -6.007934658251597e+00 4.509943179440929e+00 4.534586923329742e+00 9.241382657432108e+03 + 24760 9.834801348740070e-01 -5.838179462243146e+00 -6.007101615886058e+00 4.671572517744147e+00 4.701595370907753e+00 9.238757736126970e+03 + 24780 1.046907427566315e+00 -5.931176979289883e+00 -5.999845118449656e+00 4.095330241738809e+00 4.701027160323200e+00 9.216545822879083e+03 + 24800 9.890970830678699e-01 -5.847406693819051e+00 -6.079671023959563e+00 4.558458496441965e+00 4.224760769986217e+00 9.463224662646033e+03 + 24820 1.068559716326653e+00 -5.977219689017462e+00 -5.991263312565978e+00 3.858753823138704e+00 4.778113163479407e+00 9.190247926388634e+03 + 24840 1.050447079513754e+00 -5.973374618087465e+00 -5.972591787885340e+00 3.862101608747089e+00 4.866596740910275e+00 9.133079102457024e+03 + 24860 9.551455620169513e-01 -5.860338322110857e+00 -6.027558197246420e+00 4.496625165197022e+00 4.536422764976572e+00 9.301829675585021e+03 + 24880 1.053568666978196e+00 -6.044066388791570e+00 -6.010510090972565e+00 3.480992978384114e+00 4.673678433281143e+00 9.249292884414992e+03 + 24900 9.934772947553909e-01 -5.998574687659675e+00 -5.994498741814298e+00 3.756579578838002e+00 4.779984290632738e+00 9.200160648668938e+03 + 24920 1.004819662220164e+00 -6.058019066789635e+00 -5.986443841933086e+00 3.429190632730087e+00 4.840186650086642e+00 9.175495814353388e+03 + 24940 9.333766607446183e-01 -5.988007906607703e+00 -6.017201745293049e+00 3.815197354523459e+00 4.647561815060273e+00 9.269945824054810e+03 + 24960 9.953118360004829e-01 -6.106414217729097e+00 -5.977875797227708e+00 3.142405259665446e+00 4.880492761440710e+00 9.149286197136549e+03 + 24980 9.389609694247300e-01 -6.039424169451664e+00 -5.976784515608776e+00 3.524021883344068e+00 4.883708469165033e+00 9.145943940355732e+03 + 25000 1.021298406554060e+00 -6.169012586067874e+00 -6.005738496142936e+00 2.772375931114391e+00 4.709921022047144e+00 9.234681365900948e+03 + 25020 8.970199456774209e-01 -5.986254756516197e+00 -6.006852939454157e+00 3.834418343047697e+00 4.716140389059425e+00 9.238093082762227e+03 + 25040 9.373766569826291e-01 -6.042144058863648e+00 -6.015084473687793e+00 3.511768192894261e+00 4.667148518431291e+00 9.263417427618378e+03 + 25060 9.169179660995167e-01 -6.004177197307262e+00 -6.009543737577303e+00 3.673622376089657e+00 4.642806871389663e+00 9.246359993713751e+03 + 25080 9.661187661701454e-01 -6.066098162929717e+00 -5.983018729953681e+00 3.426768430183138e+00 4.903823390832239e+00 9.164995970482374e+03 + 25100 9.787966407415332e-01 -6.069206545454048e+00 -6.015661738131121e+00 3.267330985244146e+00 4.574793554924549e+00 9.265191817880988e+03 + 25120 9.788892251486335e-01 -6.052718361386717e+00 -5.972015810813353e+00 3.439840900283265e+00 4.903247434354856e+00 9.131336575125084e+03 + 25140 9.681513771096300e-01 -6.019451892538259e+00 -6.012200995749929e+00 3.561702971319687e+00 4.603338742750935e+00 9.254547249860325e+03 + 25160 9.309128777984570e-01 -5.945241626197062e+00 -6.034964567071962e+00 4.004836446876724e+00 4.489633435792817e+00 9.324691503959575e+03 + 25180 1.006058693145230e+00 -6.037194733147822e+00 -6.013894497682836e+00 3.486781731992483e+00 4.620575289732221e+00 9.259776601007243e+03 + 25200 1.025842500807844e+00 -6.050002741782516e+00 -6.049364062988539e+00 3.370287176027751e+00 4.373954568497991e+00 9.369234106279026e+03 + 25220 1.003100500599713e+00 -6.004046036256691e+00 -6.022102157656734e+00 3.671280473242780e+00 4.567599429987973e+00 9.285042397632966e+03 + 25240 1.064166955031397e+00 -6.084783466566471e+00 -5.957651693948488e+00 3.255057353550620e+00 4.985067665501303e+00 9.087522364615419e+03 + 25260 9.605410199502851e-01 -5.922753651440207e+00 -5.984311678693154e+00 4.109312034923668e+00 4.755836316363315e+00 9.168946607970493e+03 + 25280 9.985388851132635e-01 -5.970205750827290e+00 -6.008290648769282e+00 3.763849116695558e+00 4.545159739093733e+00 9.242490050440339e+03 + 25300 1.047080092039443e+00 -6.034292941231458e+00 -5.983875113926064e+00 3.491906902880467e+00 4.781413869401601e+00 9.167628985741661e+03 + 25320 9.853109900055954e-01 -5.937653927073246e+00 -5.980605309004058e+00 3.962205853919735e+00 4.715572372168139e+00 9.157616268602002e+03 + 25340 1.068237803444794e+00 -6.055283309404507e+00 -5.981932244561525e+00 3.436013344269545e+00 4.857206509638541e+00 9.161650185424402e+03 + 25360 1.053245090918012e+00 -6.030587932117379e+00 -5.997507790044111e+00 3.578549359542827e+00 4.768500654462974e+00 9.209412268636599e+03 + 25380 1.000883110446410e+00 -5.955569382117465e+00 -6.006767543427498e+00 3.937236034365120e+00 4.643248269233059e+00 9.237786320672150e+03 + 25400 9.796607520065639e-01 -5.926717606150513e+00 -5.979715818236763e+00 4.094647951054140e+00 4.790324015808074e+00 9.154883116886396e+03 + 25420 1.022745569411853e+00 -5.993347160010311e+00 -5.970526901489540e+00 3.706806234429999e+00 4.837843690279858e+00 9.126786846414907e+03 + 25440 9.657359911946622e-01 -5.910919238806466e+00 -6.043416610128262e+00 4.120342279325468e+00 4.359521869293768e+00 9.350812168407230e+03 + 25460 1.011984361106450e+00 -5.986003988007022e+00 -6.006345261742263e+00 3.761024717618938e+00 4.644221976029246e+00 9.236543570518705e+03 + 25480 9.857075605702293e-01 -5.959595554877169e+00 -6.007945640092950e+00 3.910395727061808e+00 4.632762055601290e+00 9.241456406004072e+03 + 25500 9.831778801967717e-01 -5.980027930507499e+00 -6.025877614856469e+00 3.793361816088093e+00 4.530085833340584e+00 9.296657324173346e+03 + 25520 1.055124152990025e+00 -6.127539720916109e+00 -5.971332605472899e+00 3.009710811563143e+00 4.906676241411049e+00 9.129262379872194e+03 + 25540 9.810731921061823e-01 -6.069521226837232e+00 -6.008061541976624e+00 3.304603464016857e+00 4.657514485341965e+00 9.241827222390451e+03 + 25560 9.519920937852896e-01 -6.077789885639940e+00 -6.021697045750013e+00 3.234517552299371e+00 4.556611319286255e+00 9.283789764785879e+03 + 25580 8.768960614945165e-01 -6.004706354507245e+00 -5.959553025016761e+00 3.745280375644142e+00 5.004557781033663e+00 9.093305529486042e+03 + 25600 9.637267958799459e-01 -6.154754018476939e+00 -5.992003107369703e+00 2.868572962733742e+00 4.803113879933589e+00 9.192528520463044e+03 + 25620 9.412579924039020e-01 -6.135305413494863e+00 -5.985191758526433e+00 2.988924042590679e+00 4.850899879432433e+00 9.171666287015061e+03 + 25640 8.816441052255399e-01 -6.052061764355211e+00 -5.988884361104717e+00 3.402157101877232e+00 4.764931528013127e+00 9.182949553624600e+03 + 25660 9.098324493436031e-01 -6.088357573104333e+00 -5.965169323401383e+00 3.223657992648954e+00 4.931023985763327e+00 9.110417779885996e+03 + 25680 9.333053694194586e-01 -6.107217380538256e+00 -5.949075972227413e+00 3.149983917537468e+00 5.058056356362174e+00 9.061380811155155e+03 + 25700 9.173095378972868e-01 -6.059078401819902e+00 -5.967050998722505e+00 3.362089280585657e+00 4.890524870365516e+00 9.116174143148270e+03 + 25720 9.277209153198580e-01 -6.041038180841880e+00 -5.980080226764808e+00 3.457561031285756e+00 4.807591036809209e+00 9.155981117993555e+03 + 25740 1.010766511069370e+00 -6.123830409409469e+00 -5.984999963907922e+00 2.997928308241534e+00 4.795114210253427e+00 9.171065932910171e+03 + 25760 9.524297891098265e-01 -6.000845269193007e+00 -5.985240609941362e+00 3.664323888926160e+00 4.753928257162312e+00 9.171770017833216e+03 + 25780 9.513611519677030e-01 -5.968092148502381e+00 -5.966523397320382e+00 3.842294207035356e+00 4.851302219085851e+00 9.114554646154780e+03 + 25800 9.657049348805068e-01 -5.958198058103020e+00 -6.020600735205639e+00 3.939634880359980e+00 4.581309051653667e+00 9.280368056927085e+03 + 25820 1.062153445574549e+00 -6.077082829647437e+00 -5.980834767560508e+00 3.275296149889738e+00 4.827967416732353e+00 9.158292758135745e+03 + 25840 1.023396966393312e+00 -6.000750881867030e+00 -5.953293891355035e+00 3.664866821142515e+00 4.937372204607941e+00 9.074214941082610e+03 + 25860 9.802427676578191e-01 -5.920806002543928e+00 -5.961679192928036e+00 4.110524436734681e+00 4.875824252443356e+00 9.099729940713589e+03 + 25880 9.734696895922152e-01 -5.895854092044422e+00 -6.002905937680329e+00 4.259640094827924e+00 4.644931830966972e+00 9.225934760568734e+03 + 25900 1.072830297821731e+00 -6.032110236127459e+00 -5.967093362827668e+00 3.535783191961928e+00 4.909120139777959e+00 9.116302612982314e+03 + 25920 1.008818279729162e+00 -5.930388283115262e+00 -5.996685645082760e+00 4.032023612486922e+00 4.651333900585942e+00 9.206875656452117e+03 + 25940 9.604111280560184e-01 -5.853657955730506e+00 -6.037954659371901e+00 4.435802993303708e+00 4.377542801172098e+00 9.333930315960726e+03 + 25960 1.099384282805530e+00 -6.056658827377374e+00 -5.962668464640556e+00 3.380114390722614e+00 4.919821598519054e+00 9.102806426401146e+03 + 25980 1.027298229393469e+00 -5.950096210713926e+00 -6.014165368949624e+00 3.912156996870025e+00 4.544261975610453e+00 9.260567419084713e+03 + 26000 1.018392523716680e+00 -5.942450653448435e+00 -6.017467465044152e+00 3.986270328016146e+00 4.555512187019464e+00 9.270747203785386e+03 + 26020 9.959283945606101e-01 -5.921600640435349e+00 -5.993817897402833e+00 4.097719968508047e+00 4.683037303416357e+00 9.198052863263672e+03 + 26040 1.004167210311523e+00 -5.950346703214370e+00 -5.978280430691507e+00 3.902267019905094e+00 4.741867234001018e+00 9.150444709874984e+03 + 26060 1.049134079644829e+00 -6.036803106406152e+00 -5.987095445660588e+00 3.468499844318236e+00 4.753928924554909e+00 9.177474585772541e+03 + 26080 1.026218752989698e+00 -6.031171243762435e+00 -5.985677017210115e+00 3.539159160532024e+00 4.800394049604249e+00 9.173100140175191e+03 + 26100 9.392594035445407e-01 -5.934218137850061e+00 -6.014068301371411e+00 4.024291089025573e+00 4.565779093313107e+00 9.260283785425618e+03 + 26120 9.512240467925916e-01 -5.988988916732684e+00 -6.017871171805234e+00 3.779601605137140e+00 4.613755226996023e+00 9.271984703745893e+03 + 26140 9.960809724730890e-01 -6.095122216890608e+00 -5.982575281037149e+00 3.208135286069953e+00 4.854397208322547e+00 9.163658283160163e+03 + 26160 9.160939804689968e-01 -6.012180785413905e+00 -6.026307813584104e+00 3.639273975936193e+00 4.558154394032365e+00 9.297980933105917e+03 + 26180 9.662262067461681e-01 -6.115762818175169e+00 -6.002504197838276e+00 3.061988910826899e+00 4.712337435516188e+00 9.224750518760346e+03 + 26200 9.453695345952386e-01 -6.103662516785826e+00 -5.991061923054637e+00 3.193109869770761e+00 4.839679903860810e+00 9.189621170972330e+03 + 26220 8.861661039222235e-01 -6.025500011322938e+00 -6.040148150534377e+00 3.582542732089503e+00 4.498430849945204e+00 9.340721996992048e+03 + 26240 9.439092256582445e-01 -6.113487567814783e+00 -6.003140713779043e+00 3.149998732403559e+00 4.783627444397252e+00 9.226693327869381e+03 + 26260 9.197241621735672e-01 -6.071964778881519e+00 -6.008336982322382e+00 3.292082558520587e+00 4.657443212732849e+00 9.242667962676733e+03 + 26280 9.435277106252464e-01 -6.096155229261827e+00 -5.996742216988634e+00 3.199087601023340e+00 4.769932501609940e+00 9.207055839041413e+03 + 26300 9.218045740493285e-01 -6.047708821279508e+00 -6.009489639312625e+00 3.441610222400578e+00 4.661070679653712e+00 9.246213493102432e+03 + 26320 9.252040659232807e-01 -6.032608892966441e+00 -5.998961219992685e+00 3.529453666625325e+00 4.722663811801195e+00 9.213857153045321e+03 + 26340 9.902981232272590e-01 -6.106580223681664e+00 -6.001655980827415e+00 3.136309836229737e+00 4.738801075672935e+00 9.222123783446699e+03 + 26360 9.431367099233550e-01 -6.015561196035239e+00 -5.995378360170598e+00 3.635081864821340e+00 4.750974831639862e+00 9.202874318618680e+03 + 26380 9.949114680471377e-01 -6.074777248058229e+00 -5.951019168090145e+00 3.311973224271712e+00 5.022611270949429e+00 9.067306220851191e+03 + 26400 9.899066095904333e-01 -6.050731486826334e+00 -6.005744416313608e+00 3.396625876526365e+00 4.654948597137098e+00 9.234698638076165e+03 + 26420 9.883190757678249e-01 -6.035857592180676e+00 -6.023229999708681e+00 3.490904015411199e+00 4.563413605499015e+00 9.288498216236321e+03 + 26440 9.993556143962278e-01 -6.042389464877455e+00 -5.997491349774313e+00 3.443164545933044e+00 4.700976470816142e+00 9.209355638380161e+03 + 26460 1.009826051505172e+00 -6.050009021346177e+00 -6.011167397187894e+00 3.415670402816726e+00 4.638705019455502e+00 9.251362774203964e+03 + 26480 9.485045981692308e-01 -5.951528491571622e+00 -6.038440028273707e+00 3.923490847805867e+00 4.424431354545663e+00 9.335441527714080e+03 + 26500 9.475692539997201e-01 -5.942597358948994e+00 -6.033366682273623e+00 3.986878348151550e+00 4.465666847114142e+00 9.319766658493700e+03 + 26520 9.683781448299486e-01 -5.965698302467739e+00 -6.009110821059569e+00 3.864477847994406e+00 4.615196448174585e+00 9.245015247814323e+03 + 26540 9.571153784774734e-01 -5.938661398776790e+00 -6.017420438071207e+00 4.019368618536496e+00 4.567122026986012e+00 9.270595672342546e+03 + 26560 9.963700323918843e-01 -5.987266008402548e+00 -6.016442415018030e+00 3.778471790211424e+00 4.610936348390993e+00 9.267584696572065e+03 + 26580 1.014618035535428e+00 -6.004919037984700e+00 -6.004076874488086e+00 3.624048904752096e+00 4.628884737874035e+00 9.229557131398606e+03 + 26600 1.054285166233861e+00 -6.053568123749942e+00 -5.961135674284072e+00 3.385179415656896e+00 4.915940844365252e+00 9.098125928411304e+03 + 26620 1.035384421160120e+00 -6.013681962307880e+00 -6.008862078014003e+00 3.654978203510955e+00 4.682654725001078e+00 9.244243113771221e+03 + 26640 1.018829673976967e+00 -5.979180568012238e+00 -5.999347286184133e+00 3.885319588473103e+00 4.769519171940534e+00 9.215041618229545e+03 + 26660 1.061430348537269e+00 -6.032142779805004e+00 -6.064902160153220e+00 3.540599914669801e+00 4.352490483212619e+00 9.417357377514185e+03 + 26680 9.913657132534580e-01 -5.920956260720130e+00 -6.051146714030268e+00 4.114671702326757e+00 4.367097972512410e+00 9.374724534707220e+03 + 26700 1.040439721194922e+00 -5.990387072684332e+00 -6.031717927883734e+00 3.732116873758050e+00 4.494788707273917e+00 9.314688098969315e+03 + 26720 1.001849163680788e+00 -5.932894647199312e+00 -6.064868365915213e+00 4.037019069263300e+00 4.279205553529630e+00 9.417269803173511e+03 + 26740 9.655843383654731e-01 -5.883765207646092e+00 -6.093842876272586e+00 4.331818868059222e+00 4.125520385391742e+00 9.507353989955931e+03 + 26760 1.045175055068835e+00 -6.014227725931010e+00 -6.005413066204813e+00 3.620610650833521e+00 4.671225791045525e+00 9.233677075569769e+03 + 26780 9.953599414492561e-01 -5.958594356564933e+00 -6.020993260402718e+00 3.938842125619652e+00 4.580537963583931e+00 9.281593795121291e+03 + 26800 9.829828001559450e-01 -5.962483699211297e+00 -6.005825944128868e+00 3.912140194834136e+00 4.663262317326716e+00 9.234939674281130e+03 + 26820 1.035266936602966e+00 -6.069340024950086e+00 -6.027556690046854e+00 3.302497899252490e+00 4.542424274217028e+00 9.301865634970136e+03 + 26840 1.007876330954407e+00 -6.064606813736348e+00 -6.013595367064669e+00 3.301142664408001e+00 4.594058285192643e+00 9.258837165956951e+03 + 26860 9.699348531984305e-01 -6.042845085070240e+00 -6.000851436257970e+00 3.445350527832958e+00 4.686484557809165e+00 9.219668789844749e+03 + 26880 9.634473563485493e-01 -6.061085928946822e+00 -5.998173517769858e+00 3.351124585171625e+00 4.712377385813921e+00 9.211453137806910e+03 + 26900 9.499127806399479e-01 -6.063500963243912e+00 -5.993824002202202e+00 3.331383970088634e+00 4.731479862865003e+00 9.198123525066230e+03 + 26920 9.899795160606156e-01 -6.139012501191987e+00 -5.984251302603741e+00 2.987269645834671e+00 4.875932397346461e+00 9.168784631172943e+03 + 26940 9.701071593392978e-01 -6.121034847466492e+00 -5.970910871083147e+00 3.042603786074674e+00 4.904638890078101e+00 9.127979237816195e+03 + 26960 8.491853202647082e-01 -5.944881097762019e+00 -6.023840335551021e+00 4.004781449475719e+00 4.551385287188713e+00 9.290377004956044e+03 + 26980 9.421397124393567e-01 -6.079498699946559e+00 -5.987801441110460e+00 3.232226280624345e+00 4.758766130966166e+00 9.179660665414938e+03 + 27000 9.744729480255444e-01 -6.116145792772875e+00 -5.982560877711191e+00 3.106261484498423e+00 4.873326738981408e+00 9.163613674252221e+03 + 27020 9.223727352729290e-01 -6.021076397508061e+00 -5.988284880546438e+00 3.578016343419241e+00 4.766310308283730e+00 9.181126167199975e+03 + 27040 9.455831063228392e-01 -6.026887245417519e+00 -5.978433197965661e+00 3.598286903920087e+00 4.876517542628264e+00 9.150955219626328e+03 + 27060 9.689533105277583e-01 -6.025688247526988e+00 -6.025503931106525e+00 3.514748149213525e+00 4.515806522622698e+00 9.295509340748611e+03 + 27080 1.012399636967868e+00 -6.050008456217423e+00 -5.999017193649915e+00 3.412643072630035e+00 4.705442793165047e+00 9.214027251005758e+03 + 27100 9.891940338380578e-01 -5.977650664108701e+00 -5.976215594413667e+00 3.803483184296121e+00 4.811723576561329e+00 9.144184401562585e+03 + 27120 9.687017500544800e-01 -5.916598487889412e+00 -5.988534448480671e+00 4.139800697606367e+00 4.726733279837431e+00 9.181881267819166e+03 + 27140 1.037146436436462e+00 -5.993807494022347e+00 -6.017964017470762e+00 3.715348726106671e+00 4.576638230255953e+00 9.272264987648879e+03 + 27160 1.016934884494603e+00 -5.947880379769530e+00 -6.038643569513634e+00 3.984561533065667e+00 4.463385251996804e+00 9.336055558785029e+03 + 27180 1.034507542746743e+00 -5.967819089135967e+00 -6.035228275935958e+00 3.884340318121123e+00 4.497266335977636e+00 9.325505220584442e+03 + 27200 1.071178492827565e+00 -6.023204575304274e+00 -6.020554920965714e+00 3.542048774279277e+00 4.557263499523975e+00 9.280253901903241e+03 + 27220 9.867644844035480e-01 -5.902529903526671e+00 -6.015385185253888e+00 4.241353637449309e+00 4.593321145473221e+00 9.264317521186465e+03 + 27240 1.059979797456440e+00 -6.016569449353873e+00 -5.960166307226832e+00 3.612473295505697e+00 4.936348865957199e+00 9.095170882167500e+03 + 27260 1.060608216219965e+00 -6.024244994406827e+00 -5.977130014179148e+00 3.552489729559791e+00 4.823031237046751e+00 9.146970897468702e+03 + 27280 9.960753965283066e-01 -5.936047062756765e+00 -6.003107861470136e+00 4.076359438239574e+00 4.691285954402334e+00 9.226526196044453e+03 + 27300 1.042541389049485e+00 -6.013710439778599e+00 -6.037708513043897e+00 3.608611603120279e+00 4.470810952741102e+00 9.333151858054540e+03 + 27320 9.444775768942942e-01 -5.880580310794739e+00 -6.065088673664728e+00 4.306916409866738e+00 4.247440837690388e+00 9.417949748538475e+03 + 27340 1.008534627286023e+00 -5.991846922656856e+00 -6.008688748098925e+00 3.679424533256534e+00 4.582716165304110e+00 9.243739661273345e+03 + 27360 9.630546366672733e-01 -5.940984462555936e+00 -5.989684225866467e+00 4.015297708059070e+00 4.735656130865983e+00 9.185401570380916e+03 + 27380 9.988885380947690e-01 -6.009749248724494e+00 -5.987202522399756e+00 3.591687043220364e+00 4.721153834871629e+00 9.177808010865125e+03 + 27400 9.930793117447083e-01 -6.017143289298067e+00 -5.976048856374288e+00 3.630207531687882e+00 4.866178124879166e+00 9.143678305964455e+03 + 27420 1.030636429210788e+00 -6.087880293211160e+00 -5.948888627407857e+00 3.235744056369835e+00 5.033855710303177e+00 9.060830934950771e+03 + 27440 9.462319624054668e-01 -5.977642549775878e+00 -5.992349407946955e+00 3.805257004151622e+00 4.720807948654352e+00 9.193567063702878e+03 + 27460 9.645352579399442e-01 -6.018538379506525e+00 -5.963629477826064e+00 3.687134074552471e+00 5.002429485126754e+00 9.105727451914574e+03 + 27480 1.002738936303536e+00 -6.089151904983111e+00 -5.991858877217838e+00 3.254760976637729e+00 4.813432598113311e+00 9.192068475447604e+03 + 27500 9.353743570856123e-01 -6.005748106118038e+00 -6.022869736927978e+00 3.679806405605295e+00 4.581491351930812e+00 9.287390104871154e+03 + 27520 9.799217585818061e-01 -6.089366435245411e+00 -5.979941766002367e+00 3.260457932166900e+00 4.888791316373299e+00 9.155580841170713e+03 + 27540 9.283970948727412e-01 -6.033878178272121e+00 -5.991787180755086e+00 3.555020238949807e+00 4.796713260253438e+00 9.191878560445837e+03 + 27560 9.522218752693293e-01 -6.091707939125141e+00 -5.991324388102013e+00 3.247395478249032e+00 4.823813362528147e+00 9.190441020623144e+03 + 27580 9.625618546082225e-01 -6.129966572553270e+00 -5.973605676107027e+00 3.013035905586652e+00 4.910884369751501e+00 9.136215649408119e+03 + 27600 9.472254913757170e-01 -6.126036363920218e+00 -5.991533718444473e+00 2.991903831992664e+00 4.764238836531508e+00 9.191089495114022e+03 + 27620 8.714750487600875e-01 -6.028001610369969e+00 -5.982686609703543e+00 3.533834384544501e+00 4.794040130844811e+00 9.163989097108841e+03 + 27640 8.996218362433056e-01 -6.076111518085125e+00 -5.963663964378407e+00 3.250352449233675e+00 4.896043703820350e+00 9.105841281497531e+03 + 27660 8.884259422073223e-01 -6.055151989915837e+00 -5.949853639156968e+00 3.412411358058467e+00 5.017050782983009e+00 9.063757821715657e+03 + 27680 9.558661347182068e-01 -6.139451230840570e+00 -5.964487393905256e+00 2.923995218435233e+00 4.928664645684069e+00 9.108359546052705e+03 + 27700 9.427480597644755e-01 -6.093510468254363e+00 -5.967946230079281e+00 3.159864819455000e+00 4.880874106059382e+00 9.118928697665700e+03 + 27720 9.608589617458617e-01 -6.083073963087498e+00 -5.987435436768905e+00 3.270083422360786e+00 4.819254640496267e+00 9.178520926841047e+03 + 27740 9.483046541488918e-01 -6.021258818969733e+00 -5.994886706388693e+00 3.564206071180362e+00 4.715638822691925e+00 9.201374288213323e+03 + 27760 9.486324698030321e-01 -5.980383338328356e+00 -5.990702534221319e+00 3.771870386982515e+00 4.712615967274717e+00 9.188549570618308e+03 + 27780 1.043234891490521e+00 -6.084072596070903e+00 -5.989805163573187e+00 3.280550576214043e+00 4.821848761453962e+00 9.185762877391515e+03 + 27800 9.462777331022916e-01 -5.911316177144968e+00 -6.022247478570696e+00 4.254849241028481e+00 4.617864541678540e+00 9.285463190241648e+03 + 27820 1.041778414646208e+00 -6.032876913893089e+00 -5.978612164661120e+00 3.476616344254921e+00 4.788212931787688e+00 9.151518188195550e+03 + 27840 1.039470761840076e+00 -6.014265230341593e+00 -5.978256302392833e+00 3.659957011239747e+00 4.866725847885116e+00 9.150420976034360e+03 + 27860 1.015181200971059e+00 -5.966262020403065e+00 -6.028966695349557e+00 3.863268309063966e+00 4.503208362004117e+00 9.306166085901783e+03 + 27880 1.024841218237219e+00 -5.973730386219399e+00 -6.003883041818700e+00 3.871523022445162e+00 4.698381807885605e+00 9.228937359090134e+03 + 27900 1.011277400152437e+00 -5.948608245003178e+00 -6.021541896239807e+00 3.979148036182251e+00 4.560351724335476e+00 9.283280107952132e+03 + 27920 9.695039402174337e-01 -5.885701219590517e+00 -6.035573877983513e+00 4.324162621374119e+00 4.463570624162602e+00 9.326561815037468e+03 + 27940 1.033810576615482e+00 -5.980572172736323e+00 -5.965801148508310e+00 3.845938570782814e+00 4.930756077708684e+00 9.112362866227797e+03 + 27960 1.049616977200825e+00 -6.005430142597134e+00 -5.982606595612739e+00 3.614999144886190e+00 4.746055483603064e+00 9.163734576042832e+03 + 27980 1.033753319888638e+00 -5.985257730354960e+00 -5.995690880871207e+00 3.789186175277897e+00 4.729277410488785e+00 9.203828087378617e+03 + 28000 1.057505199077214e+00 -6.031099990860334e+00 -5.989260064416386e+00 3.523942069007464e+00 4.764193401356305e+00 9.184103000493253e+03 + 28020 1.048766753519728e+00 -6.033736160918774e+00 -5.970519444527135e+00 3.530205769007253e+00 4.893205937283286e+00 9.126708711083033e+03 + 28040 9.695261096033957e-01 -5.936656690271800e+00 -5.960906876923937e+00 4.002741396690560e+00 4.863493072229734e+00 9.097363369294753e+03 + 28060 9.856662990412596e-01 -5.979387234082172e+00 -5.942331647575939e+00 3.817786579363989e+00 5.030565491416257e+00 9.040853248464282e+03 + 28080 1.059373091536898e+00 -6.111332584964903e+00 -5.994605601387574e+00 3.108023494561577e+00 4.778287897704928e+00 9.200486078063295e+03 + 28100 9.038957662314364e-01 -5.908830343121240e+00 -6.055890621635804e+00 4.153883971179798e+00 4.309441094444620e+00 9.389432379710319e+03 + 28120 1.008060788723283e+00 -6.097835488996002e+00 -5.976912873797956e+00 3.206362921656118e+00 4.900719290837520e+00 9.146312908976432e+03 + 28140 9.583930563362792e-01 -6.059891299820267e+00 -5.979638007578159e+00 3.387611631710931e+00 4.848438454921950e+00 9.154647667282694e+03 + 28160 9.861648629247483e-01 -6.131400760209572e+00 -5.980359086580825e+00 2.991286816328650e+00 4.858591479928367e+00 9.156856998614861e+03 + 28180 9.331741432074954e-01 -6.080274568648893e+00 -6.010906672424127e+00 3.256662056310701e+00 4.654983251080555e+00 9.250575868091884e+03 + 28200 9.487365970115789e-01 -6.124053786821472e+00 -5.980234239423813e+00 3.026249650686636e+00 4.852083747847020e+00 9.156495382343082e+03 + 28220 9.114577634125778e-01 -6.082060719689925e+00 -5.965068694096035e+00 3.267330318008544e+00 4.939116633426106e+00 9.110117421907767e+03 + 28240 9.204217757524628e-01 -6.098852783840079e+00 -5.935993573515242e+00 3.139492347080061e+00 5.074655135146623e+00 9.021597983002457e+03 + 28260 9.655212033004757e-01 -6.158440556204259e+00 -5.963638518525968e+00 2.838817927477874e+00 4.957401373344522e+00 9.105772460240843e+03 + 28280 9.873924749750815e-01 -6.174496784372912e+00 -5.966858916174683e+00 2.763346835914446e+00 4.955635606964932e+00 9.115612627892451e+03 + 28300 9.062975886648298e-01 -6.026802835103730e+00 -5.983901089239057e+00 3.537851694646410e+00 4.784200158425085e+00 9.167693145932984e+03 + 28320 9.240469692638211e-01 -6.009904912254956e+00 -5.996691526747439e+00 3.689365663590512e+00 4.765238967939470e+00 9.206883761337367e+03 + 28340 1.004311492099203e+00 -6.074908507271499e+00 -5.985888975239829e+00 3.345657912128385e+00 4.856821840782293e+00 9.173791333612286e+03 + 28360 1.016706758180717e+00 -6.041796236053391e+00 -6.030985962253030e+00 3.470893581743478e+00 4.532967846789619e+00 9.312434135093177e+03 + 28380 9.874048950994018e-01 -5.964654456240957e+00 -6.022495151868238e+00 3.873952801740150e+00 4.541822576629586e+00 9.286240841701350e+03 + 28400 1.041488541426884e+00 -6.025868643446168e+00 -6.008228877105564e+00 3.550770396740445e+00 4.652060664813215e+00 9.242325953813262e+03 + 28420 1.002885854865181e+00 -5.958381897030820e+00 -5.996224775982426e+00 3.957127022452642e+00 4.739827355345930e+00 9.205477884187449e+03 + 28440 1.049370544181631e+00 -6.022186024690050e+00 -5.973239231574145e+00 3.578594037951742e+00 4.859654098515019e+00 9.135078924877598e+03 + 28460 9.857187145804207e-01 -5.925467128856044e+00 -6.019228836604713e+00 4.084316227801585e+00 4.545921992331354e+00 9.276155748451205e+03 + 28480 1.016912184696090e+00 -5.970975071262721e+00 -6.038946003969629e+00 3.866536090339538e+00 4.476236476268629e+00 9.336997068464581e+03 + 28500 1.028307300006997e+00 -5.990560082016213e+00 -6.027136568431067e+00 3.705765742755110e+00 4.495737897568036e+00 9.300558280627594e+03 + 28520 1.016954212438940e+00 -5.980298001324171e+00 -5.977040781160179e+00 3.865383997349741e+00 4.884087459584578e+00 9.146687088651623e+03 + 28540 1.056024721359412e+00 -6.045516148948617e+00 -5.956156535862871e+00 3.486221098932965e+00 4.999337825626756e+00 9.082947105417434e+03 + 28560 9.839051355476658e-01 -5.948191718973401e+00 -5.993043752948756e+00 3.990724759891959e+00 4.733177439975648e+00 9.195697565700497e+03 + 28580 1.006138102519820e+00 -5.989701164156847e+00 -6.008171374837757e+00 3.772379272464455e+00 4.666320464478808e+00 9.242129777662814e+03 + 28600 1.037766030104577e+00 -6.047661953637897e+00 -6.006616425912386e+00 3.482074364646931e+00 4.717764136621707e+00 9.237361069371234e+03 + 28620 9.659443376312803e-01 -5.955158072010705e+00 -6.009664018831449e+00 3.972361147049752e+00 4.659379565637028e+00 9.246740770913540e+03 + 28640 1.017316284906998e+00 -6.045576804131761e+00 -5.995286608078919e+00 3.449584518786223e+00 4.738358606904329e+00 9.202587117532499e+03 + 28660 9.577804407050799e-01 -5.972745379337040e+00 -6.014008556755306e+00 3.870009954647008e+00 4.633070404455253e+00 9.260101274630691e+03 + 28680 9.474413353539920e-01 -5.973897071055424e+00 -6.002065631535745e+00 3.852656283446636e+00 4.690908050097980e+00 9.223373693040479e+03 + 28700 1.017104471432281e+00 -6.091282034671464e+00 -5.981710620472496e+00 3.222513698750876e+00 4.851689715202898e+00 9.160915217138234e+03 + 28720 1.005345044397297e+00 -6.088815245676647e+00 -5.942833924228069e+00 3.290074517050226e+00 5.128321855344449e+00 9.042400026548798e+03 + 28740 9.813762673374394e-01 -6.066549915314827e+00 -5.957266113139400e+00 3.356101876411747e+00 4.983626380116779e+00 9.086343519063474e+03 + 28760 9.653847697801363e-01 -6.054643177173745e+00 -5.988457378538456e+00 3.365662673375492e+00 4.745711771358559e+00 9.181657630333046e+03 + 28780 9.587590993123012e-01 -6.054058434583946e+00 -5.979365665902244e+00 3.388949683867171e+00 4.817847120306103e+00 9.153831636261464e+03 + 28800 9.040431139686514e-01 -5.979314352604691e+00 -5.993252864811110e+00 3.849403104418126e+00 4.769366010351073e+00 9.196326797466869e+03 + 28820 9.115654142044766e-01 -5.989940615113626e+00 -5.992423743629933e+00 3.762417450336267e+00 4.748158942132736e+00 9.193793244142766e+03 + 28840 9.754058565697546e-01 -6.076886502898839e+00 -5.969441678219704e+00 3.310135214941831e+00 4.927100025282309e+00 9.123482238600380e+03 + 28860 9.587361316427093e-01 -6.034558712246425e+00 -6.002407221117857e+00 3.505872605608647e+00 4.690491443096056e+00 9.224448066894422e+03 + 28880 1.011675087147180e+00 -6.086326826020558e+00 -6.005672971429328e+00 3.200717685995156e+00 4.663844600201662e+00 9.234496103880314e+03 + 28900 9.766675390624291e-01 -6.004355916494490e+00 -5.987623152207387e+00 3.630942804509664e+00 4.727024926433113e+00 9.179083018325524e+03 + 28920 1.049191871161144e+00 -6.076350377546601e+00 -5.950209815476448e+00 3.293840001112845e+00 5.018158628708557e+00 9.064827234880959e+03 + 28940 1.012873183427687e+00 -5.978436158514741e+00 -5.977472307116853e+00 3.795201997156629e+00 4.800736581038823e+00 9.148020884569307e+03 + 28960 1.028732091672302e+00 -5.963321835645610e+00 -6.013958050130856e+00 3.835515301610799e+00 4.544754322107647e+00 9.259941569164273e+03 + 28980 1.021772659444471e+00 -5.923753828854793e+00 -6.032654140884123e+00 4.114243566344634e+00 4.488921122403402e+00 9.317556792062800e+03 + 29000 1.082243177129964e+00 -5.993774074450423e+00 -5.970542686263892e+00 3.805520179121197e+00 4.938918405133962e+00 9.126826970490769e+03 + 29020 1.021588304188529e+00 -5.890514213167553e+00 -6.026716394264996e+00 4.363543487268874e+00 4.581449486187946e+00 9.299245006984265e+03 + 29040 1.058507080087246e+00 -5.940779001325294e+00 -6.060849535106583e+00 4.059049754102874e+00 4.369586168275657e+00 9.404797986556085e+03 + 29060 1.057459784182103e+00 -5.943785254801710e+00 -6.036615025991380e+00 3.988057943463091e+00 4.455015031931338e+00 9.329782234796643e+03 + 29080 1.022219879864499e+00 -5.903059204429085e+00 -6.012451262507249e+00 4.178034987108999e+00 4.549888861257902e+00 9.255313282078598e+03 + 29100 1.083637908939573e+00 -6.011380434521747e+00 -6.020794606531589e+00 3.632432060311167e+00 4.578374427792243e+00 9.280972407843090e+03 + 29120 9.957837155052961e-01 -5.903348281736229e+00 -6.037350414592377e+00 4.245562060164006e+00 4.476101076540965e+00 9.332011422013924e+03 + 29140 9.672713287498631e-01 -5.885866115602342e+00 -5.955195294563532e+00 4.278806776372667e+00 4.880707902121741e+00 9.080000970897076e+03 + 29160 9.927843018394513e-01 -5.945994384435984e+00 -5.997639634403891e+00 4.020529081432159e+00 4.723974064039837e+00 9.209798576411866e+03 + 29180 1.069533995994706e+00 -6.083723542092270e+00 -6.050761140409985e+00 3.207582727474011e+00 4.396857938848859e+00 9.373536178109489e+03 + 29200 9.845417440568524e-01 -5.985811107064321e+00 -6.006454279476295e+00 3.768825195889611e+00 4.650288905379449e+00 9.236881346242813e+03 + 29220 9.647934047677093e-01 -5.980184108831502e+00 -5.970880839224472e+00 3.806001605504369e+00 4.859422419264249e+00 9.127865520067760e+03 + 29240 1.026214752622953e+00 -6.089218700927397e+00 -5.978251701129010e+00 3.148789439563063e+00 4.785979124493122e+00 9.150410489362395e+03 + 29260 9.950024545978784e-01 -6.056184673287427e+00 -5.967407847834280e+00 3.409120036176434e+00 4.918890306097744e+00 9.117264454824444e+03 + 29280 9.976840082535774e-01 -6.068816260444843e+00 -5.982403250709504e+00 3.329374449560904e+00 4.825571323831264e+00 9.163104307796335e+03 + 29300 9.274399326175897e-01 -5.968193313051001e+00 -5.978248299784009e+00 3.860816723012973e+00 4.803079433187877e+00 9.150368344070803e+03 + 29320 9.868006097871423e-01 -6.054855062030459e+00 -5.966588184295469e+00 3.396901175539483e+00 4.903743246748975e+00 9.114754717728470e+03 + 29340 9.899444781062093e-01 -6.055138059269869e+00 -5.967437554726304e+00 3.419775396780256e+00 4.923365265478624e+00 9.117367431745864e+03 + 29360 9.663727155608948e-01 -6.013310413477299e+00 -5.974131730563347e+00 3.648840874536920e+00 4.873810934710417e+00 9.137808363160486e+03 + 29380 9.750770533677555e-01 -6.018640411511455e+00 -5.987806748717642e+00 3.611856037783077e+00 4.788907701039046e+00 9.179653685664820e+03 + 29400 9.748765965418188e-01 -6.012207410241462e+00 -5.995438264592647e+00 3.649146671623696e+00 4.745437700956098e+00 9.203035879862704e+03 + 29420 9.438078754944723e-01 -5.958641768052282e+00 -6.030963389991151e+00 3.867763678269130e+00 4.452481733361319e+00 9.312350037892540e+03 + 29440 1.056461221571512e+00 -6.118561804609593e+00 -5.976282403200306e+00 3.016902514516836e+00 4.833892855075169e+00 9.144396181895105e+03 + 29460 9.109807593599298e-01 -5.893652520520836e+00 -6.035823972869681e+00 4.250997572711173e+00 4.434627092362953e+00 9.327338199520040e+03 + 29480 1.073132083698660e+00 -6.125540645559286e+00 -5.927099584086852e+00 3.029538146102407e+00 5.169017429732140e+00 8.994627736545643e+03 + 29500 9.507761180188994e-01 -5.933684047595972e+00 -6.013722739154598e+00 4.082156803746088e+00 4.622562250868972e+00 9.259209622948030e+03 + 29520 1.070893063264405e+00 -6.100279961877620e+00 -5.994733191897323e+00 3.149417233303650e+00 4.755483119840385e+00 9.200905378148676e+03 + 29540 1.033192584583307e+00 -6.035594357949856e+00 -6.015534286027502e+00 3.504554562004205e+00 4.619742599268458e+00 9.264793066581120e+03 + 29560 9.984235088410777e-01 -5.978632026053406e+00 -5.992818916503188e+00 3.811773593477925e+00 4.730310273101077e+00 9.194980578456067e+03 + 29580 9.782168386658057e-01 -5.941064268115537e+00 -5.981033740331191e+00 4.028280180474235e+00 4.798769285756112e+00 9.158909295133537e+03 + 29600 1.010188133657555e+00 -5.977931663523375e+00 -5.997737042644165e+00 3.748774257593740e+00 4.635048705809655e+00 9.210117436464387e+03 + 29620 1.027322148721312e+00 -5.992813557031439e+00 -5.994670763920011e+00 3.731566906097881e+00 4.720902536741860e+00 9.200677584387106e+03 + 29640 9.659535898942938e-01 -5.891778197022241e+00 -6.014854489953541e+00 4.285876055292825e+00 4.579152935286527e+00 9.262676790536627e+03 + 29660 1.068408927267755e+00 -6.031798237411427e+00 -5.971858562367476e+00 3.461458336456697e+00 4.805641226193798e+00 9.130849865628978e+03 + 29680 9.528229368747220e-01 -5.846588627198785e+00 -5.997008497659730e+00 4.549702832894747e+00 4.685968659308274e+00 9.207807988589573e+03 + 29700 9.778655348391855e-01 -5.866592344020100e+00 -5.979465093578170e+00 4.427079488647842e+00 4.778946693683861e+00 9.154075779230565e+03 + 29720 1.046019026322564e+00 -5.941033829065968e+00 -5.987436754604585e+00 3.994007143952243e+00 4.727554364679986e+00 9.178496655866271e+03 + 29740 1.093017904360123e+00 -5.981286143635683e+00 -5.968445706027685e+00 3.795850897039152e+00 4.869582676835570e+00 9.120400718628467e+03 + 29760 1.081435015660344e+00 -5.937528636263007e+00 -5.960042500858987e+00 4.042979893505347e+00 4.913701798985946e+00 9.094743820373702e+03 + 29780 1.032977594009540e+00 -5.842985650638500e+00 -5.962574875481101e+00 4.529599589561191e+00 4.842899754142242e+00 9.102494569419829e+03 + 29800 1.110155829983875e+00 -5.937079912755975e+00 -5.963508388900301e+00 4.033115698808997e+00 4.881359298994812e+00 9.105338159836523e+03 + 29820 1.069364079718904e+00 -5.862036650250691e+00 -6.034739694386893e+00 4.345039869171149e+00 4.353352264031374e+00 9.323996368686723e+03 + 29840 1.124937716235160e+00 -5.941882666546898e+00 -6.000174210698900e+00 3.968797563006729e+00 4.634078495898632e+00 9.217552726273581e+03 + 29860 1.103010236366959e+00 -5.917815645411634e+00 -6.002372566345578e+00 4.106585964895744e+00 4.621047039751814e+00 9.224283373865937e+03 + 29880 1.082760243061814e+00 -5.908888543703807e+00 -5.961252090247383e+00 4.178931860089552e+00 4.878252272603703e+00 9.098451030699134e+03 + 29900 1.057986508276424e+00 -5.904214241847932e+00 -6.013298785997994e+00 4.198190129393701e+00 4.571809796105394e+00 9.257891858807350e+03 + 29920 9.996815436691404e-01 -5.859184389749883e+00 -6.005210465816346e+00 4.512688882206788e+00 4.674184555970916e+00 9.233049362274414e+03 + 29940 1.049197383888980e+00 -5.979803533765239e+00 -6.006492940301733e+00 3.803678436581749e+00 4.650423734076885e+00 9.236994899481502e+03 + 29960 1.029478396893733e+00 -5.996329089212416e+00 -6.046717811347401e+00 3.635458778889337e+00 4.346118938760705e+00 9.361033313396620e+03 + 29980 1.044480118617374e+00 -6.056243846655912e+00 -5.975131600274828e+00 3.418881713304631e+00 4.884640784104372e+00 9.140868585131188e+03 + 30000 1.016767391866971e+00 -6.041880949276345e+00 -6.008532375668739e+00 3.425265928605920e+00 4.616758598935883e+00 9.243254019607506e+03 + 30020 9.922247197783098e-01 -6.023803263966383e+00 -6.005941781914484e+00 3.514202224383747e+00 4.616765618381163e+00 9.235310858602918e+03 + 30040 1.015084969262159e+00 -6.069619921071927e+00 -6.007898245326070e+00 3.335982280909654e+00 4.690397694440826e+00 9.241326647138807e+03 + 30060 9.882612529099631e-01 -6.040284749510060e+00 -6.023507846472330e+00 3.465731552741875e+00 4.562067126201876e+00 9.289377826918633e+03 + 30080 1.006152782716636e+00 -6.075767938727057e+00 -5.986193350702851e+00 3.285433879225506e+00 4.799785025283194e+00 9.174733880226882e+03 + 30100 9.679814941592997e-01 -6.025131795077628e+00 -6.019920002711325e+00 3.549667806400158e+00 4.579594724689728e+00 9.278290579112328e+03 + 30120 9.311208921328133e-01 -5.973117554157160e+00 -5.982077785981280e+00 3.886328053177712e+00 4.834877015452216e+00 9.162080792690465e+03 + 30140 1.016894008588022e+00 -6.095566240787789e+00 -5.954919582073374e+00 3.187354219830481e+00 4.994969099168746e+00 9.079179160131311e+03 + 30160 1.000528545015609e+00 -6.066061308542642e+00 -6.007830879936967e+00 3.293919819856046e+00 4.628287952039537e+00 9.241075914727677e+03 + 30180 9.956050615235298e-01 -6.050461112666764e+00 -5.965799988060901e+00 3.427096780125436e+00 4.913234058878992e+00 9.112351260889902e+03 + 30200 9.882358765782590e-01 -6.026515988153109e+00 -5.964714821978155e+00 3.557479226850643e+00 4.912351086726785e+00 9.109051797357193e+03 + 30220 1.006934228929713e+00 -6.035253633162323e+00 -5.980793283070424e+00 3.511727090969686e+00 4.824446848909312e+00 9.158179293361896e+03 + 30240 1.004118717215138e+00 -6.008648526824767e+00 -5.962032954551027e+00 3.655754961014896e+00 4.923428790747208e+00 9.100862582232357e+03 + 30260 9.813019668401489e-01 -5.947496886525927e+00 -5.977684413881758e+00 4.003691062380976e+00 4.830349608799037e+00 9.148656976793382e+03 + 30280 1.024481767133316e+00 -5.978499913010214e+00 -5.986694342097683e+00 3.809221359835032e+00 4.762167679930986e+00 9.176251467302583e+03 + 30300 9.372559915964310e-01 -5.812215677039879e+00 -6.071883747463453e+00 4.663143359153668e+00 4.172089115277479e+00 9.439007312162808e+03 + 30320 1.037288373435426e+00 -5.928307902238423e+00 -6.030087311434825e+00 4.050865057736326e+00 4.466431939817912e+00 9.309624715503543e+03 + 30340 1.068069193295996e+00 -5.943532333151957e+00 -5.985089649760610e+00 3.998435209050835e+00 4.759806666109988e+00 9.171338455044290e+03 + 30360 1.088471716750496e+00 -5.950361095175069e+00 -6.038067073983443e+00 3.932682962372284e+00 4.429061659598243e+00 9.334267393989394e+03 + 30380 1.087176090824334e+00 -5.936349256647279e+00 -6.035533122416764e+00 4.048510510878478e+00 4.478981404976475e+00 9.326472522392092e+03 + 30400 1.059111122397142e+00 -5.893360705102793e+00 -6.071651010853246e+00 4.185555474317064e+00 4.161784948362317e+00 9.438313057485690e+03 + 30420 1.070826677341120e+00 -5.918315395300726e+00 -6.008904710307636e+00 4.086356900497336e+00 4.566179035076466e+00 9.244419129936921e+03 + 30440 1.016543629364807e+00 -5.857560330802976e+00 -6.013409112803366e+00 4.455599245142363e+00 4.560691421375054e+00 9.258217533942241e+03 + 30460 9.702987054343737e-01 -5.814606880813549e+00 -6.033768896319408e+00 4.666416210599313e+00 4.407954002352379e+00 9.320931574525333e+03 + 30480 1.082733533589915e+00 -6.016922587497267e+00 -6.006907900640629e+00 3.547957095010784e+00 4.605462976709386e+00 9.238182664729875e+03 + 30500 1.001906763239213e+00 -5.943670747390758e+00 -6.013336663985812e+00 3.990900521965803e+00 4.590868048111253e+00 9.258016240636491e+03 + 30520 9.797690573249267e-01 -5.965765034306995e+00 -6.052580723175923e+00 3.875323223374128e+00 4.376814103204312e+00 9.379168511796996e+03 + 30540 1.053728165387525e+00 -6.130671941847972e+00 -5.974409347140792e+00 2.995504204736305e+00 4.892788205103312e+00 9.138683789743040e+03 + 30560 9.149138820086319e-01 -5.962518195578482e+00 -6.013974570802310e+00 3.900819426229920e+00 4.605348956846370e+00 9.260001380764621e+03 + 30580 9.794553746289623e-01 -6.076446572662526e+00 -5.977868597052700e+00 3.312814132337314e+00 4.878864123181362e+00 9.149207616915081e+03 + 30600 9.793786307577188e-01 -6.081191036216134e+00 -5.999309945015895e+00 3.265622291146604e+00 4.735796187876284e+00 9.214930712703792e+03 + 30620 9.839331633188340e-01 -6.088366487284060e+00 -5.989463688150250e+00 3.230073602719602e+00 4.797988780504639e+00 9.184724500492623e+03 + 30640 9.496629160440291e-01 -6.033569190909154e+00 -6.006531523771501e+00 3.502253657486081e+00 4.657508126255953e+00 9.237121583300195e+03 + 30660 9.980475234917288e-01 -6.096680730751965e+00 -5.998652985178605e+00 3.155440872244674e+00 4.718331357071502e+00 9.212928116577159e+03 + 30680 8.790823870794808e-01 -5.909962481524311e+00 -6.029714861845568e+00 4.178182439655728e+00 4.490545740230115e+00 9.308492611090194e+03 + 30700 1.009297806258212e+00 -6.088813060451855e+00 -5.977629584834364e+00 3.230760801937853e+00 4.869193524520734e+00 9.148528958501074e+03 + 30720 9.647424618486342e-01 -6.003133083901356e+00 -6.027874374965818e+00 3.660157053700603e+00 4.518088731706042e+00 9.302828902110852e+03 + 30740 9.600666106900217e-01 -5.976134918318284e+00 -6.012833302033489e+00 3.789619177423901e+00 4.578891379074669e+00 9.256499692122556e+03 + 30760 1.007209515135164e+00 -6.023076443973832e+00 -5.963509756986515e+00 3.602289666375500e+00 4.944330800971693e+00 9.105374791885750e+03 + 30780 9.835253434531696e-01 -5.962995925613893e+00 -6.014890918717711e+00 3.852615370239854e+00 4.554626289113505e+00 9.262824358974634e+03 + 30800 9.901096090643858e-01 -5.949810021567699e+00 -6.015644753909554e+00 3.992353676019660e+00 4.614320455020824e+00 9.265117359220740e+03 + 30820 1.068298446540637e+00 -6.043063452334981e+00 -5.996360832258252e+00 3.462060193646347e+00 4.730233865334025e+00 9.205877255751644e+03 + 30840 1.009641441733039e+00 -5.936741398002539e+00 -6.017183552823007e+00 3.972366426346770e+00 4.510455124984414e+00 9.269864940620777e+03 + 30860 1.001333536575028e+00 -5.908763650218204e+00 -5.980623464157447e+00 4.195983326084190e+00 4.783353154174789e+00 9.157640802325868e+03 + 30880 1.085065814710660e+00 -6.018338678779311e+00 -5.953923545065096e+00 3.607800033275592e+00 4.977681699272343e+00 9.076147967617149e+03 + 30900 1.011603814605248e+00 -5.899719690816252e+00 -6.013462543619100e+00 4.221226040462660e+00 4.568096978019121e+00 9.258373463897826e+03 + 30920 1.066779677787184e+00 -5.977035359572429e+00 -5.946862693356818e+00 3.870758310224919e+00 5.044014428839958e+00 9.054610640585372e+03 + 30940 1.039123952151273e+00 -5.932544068130576e+00 -5.967119335583754e+00 4.121097257770650e+00 4.922560721549155e+00 9.116361559327639e+03 + 30960 1.030126243359813e+00 -5.918898599943358e+00 -5.982771855073100e+00 4.177914678652430e+00 4.811144563343162e+00 9.164230979907226e+03 + 30980 1.041838106261155e+00 -5.941069203124223e+00 -6.040250910121639e+00 3.963139528041572e+00 4.393622818142854e+00 9.341022992867327e+03 + 31000 1.097328558014269e+00 -6.036532622298008e+00 -5.976050016383020e+00 3.511759002120119e+00 4.859059484936999e+00 9.143660928666943e+03 + 31020 1.006434645681044e+00 -5.926743668792462e+00 -5.999709846357222e+00 4.047484804560873e+00 4.628501721504532e+00 9.216165690815711e+03 + 31040 9.905252794761835e-01 -5.937717825332274e+00 -5.995257706230751e+00 4.033339371263279e+00 4.702936470876431e+00 9.202476411251106e+03 + 31060 1.016987042923998e+00 -6.020824078426609e+00 -5.980650268413588e+00 3.617821430976102e+00 4.848505664947877e+00 9.157729985073440e+03 + 31080 9.383106110221200e-01 -5.948953612527005e+00 -6.031196282731257e+00 3.903632523246659e+00 4.431382383921761e+00 9.313074749745740e+03 + 31100 9.690788583441644e-01 -6.036941636175341e+00 -5.991339430290878e+00 3.483109432521416e+00 4.744964355628549e+00 9.190478033356183e+03 + 31120 9.652855434407017e-01 -6.062619184450023e+00 -5.969069139354080e+00 3.369716354034427e+00 4.906895189798020e+00 9.122341404331593e+03 + 31140 9.237416682692647e-01 -6.019563778864507e+00 -5.986824420386447e+00 3.572364109905785e+00 4.760358572686156e+00 9.176655323694271e+03 + 31160 9.256175182566047e-01 -6.031879444997407e+00 -6.025219372497717e+00 3.534864139694895e+00 4.573107306631002e+00 9.294630936408337e+03 + 31180 9.349901431113254e-01 -6.047606582801631e+00 -6.020628472488992e+00 3.375558650995205e+00 4.530471135259454e+00 9.280511344569504e+03 + 31200 9.844343169412370e-01 -6.118465197851640e+00 -5.991291620025524e+00 3.059765794970863e+00 4.790016158895991e+00 9.190359627360043e+03 + 31220 9.779250394008274e-01 -6.103035818425727e+00 -5.961586384649608e+00 3.181685567927520e+00 4.993910105899131e+00 9.099524142841708e+03 + 31240 8.759283831900172e-01 -5.942396795784949e+00 -6.013894726646763e+00 4.024795946931501e+00 4.614243763653922e+00 9.259738381603776e+03 + 31260 1.003056755248818e+00 -6.113892981814609e+00 -5.947410488959805e+00 3.158705190330195e+00 5.114673427384988e+00 9.056305435744935e+03 + 31280 9.769911168449510e-01 -6.053347453364530e+00 -5.984812822346967e+00 3.443266253142045e+00 4.836802710144763e+00 9.170482865757986e+03 + 31300 1.020752563820373e+00 -6.095664620845620e+00 -5.972416874954117e+00 3.191883713498897e+00 4.899591342934939e+00 9.132566182949346e+03 + 31320 1.022478766241860e+00 -6.074910491468308e+00 -5.951231616356780e+00 3.307908009440895e+00 5.018091249575357e+00 9.067948788001102e+03 + 31340 1.054971990168924e+00 -6.098569456498211e+00 -5.953494755592094e+00 3.170954231169822e+00 5.003995614010156e+00 9.074840432369208e+03 + 31360 9.973704590653775e-01 -5.992901349612234e+00 -6.008411289892942e+00 3.696805355528511e+00 4.607744878281185e+00 9.242890666183901e+03 + 31380 1.035628978166274e+00 -6.035234657909723e+00 -5.959017789900678e+00 3.538157483577374e+00 4.975806534207514e+00 9.091658589163611e+03 + 31400 1.007215446884386e+00 -5.981156457653849e+00 -5.933268956614238e+00 3.854855956008263e+00 5.129833397544546e+00 9.013292065947442e+03 + 31420 9.700833558294085e-01 -5.913391699591791e+00 -6.001616926214121e+00 4.152830836972430e+00 4.646227932897317e+00 9.221955601442796e+03 + 31440 1.062862843593357e+00 -6.042710698824335e+00 -5.976886352318830e+00 3.427057257211922e+00 4.805030841131234e+00 9.146240160481975e+03 + 31460 9.974447708621510e-01 -5.940636885119797e+00 -6.034965496522629e+00 4.006989045379230e+00 4.465339561398729e+00 9.324701673798418e+03 + 31480 1.034264271048248e+00 -5.995907947803619e+00 -6.057014092170522e+00 3.674362031945616e+00 4.323481094845580e+00 9.392922485782594e+03 + 31500 1.020663026102032e+00 -5.979463450604142e+00 -6.043463959910865e+00 3.821253711133585e+00 4.453752882647569e+00 9.350968589700768e+03 + 31520 1.023930684951674e+00 -5.990545388184390e+00 -6.012252731437277e+00 3.769512702140426e+00 4.644865777981839e+00 9.254708195328310e+03 + 31540 1.049660241105234e+00 -6.036748637479337e+00 -5.978966489806875e+00 3.569285429009280e+00 4.901079462703013e+00 9.152580803756582e+03 + 31560 1.029057026142104e+00 -6.012542251167478e+00 -5.983816831933439e+00 3.713630461812929e+00 4.878576264299037e+00 9.167432320713644e+03 + 31580 1.061709728414808e+00 -6.068510000087695e+00 -5.983056710726014e+00 3.385350178848636e+00 4.876036190217199e+00 9.165112362652819e+03 + 31600 1.005963352151126e+00 -5.993701890546827e+00 -6.042791400573085e+00 3.730616879704237e+00 4.448737316556342e+00 9.348883070659540e+03 + 31620 1.010493528781656e+00 -6.009473726344407e+00 -6.010284957607306e+00 3.639767455784868e+00 4.635109240335668e+00 9.248652010803937e+03 + 31640 9.971633125753645e-01 -5.998655478294780e+00 -6.004410674399989e+00 3.739992032045502e+00 4.706944805395673e+00 9.230575939776329e+03 + 31660 9.887207839355799e-01 -5.995155597896978e+00 -5.991574033134789e+00 3.695853234837108e+00 4.716419133946953e+00 9.191215127168460e+03 + 31680 9.703943878744241e-01 -5.976235338269938e+00 -6.029102758110812e+00 3.856033208415129e+00 4.552460302482052e+00 9.306587282107315e+03 + 31700 1.021146141569824e+00 -6.059415821922836e+00 -5.984234799927833e+00 3.390284422167717e+00 4.821985484688577e+00 9.168703142613313e+03 + 31720 9.823584890550099e-01 -6.007388218439872e+00 -5.997969499707191e+00 3.698141858659910e+00 4.752225599164981e+00 9.210818309084396e+03 + 31740 1.010897179502517e+00 -6.054301677109072e+00 -6.011722415749551e+00 3.400609805734097e+00 4.645106513579862e+00 9.253084691950648e+03 + 31760 9.795242658260285e-01 -6.015029940721191e+00 -6.037562228610831e+00 3.603959048689419e+00 4.474575164766823e+00 9.332725988776559e+03 + 31780 1.067038334897512e+00 -6.157119628526302e+00 -5.953987579750482e+00 2.913559449512548e+00 5.079975108166266e+00 9.076343552371096e+03 + 31800 9.195949052916385e-01 -5.953305472037782e+00 -6.010268298126794e+00 3.951982022750168e+00 4.624892660378209e+00 9.248581019164323e+03 + 31820 1.004815422944286e+00 -6.098686739303657e+00 -5.961584522823613e+00 3.164300742848844e+00 4.951562886376689e+00 9.099505832036777e+03 + 31840 9.289304413315859e-01 -6.008640209452857e+00 -6.020085703299594e+00 3.635871880088492e+00 4.570150083236086e+00 9.278822310846777e+03 + 31860 9.585223467802553e-01 -6.078126829287502e+00 -5.980148135985970e+00 3.315237763639118e+00 4.877846582730301e+00 9.156201436281284e+03 + 31880 9.357973841139077e-01 -6.065006489685641e+00 -5.973976723715542e+00 3.385341798201100e+00 4.908048801212166e+00 9.137317683490974e+03 + 31900 9.622485557608046e-01 -6.120735472922959e+00 -5.980038325891370e+00 3.034250056582494e+00 4.842154847651015e+00 9.155871464859647e+03 + 31920 9.254293647485294e-01 -6.077623434944692e+00 -5.997467152567999e+00 3.262871742118818e+00 4.723141519670403e+00 9.209302102219070e+03 + 31940 9.466773570666212e-01 -6.114150059026270e+00 -5.974298839189773e+00 3.108013554573379e+00 4.911060900780869e+00 9.138336748224461e+03 + 31960 8.951138003405223e-01 -6.035203417283264e+00 -6.005904957796069e+00 3.483053505449365e+00 4.651289793746792e+00 9.235191564896037e+03 + 31980 9.674772298737931e-01 -6.131290412923964e+00 -5.985953066114665e+00 2.967152712836285e+00 4.801702249097014e+00 9.173999222842505e+03 + 32000 9.151687308805541e-01 -6.033182285661968e+00 -6.006360537697566e+00 3.533443001796853e+00 4.687457629260535e+00 9.236591218996804e+03 + 32020 9.329394209775618e-01 -6.031322865775140e+00 -6.018396704824514e+00 3.483206505572282e+00 4.557430522067715e+00 9.273620285000563e+03 + 32040 1.014622252942742e+00 -6.116210189421648e+00 -5.970314071633263e+00 3.095209412653582e+00 4.932967498345749e+00 9.126147471483651e+03 + 32060 9.752743607819213e-01 -6.020267915840212e+00 -5.998289426610700e+00 3.608749341467501e+00 4.734953227783574e+00 9.211814682333496e+03 + 32080 1.034853770589371e+00 -6.072876486258344e+00 -5.972414558398592e+00 3.381856196713629e+00 4.958724132917416e+00 9.132557684545227e+03 + 32100 9.636459671481310e-01 -5.935712418042361e+00 -6.044567058566010e+00 4.001724812770362e+00 4.376664621682392e+00 9.354357701737485e+03 + 32120 1.014976934167490e+00 -5.986939133031907e+00 -6.008125509346358e+00 3.748937485352682e+00 4.627282033973968e+00 9.242013618468278e+03 + 32140 1.055877228880048e+00 -6.028586948410262e+00 -6.000318115015489e+00 3.565921846872949e+00 4.728245862813565e+00 9.218013078284330e+03 + 32160 1.020863871416893e+00 -5.964581972725310e+00 -5.962843633470621e+00 3.897480382951808e+00 4.907462195959360e+00 9.103331835043660e+03 + 32180 1.040603962268929e+00 -5.985525144525254e+00 -5.947976311839689e+00 3.807058448993650e+00 5.022669656937245e+00 9.058014658168457e+03 + 32200 1.004225116949734e+00 -5.924670945837244e+00 -5.985152646157317e+00 4.093669765122435e+00 4.746374482371698e+00 9.171491371042935e+03 + 32220 1.034965909824623e+00 -5.965343999346651e+00 -5.956457413216826e+00 3.913427198957867e+00 4.964455351710082e+00 9.083845782765093e+03 + 32240 1.022343541261796e+00 -5.943430668803857e+00 -5.993263761940056e+00 3.939274574789402e+00 4.653125242355109e+00 9.196374564547248e+03 + 32260 1.013315546690252e+00 -5.928522719815480e+00 -5.985698939482600e+00 4.101543275701234e+00 4.773228574381233e+00 9.173175631752434e+03 + 32280 1.059212635853594e+00 -5.999589900997943e+00 -5.987597441084226e+00 3.639100673593213e+00 4.707963234244949e+00 9.179022057591794e+03 + 32300 1.043091902488871e+00 -5.982750498995590e+00 -6.018173349463371e+00 3.753479567076826e+00 4.550076078022437e+00 9.272927611214955e+03 + 32320 9.960002004924462e-01 -5.925539211578099e+00 -6.042532690157208e+00 4.081881931560716e+00 4.410087272877169e+00 9.348070077293960e+03 + 32340 1.012745165168379e+00 -5.969722238636041e+00 -6.013196662310541e+00 3.834423018681704e+00 4.584786150297402e+00 9.257597620543975e+03 + 32360 1.034399184427269e+00 -6.029104578250220e+00 -6.003194690991163e+00 3.495597162416441e+00 4.644375744600048e+00 9.226870929816167e+03 + 32380 9.722915226433857e-01 -5.973151181185625e+00 -6.015041308741568e+00 3.890683037376547e+00 4.650143442474038e+00 9.263283398830101e+03 + 32400 9.976249220341185e-01 -6.055644742241949e+00 -6.033392618281356e+00 3.334059509022716e+00 4.461834648309491e+00 9.319858715298624e+03 + 32420 9.111814549617361e-01 -5.976629688062792e+00 -5.990439677087604e+00 3.772747455875586e+00 4.693448361806219e+00 9.187714106781797e+03 + 32440 9.311821100018742e-01 -6.042972545226986e+00 -5.944346640755546e+00 3.470688353048231e+00 5.037013558832632e+00 9.046983030889913e+03 + 32460 9.457060037709563e-01 -6.086344330307546e+00 -5.992328867173882e+00 3.186631424455464e+00 4.726482762614869e+00 9.193542506170570e+03 + 32480 9.211491694250057e-01 -6.064450023792324e+00 -6.042150210442010e+00 3.278478786011996e+00 4.406527765154468e+00 9.346903274506667e+03 + 32500 9.745196411001332e-01 -6.150703076940249e+00 -5.963161091978562e+00 2.887918676668388e+00 4.964813776346770e+00 9.104315289702728e+03 + 32520 9.420780892600498e-01 -6.100424802990642e+00 -5.972609535054874e+00 3.157631318919244e+00 4.891566366755217e+00 9.133153964215675e+03 + 32540 8.941819844812283e-01 -6.019487301886222e+00 -5.978055719836230e+00 3.610341759746424e+00 4.848248315394082e+00 9.149814335019460e+03 + 32560 9.574705975210956e-01 -6.098156409554119e+00 -5.987089320670942e+00 3.164884122672570e+00 4.802648534616228e+00 9.177476191346832e+03 + 32580 9.669712722388146e-01 -6.096277603991965e+00 -6.020634157460800e+00 3.144200697002606e+00 4.578557072770075e+00 9.280501374446865e+03 + 32600 9.545382031429612e-01 -6.059829377622717e+00 -5.993924334608217e+00 3.326098593156519e+00 4.704535548918223e+00 9.198431825205653e+03 + 32620 8.820136041831191e-01 -5.933395852948081e+00 -6.026720162763350e+00 4.005636103264551e+00 4.469753474415003e+00 9.299267771395173e+03 + 32640 1.026171642786762e+00 -6.128642427057849e+00 -5.973928437745823e+00 3.028899531599942e+00 4.917291200142062e+00 9.137194907120793e+03 + 32660 9.954509267786282e-01 -6.064038713570797e+00 -5.995538215500442e+00 3.367796593050097e+00 4.761137053387893e+00 9.203374657679680e+03 + 32680 9.678378785449161e-01 -6.007236532003341e+00 -5.978573559158003e+00 3.676731681366806e+00 4.841318907025447e+00 9.151382916690802e+03 + 32700 9.850152364537634e-01 -6.017452556249521e+00 -5.993285352770817e+00 3.601573168938829e+00 4.740344991176194e+00 9.196462110044624e+03 + 32720 9.964918219327976e-01 -6.017706837762883e+00 -6.000713296826092e+00 3.586905078304135e+00 4.684484620105146e+00 9.219228997333652e+03 + 32740 1.011855946185646e+00 -6.025644395926242e+00 -6.016697215477672e+00 3.536154189146110e+00 4.587530283853496e+00 9.268371572912933e+03 + 32760 9.884985354163046e-01 -5.978529017573485e+00 -6.054913664882109e+00 3.777202113232237e+00 4.338589647900145e+00 9.386405658224165e+03 + 32780 9.948188638879417e-01 -5.979895339342377e+00 -6.018354499348703e+00 3.818136290426440e+00 4.597297842134339e+00 9.273481399700213e+03 + 32800 1.029707340054262e+00 -6.024715145423071e+00 -5.970652692697107e+00 3.574208886569269e+00 4.884643856259276e+00 9.127189255561274e+03 + 32820 9.631914057895057e-01 -5.920071387288813e+00 -6.027295707935913e+00 4.135747720624055e+00 4.520049078558413e+00 9.301025162060238e+03 + 32840 9.783456506880607e-01 -5.937400524689138e+00 -6.015948257332845e+00 4.069136250911697e+00 4.618103014849190e+00 9.266046956598579e+03 + 32860 1.038951277304072e+00 -6.021898288056663e+00 -5.995082604800057e+00 3.607924270047689e+00 4.761904073020697e+00 9.201973846341320e+03 + 32880 1.043813797743947e+00 -6.025815493722068e+00 -6.046399682376568e+00 3.494188908358649e+00 4.375991311711612e+00 9.360065557711128e+03 + 32900 1.014450505218701e+00 -5.984368728957874e+00 -5.999105407841731e+00 3.780953996978146e+00 4.696333706333353e+00 9.214317201241920e+03 + 32920 1.028516139563638e+00 -6.007656380872955e+00 -6.004599453127692e+00 3.675961427638714e+00 4.693514779810060e+00 9.231167186142182e+03 + 32940 9.737317873205221e-01 -5.932597597294760e+00 -6.040096884031715e+00 4.054263635983120e+00 4.436986096078667e+00 9.340521972617806e+03 + 32960 9.994148775020879e-01 -5.982350240352226e+00 -6.005149866587979e+00 3.745839295837920e+00 4.614920313761472e+00 9.232832568013988e+03 + 32980 9.564987284096131e-01 -5.934418932978470e+00 -5.995897340752041e+00 4.020361028793277e+00 4.667342497604571e+00 9.204451394716863e+03 + 33000 9.902670572660667e-01 -6.005486671036238e+00 -5.990684398218967e+00 3.657242400978359e+00 4.742239342139444e+00 9.188493228831911e+03 + 33020 9.907133215196436e-01 -6.038607925083467e+00 -5.987358459479071e+00 3.551284055420164e+00 4.845566417749779e+00 9.178290377182429e+03 + 33040 8.854605713119302e-01 -5.918846948562457e+00 -6.092399902473762e+00 4.087247126470153e+00 4.090679207878622e+00 9.502859044287876e+03 + 33060 9.457960455472602e-01 -6.047247394991219e+00 -6.000378143630154e+00 3.441238248927672e+00 4.710368743236114e+00 9.218217309403561e+03 + 33080 9.859991420191038e-01 -6.139627417025794e+00 -5.965307863745714e+00 2.960406692265189e+00 4.961376543063098e+00 9.110869825546823e+03 + 33100 9.636644101116570e-01 -6.133387056533358e+00 -5.923291485556746e+00 2.997712384424845e+00 5.204113665157088e+00 8.983074689120373e+03 + 33120 9.061081317673598e-01 -6.063130423941759e+00 -5.948338652419478e+00 3.366255357785959e+00 5.025407473836129e+00 9.059132823214735e+03 + 33140 9.466287232773588e-01 -6.126872310813608e+00 -5.987312439146013e+00 2.964154347887431e+00 4.765528727823108e+00 9.178150159981338e+03 + 33160 9.050497290619023e-01 -6.060662663634652e+00 -5.979566918042548e+00 3.396751554448482e+00 4.862415875164416e+00 9.154436076429969e+03 + 33180 9.038664157680500e-01 -6.045659628302595e+00 -5.999171970821189e+00 3.468704736050266e+00 4.735644059250241e+00 9.214504556108197e+03 + 33200 9.238791783721760e-01 -6.053461084678899e+00 -5.983928537394516e+00 3.395079761194356e+00 4.794346407828198e+00 9.167788342383607e+03 + 33220 9.806740015500254e-01 -6.108082394689459e+00 -5.977235895552507e+00 3.100651738814782e+00 4.851992585289466e+00 9.147301036190685e+03 + 33240 9.757358511039843e-01 -6.065860889355597e+00 -5.994201535957030e+00 3.321375079678545e+00 4.732854176142215e+00 9.199236227932066e+03 + 33260 9.685717906786085e-01 -6.019719067896865e+00 -5.976598719878332e+00 3.533116979536751e+00 4.780720690711457e+00 9.145317391440101e+03 + 33280 9.999457141822766e-01 -6.032472242706670e+00 -5.940084819981209e+00 3.594395205477916e+00 5.124898083674974e+00 9.034011093919691e+03 + 33300 9.682581058867985e-01 -5.954686588667549e+00 -5.958333046365404e+00 3.958585040422841e+00 4.937646516034256e+00 9.089567954343567e+03 + 33320 9.627652606617650e-01 -5.922546378992930e+00 -5.977160609701055e+00 4.116813023551186e+00 4.803209659300248e+00 9.147047369508411e+03 + 33340 1.043648890054688e+00 -6.022699261668340e+00 -5.995823077411917e+00 3.507025042346800e+00 4.661352251423249e+00 9.204231226798081e+03 + 33360 9.886693739577626e-01 -5.927952557155355e+00 -6.017378443456908e+00 4.080391304704123e+00 4.566894026949426e+00 9.270466778988892e+03 + 33380 1.030282999459966e+00 -5.981660312371774e+00 -6.035355102857128e+00 3.739671987435172e+00 4.431348191226296e+00 9.325900947232032e+03 + 33400 9.585724956057314e-01 -5.871961841891172e+00 -6.032728250702713e+00 4.367790537853402e+00 4.444644939936170e+00 9.317801208201563e+03 + 33420 1.034120923856528e+00 -5.984017443491371e+00 -5.996333748474152e+00 3.807829773424403e+00 4.737107644271239e+00 9.205781613905488e+03 + 33440 1.048007602981950e+00 -6.007554681931542e+00 -6.013371390242893e+00 3.651093302038379e+00 4.617692862781897e+00 9.258098194866563e+03 + 33460 1.025281436380503e+00 -5.978968635064622e+00 -6.002326904348418e+00 3.844122890320267e+00 4.709996093412224e+00 9.224184838056346e+03 + 33480 1.008654787141651e+00 -5.963384638301566e+00 -6.005067213296680e+00 3.897725194996888e+00 4.658377399017311e+00 9.232615981018898e+03 + 33500 1.043549703759146e+00 -6.025804723334518e+00 -5.986243697297672e+00 3.565552409970119e+00 4.792717943522684e+00 9.174862120351141e+03 + 33520 1.075019218641920e+00 -6.084548304003254e+00 -5.968598750113390e+00 3.278772079976358e+00 4.944572361547433e+00 9.120894595833415e+03 + 33540 1.037683292042541e+00 -6.044496868251161e+00 -5.981074654604106e+00 3.505966186134025e+00 4.870146351451260e+00 9.159058568947914e+03 + 33560 1.008884288359768e+00 -6.020600259038438e+00 -6.059701446610946e+00 3.558861216442294e+00 4.334336146511729e+00 9.401245468424922e+03 + 33580 1.002496681654785e+00 -6.037512612137221e+00 -6.022207828024466e+00 3.497792563844871e+00 4.585675002628000e+00 9.285348645016293e+03 + 33600 9.003063210291008e-01 -5.915088595965547e+00 -5.997258177359505e+00 4.159418962453176e+00 4.687588510387440e+00 9.208620415825608e+03 + 33620 9.697104833530661e-01 -6.043527114209985e+00 -5.962125637299414e+00 3.501336464766463e+00 4.968756342024806e+00 9.101148429256535e+03 + 33640 1.021172053329951e+00 -6.144996897148092e+00 -5.999371456175157e+00 2.874312266719389e+00 4.710516084250139e+00 9.215132065020665e+03 + 33660 9.771284416283188e-01 -6.106716036551368e+00 -6.024806496347844e+00 3.078629403783051e+00 4.548966659092061e+00 9.293380994813402e+03 + 33680 9.315271765672908e-01 -6.066301656567071e+00 -6.000972406228986e+00 3.370650019655127e+00 4.745780684765231e+00 9.220057357059735e+03 + 33700 9.149799223153399e-01 -6.066740353394578e+00 -6.013032231260791e+00 3.356354697900811e+00 4.664755046498054e+00 9.257119320489650e+03 + 33720 9.536147634243390e-01 -6.147525539825371e+00 -6.008358057578698e+00 2.879041873907398e+00 4.678163093066074e+00 9.242730512117005e+03 + 33740 9.446118323398265e-01 -6.153514848975169e+00 -5.978850437216445e+00 2.856100580957237e+00 4.859050662506196e+00 9.152247342708759e+03 + 33760 8.696873328093571e-01 -6.057066271272640e+00 -5.971236954037765e+00 3.436951970368221e+00 4.929797191974790e+00 9.128973740177265e+03 + 33780 8.977837393781597e-01 -6.106415495590634e+00 -5.959909518491742e+00 3.085434032899455e+00 4.926694025127979e+00 9.094403925857352e+03 + 33800 9.116251180149476e-01 -6.125743879936487e+00 -5.976118104450610e+00 2.990190659644540e+00 4.849365016998377e+00 9.143886989428755e+03 + 33820 9.211915089663100e-01 -6.124514054143138e+00 -5.984381665339884e+00 3.022640958194752e+00 4.827302820120122e+00 9.169186221904138e+03 + 33840 9.395031302416452e-01 -6.117927466480293e+00 -5.971934640042973e+00 3.095378999414376e+00 4.933692401134344e+00 9.131103561563781e+03 + 33860 9.034655108560102e-01 -6.012697689615202e+00 -6.005282405857484e+00 3.629520463345373e+00 4.672100170193644e+00 9.233283970413788e+03 + 33880 9.851841002401279e-01 -6.078857341753924e+00 -5.982518979467227e+00 3.259475779427306e+00 4.812665563990905e+00 9.163471630765747e+03 + 33900 8.782238873563603e-01 -5.872467032486519e+00 -6.041208365799362e+00 4.415039231505569e+00 4.446100382986288e+00 9.343962803711103e+03 + 33920 9.779863953032754e-01 -5.980663550877299e+00 -6.002331812018170e+00 3.900176342578287e+00 4.775753833954832e+00 9.224174385623191e+03 + 33940 1.040438798829637e+00 -6.041803853397737e+00 -6.010403334294034e+00 3.456441559369241e+00 4.636748199277336e+00 9.249029028270581e+03 + 33960 9.835408149031730e-01 -5.936066409183342e+00 -6.001569346676382e+00 4.072840889867244e+00 4.696712886235391e+00 9.221870964931311e+03 + 33980 1.014788617537240e+00 -5.966583857995999e+00 -5.993212599055729e+00 3.814216995239411e+00 4.661310643290077e+00 9.196229426512591e+03 + 34000 1.003541278664898e+00 -5.936855632147974e+00 -5.966113367574051e+00 4.030090754921023e+00 4.862088310484559e+00 9.113296357197898e+03 + 34020 1.028072314518105e+00 -5.960791744969534e+00 -5.977437536984114e+00 3.883540519233895e+00 4.787957805558190e+00 9.147889898825462e+03 + 34040 1.061819882867355e+00 -5.998046280097934e+00 -6.014960555190786e+00 3.692033646922333e+00 4.594909261863565e+00 9.263026702182857e+03 + 34060 1.022651140574749e+00 -5.932908150676687e+00 -6.040076176865240e+00 4.053582233567334e+00 4.438206842994204e+00 9.340466261775489e+03 + 34080 1.111420145564495e+00 -6.065141173406783e+00 -5.974177590792148e+00 3.346271124841783e+00 4.868598092783932e+00 9.137932328151574e+03 + 34100 1.036121711731233e+00 -5.959047584985695e+00 -6.001690150776374e+00 3.904937134704594e+00 4.660076923018786e+00 9.222227923555181e+03 + 34120 1.035080572945139e+00 -5.968321054388600e+00 -5.934920272068526e+00 3.856790055845723e+00 5.048582516681948e+00 9.018344913922654e+03 + 34140 1.011654007292492e+00 -5.943855928000963e+00 -5.963155359968600e+00 3.979161873077312e+00 4.868341548141695e+00 9.104286076322087e+03 + 34160 1.070506873534731e+00 -6.043939017287849e+00 -6.000457130450219e+00 3.465025204762040e+00 4.714704927783958e+00 9.218461717038124e+03 + 34180 1.033578637200572e+00 -6.010704473709740e+00 -6.049631928451516e+00 3.636457171786251e+00 4.412929702654823e+00 9.370028443056621e+03 + 34200 9.422118436028556e-01 -5.902822048980751e+00 -6.053599804684061e+00 4.187253814154459e+00 4.321464608123763e+00 9.382306440626026e+03 + 34220 9.879468739359611e-01 -5.998254656983296e+00 -6.001232808039214e+00 3.716744770228155e+00 4.699643765997685e+00 9.220847239944535e+03 + 34240 1.035007144365113e+00 -6.100040650839254e+00 -6.019046915003993e+00 3.119198367552936e+00 4.584276932459121e+00 9.275636993379732e+03 + 34260 9.599123272526355e-01 -6.020676892064640e+00 -6.001236758301349e+00 3.628835415191777e+00 4.740463671611567e+00 9.220848746519447e+03 + 34280 9.531672029216303e-01 -6.036186390163556e+00 -5.999465335865843e+00 3.486274279870611e+00 4.697132256212874e+00 9.215405185850168e+03 + 34300 9.460053973363286e-01 -6.045139800534158e+00 -5.961124659042118e+00 3.441467052242184e+00 4.923894995990605e+00 9.098092057911896e+03 + 34320 9.467642020436395e-01 -6.058367851961826e+00 -5.962672668723082e+00 3.397712543812279e+00 4.947209094750898e+00 9.102811040860832e+03 + 34340 9.875530224240409e-01 -6.122769906460754e+00 -5.995670872909958e+00 3.000627584067935e+00 4.730449903228486e+00 9.203774174321561e+03 + 34360 1.016842552975050e+00 -6.167084451398407e+00 -5.966458163194686e+00 2.791824093449569e+00 4.943851287133096e+00 9.114388509397248e+03 + 34380 9.500991951002065e-01 -6.063524588314137e+00 -5.988074387875151e+00 3.345575230824916e+00 4.778821957626361e+00 9.180504968218484e+03 + 34400 9.541609385222664e-01 -6.059918210169195e+00 -5.971892686346856e+00 3.370477882390710e+00 4.875934062084365e+00 9.130981668739203e+03 + 34420 9.295401668140288e-01 -6.006476371811631e+00 -5.965955516001371e+00 3.652323896134907e+00 4.885000920779592e+00 9.112819695429993e+03 + 34440 9.491557202683801e-01 -6.008551081570284e+00 -5.949708340200093e+00 3.622696812264180e+00 4.960580939096615e+00 9.063298706040276e+03 + 34460 1.045867078373231e+00 -6.108720667166840e+00 -5.958919802048690e+00 3.096037627634987e+00 4.956217376752363e+00 9.091382082286247e+03 + 34480 1.045331529189962e+00 -6.054547723980393e+00 -5.965294523924631e+00 3.401745971020905e+00 4.914251657629164e+00 9.110834065222925e+03 + 34500 9.970243812991485e-01 -5.930738117481931e+00 -6.043938719440161e+00 4.006973213322732e+00 4.356957839142039e+00 9.352392822743181e+03 + 34520 1.072690766000264e+00 -6.006614468706598e+00 -5.981062664989095e+00 3.690086868829410e+00 4.836809279904155e+00 9.158970347146302e+03 + 34540 1.028827004273694e+00 -5.918487187630155e+00 -5.993562022106553e+00 4.118588661467624e+00 4.687497344111057e+00 9.197270736654580e+03 + 34560 1.035133149389094e+00 -5.917915145239099e+00 -6.003501888968486e+00 4.092227583634710e+00 4.600775256634780e+00 9.227775834018144e+03 + 34580 1.046563789494169e+00 -5.932226064576133e+00 -5.964394147612981e+00 4.063264086406178e+00 4.878549975613834e+00 9.108061610398918e+03 + 34600 1.073921222392445e+00 -5.973354294487048e+00 -6.054758126852446e+00 3.774612176480133e+00 4.307178773835668e+00 9.385919896722267e+03 + 34620 1.139273786773978e+00 -6.080741538785975e+00 -6.021480827818183e+00 3.245146589460724e+00 4.585430762403169e+00 9.283126141863040e+03 + 34640 9.830795713155516e-01 -5.865708587061977e+00 -6.038716012089068e+00 4.433671606879127e+00 4.440236199561071e+00 9.336267907199725e+03 + 34660 1.056088300295727e+00 -5.993500014412904e+00 -5.967586400374310e+00 3.737237079068778e+00 4.886037060997200e+00 9.117809466216771e+03 + 34680 1.080979169432538e+00 -6.050659064459841e+00 -5.977328820178178e+00 3.429964123070661e+00 4.851037733554604e+00 9.147584629435103e+03 + 34700 9.647861202639074e-01 -5.901398173400184e+00 -6.026425284408602e+00 4.226365742343789e+00 4.508440723050556e+00 9.298331961438809e+03 + 34720 1.002491774161328e+00 -5.981309476389429e+00 -5.990443874283450e+00 3.788824406929170e+00 4.736373280678193e+00 9.187733852020370e+03 + 34740 1.028215143929322e+00 -6.041336532383569e+00 -5.981512003165607e+00 3.461796010575603e+00 4.805317715161125e+00 9.160377243653407e+03 + 34760 1.024945236530417e+00 -6.056658160192340e+00 -5.990323557186668e+00 3.396453691492574e+00 4.777357247197777e+00 9.187351197600054e+03 + 34780 9.778080523122809e-01 -6.007417868038531e+00 -6.014388330119592e+00 3.637030127231559e+00 4.597004655286583e+00 9.261271776712116e+03 + 34800 9.870153980013269e-01 -6.038932289599342e+00 -6.001409950269310e+00 3.498300457324050e+00 4.713759536320340e+00 9.221399168198892e+03 + 34820 9.822646507590398e-01 -6.048635314402544e+00 -6.020882931280021e+00 3.398130551352223e+00 4.557489029909158e+00 9.281260881601213e+03 + 34840 9.541668602630072e-01 -6.022126423342334e+00 -5.958285199122209e+00 3.602733137703586e+00 4.969319326573062e+00 9.089419303117369e+03 + 34860 9.533934197269855e-01 -6.029997067900548e+00 -5.951753830867576e+00 3.483248129134522e+00 4.932532904279650e+00 9.069524662387670e+03 + 34880 9.016191299794400e-01 -5.955693137052450e+00 -5.985759678547641e+00 3.922613299836366e+00 4.749966565788714e+00 9.173309883387104e+03 + 34900 9.652271373706185e-01 -6.045518647026376e+00 -6.008762520124411e+00 3.424680983768814e+00 4.635740352432153e+00 9.243945804485833e+03 + 34920 9.547793947232713e-01 -6.020575907734938e+00 -5.986180018727359e+00 3.660107915435105e+00 4.857614432863243e+00 9.174671919549311e+03 + 34940 9.749913305283587e-01 -6.036304230935364e+00 -5.989584926548906e+00 3.550156281066591e+00 4.818425756642624e+00 9.185078519861650e+03 + 34960 9.546761346725343e-01 -5.983881560295552e+00 -5.994222568795648e+00 3.795462467694266e+00 4.736082796620821e+00 9.199299126174928e+03 + 34980 9.985574021780338e-01 -6.012024315056893e+00 -5.956434416284742e+00 3.631514619030748e+00 4.950720420289471e+00 9.083781568875071e+03 + 35000 9.988082222825961e-01 -5.960777959094782e+00 -6.010849833309306e+00 3.930775215378311e+00 4.643254765041016e+00 9.250367123094447e+03 + 35020 1.093889328252382e+00 -6.046204677809361e+00 -5.963415484501124e+00 3.475377873794278e+00 4.950766233356434e+00 9.105082444248012e+03 + 35040 1.070226101709364e+00 -5.964864765251237e+00 -6.011763347822352e+00 3.918819296178552e+00 4.649520377523009e+00 9.253204350737049e+03 + 35060 1.082816269619288e+00 -5.954003379351628e+00 -6.049641192870213e+00 3.918652692430480e+00 4.369485567302958e+00 9.370080652397730e+03 + 35080 1.110402479809612e+00 -5.982927231733442e+00 -6.015308882503428e+00 3.823265490490503e+00 4.637325040724983e+00 9.264108791326318e+03 + 35100 1.023848398765998e+00 -5.854697393463796e+00 -5.999283982164206e+00 4.497967723105257e+00 4.667729156085214e+00 9.214810376362107e+03 + 35120 1.005384635430524e+00 -5.832981740264931e+00 -5.957234304348768e+00 4.650260299178484e+00 4.936782848186942e+00 9.086179064603110e+03 + 35140 9.973079073832217e-01 -5.825353156976501e+00 -6.008574422284925e+00 4.621871654902588e+00 4.569786796102449e+00 9.243346429929967e+03 + 35160 1.092852797509506e+00 -5.976763060783914e+00 -6.054443989162827e+00 3.803020861250594e+00 4.356964949414060e+00 9.384923307537209e+03 + 35180 1.021955619552017e+00 -5.891148315322929e+00 -6.035133238017371e+00 4.227806729368615e+00 4.401023021662355e+00 9.325233559586004e+03 + 35200 1.040730395486057e+00 -5.944950439406575e+00 -5.989443753104648e+00 4.011950720360010e+00 4.756463227787630e+00 9.184658338122434e+03 + 35220 1.037447360488019e+00 -5.967083516299775e+00 -6.016116789818277e+00 3.935919903911590e+00 4.654363259493800e+00 9.266557591171166e+03 + 35240 1.008068172620725e+00 -5.951218651422489e+00 -6.026979189301763e+00 3.937169271172723e+00 4.502140538764592e+00 9.300066020148992e+03 + 35260 1.023713581610329e+00 -6.001678392079574e+00 -6.017192110890970e+00 3.626562343440797e+00 4.537480169285536e+00 9.269920279462262e+03 + 35280 9.938643080704421e-01 -5.981073794241389e+00 -6.013114929805127e+00 3.848640855809534e+00 4.664655697052849e+00 9.257353421061298e+03 + 35300 9.900922845714374e-01 -5.995461556644762e+00 -6.020352991056877e+00 3.683899506821897e+00 4.540969038490505e+00 9.279656574393110e+03 + 35320 9.758663136855893e-01 -5.990696189990635e+00 -6.032666678593924e+00 3.727932668834004e+00 4.486931628361795e+00 9.317548916293830e+03 + 35340 9.935164877530744e-01 -6.028756119420661e+00 -5.997365387476096e+00 3.530477737149707e+00 4.710728177675472e+00 9.208978033808044e+03 + 35360 9.756047356444162e-01 -6.012623072928546e+00 -6.004216194070210e+00 3.657683865625168e+00 4.705957464990031e+00 9.229987073319466e+03 + 35380 1.005650940098622e+00 -6.061699317933312e+00 -5.994809202670155e+00 3.353307767312916e+00 4.737401160365843e+00 9.201137382807687e+03 + 35400 9.586391170097655e-01 -5.995157698975603e+00 -5.982381258341356e+00 3.732526750489974e+00 4.805891049759616e+00 9.163053789174252e+03 + 35420 9.188099276383979e-01 -5.934802435087092e+00 -6.022375582674369e+00 4.059649763754928e+00 4.556791198407995e+00 9.285859586687768e+03 + 35440 9.908600208540848e-01 -6.038121610833671e+00 -6.012820519175404e+00 3.464682098299358e+00 4.609964881932406e+00 9.256450420728979e+03 + 35460 9.922770690366294e-01 -6.035292021115004e+00 -6.013190461670430e+00 3.507201372763333e+00 4.634111947299351e+00 9.257589046879781e+03 + 35480 9.777379584020841e-01 -6.007593769400861e+00 -5.998471964543963e+00 3.692631555409368e+00 4.745010370492413e+00 9.212357099886816e+03 + 35500 1.009252780578784e+00 -6.046806969919109e+00 -5.998349239404622e+00 3.479730066654630e+00 4.757981854078377e+00 9.211977706847252e+03 + 35520 1.010431697190726e+00 -6.040221148019866e+00 -6.004452087732021e+00 3.494636648075242e+00 4.700028127492238e+00 9.230710031393315e+03 + 35540 9.438364935301815e-01 -5.934506260149205e+00 -6.058849012655848e+00 4.028754001023096e+00 4.314758674151189e+00 9.398571628233138e+03 + 35560 9.294016608656782e-01 -5.904428519310151e+00 -6.048591615886669e+00 4.180240984932514e+00 4.352434175223053e+00 9.366823943293635e+03 + 35580 1.011335770825997e+00 -6.015369111187106e+00 -5.987282560450582e+00 3.631380621780798e+00 4.792657942489602e+00 9.178052562356126e+03 + 35600 9.980861755199431e-01 -5.981933871297517e+00 -6.016931662975134e+00 3.743677729864410e+00 4.542714994160773e+00 9.269091117108210e+03 + 35620 9.695335651944508e-01 -5.923970935327216e+00 -6.051400636479813e+00 4.065310741947913e+00 4.333589678247182e+00 9.375486530262351e+03 + 35640 1.030023966513938e+00 -5.993920476658178e+00 -5.975833889646841e+00 3.754048229882517e+00 4.857904211391906e+00 9.142992185890047e+03 + 35660 1.022148219323836e+00 -5.951442049436960e+00 -5.999127518367678e+00 3.897486807814521e+00 4.623669465911872e+00 9.214324380953527e+03 + 35680 1.068572235567830e+00 -5.972301787278510e+00 -5.997218970742480e+00 3.901914605367373e+00 4.758836281995574e+00 9.208487926697177e+03 + 35700 1.079804879426755e+00 -5.929562480344019e+00 -6.013087375398226e+00 4.067415305795455e+00 4.587802432958459e+00 9.257261204844741e+03 + 35720 1.067525271662049e+00 -5.859320548242229e+00 -6.035438449633805e+00 4.461474172101465e+00 4.450177928153878e+00 9.326154630974424e+03 + 35740 1.177503510637374e+00 -5.984665068734431e+00 -6.043894613082071e+00 3.801952236118859e+00 4.461847026732342e+00 9.352298996913183e+03 + 35760 1.118309569938307e+00 -5.880375185136863e+00 -6.084120338250760e+00 4.305019458845960e+00 4.135083260205417e+00 9.477097737193088e+03 + 35780 1.106707304170611e+00 -5.866060543359131e+00 -6.032444014482957e+00 4.448444631825216e+00 4.493044992873263e+00 9.316923134633735e+03 + 35800 1.068902091967284e+00 -5.826761808240421e+00 -6.023717820787718e+00 4.597922916065560e+00 4.466971013174541e+00 9.289987986152630e+03 + 35820 1.083862856527862e+00 -5.874091391688279e+00 -5.994919978513782e+00 4.349360257419209e+00 4.655543813703789e+00 9.201431601807270e+03 + 35840 1.068649323408186e+00 -5.883652568010217e+00 -6.046794360825059e+00 4.288837038791494e+00 4.352051618337827e+00 9.361225666425580e+03 + 35860 1.085515781845037e+00 -5.948161386695497e+00 -5.981122114368732e+00 3.983666145371292e+00 4.794400546415448e+00 9.159180432604824e+03 + 35880 1.076641550915873e+00 -5.973725792494097e+00 -6.023898121351328e+00 3.855675519536123e+00 4.567578243095102e+00 9.290538284774189e+03 + 35900 1.058622201056142e+00 -5.983074072387935e+00 -5.976668827153423e+00 3.849387889474577e+00 4.886167798819644e+00 9.145559844722255e+03 + 35920 1.022983513172441e+00 -5.958132066067666e+00 -5.991815176159588e+00 3.919413890039747e+00 4.726000259447490e+00 9.191916086124827e+03 + 35940 1.005274640612464e+00 -5.954906791318727e+00 -6.017201718273808e+00 3.909705998552495e+00 4.551998887867629e+00 9.269928392497904e+03 + 35960 1.054066062302821e+00 -6.045642796584606e+00 -5.985156374984065e+00 3.438763229858638e+00 4.786085622932436e+00 9.171542375468603e+03 + 35980 1.025043457471736e+00 -6.019027734401497e+00 -6.008253287712654e+00 3.582035328234987e+00 4.643903868462568e+00 9.242405742687421e+03 + 36000 9.469991034959310e-01 -5.919476574356585e+00 -5.994840960114011e+00 4.109638200478257e+00 4.676884234858114e+00 9.201205196885583e+03 + 36020 9.253167407978832e-01 -5.897127740463791e+00 -6.044904431813987e+00 4.210800876065088e+00 4.362244245963181e+00 9.355398986514649e+03 + 36040 1.063760249045922e+00 -6.112985928425925e+00 -6.033252900981109e+00 3.033368710961339e+00 4.491208093195588e+00 9.319423012581918e+03 + 36060 9.462034689100994e-01 -5.950633568170702e+00 -6.020296948253497e+00 3.972077062729199e+00 4.572059153920562e+00 9.279455403174292e+03 + 36080 9.470136707864261e-01 -5.960729780904304e+00 -6.008417590131972e+00 3.906111441349117e+00 4.632280661099214e+00 9.242901866790779e+03 + 36100 9.791260583853553e-01 -6.015853726150142e+00 -6.053505731758884e+00 3.553856463361247e+00 4.337652820526810e+00 9.382042713827763e+03 + 36120 9.673302969599232e-01 -6.004595483781102e+00 -6.005045495999203e+00 3.679774661846302e+00 4.677190622050805e+00 9.232567734226297e+03 + 36140 9.798724806494594e-01 -6.027173705128885e+00 -6.008658635761039e+00 3.525175365148272e+00 4.631491758656162e+00 9.243659648948407e+03 + 36160 1.018013803386338e+00 -6.085957670157833e+00 -5.964368616744677e+00 3.242169624350631e+00 4.940352784894181e+00 9.108003565868870e+03 + 36180 9.199532743914051e-01 -5.941041736975180e+00 -6.027980249835528e+00 4.017590179102506e+00 4.518375784567001e+00 9.303126167440130e+03 + 36200 9.601741506307546e-01 -5.999971097326202e+00 -6.013114359107571e+00 3.670973268399041e+00 4.595502625337230e+00 9.257347009671292e+03 + 36220 9.366900374853713e-01 -5.960777914286508e+00 -5.956055911707092e+00 3.923156631881503e+00 4.950271101420046e+00 9.082647227843940e+03 + 36240 1.003787143392903e+00 -6.047990050449518e+00 -5.955780252293055e+00 3.444134592919373e+00 4.973617523353933e+00 9.081781566208625e+03 + 36260 1.019450408086629e+00 -6.047102869140272e+00 -5.957123624399629e+00 3.473692768053099e+00 4.990367515596989e+00 9.085899026711197e+03 + 36280 1.008912911877061e+00 -5.998030311872552e+00 -6.012495203242449e+00 3.691160456932757e+00 4.608100812252103e+00 9.255455885139176e+03 + 36300 1.027317492513053e+00 -5.987944285557328e+00 -6.027334793690954e+00 3.737410053389686e+00 4.511223660024974e+00 9.301135690259656e+03 + 36320 1.007435322463438e+00 -5.920567447040622e+00 -5.998054819454167e+00 4.148212760228302e+00 4.703268276697606e+00 9.211077846836617e+03 + 36340 1.041384266950475e+00 -5.933937580132779e+00 -6.062005274957086e+00 3.976256692988390e+00 4.240872170895496e+00 9.408368925867284e+03 + 36360 1.038577717447188e+00 -5.900377486332193e+00 -6.035404257134982e+00 4.219379522291034e+00 4.444034909016168e+00 9.326034931082686e+03 + 36380 1.027635165303362e+00 -5.863634365622748e+00 -6.025862959351761e+00 4.425061521440407e+00 4.493519831454673e+00 9.296559049177473e+03 + 36400 1.092694564370800e+00 -5.949512073503636e+00 -5.988629103821109e+00 3.978156454726325e+00 4.753540413302515e+00 9.182165592466978e+03 + 36420 1.076160104373824e+00 -5.922264304392592e+00 -6.017229122564696e+00 4.124820218124340e+00 4.579517536422005e+00 9.269976409040264e+03 + 36440 1.109224902239323e+00 -5.977803382532806e+00 -5.968906491347829e+00 3.835554131584675e+00 4.886641457558278e+00 9.121845467464289e+03 + 36460 1.017153437084077e+00 -5.856978135324383e+00 -6.015118295904209e+00 4.496313372930866e+00 4.588248098770747e+00 9.263497188949465e+03 + 36480 1.001758401936793e+00 -5.855674026375824e+00 -6.000995120798770e+00 4.426884055702711e+00 4.592427843159474e+00 9.220073615351639e+03 + 36500 1.062386585701779e+00 -5.973878016078698e+00 -5.965820626897673e+00 3.827623130856564e+00 4.873889906410950e+00 9.112404176566622e+03 + 36520 1.004158099795873e+00 -5.919934010618213e+00 -5.947810770068170e+00 4.120657108114059e+00 4.960584441437828e+00 9.057532241153369e+03 + 36540 1.031107183840657e+00 -5.996011134608522e+00 -5.976987878942571e+00 3.712772736963243e+00 4.822007214836431e+00 9.146533926389164e+03 + 36560 1.013348783345776e+00 -6.003443618638320e+00 -6.008269299203942e+00 3.646842351355121e+00 4.619132546775666e+00 9.242449444531534e+03 + 36580 1.023637471100517e+00 -6.049752492855310e+00 -6.017964098217170e+00 3.372719740262267e+00 4.555253621512639e+00 9.272299222787258e+03 + 36600 9.911388511893691e-01 -6.026721421228704e+00 -6.019213250518026e+00 3.542759733688976e+00 4.585872811795351e+00 9.276143433966043e+03 + 36620 9.388314073339610e-01 -5.964629249758816e+00 -6.009197800407183e+00 3.846606497388812e+00 4.590686982604968e+00 9.245317115201131e+03 + 36640 9.892410239936932e-01 -6.048452671360239e+00 -5.978088012644291e+00 3.426332954812942e+00 4.830377714055658e+00 9.149891360476031e+03 + 36660 9.685249106772260e-01 -6.020622305766929e+00 -5.985561151803427e+00 3.570822303494526e+00 4.772148875248996e+00 9.172778389622936e+03 + 36680 1.010353768349187e+00 -6.082119423699378e+00 -5.995901731665164e+00 3.265907294524423e+00 4.760982624329603e+00 9.204467501645866e+03 + 36700 9.929369814400122e-01 -6.053529512494370e+00 -6.015814560122999e+00 3.412199257499764e+00 4.628764350386191e+00 9.265652222452618e+03 + 36720 9.815638666629800e-01 -6.033073085586524e+00 -5.995979540281198e+00 3.487108354908332e+00 4.700105232259105e+00 9.204717859078017e+03 + 36740 9.440800440443918e-01 -5.970034662317654e+00 -5.996908629958850e+00 3.843801465649517e+00 4.689486984720718e+00 9.207556366036944e+03 + 36760 1.042745697690803e+00 -6.108024253896744e+00 -5.996209713552274e+00 3.038001574495076e+00 4.680057968397220e+00 9.205418230219049e+03 + 36780 9.957633898124747e-01 -6.028998058252559e+00 -5.992890673738679e+00 3.526084561776713e+00 4.733418751255105e+00 9.195237345973659e+03 + 36800 9.746658153552706e-01 -5.987638721859334e+00 -5.989712741696943e+00 3.801897942680494e+00 4.789988599819409e+00 9.185489115233251e+03 + 36820 1.020120299852784e+00 -6.042216527209265e+00 -5.967292078758437e+00 3.477473330144547e+00 4.907701107670129e+00 9.116936180300239e+03 + 36840 9.325147699167877e-01 -5.895955002356556e+00 -6.025899799294955e+00 4.302367628931503e+00 4.556204496018880e+00 9.296745005431114e+03 + 36860 1.038314005295628e+00 -6.035804754490004e+00 -6.034652057513815e+00 3.529158945641210e+00 4.535777910057773e+00 9.323746122804187e+03 + 36880 1.046709100672617e+00 -6.033562566381995e+00 -6.016583234993028e+00 3.517812280719391e+00 4.615310229097883e+00 9.268026207642506e+03 + 36900 1.029483705925623e+00 -5.994841661598700e+00 -6.004166198928036e+00 3.765119734793994e+00 4.711576798481457e+00 9.229840221867520e+03 + 36920 1.000892761483184e+00 -5.940005277806385e+00 -5.968804680242806e+00 4.015184794198873e+00 4.849814168715826e+00 9.121518784504793e+03 + 36940 9.978779264057396e-01 -5.920723976133440e+00 -5.990405960415092e+00 4.117457285338670e+00 4.717332548341204e+00 9.187605175114420e+03 + 36960 1.060572874129609e+00 -5.991724750528645e+00 -6.004512551407682e+00 3.754044691118648e+00 4.680615159565429e+00 9.230889930264570e+03 + 36980 1.020614804855683e+00 -5.909714037345507e+00 -5.989635579259693e+00 4.188020469763947e+00 4.729098608274051e+00 9.185225639580369e+03 + 37000 1.063498552066033e+00 -5.949812579818318e+00 -6.003780318304017e+00 3.946841380755090e+00 4.636950274889672e+00 9.228659883519969e+03 + 37020 1.066957842906642e+00 -5.928888427101344e+00 -5.984594505591758e+00 4.074957033450456e+00 4.755084110270713e+00 9.169813782441157e+03 + 37040 1.072413198638437e+00 -5.913906183468791e+00 -6.034835963404108e+00 4.137727267792695e+00 4.443329757581143e+00 9.324275381387082e+03 + 37060 9.724346226052142e-01 -5.742198069001293e+00 -6.074394219149722e+00 5.103258153913807e+00 4.195736452573435e+00 9.446792078109931e+03 + 37080 1.069692260980878e+00 -5.867259247505161e+00 -6.007082431435539e+00 4.399701183628770e+00 4.596814823932756e+00 9.238776199108917e+03 + 37100 1.088252642282031e+00 -5.881452157887193e+00 -6.008527939965528e+00 4.315746147463888e+00 4.586057341856367e+00 9.243228808822323e+03 + 37120 1.109945303056370e+00 -5.907641727310518e+00 -6.016955793186842e+00 4.203696253828905e+00 4.575997971270027e+00 9.269151554284925e+03 + 37140 1.137054275681675e+00 -5.954926419337808e+00 -6.044960770961199e+00 3.915441099224659e+00 4.398449919432264e+00 9.355603369901233e+03 + 37160 1.051547686720398e+00 -5.856090338162340e+00 -6.036515131317701e+00 4.504348180325803e+00 4.468321097381212e+00 9.329458748437484e+03 + 37180 1.034558955250509e+00 -5.871421044793450e+00 -6.020612083259469e+00 4.372477598277098e+00 4.515799568166629e+00 9.280427580970521e+03 + 37200 1.010491664666692e+00 -5.887107946680630e+00 -6.004812984198955e+00 4.313859735941955e+00 4.637979195716045e+00 9.231825494993054e+03 + 37220 9.704658273916356e-01 -5.873088239934580e+00 -6.042552021198706e+00 4.354842161437255e+00 4.381754904983251e+00 9.348118965407544e+03 + 37240 1.022308218589861e+00 -5.989818228837242e+00 -6.039677574637363e+00 3.724716502878204e+00 4.438416423585085e+00 9.339264376117020e+03 + 37260 1.053098718035580e+00 -6.069983066944873e+00 -5.995557648618812e+00 3.319123051782488e+00 4.746485321106997e+00 9.203429766987498e+03 + 37280 9.969880832436468e-01 -6.013190561339985e+00 -5.993158573459707e+00 3.616457204207074e+00 4.731483978555735e+00 9.196068974145035e+03 + 37300 9.828007641409754e-01 -6.010822366556760e+00 -6.061077187094754e+00 3.609244404720950e+00 4.320673448283444e+00 9.405482295376447e+03 + 37320 9.453905084779560e-01 -5.971178266507276e+00 -5.997158524569248e+00 3.871593555571557e+00 4.722410893347771e+00 9.208314152556668e+03 + 37340 9.972783680007371e-01 -6.056792504139715e+00 -5.978784547132979e+00 3.371544728436682e+00 4.819478489261696e+00 9.152023755525401e+03 + 37360 9.320211442997482e-01 -5.964609064911281e+00 -5.989849712121273e+00 3.870072501404250e+00 4.725136799146947e+00 9.185925160801025e+03 + 37380 9.970617086268079e-01 -6.063343636534338e+00 -5.991928495204344e+00 3.345650940515512e+00 4.755727733489742e+00 9.192301035579359e+03 + 37400 9.389656802115530e-01 -5.976164547450313e+00 -5.989083637439140e+00 3.870902010164056e+00 4.796718596225501e+00 9.183533861697588e+03 + 37420 1.051182104198060e+00 -6.138117975735532e+00 -5.969607570783782e+00 2.928365249092907e+00 4.895978071226745e+00 9.123977338862898e+03 + 37440 9.683413596366724e-01 -6.007760098167750e+00 -5.996002273624891e+00 3.622886008857348e+00 4.690401256899914e+00 9.204780681441098e+03 + 37460 9.932046459306464e-01 -6.033908678448235e+00 -6.011443900623002e+00 3.499535627408357e+00 4.628531858093980e+00 9.252214093155080e+03 + 37480 9.743788780481250e-01 -5.992348999502587e+00 -6.003606080597162e+00 3.731284827479192e+00 4.666644925806471e+00 9.228098981979878e+03 + 37500 9.463576468022046e-01 -5.932624804534935e+00 -5.976282426980381e+00 4.057481090697625e+00 4.806792266620634e+00 9.144366629073755e+03 + 37520 1.029464676983669e+00 -6.028650531382762e+00 -5.990444888404923e+00 3.571123276093178e+00 4.790505990376070e+00 9.187728206864074e+03 + 37540 1.019760357308256e+00 -5.982669738697906e+00 -6.046715853824923e+00 3.782104191013707e+00 4.414341486850090e+00 9.361017748233226e+03 + 37560 9.637593874931131e-01 -5.869170189281388e+00 -6.025298666438972e+00 4.397104760086986e+00 4.500590883444386e+00 9.294877796674489e+03 + 37580 1.079064817941273e+00 -6.010232843577590e+00 -6.024930575601261e+00 3.597781270856152e+00 4.513384619109553e+00 9.293730582268236e+03 + 37600 1.058624021014357e+00 -5.950566300423072e+00 -6.019848240641515e+00 3.945144316683233e+00 4.547316694603335e+00 9.278094548923518e+03 + 37620 1.049634170596198e+00 -5.914782646044503e+00 -5.986371725007887e+00 4.147406181875004e+00 4.736330612093089e+00 9.175242645655968e+03 + 37640 1.010041906114624e+00 -5.837917573922287e+00 -5.986902468445683e+00 4.575189775363658e+00 4.719695455672406e+00 9.176864296274398e+03 + 37660 1.086785996966676e+00 -5.936666132118446e+00 -6.000872376273508e+00 3.991411897583340e+00 4.622729707760802e+00 9.219703776299279e+03 + 37680 1.072880583592900e+00 -5.904384067424568e+00 -6.008579240036518e+00 4.199561375287123e+00 4.601256569998461e+00 9.243390965748691e+03 + 37700 1.065278444171610e+00 -5.888976332814567e+00 -6.037370294411526e+00 4.253316097391321e+00 4.401215006010246e+00 9.332127133109751e+03 + 37720 1.125131948018061e+00 -5.984476557450947e+00 -5.988939340973119e+00 3.800909835287828e+00 4.775283841689997e+00 9.183150180013432e+03 + 37740 1.038777133608582e+00 -5.879738653523186e+00 -6.052636750324194e+00 4.345037766064917e+00 4.352230138339519e+00 9.379342047683953e+03 + 37760 1.042733524542589e+00 -5.932769680208250e+00 -6.009941109309611e+00 4.016101779184198e+00 4.572971491044128e+00 9.247599875630176e+03 + 37780 9.540272522313293e-01 -5.865695268633773e+00 -6.101312000327191e+00 4.333202806523365e+00 3.980255071568371e+00 9.530646559765943e+03 + 37800 9.993011443796153e-01 -5.994271600356052e+00 -5.996065192090004e+00 3.736500197303624e+00 4.726201116009853e+00 9.204982624290033e+03 + 37820 9.635613495809030e-01 -5.984341516538412e+00 -6.034062855002272e+00 3.802384452614481e+00 4.516876832802735e+00 9.321894724833615e+03 + 37840 1.029337179552017e+00 -6.112869493110333e+00 -5.981459966974206e+00 3.081791557068172e+00 4.836365391700262e+00 9.160218293005433e+03 + 37860 9.585264584072239e-01 -6.028974728047388e+00 -5.956404927849636e+00 3.607913094407523e+00 5.024620117283300e+00 9.083692220656785e+03 + 37880 9.806848068836048e-01 -6.073385225165461e+00 -5.973832082975778e+00 3.312656132813135e+00 4.884305681065261e+00 9.136901817291855e+03 + 37900 9.748138239425553e-01 -6.070853019649356e+00 -5.990679649763575e+00 3.332629997623691e+00 4.792997894296732e+00 9.188463886963862e+03 + 37920 9.354842708286520e-01 -6.013626471806401e+00 -5.994563847219695e+00 3.659879478510688e+00 4.769340018819179e+00 9.200372424410267e+03 + 37940 9.841659141307527e-01 -6.082980297693998e+00 -5.984187268482114e+00 3.245636898626369e+00 4.812921760532866e+00 9.168578151312488e+03 + 37960 9.944604555413064e-01 -6.091281145598497e+00 -5.952564155378687e+00 3.199553737187124e+00 4.996088161414130e+00 9.072014468664474e+03 + 37980 9.795196924185924e-01 -6.057776286314744e+00 -5.971372579378203e+00 3.365406487466867e+00 4.861549943626921e+00 9.129374465926923e+03 + 38000 9.640605116855607e-01 -6.017319287734059e+00 -5.987959543007893e+00 3.570219292637590e+00 4.738807490261050e+00 9.180115701533929e+03 + 38020 1.021835277302069e+00 -6.078693022146584e+00 -5.949697447934095e+00 3.337001647125192e+00 5.077714196253898e+00 9.063274997581557e+03 + 38040 1.006719919383688e+00 -6.028958058208554e+00 -6.019901507967170e+00 3.463734093904660e+00 4.515738206887308e+00 9.278247071175309e+03 + 38060 1.032967704459175e+00 -6.041158991488864e+00 -6.000277954244529e+00 3.406253812837620e+00 4.640999055014658e+00 9.217897283462033e+03 + 38080 1.035288996199639e+00 -6.015776891858948e+00 -6.020922479038632e+00 3.562921244374011e+00 4.533374486511224e+00 9.281406890803950e+03 + 38100 1.056773709946216e+00 -6.025298100808695e+00 -5.979827321864734e+00 3.499243072123046e+00 4.760343321399565e+00 9.155239201545475e+03 + 38120 1.012747089278223e+00 -5.939629921724203e+00 -5.988215603113519e+00 3.991194929358072e+00 4.712208428210725e+00 9.180887063372575e+03 + 38140 9.766899188346450e-01 -5.866645924608112e+00 -6.047683006396601e+00 4.433770308415204e+00 4.394227369387838e+00 9.363990947070948e+03 + 38160 1.035749318856684e+00 -5.940657631699608e+00 -6.047459797644496e+00 3.951717201888584e+00 4.338442637451270e+00 9.363307081800023e+03 + 38180 1.056478292811039e+00 -5.962026565804096e+00 -6.058292884436681e+00 3.874454668919274e+00 4.321678570166306e+00 9.396854727274474e+03 + 38200 1.065328443088989e+00 -5.973440850762021e+00 -6.037432385787684e+00 3.869678440756886e+00 4.502229143981487e+00 9.332327674353362e+03 + 38220 1.095959747578653e+00 -6.027619485815262e+00 -5.974159855170043e+00 3.551839210803622e+00 4.858812682819578e+00 9.137891632020428e+03 + 38240 1.041418799791749e+00 -5.958751931039609e+00 -6.008562606687699e+00 3.882428806307043e+00 4.596408198558567e+00 9.243342336606911e+03 + 38260 9.903460184909346e-01 -5.905075470209611e+00 -6.001906377909831e+00 4.277189744159413e+00 4.721171687610207e+00 9.222865478411999e+03 + 38280 1.049229554007123e+00 -6.025809228222528e+00 -5.991580259089500e+00 3.557219184443029e+00 4.753767222120731e+00 9.191208427737691e+03 + 38300 1.042249188940319e+00 -6.061853478364874e+00 -5.983349518636856e+00 3.375331227340291e+00 4.826113112547078e+00 9.166013951438947e+03 + 38320 9.804692472573904e-01 -6.027373814995372e+00 -6.027852745251966e+00 3.549248913049061e+00 4.546498821401480e+00 9.302765189436655e+03 + 38340 1.020526455475971e+00 -6.142404304572307e+00 -5.966191154982407e+00 2.961979400981443e+00 4.973822574823421e+00 9.113556917435084e+03 + 38360 8.757501530683552e-01 -5.964791220746406e+00 -6.007851908018575e+00 3.921917133021162e+00 4.674656003084547e+00 9.241147267809685e+03 + 38380 1.014386960926706e+00 -6.189994765403801e+00 -5.958512986661701e+00 2.700392092752113e+00 5.029596287978739e+00 9.090130698572895e+03 + 38400 9.741505427094335e-01 -6.139454618133501e+00 -5.995174313531401e+00 2.952384682564291e+00 4.780864518894523e+00 9.202258134155436e+03 + 38420 9.178383663327556e-01 -6.056173297264013e+00 -6.038563935204233e+00 3.370037802389283e+00 4.471153484376508e+00 9.335815873330142e+03 + 38440 9.660798290647075e-01 -6.122746459621165e+00 -5.952624466992464e+00 3.069609241525943e+00 5.046476049493227e+00 9.072213224591220e+03 + 38460 8.941276397175144e-01 -6.004916744229828e+00 -6.038695057446024e+00 3.650026861084997e+00 4.456066559420523e+00 9.336202411511011e+03 + 38480 9.590511972019018e-01 -6.086299134023183e+00 -5.956288567146298e+00 3.233591437276432e+00 4.980132231353709e+00 9.083356525985839e+03 + 38500 9.808137398562464e-01 -6.096300315424232e+00 -6.001436369703134e+00 3.142011176035825e+00 4.686734632514524e+00 9.221481043490152e+03 + 38520 9.470475414890694e-01 -6.022003688315913e+00 -6.008821652154815e+00 3.546714609775174e+00 4.622407901325703e+00 9.244163146861787e+03 + 38540 8.979910490866605e-01 -5.922716639429476e+00 -6.011549965258234e+00 4.124077522866069e+00 4.613982819044597e+00 9.252553429806527e+03 + 38560 9.822519683329478e-01 -6.018221852623853e+00 -6.000393375755474e+00 3.591195714037190e+00 4.693569587163304e+00 9.218248843953228e+03 + 38580 1.020195564083564e+00 -6.048023162650294e+00 -5.982181545445737e+00 3.473581614695710e+00 4.851654369641611e+00 9.162434121071794e+03 + 38600 1.016672190889011e+00 -6.018825818600789e+00 -6.004562180396553e+00 3.560122758417391e+00 4.642026776276994e+00 9.231055685264831e+03 + 38620 9.788637207884947e-01 -5.944082329069713e+00 -5.978546396084853e+00 4.004506388353497e+00 4.806608382255429e+00 9.151272916656440e+03 + 38640 1.022760636824238e+00 -5.991772071073707e+00 -5.999616008160028e+00 3.724188918535313e+00 4.679147817940319e+00 9.215854555616381e+03 + 38660 1.051987784629127e+00 -6.019803839777429e+00 -5.983713429011041e+00 3.554056646826878e+00 4.761293370420498e+00 9.167132894182520e+03 + 38680 9.937590407807773e-01 -5.923200270323641e+00 -6.022900520730115e+00 4.089548593364839e+00 4.517054326966980e+00 9.287485596498309e+03 + 38700 1.105400362223100e+00 -6.081776224412954e+00 -5.949163000213135e+00 3.271911365921864e+00 5.033397021107344e+00 9.061653544182695e+03 + 38720 1.000681729998259e+00 -5.925361087549207e+00 -5.931049430065848e+00 4.098136808460798e+00 5.065473465462088e+00 9.006570703996667e+03 + 38740 1.038303294408498e+00 -5.979743501602742e+00 -5.955649214892404e+00 3.786347936365337e+00 4.924701059234921e+00 9.081380401207272e+03 + 38760 1.025683746007467e+00 -5.960471464374852e+00 -5.979271002583659e+00 3.912005778051594e+00 4.804055920437485e+00 9.153515123909532e+03 + 38780 1.065620323959801e+00 -6.019787144573454e+00 -5.979811917951924e+00 3.603433338758796e+00 4.832977276165947e+00 9.155178913945963e+03 + 38800 1.021998117205142e+00 -5.959712051057958e+00 -5.983490804113859e+00 3.937850150815656e+00 4.801308871018533e+00 9.166429036710661e+03 + 38820 9.848206722736876e-01 -5.914002061146652e+00 -5.968436924350276e+00 4.195079521344034e+00 4.882506113060970e+00 9.120350824833182e+03 + 38840 1.053222969995634e+00 -6.026875800413981e+00 -5.947864776244163e+00 3.592229304457855e+00 5.045922832157421e+00 9.057660653946694e+03 + 38860 9.760454320992497e-01 -5.926862998175616e+00 -5.963997752893302e+00 4.092972224379775e+00 4.879738716206099e+00 9.106841184894385e+03 + 38880 9.970214046606397e-01 -5.980820352998998e+00 -5.948177980541577e+00 3.829248764767611e+00 5.016686318808933e+00 9.058632343142499e+03 + 38900 1.028101329165235e+00 -6.060730868488148e+00 -5.987621425174390e+00 3.349821254424039e+00 4.769626991581431e+00 9.179057525121996e+03 + 38920 9.933189028402222e-01 -6.057663128644664e+00 -5.989232698623153e+00 3.409773734754015e+00 4.802711853512347e+00 9.183993118901477e+03 + 38940 9.588096271084245e-01 -6.058153157581030e+00 -5.960387461251721e+00 3.434713556687515e+00 4.996099314203017e+00 9.095795402896994e+03 + 38960 9.622207800536898e-01 -6.104379207360369e+00 -5.984971986641799e+00 3.097000135368199e+00 4.782654874941910e+00 9.170988203856945e+03 + 38980 9.107191156295875e-01 -6.057175180380285e+00 -6.041293174271008e+00 3.348150916853961e+00 4.439347853665933e+00 9.344268588865301e+03 + 39000 8.843498953653842e-01 -6.036678282372120e+00 -5.994931391873539e+00 3.566137426151975e+00 4.805854531705252e+00 9.201501000642047e+03 + 39020 8.807084329389108e-01 -6.038133376976080e+00 -6.011490990234666e+00 3.491662997138375e+00 4.644647704703596e+00 9.252378846374811e+03 + 39040 9.429141731722245e-01 -6.128645760158147e+00 -6.009835809617963e+00 3.042021793251330e+00 4.724246915033495e+00 9.247287781177822e+03 + 39060 9.232649508707361e-01 -6.091109221204396e+00 -6.032520672218390e+00 3.153835101751679e+00 4.490259616577981e+00 9.317186508548393e+03 + 39080 8.995270084694442e-01 -6.040110882598132e+00 -6.033066697235525e+00 3.499235614277644e+00 4.539684416713894e+00 9.318853334935697e+03 + 39100 9.812587614675191e-01 -6.139782340106682e+00 -6.004653662853449e+00 2.982407114870380e+00 4.758336890753670e+00 9.231368400493760e+03 + 39120 9.185528354805470e-01 -6.019609794505775e+00 -6.014442173115354e+00 3.553545038453187e+00 4.583218320163809e+00 9.261453921138580e+03 + 39140 9.226865778789355e-01 -5.997198600032333e+00 -5.977898979175070e+00 3.701008755732990e+00 4.811830165302070e+00 9.149294475404151e+03 + 39160 9.729352097797668e-01 -6.038208995748999e+00 -5.933578719326255e+00 3.495738552406443e+00 5.096541791108784e+00 9.014279714936392e+03 + 39180 9.311913000134393e-01 -5.943567662140037e+00 -5.987478128353436e+00 3.978626492315045e+00 4.726485800195024e+00 9.178637369580980e+03 + 39200 9.907148236196481e-01 -6.003979989140380e+00 -5.972048431453313e+00 3.648399205885624e+00 4.831755151517351e+00 9.131435198473504e+03 + 39220 1.073350226062492e+00 -6.105369332779104e+00 -5.979074192729880e+00 3.142022819266813e+00 4.867229057539218e+00 9.152931381644012e+03 + 39240 9.944313908150976e-01 -5.972853290450649e+00 -6.041230226496742e+00 3.866258635603583e+00 4.473627687530260e+00 9.344047679163938e+03 + 39260 9.904329105390487e-01 -5.958348392062888e+00 -6.014779984067884e+00 3.957087725630083e+00 4.633048791576758e+00 9.262472514776478e+03 + 39280 9.726268936386264e-01 -5.925647256107871e+00 -6.026544821419950e+00 4.097924999569475e+00 4.518555565699747e+00 9.298708776961350e+03 + 39300 1.002499795071449e+00 -5.966035471560161e+00 -5.992942716339940e+00 3.877471068799497e+00 4.722965505391333e+00 9.195380138970957e+03 + 39320 1.036573720028364e+00 -6.013409302754511e+00 -5.991192969125257e+00 3.609637605461713e+00 4.737207231127410e+00 9.190022879512873e+03 + 39340 9.807419403461997e-01 -5.929754619874904e+00 -6.027393407495659e+00 4.056071853024513e+00 4.495414824952589e+00 9.301317341157703e+03 + 39360 1.023802874458156e+00 -5.995326723078620e+00 -5.988054673493313e+00 3.727169091497216e+00 4.768926325562087e+00 9.180400163338274e+03 + 39380 1.005939640869309e+00 -5.971650634765179e+00 -5.999707214061928e+00 3.861518388047257e+00 4.700413167983712e+00 9.216125383113687e+03 + 39400 9.880525123649185e-01 -5.947962445017727e+00 -6.007943691607447e+00 3.998674439950886e+00 4.654252839964803e+00 9.241431844414092e+03 + 39420 9.907597136753317e-01 -5.956011757610961e+00 -6.033376766251378e+00 3.966265081136532e+00 4.522023229326868e+00 9.319794342463985e+03 + 39440 1.050728315363402e+00 -6.051606731809495e+00 -6.044608136206699e+00 3.416334126721120e+00 4.456521145701544e+00 9.354503072434662e+03 + 39460 1.039847052814568e+00 -6.049125316879459e+00 -6.002058989262358e+00 3.473020773257415e+00 4.743282909925465e+00 9.223390224339159e+03 + 39480 9.758483665069315e-01 -5.972655203185886e+00 -5.986327905328805e+00 3.819961252265296e+00 4.741450480716836e+00 9.175139237556987e+03 + 39500 1.006148368924944e+00 -6.040779400875048e+00 -5.976563242474391e+00 3.511534874945101e+00 4.880273993900071e+00 9.145244485126963e+03 + 39520 9.924570273829869e-01 -6.047919963501973e+00 -5.979960249184792e+00 3.433707854942617e+00 4.823943051283670e+00 9.155620363190474e+03 + 39540 1.017920593940073e+00 -6.116824903692079e+00 -5.942298194355336e+00 3.061031270040167e+00 5.063190642972726e+00 9.040780496116664e+03 + 39560 1.070193654308486e+00 -6.228473099808900e+00 -5.933014514648035e+00 2.515797774728675e+00 5.212366692790646e+00 9.012563585149952e+03 + 39580 9.617222114592462e-01 -6.100606765945614e+00 -5.990311362315667e+00 3.159369866545819e+00 4.792703142347525e+00 9.187327682143981e+03 + 39600 9.163249070380618e-01 -6.062236799919788e+00 -5.981423709077161e+00 3.399492256158327e+00 4.863533529562082e+00 9.160121617322242e+03 + 39620 8.942759924080836e-01 -6.051631448091086e+00 -6.000378450325121e+00 3.366736342289075e+00 4.661038986837019e+00 9.218221912736899e+03 + 39640 9.376053002925989e-01 -6.128918751111820e+00 -5.971695238641911e+00 2.987744492314121e+00 4.890546231176264e+00 9.130374488815794e+03 + 39660 9.348550128163947e-01 -6.129262867731251e+00 -5.943870876034629e+00 3.002734815441156e+00 5.067284321081155e+00 9.045566415151554e+03 + 39680 9.208545632214954e-01 -6.103695827894734e+00 -5.981330555284785e+00 3.144796991399735e+00 4.847437322690800e+00 9.159832003279722e+03 + 39700 9.109708295295589e-01 -6.074507851760340e+00 -5.984811615790004e+00 3.331808293326611e+00 4.846857960715940e+00 9.170471593457387e+03 + 39720 9.399971975630078e-01 -6.090838449451317e+00 -5.985948473354661e+00 3.234504875932525e+00 4.836799350350867e+00 9.173947166776168e+03 + 39740 8.667824729432793e-01 -5.938741049923375e+00 -5.993301069544156e+00 4.059358619593164e+00 4.746066543794891e+00 9.196502541863843e+03 + 39760 9.450618192780360e-01 -5.999623301824166e+00 -6.013575913030403e+00 3.695476470611384e+00 4.615358417905570e+00 9.258790163075570e+03 + 39780 9.701117232041475e-01 -5.984872733836295e+00 -6.012802084586447e+00 3.799756322529606e+00 4.639381668469170e+00 9.256393345509832e+03 + 39800 1.027996640768625e+00 -6.036748202117971e+00 -6.009056265658097e+00 3.482721012168093e+00 4.641732396634005e+00 9.244853437597214e+03 + 39820 9.805686985113743e-01 -5.946467549851589e+00 -6.026038573397098e+00 3.935850633433817e+00 4.478941502659407e+00 9.297165642116028e+03 + 39840 9.965247686932118e-01 -5.957649846374284e+00 -6.031783929496092e+00 3.994718936564067e+00 4.569029559066356e+00 9.314882514982413e+03 + 39860 1.098889613947990e+00 -6.102851323129457e+00 -5.963769867553003e+00 3.133574109342793e+00 4.932201350048484e+00 9.106181351213840e+03 + 39880 9.529349863291990e-01 -5.882496782098813e+00 -6.000865472388631e+00 4.332897595346281e+00 4.653206258206519e+00 9.219692826622490e+03 + 39900 1.014536953384891e+00 -5.970822125283486e+00 -6.011474558318290e+00 3.846900344196487e+00 4.613467782766962e+00 9.252283383154687e+03 + 39920 1.044740501614759e+00 -6.015599992022821e+00 -5.998887836913561e+00 3.581176242849479e+00 4.677140023684499e+00 9.213636216578274e+03 + 39940 1.016780437384348e+00 -5.976464028332214e+00 -5.991437291837746e+00 3.855661462186397e+00 4.769682666032590e+00 9.190776519743937e+03 + 39960 9.574596819710188e-01 -5.890831697210911e+00 -6.051404174262117e+00 4.245960947749993e+00 4.323928936011455e+00 9.375533642191791e+03 + 39980 1.045790408112205e+00 -6.028360175607633e+00 -6.003468576046304e+00 3.551263383793567e+00 4.694194800437302e+00 9.227698632133599e+03 + 40000 9.741345840101885e-01 -5.929992831724750e+00 -6.049799712130667e+00 4.086552795374923e+00 4.398603148029323e+00 9.370550399657091e+03 + 40020 1.040210623896662e+00 -6.039899795855032e+00 -6.018157346159612e+00 3.459097311442175e+00 4.583945822226495e+00 9.272887069653760e+03 + 40040 1.020698200321952e+00 -6.027483894143026e+00 -6.010318605753610e+00 3.531640523771552e+00 4.630206266023372e+00 9.248754061491536e+03 + 40060 9.492470417453232e-01 -5.940453352305340e+00 -5.986882022133473e+00 4.043960873340011e+00 4.777360266373438e+00 9.176750566893264e+03 + 40080 9.785054728284677e-01 -6.001710284796872e+00 -5.963069854243915e+00 3.688991572569921e+00 4.910870904392302e+00 9.104010755658346e+03 + 40100 1.002958422460763e+00 -6.053477042883676e+00 -6.002553232742580e+00 3.377352219779730e+00 4.669764618044061e+00 9.224869170448288e+03 + 40120 9.919787329060643e-01 -6.053080618855446e+00 -6.004503990098579e+00 3.414146918403534e+00 4.693081437934465e+00 9.230894993402258e+03 + 40140 9.116349767803236e-01 -5.951301951433242e+00 -6.026256839113415e+00 3.958120818265929e+00 4.527718253974994e+00 9.297843632149767e+03 + 40160 1.041667690856513e+00 -6.161613604685736e+00 -5.984660692843851e+00 2.811159140626263e+00 4.827250143796979e+00 9.170036754841271e+03 + 40180 9.279449269122680e-01 -6.009872995489977e+00 -5.971121649257267e+00 3.626295052350694e+00 4.848811279170363e+00 9.128622385284772e+03 + 40200 9.027587897634652e-01 -5.986145524972250e+00 -5.977529942617300e+00 3.761031308649730e+00 4.810503315788916e+00 9.148181011384509e+03 + 40220 9.530370159009197e-01 -6.070032142865107e+00 -5.957533864408089e+00 3.314291787812413e+00 4.960274311764938e+00 9.087138817820060e+03 + 40240 9.229133898976317e-01 -6.029878463996480e+00 -5.978700066947503e+00 3.540904936885112e+00 4.834779212571685e+00 9.151763591985769e+03 + 40260 9.290888404222283e-01 -6.037343343263341e+00 -5.956585391000640e+00 3.517195977903119e+00 4.980920637048269e+00 9.084201159144770e+03 + 40280 9.030571820890358e-01 -5.986542495218476e+00 -5.975850353974850e+00 3.742600719745334e+00 4.803996649369749e+00 9.143046678735356e+03 + 40300 1.035596913650094e+00 -6.158250188609495e+00 -5.983623300194167e+00 2.879345310608075e+00 4.882079927312534e+00 9.166846650436422e+03 + 40320 9.166878462214648e-01 -5.946732971150927e+00 -6.040106841815330e+00 3.939066026017316e+00 4.402898811102529e+00 9.340584651796549e+03 + 40340 9.749463824094581e-01 -5.993254330888436e+00 -5.994370851750487e+00 3.747817807406775e+00 4.741406571835835e+00 9.199758576879532e+03 + 40360 9.590584323957710e-01 -5.923992492968304e+00 -6.040065278941563e+00 4.095706403595697e+00 4.429198504331663e+00 9.340438824704721e+03 + 40380 1.028826260755825e+00 -5.986037670006086e+00 -6.025009508595312e+00 3.734797633628695e+00 4.511015305576825e+00 9.293987272241686e+03 + 40400 1.047129429055782e+00 -5.981887222034230e+00 -6.001805844998716e+00 3.864269665144129e+00 4.749893849685111e+00 9.222595492114366e+03 + 40420 1.024936145618428e+00 -5.927712138512521e+00 -6.022413023007136e+00 4.066213960721994e+00 4.522426827039402e+00 9.285985331539670e+03 + 40440 1.040011380881880e+00 -5.937603852945039e+00 -6.058329407771868e+00 4.003730971584696e+00 4.310506153549814e+00 9.396973440386744e+03 + 40460 1.063358061236139e+00 -5.967117911197093e+00 -6.031000258993130e+00 3.874312217890252e+00 4.507489891084035e+00 9.312455323571798e+03 + 40480 1.005765398461269e+00 -5.884196933472519e+00 -6.059689507741084e+00 4.310738974788758e+00 4.303033455950563e+00 9.401185726117097e+03 + 40500 1.077880801348800e+00 -5.999501815647682e+00 -6.044316232218611e+00 3.675912872368227e+00 4.418581557409405e+00 9.353588476160527e+03 + 40520 1.048005738274845e+00 -5.969477682873915e+00 -6.028412384338621e+00 3.881600074645810e+00 4.543187898719896e+00 9.304470720391892e+03 + 40540 1.040046948802218e+00 -5.976548961225775e+00 -6.043524966740740e+00 3.819992556577348e+00 4.435405968407060e+00 9.351132284585299e+03 + 40560 1.032907837436813e+00 -5.991693547359715e+00 -6.008923162108377e+00 3.763638524589354e+00 4.664703410428275e+00 9.244457811689439e+03 + 40580 9.551630611865963e-01 -5.905708251472383e+00 -5.977781200499306e+00 4.251307522045988e+00 4.837453495480580e+00 9.148901838229554e+03 + 40600 9.740242032054918e-01 -5.959106898919769e+00 -5.934513775275332e+00 3.926460861241041e+00 5.067678382980982e+00 9.017063655875021e+03 + 40620 1.034795425159255e+00 -6.067920091621085e+00 -5.949576613294319e+00 3.338043775433361e+00 5.017590341579737e+00 9.062869854771598e+03 + 40640 9.452952832570776e-01 -5.949922055275802e+00 -6.002132531060594e+00 3.973007306802757e+00 4.673206675301466e+00 9.223592368966581e+03 + 40660 9.807646660918888e-01 -6.015319291928376e+00 -5.998109403782946e+00 3.684662071179500e+00 4.783483912132144e+00 9.211230306708607e+03 + 40680 1.020995491726221e+00 -6.086808339611107e+00 -5.941977777821353e+00 3.258864407722225e+00 5.090503905975998e+00 9.039787644926577e+03 + 40700 9.974603408610261e-01 -6.060087627243324e+00 -5.987096006972180e+00 3.352064271882093e+00 4.771193450895733e+00 9.177485960536271e+03 + 40720 9.803795970916349e-01 -6.040944804077452e+00 -5.971389572887560e+00 3.529653894648914e+00 4.929050795778517e+00 9.129418935201054e+03 + 40740 9.118432513813673e-01 -5.941477614153066e+00 -5.980471805111281e+00 3.976294523507797e+00 4.752383844694175e+00 9.157189119726150e+03 + 40760 9.684165603282514e-01 -6.022229123631138e+00 -6.014594327166607e+00 3.537034676219550e+00 4.580874858999822e+00 9.261887647158619e+03 + 40780 9.529141168747349e-01 -5.991649339457775e+00 -6.006614465990598e+00 3.715952256075977e+00 4.630020183678655e+00 9.237367282276446e+03 + 40800 1.013475736724652e+00 -6.069130075709661e+00 -5.963848101039874e+00 3.348157275324611e+00 4.952702666211454e+00 9.106400197517987e+03 + 40820 1.014815605814441e+00 -6.048153060003267e+00 -5.963593174742585e+00 3.434145826276228e+00 4.919701773043020e+00 9.105633707519333e+03 + 40840 9.987394924144332e-01 -5.981814465767969e+00 -5.972370847466655e+00 3.848305452492535e+00 4.902532170173892e+00 9.132412851664709e+03 + 40860 1.033418355161952e+00 -5.966437551467926e+00 -5.991426250749475e+00 3.904516332416921e+00 4.761027354153550e+00 9.190746669302864e+03 + 40880 1.095512368017054e+00 -5.986027509444446e+00 -6.000158936324187e+00 3.742917316303431e+00 4.661772476328718e+00 9.217530116219299e+03 + 40900 1.047969710199426e+00 -5.863556659442547e+00 -6.015840849112379e+00 4.372057594999420e+00 4.497618212013051e+00 9.265710341470240e+03 + 40920 1.115989019117634e+00 -5.934205180036801e+00 -5.994773170810985e+00 4.078884880438856e+00 4.731094104547207e+00 9.201013623195273e+03 + 40940 1.067937835088060e+00 -5.849325196957891e+00 -6.077504209650836e+00 4.487604909055843e+00 4.177365707584858e+00 9.456503970823165e+03 + 40960 1.111302668504833e+00 -5.918498085989634e+00 -6.027721406519253e+00 4.128736504706641e+00 4.501559295971342e+00 9.302325401517686e+03 + 40980 1.004516417483344e+00 -5.773757546618644e+00 -6.033477491413037e+00 4.892918739867220e+00 4.401566625326254e+00 9.320096103543334e+03 + 41000 1.100312739072060e+00 -5.939163186913871e+00 -6.005619031686248e+00 4.065915162142243e+00 4.684315417450513e+00 9.234284639851356e+03 + 41020 1.117781793298070e+00 -5.993022707493547e+00 -6.040572895349359e+00 3.704148939129564e+00 4.431108402093703e+00 9.342030204500930e+03 + 41040 1.043227019909882e+00 -5.922639316386790e+00 -6.012588414784370e+00 4.119456131491478e+00 4.602954488914587e+00 9.255730939667679e+03 + 41060 9.649837032490974e-01 -5.845927083350358e+00 -6.008978190439571e+00 4.570384795957023e+00 4.634120106973490e+00 9.244602924219469e+03 + 41080 9.943917247604555e-01 -5.921690315801159e+00 -5.982755623067029e+00 4.125993871630752e+00 4.775347427484367e+00 9.164182880408296e+03 + 41100 1.087044340047338e+00 -6.086910597388145e+00 -6.028765419625411e+00 3.232790166958651e+00 4.566668775609447e+00 9.305550131344269e+03 + 41120 1.044395312067427e+00 -6.053691666966476e+00 -6.018742012903464e+00 3.382634075055759e+00 4.583320397127064e+00 9.274681219268139e+03 + 41140 1.018081845567299e+00 -6.040563563718770e+00 -5.991918129006105e+00 3.468534372494817e+00 4.747863986471634e+00 9.192248244558763e+03 + 41160 1.048266220355502e+00 -6.105585600521126e+00 -5.974446557198501e+00 3.157505808925461e+00 4.910526489385337e+00 9.138758064643944e+03 + 41180 9.552162332859526e-01 -5.983167812335538e+00 -5.957370601731499e+00 3.845474119907895e+00 4.993605695301726e+00 9.086651671355257e+03 + 41200 9.858948826664378e-01 -6.038456129043190e+00 -6.019115562937681e+00 3.470036018064547e+00 4.581092541585312e+00 9.275826716647505e+03 + 41220 9.751075664419505e-01 -6.031147448972682e+00 -6.046307952822344e+00 3.507362355847183e+00 4.420308396662035e+00 9.359759121565199e+03 + 41240 9.889913671098797e-01 -6.059266512793748e+00 -6.005587318866687e+00 3.356534808027669e+00 4.664769046385268e+00 9.234215192889671e+03 + 41260 9.495010426217806e-01 -6.004977962553616e+00 -6.004030371672636e+00 3.691131073788025e+00 4.696572287265827e+00 9.229421019883268e+03 + 41280 9.754017267026011e-01 -6.045121044590489e+00 -5.961617752682861e+00 3.473153726050506e+00 4.952642550276768e+00 9.099596412348541e+03 + 41300 9.657990250682423e-01 -6.026734062506521e+00 -6.015011430981524e+00 3.520299162466405e+00 4.587612326754305e+00 9.263202156452155e+03 + 41320 1.000056693942888e+00 -6.068124615696912e+00 -6.039374839904057e+00 3.265267140333068e+00 4.430352801949066e+00 9.338316051132173e+03 + 41340 1.026257524849330e+00 -6.096906946763355e+00 -5.975488058171505e+00 3.207823741730236e+00 4.905029789536917e+00 9.141969834784184e+03 + 41360 9.117056277924337e-01 -5.912576534673981e+00 -6.038490653175799e+00 4.163131448524815e+00 4.440113094940513e+00 9.335580537785239e+03 + 41380 1.039570834681165e+00 -6.081010148434698e+00 -5.960364298502459e+00 3.282616321799394e+00 4.975383461995248e+00 9.095782332941602e+03 + 41400 9.792152923796641e-01 -5.959507088669673e+00 -6.015749753028506e+00 3.906248120259810e+00 4.583294037987212e+00 9.265467177160410e+03 + 41420 1.045010525252104e+00 -6.016617454313644e+00 -6.022944478757136e+00 3.628757794896290e+00 4.592427041437890e+00 9.287627206059820e+03 + 41440 1.035319284230467e+00 -5.955816144156109e+00 -6.032974552075830e+00 3.979280038302685e+00 4.536224519802612e+00 9.318524916192082e+03 + 41460 1.002739846870994e+00 -5.867574539141209e+00 -6.024424348198652e+00 4.403094744600180e+00 4.502438868562839e+00 9.292165632195458e+03 + 41480 1.133146311288539e+00 -6.026713620240102e+00 -5.976233488571170e+00 3.583359695974593e+00 4.873224423792731e+00 9.144239542878808e+03 + 41500 1.055425410844994e+00 -5.890145150540625e+00 -6.036974398315731e+00 4.209066061980115e+00 4.365949799502796e+00 9.330878203444596e+03 + 41520 1.071914579040943e+00 -5.901729718952044e+00 -6.016785071296869e+00 4.230198750275984e+00 4.569533112353764e+00 9.268625556088251e+03 + 41540 1.101718045194419e+00 -5.942890612070487e+00 -6.017301622711790e+00 3.977597224690931e+00 4.550317686521887e+00 9.270236831334156e+03 + 41560 1.091812792028701e+00 -5.936039728476040e+00 -6.013671061047997e+00 4.058506690477264e+00 4.612735565439201e+00 9.259040334234722e+03 + 41580 1.013804350401596e+00 -5.835687469809648e+00 -6.068037703713831e+00 4.528396365493213e+00 4.194205366332908e+00 9.427061775130951e+03 + 41600 1.088930951190524e+00 -5.969606064307997e+00 -6.012966105300068e+00 3.866557727423964e+00 4.617577662102833e+00 9.256853153973401e+03 + 41620 1.055907596983285e+00 -5.945779918505039e+00 -6.058243571510969e+00 3.990395252508227e+00 4.344611553254120e+00 9.396709790017991e+03 + 41640 1.130585202435977e+00 -6.087296370255676e+00 -5.970065935047715e+00 3.253076070227216e+00 4.926231370542549e+00 9.125397126853812e+03 + 41660 9.662076617677472e-01 -5.870587949999952e+00 -6.009395870668800e+00 4.470132252157453e+00 4.673075691220625e+00 9.245877477028969e+03 + 41680 1.028475561433104e+00 -5.982003216397621e+00 -5.979001422549295e+00 3.801908285569944e+00 4.819145050373129e+00 9.152683969800424e+03 + 41700 1.000213358230597e+00 -5.954417743728164e+00 -6.014765145919803e+00 3.902761995732969e+00 4.556237873618266e+00 9.262423596151437e+03 + 41720 1.000548981444288e+00 -5.966240073677980e+00 -5.996761068471326e+00 3.887815898055840e+00 4.712559622843770e+00 9.207068669871995e+03 + 41740 1.011328196273304e+00 -5.990699714036409e+00 -6.017713055027428e+00 3.735522480157218e+00 4.580407695885781e+00 9.271452239462220e+03 + 41760 1.034832057223049e+00 -6.032611309280607e+00 -5.975120939821469e+00 3.506016755057652e+00 4.836135353097943e+00 9.140827284065472e+03 + 41780 1.066082669999160e+00 -6.086231166754189e+00 -5.968896139704679e+00 3.217245694032555e+00 4.891001576887595e+00 9.121812240206122e+03 + 41800 1.032989020673128e+00 -6.044707867470353e+00 -5.961509819572236e+00 3.426946832660657e+00 4.904682898547949e+00 9.099233379966327e+03 + 41820 1.040940157787977e+00 -6.063254571647652e+00 -5.952550239754821e+00 3.370590917192535e+00 5.006272322361168e+00 9.071933575824920e+03 + 41840 9.418229621212121e-01 -5.921241743453634e+00 -5.972709266301410e+00 4.128584641076563e+00 4.833050160311212e+00 9.133451174759266e+03 + 41860 1.012986529764073e+00 -6.029947262732189e+00 -5.983810918102788e+00 3.496825261405475e+00 4.761747291843753e+00 9.167411893954642e+03 + 41880 9.720378782548207e-01 -5.971311234500191e+00 -6.006191433597305e+00 3.796466184351464e+00 4.596178683442472e+00 9.236062432185679e+03 + 41900 1.026558840731612e+00 -6.053575082641583e+00 -5.977806799479943e+00 3.390534746492480e+00 4.825607953510541e+00 9.149054646604554e+03 + 41920 9.654337067147909e-01 -5.965393009405540e+00 -5.987596957799651e+00 3.891029926858260e+00 4.763531419129365e+00 9.178991884827015e+03 + 41940 9.325868398049214e-01 -5.918403699422151e+00 -5.974399033375511e+00 4.139143443263261e+00 4.817609570453143e+00 9.138597371021664e+03 + 41960 1.008174323289658e+00 -6.028459495713508e+00 -5.966315012820007e+00 3.504293906654822e+00 4.861137144256952e+00 9.113914225198740e+03 + 41980 1.001244772711308e+00 -6.012105519027181e+00 -5.984741695977820e+00 3.599025458645301e+00 4.756152765132667e+00 9.170258132130752e+03 + 42000 9.883389488254670e-01 -5.982539622029579e+00 -5.970001978367593e+00 3.756972270684452e+00 4.828965360785661e+00 9.125184592889773e+03 + 42020 9.983260186153656e-01 -5.983026992695594e+00 -6.003277310748927e+00 3.794918314332567e+00 4.678637854343740e+00 9.227106708291334e+03 + 42040 1.067569561263460e+00 -6.065726268969217e+00 -6.006416443901234e+00 3.344300253447148e+00 4.684866447153279e+00 9.236763402643672e+03 + 42060 1.009339883809101e+00 -5.957593849092540e+00 -5.953451405034358e+00 3.945983628408355e+00 4.969770183231578e+00 9.074724393585248e+03 + 42080 1.000802634394208e+00 -5.922813886468560e+00 -5.975164705637753e+00 4.164214157644846e+00 4.863607652712255e+00 9.140935764087262e+03 + 42100 1.002523074867508e+00 -5.896890779204693e+00 -5.995157450590504e+00 4.258699492348400e+00 4.694437058532821e+00 9.202171616778922e+03 + 42120 1.029682264227345e+00 -5.907422085881147e+00 -6.042056017871837e+00 4.191834242600210e+00 4.418745370576029e+00 9.346573558115551e+03 + 42140 1.020182821929958e+00 -5.864932287036603e+00 -6.087204242657284e+00 4.383436313477167e+00 4.107116347829243e+00 9.486672198113525e+03 + 42160 1.100710388146992e+00 -5.964492544590880e+00 -6.070355627829341e+00 3.810732098007655e+00 4.202849891793228e+00 9.434318958669412e+03 + 42180 1.050319845308460e+00 -5.882999156922605e+00 -6.017760932183309e+00 4.323070386698666e+00 4.549247418834383e+00 9.271647290820150e+03 + 42200 1.102167238778667e+00 -5.962195864007908e+00 -6.011722205301942e+00 3.835153633303725e+00 4.550765717416835e+00 9.253028569557557e+03 + 42220 9.929007405410472e-01 -5.808459174911580e+00 -6.032858263376204e+00 4.728527089424414e+00 4.439992797813838e+00 9.318167558145306e+03 + 42240 1.067468417507986e+00 -5.935613422723162e+00 -6.019983074366220e+00 4.028051079038299e+00 4.543587483142471e+00 9.278484215337145e+03 + 42260 1.037382823239018e+00 -5.920627699516973e+00 -6.062782093900850e+00 4.126069483963200e+00 4.309796953089541e+00 9.410794406151206e+03 + 42280 1.056018783432308e+00 -5.991481578667956e+00 -6.042755003084171e+00 3.728152384029184e+00 4.433732446494494e+00 9.348747847987999e+03 + 42300 9.749924002192110e-01 -5.918692850061968e+00 -5.955978031972080e+00 4.198607767295293e+00 4.984510482904172e+00 9.082392485504502e+03 + 42320 1.005765985273272e+00 -6.004266176969770e+00 -5.960137059099537e+00 3.658883645490996e+00 4.912279869260791e+00 9.095081183849157e+03 + 42340 1.000488442249874e+00 -6.026860991602560e+00 -6.010444680655715e+00 3.541073160182420e+00 4.635338158055110e+00 9.249124491450788e+03 + 42360 1.021027227119354e+00 -6.080541800545733e+00 -6.000374597068820e+00 3.277191009156674e+00 4.737523497355751e+00 9.218207455062064e+03 + 42380 9.876368553615831e-01 -6.047802632211480e+00 -5.985236081389377e+00 3.394138788698931e+00 4.753405605661900e+00 9.171820014800231e+03 + 42400 9.353238595323677e-01 -5.981028627410359e+00 -6.016236587807597e+00 3.782929493003387e+00 4.580759935988183e+00 9.266943499416178e+03 + 42420 9.277928428763611e-01 -5.973687758162972e+00 -6.003483867664166e+00 3.799381252694099e+00 4.628287381005197e+00 9.227753382121127e+03 + 42440 9.644170927797882e-01 -6.028196062747335e+00 -5.969998298036570e+00 3.574590017560665e+00 4.908770588604860e+00 9.125165510110977e+03 + 42460 9.221063611117847e-01 -5.960968830859374e+00 -5.971395549302516e+00 3.970732915555465e+00 4.910861084725479e+00 9.129441166678169e+03 + 42480 9.685052453610711e-01 -6.020292086542680e+00 -5.997299972266075e+00 3.597251056113297e+00 4.729275334307752e+00 9.208760108634246e+03 + 42500 1.004413820781589e+00 -6.060260573018681e+00 -6.020666047526991e+00 3.331464448953759e+00 4.558822341560059e+00 9.280630624251418e+03 + 42520 9.919404607610979e-01 -6.029843262149455e+00 -6.029369722552115e+00 3.540946551052425e+00 4.543665688700363e+00 9.307444260726128e+03 + 42540 9.816233209824741e-01 -6.002933876441045e+00 -6.000094161100922e+00 3.696964454642380e+00 4.713270539569894e+00 9.217354190864300e+03 + 42560 9.838593388869179e-01 -5.994898297799462e+00 -5.990747505611068e+00 3.765685749943987e+00 4.789520241022768e+00 9.188638480326732e+03 + 42580 9.308198779623225e-01 -5.901170235735740e+00 -6.019585774465984e+00 4.242424581270377e+00 4.562464233135923e+00 9.277237268107887e+03 + 42600 9.680489704144786e-01 -5.937214453171924e+00 -6.007297235752763e+00 3.960535505482295e+00 4.558109322627567e+00 9.239473417881185e+03 + 42620 1.070861566598949e+00 -6.066051233038757e+00 -6.004966358411322e+00 3.342521363849202e+00 4.693280166813735e+00 9.232316527625924e+03 + 42640 9.751189310589308e-01 -5.903285823641355e+00 -6.058034808304072e+00 4.189344304892298e+00 4.300751687630991e+00 9.396050120998671e+03 + 42660 9.731572859055522e-01 -5.880894785199361e+00 -6.023394722516059e+00 4.334938025111613e+00 4.516681333245104e+00 9.288997185851287e+03 + 42680 9.782938119957603e-01 -5.867143239203233e+00 -6.013157469230508e+00 4.383533864449713e+00 4.545097560004027e+00 9.257463858879093e+03 + 42700 1.048427319225294e+00 -5.947651879296277e+00 -5.965585920159571e+00 3.986211016485091e+00 4.883230978564202e+00 9.111649023152080e+03 + 42720 9.856468741301643e-01 -5.821196327792630e+00 -6.019534113005258e+00 4.644726134888419e+00 4.505839879524445e+00 9.277097604837996e+03 + 42740 1.153830078841981e+00 -6.029262413203185e+00 -5.985027926087037e+00 3.560106650630934e+00 4.814107920916611e+00 9.171146172277600e+03 + 42760 1.073076630408098e+00 -5.867082361197090e+00 -6.056436992475969e+00 4.381100798962864e+00 4.293797203625054e+00 9.391121440777741e+03 + 42780 1.129088786796924e+00 -5.911678348988840e+00 -6.033575220626751e+00 4.202310009691208e+00 4.502359309266404e+00 9.320407309509890e+03 + 42800 1.133618811493557e+00 -5.890405725625349e+00 -6.051891020850152e+00 4.259277686276134e+00 4.332004131326644e+00 9.377029157181451e+03 + 42820 1.152280073280757e+00 -5.904357007548787e+00 -6.022328322383362e+00 4.158709114376955e+00 4.481299568594856e+00 9.285713874040412e+03 + 42840 1.147618890673095e+00 -5.898211705899039e+00 -6.018114076043819e+00 4.263214343513316e+00 4.574716379310172e+00 9.272724944820558e+03 + 42860 1.067303376761237e+00 -5.799387852833096e+00 -6.046586687946289e+00 4.734966529333999e+00 4.315512564217942e+00 9.360563680019064e+03 + 42880 1.067451654650052e+00 -5.839018953002554e+00 -6.018131369814994e+00 4.555371209823728e+00 4.526879994929771e+00 9.272729996427064e+03 + 42900 1.017910504028394e+00 -5.821716510644388e+00 -6.002320404447032e+00 4.708163664389866e+00 4.671108157812847e+00 9.224103650735389e+03 + 42920 1.059701455343044e+00 -5.944552881968688e+00 -5.960473458120179e+00 3.990763912046887e+00 4.899345500083827e+00 9.096072481170564e+03 + 42940 9.878290660745270e-01 -5.890321766054291e+00 -6.025692589444443e+00 4.246363683573211e+00 4.469043467099747e+00 9.296097913809414e+03 + 42960 1.027061070576393e+00 -5.984038434391606e+00 -6.013893146383296e+00 3.753446052349330e+00 4.582015676091299e+00 9.259738441109906e+03 + 42980 1.023604291954133e+00 -6.003560703585315e+00 -5.977208996251175e+00 3.696466080291529e+00 4.847781661717693e+00 9.147198560564861e+03 + 43000 1.047040952463689e+00 -6.055402833051120e+00 -5.980630665071473e+00 3.384484174581140e+00 4.813837534075875e+00 9.157698807345088e+03 + 43020 1.031359357778491e+00 -6.046435347242450e+00 -6.012780630280496e+00 3.408662822744633e+00 4.601913415590793e+00 9.256338864382320e+03 + 43040 9.830260499444172e-01 -5.988067240269205e+00 -5.982814246380953e+00 3.729262574316410e+00 4.759426078120931e+00 9.164379421916006e+03 + 43060 9.569613321854348e-01 -5.960327856796565e+00 -5.987772049475552e+00 3.910603628310275e+00 4.753014826972441e+00 9.179554534259036e+03 + 43080 9.519482537088338e-01 -5.961192908361253e+00 -6.022789521857399e+00 3.948548302079721e+00 4.594851015339724e+00 9.287136281129708e+03 + 43100 9.896027148867316e-01 -6.024676819144529e+00 -6.000303924299015e+00 3.604723882677578e+00 4.744676816573810e+00 9.217985859733315e+03 + 43120 9.879506586404259e-01 -6.028341884448516e+00 -6.014971179339854e+00 3.525975931726293e+00 4.602752589570162e+00 9.263064222609757e+03 + 43140 9.495732833904647e-01 -5.976194969212692e+00 -6.003797855310245e+00 3.866972910243681e+00 4.708472866738711e+00 9.228700798946804e+03 + 43160 1.052294047671788e+00 -6.130260035585733e+00 -5.964976843684558e+00 2.999923553162124e+00 4.949005218549958e+00 9.109852532510920e+03 + 43180 1.004007056039291e+00 -6.058699466393047e+00 -5.965696520246928e+00 3.412237926333785e+00 4.946275235264199e+00 9.112035523971606e+03 + 43200 9.877195797013062e-01 -6.033009864470846e+00 -6.013693890129190e+00 3.455901337621872e+00 4.566816651429027e+00 9.259129697802808e+03 + 43220 1.001375449292046e+00 -6.049021769970193e+00 -5.979587618456819e+00 3.439670704625959e+00 4.838372347515977e+00 9.154487545677650e+03 + 43240 1.030573913098022e+00 -6.084572401545989e+00 -5.950678450674758e+00 3.236714533021168e+00 5.005554318945713e+00 9.066281503153792e+03 + 43260 9.545667384524475e-01 -5.959395229467003e+00 -6.017705347906028e+00 3.934684834008945e+00 4.599859110470395e+00 9.271460813538190e+03 + 43280 9.891693043603166e-01 -5.994199556339470e+00 -6.038093552065153e+00 3.713492061646571e+00 4.461445945615814e+00 9.334355562475148e+03 + 43300 9.401744431738801e-01 -5.901517074132211e+00 -6.090647042222202e+00 4.179195409306526e+00 4.093181864765822e+00 9.497395226762759e+03 + 43320 1.018153035613122e+00 -5.995127162374814e+00 -6.000379016673182e+00 3.743163107450942e+00 4.713006147347890e+00 9.218205075773891e+03 + 43340 9.816169751428591e-01 -5.914911309841576e+00 -6.051696240181725e+00 4.115457460039036e+00 4.330017222626345e+00 9.376424858128343e+03 + 43360 1.020514420308772e+00 -5.945623235512811e+00 -6.033851536465662e+00 3.987719437550037e+00 4.481098880193324e+00 9.321256130463647e+03 + 43380 1.049822266731537e+00 -5.960695632164704e+00 -6.037091578949415e+00 3.926830084105465e+00 4.488152735433095e+00 9.331253638021160e+03 + 43400 1.104107613336717e+00 -6.016887823218112e+00 -6.024708934025497e+00 3.608281979367014e+00 4.563371950798023e+00 9.293053166073969e+03 + 43420 1.067105552722048e+00 -5.945784971554009e+00 -5.989292297776403e+00 3.973838242448465e+00 4.724012442542499e+00 9.184223521146152e+03 + 43440 1.039504461383008e+00 -5.892300859036462e+00 -5.980781592914661e+00 4.297725292844597e+00 4.789655226566663e+00 9.158119279815603e+03 + 43460 9.889098167668555e-01 -5.808837432599365e+00 -6.015908798463626e+00 4.690725684546914e+00 4.501689857564020e+00 9.265935309641163e+03 + 43480 1.059854792665280e+00 -5.909766399686471e+00 -6.038949288624625e+00 4.144301925996133e+00 4.402513786725797e+00 9.336993476795287e+03 + 43500 1.039952725895798e+00 -5.885749399748401e+00 -6.037794677884799e+00 4.298058678056440e+00 4.424991162066498e+00 9.333433173026649e+03 + 43520 1.040733332848676e+00 -5.903190915999691e+00 -6.012277253473432e+00 4.282866901354387e+00 4.656476270524004e+00 9.254762410430034e+03 + 43540 1.068855680551549e+00 -5.976838093128382e+00 -6.002856631256365e+00 3.753554276319238e+00 4.604151804032599e+00 9.225814841236908e+03 + 43560 9.797788171985855e-01 -5.890614250718889e+00 -6.018238714491039e+00 4.288197247503880e+00 4.555357826702260e+00 9.273045483309674e+03 + 43580 1.001286688090568e+00 -5.975862330406976e+00 -5.950500158514716e+00 3.799734288735876e+00 4.945367804524652e+00 9.065713627082419e+03 + 43600 9.560588444261650e-01 -5.953729928899411e+00 -5.986631930594523e+00 3.931401694037400e+00 4.742473308735757e+00 9.176027810874892e+03 + 43620 9.516288890263075e-01 -5.980320778267289e+00 -5.997710796959076e+00 3.818842357103101e+00 4.718986178678161e+00 9.210000274863347e+03 + 43640 9.998427215934363e-01 -6.075021626592518e+00 -5.968574425301028e+00 3.314078328112557e+00 4.925314630579457e+00 9.120851155444963e+03 + 43660 9.530353603549442e-01 -6.021464010366691e+00 -6.030679719321651e+00 3.605885756519080e+00 4.552967729573345e+00 9.311461063008839e+03 + 43680 1.053803642179686e+00 -6.182616804528794e+00 -5.971533298191842e+00 2.703202384867893e+00 4.915276543321711e+00 9.129885254296563e+03 + 43700 9.054869488859441e-01 -5.968637804469909e+00 -6.001163842593330e+00 3.854055498321952e+00 4.667285954029135e+00 9.220606076412834e+03 + 43720 9.092715546334610e-01 -5.973510357038468e+00 -5.985528597367561e+00 3.816607850817448e+00 4.747597255031115e+00 9.172666853785340e+03 + 43740 9.648352587776566e-01 -6.049806570887415e+00 -5.936859000696399e+00 3.489169058285245e+00 5.137731484902055e+00 9.024236697275106e+03 + 43760 9.351932432860037e-01 -5.994543260263411e+00 -5.990393249873906e+00 3.764030712744081e+00 4.787860714612650e+00 9.187546694156073e+03 + 43780 1.058085435964107e+00 -6.160511815647474e+00 -5.975691069737474e+00 2.860009745733641e+00 4.921279069666857e+00 9.142586853911111e+03 + 43800 9.944016458290016e-01 -6.048255784435115e+00 -5.970449329038832e+00 3.467001913463403e+00 4.913778620858920e+00 9.126561681242074e+03 + 43820 9.663739136986895e-01 -5.985596461163115e+00 -5.947466913561681e+00 3.822017375038782e+00 5.040963137894641e+00 9.056493813119876e+03 + 43840 9.398389868783787e-01 -5.920740078145464e+00 -6.014947052912079e+00 4.116285885761977e+00 4.575334858169841e+00 9.262990812546112e+03 + 43860 1.029902982519457e+00 -6.024766348263920e+00 -6.025640789411106e+00 3.551235038741337e+00 4.546213862354866e+00 9.295945401530627e+03 + 43880 1.044787154454894e+00 -6.021825703389696e+00 -6.015765836227601e+00 3.577486698003261e+00 4.612283393009424e+00 9.265518173774766e+03 + 43900 1.017347564613833e+00 -5.961616603805984e+00 -6.035368076520879e+00 3.868101699299082e+00 4.444609329966637e+00 9.325947708391857e+03 + 43920 1.051271492095395e+00 -5.997370675638565e+00 -6.006671711673600e+00 3.712290617106905e+00 4.658882628863058e+00 9.237547838150287e+03 + 43940 1.033302111134558e+00 -5.959494352791464e+00 -6.006510046905924e+00 3.925597709834556e+00 4.655626318574174e+00 9.237027029862871e+03 + 43960 1.048268640733096e+00 -5.974074330648794e+00 -5.976280417552674e+00 3.915821076099669e+00 4.903153383706741e+00 9.144335275666786e+03 + 43980 1.031451242621384e+00 -5.946985114871048e+00 -5.994124628599200e+00 4.036432889972897e+00 4.765750507329679e+00 9.198962267471863e+03 + 44000 1.005911871965239e+00 -5.909133496219501e+00 -5.991316815400957e+00 4.196119889308073e+00 4.724210552740611e+00 9.190374653609519e+03 + 44020 1.052890297721638e+00 -5.981142560877849e+00 -5.959662504909911e+00 3.852959582498220e+00 4.976301387894043e+00 9.093643049754877e+03 + 44040 1.054115870502467e+00 -5.989654242170328e+00 -6.004740130812059e+00 3.746198960921911e+00 4.659573453807370e+00 9.231601089645210e+03 + 44060 1.016748787205440e+00 -5.948708956473249e+00 -5.999769051930477e+00 3.945196524408043e+00 4.652001554768402e+00 9.216350940308181e+03 + 44080 1.022358134265070e+00 -5.982029537570616e+00 -5.995223897469996e+00 3.772768066997626e+00 4.697004010634792e+00 9.202374179733488e+03 + 44100 9.976488675684239e-01 -5.987292867359272e+00 -5.985964764555890e+00 3.719787347419050e+00 4.727413519239311e+00 9.174010241602811e+03 + 44120 9.878774389058852e-01 -6.040063392081655e+00 -5.983679505518572e+00 3.468219910826282e+00 4.791984912849749e+00 9.167025834266926e+03 + 44140 9.811445851239732e-01 -6.104276502068400e+00 -5.987234838456873e+00 3.179995924826761e+00 4.852067269423058e+00 9.177893438559246e+03 + 44160 8.879097406772835e-01 -6.015150918813836e+00 -6.035658787842863e+00 3.583303474023029e+00 4.465544116475882e+00 9.326850821694325e+03 + 44180 9.404853277778682e-01 -6.119882529047506e+00 -6.015572614808396e+00 3.020606164163634e+00 4.619569833631665e+00 9.264930568316562e+03 + 44200 8.795486879054911e-01 -6.041899774901146e+00 -6.013802303763943e+00 3.430059136734282e+00 4.591399164073708e+00 9.259471572404133e+03 + 44220 9.174773000436394e-01 -6.098964529761320e+00 -5.984266502332054e+00 3.196861375306876e+00 4.855475198268100e+00 9.168806211460727e+03 + 44240 9.317818896596072e-01 -6.112780917416571e+00 -5.971426605809496e+00 3.101144182710253e+00 4.912822514467104e+00 9.129536224014815e+03 + 44260 9.122884283951161e-01 -6.067554546885442e+00 -6.006219325463735e+00 3.298222649218836e+00 4.650418982217120e+00 9.236152453011944e+03 + 44280 1.041744634801371e+00 -6.235675668622503e+00 -5.960102522178244e+00 2.475474138759287e+00 5.057857790448812e+00 9.095011348718204e+03 + 44300 9.314902462279555e-01 -6.042523426917090e+00 -6.034370859927232e+00 3.450653048652696e+00 4.497466349914127e+00 9.322876189241906e+03 + 44320 9.291402723635239e-01 -6.010500878758293e+00 -5.998930542939956e+00 3.628011065415561e+00 4.694449724188138e+00 9.213757106659979e+03 + 44340 9.826999131182712e-01 -6.056969718286006e+00 -5.958016110862165e+00 3.394572725968288e+00 4.962779652817241e+00 9.088617130600640e+03 + 44360 1.040923764306458e+00 -6.109885461557235e+00 -5.991496003246529e+00 3.124511687228603e+00 4.804322277558141e+00 9.190965877078530e+03 + 44380 9.734744607289658e-01 -5.979492629828739e+00 -6.025367411754219e+00 3.795563620911742e+00 4.532143523996071e+00 9.295080380872345e+03 + 44400 1.031607118497341e+00 -6.040628625650927e+00 -5.996666343504339e+00 3.505024110036007e+00 4.757462337262891e+00 9.206805795223194e+03 + 44420 1.051663108435957e+00 -6.046403150986342e+00 -6.038243165277815e+00 3.466149958797668e+00 4.513005859489738e+00 9.334833238355934e+03 + 44440 1.053086184577943e+00 -6.033286209042171e+00 -6.006317023791751e+00 3.554949301088040e+00 4.709810536263886e+00 9.236466474553114e+03 + 44460 1.028155467526128e+00 -5.984644824941411e+00 -6.044348939398279e+00 3.757708617530137e+00 4.414878353136949e+00 9.353675754734333e+03 + 44480 1.034563528443213e+00 -5.987431675567249e+00 -6.035025246188928e+00 3.766470334318505e+00 4.493180686727575e+00 9.324878048494254e+03 + 44500 1.044640663285337e+00 -6.000013801552655e+00 -6.025526521754809e+00 3.696249239700212e+00 4.549751252218750e+00 9.295560421354163e+03 + 44520 9.741811292179292e-01 -5.896628926601443e+00 -6.036788010655622e+00 4.235086821354985e+00 4.430271671167731e+00 9.330298366875495e+03 + 44540 1.033320293560809e+00 -5.987269973433270e+00 -5.998144892007492e+00 3.729627137886326e+00 4.667181672544933e+00 9.211338064886950e+03 + 44560 1.045010736128547e+00 -6.009568951139081e+00 -6.020845106469034e+00 3.643806840574785e+00 4.579057411690798e+00 9.281143584804753e+03 + 44580 1.108076239821885e+00 -6.114675659714501e+00 -5.973377991734043e+00 3.119603714030966e+00 4.930956789318206e+00 9.135500351817574e+03 + 44600 1.042002301079985e+00 -6.034794129171982e+00 -5.986180055304679e+00 3.531752828594982e+00 4.810902363744654e+00 9.174669074822155e+03 + 44620 9.900339218609060e-01 -5.978559797599485e+00 -5.989106557169039e+00 3.846535478743761e+00 4.785974353189617e+00 9.183635655550199e+03 + 44640 9.521899196989791e-01 -5.948304817607248e+00 -6.020921416943950e+00 4.007809258355389e+00 4.590833507581618e+00 9.281336497677594e+03 + 44660 9.904607532559435e-01 -6.036147852024190e+00 -6.010345874641897e+00 3.527943257919222e+00 4.676102204891444e+00 9.248840833776167e+03 + 44680 9.522527961358813e-01 -6.017244392039335e+00 -5.988771295544299e+00 3.610670954993704e+00 4.774167881265642e+00 9.182607617771590e+03 + 44700 9.778167397004138e-01 -6.093814438957845e+00 -5.967877177249019e+00 3.204150316486027e+00 4.927301561946374e+00 9.118694212763059e+03 + 44720 9.554767568724524e-01 -6.095009815749385e+00 -5.977477560777148e+00 3.194553542025427e+00 4.869441938133692e+00 9.148038085202334e+03 + 44740 9.016631559999805e-01 -6.042712937306354e+00 -5.968430207604885e+00 3.462716877197736e+00 4.889259806358844e+00 9.120390909697662e+03 + 44760 9.110012153255921e-01 -6.071622213824578e+00 -5.949903646555379e+00 3.334140491561252e+00 5.033067340708406e+00 9.063909964984870e+03 + 44780 9.367768111250798e-01 -6.115493813806432e+00 -5.984086680038731e+00 3.068521701282660e+00 4.823081798565030e+00 9.168271988856170e+03 + 44800 9.426598744713789e-01 -6.122598441475942e+00 -6.002267887738543e+00 2.991330638812212e+00 4.682287299465369e+00 9.224008288570460e+03 + 44820 8.982252198973060e-01 -6.048465753693729e+00 -5.998447839062718e+00 3.420677208507584e+00 4.707887814566126e+00 9.212280469748421e+03 + 44840 8.544935896449105e-01 -5.966778415044003e+00 -6.004069057877350e+00 3.811207679674588e+00 4.597079037817181e+00 9.229533123548090e+03 + 44860 9.787651380573306e-01 -6.122548618577605e+00 -5.948751283918413e+00 3.083363526820345e+00 5.081334717484047e+00 9.060397199405674e+03 + 44880 9.574037934031961e-01 -6.053590702113706e+00 -6.012866053212771e+00 3.401654177584300e+00 4.635501413692516e+00 9.256594951927616e+03 + 44900 1.010773908773713e+00 -6.093645653065124e+00 -6.019538160086261e+00 3.178568887398491e+00 4.604105580180599e+00 9.277136948292919e+03 + 44920 9.866902019024648e-01 -6.027109287492773e+00 -5.993707224389452e+00 3.624885235197160e+00 4.816685050488994e+00 9.197733228332030e+03 + 44940 1.020190537638765e+00 -6.056084065275464e+00 -5.966454310857993e+00 3.429076713471332e+00 4.943744633496122e+00 9.114337737008495e+03 + 44960 9.524672643064573e-01 -5.942260627102574e+00 -6.036539327484205e+00 3.986945865660108e+00 4.445582978487053e+00 9.329563686612148e+03 + 44980 9.667314090633224e-01 -5.954274812589973e+00 -6.023374155230139e+00 3.880113668259499e+00 4.483334549730946e+00 9.288943797340771e+03 + 45000 9.770601562059136e-01 -5.962905126795389e+00 -6.009004536656666e+00 3.942252905953867e+00 4.677542960669793e+00 9.244690345391469e+03 + 45020 9.985325647643951e-01 -5.989477147718591e+00 -5.993347920425673e+00 3.736859109477459e+00 4.714632533593255e+00 9.196641503405395e+03 + 45040 1.007504539887335e+00 -5.997817497285838e+00 -6.036125957602049e+00 3.704187491127704e+00 4.484214383776948e+00 9.328292769787153e+03 + 45060 1.003671947602390e+00 -5.988953345815810e+00 -6.027986304006537e+00 3.779557231522706e+00 4.555423945260795e+00 9.303174592776817e+03 + 45080 1.036428248556178e+00 -6.038342595110455e+00 -5.970958927520535e+00 3.515447961795993e+00 4.902375408686169e+00 9.128114309467492e+03 + 45100 9.900730243923580e-01 -5.968974068296387e+00 -5.987657449075325e+00 3.869931752946302e+00 4.762648889269812e+00 9.179186576986322e+03 + 45120 1.019234200729725e+00 -6.010499653940125e+00 -6.030121182620810e+00 3.607073762255418e+00 4.494403908149170e+00 9.309744399296134e+03 + 45140 1.013001905856983e+00 -6.002663701091591e+00 -6.029279456462883e+00 3.662727019838008e+00 4.509895233721217e+00 9.307168895779778e+03 + 45160 9.698363294889166e-01 -5.941237019205436e+00 -6.015921371514668e+00 4.010044526025745e+00 4.581195417699971e+00 9.265990627477371e+03 + 45180 9.744499586576585e-01 -5.951108383129355e+00 -6.046094904230198e+00 3.916006635071441e+00 4.370579331793769e+00 9.359085946889680e+03 + 45200 9.823399088730466e-01 -5.967396025468328e+00 -6.048193530368751e+00 3.781446232798570e+00 4.317494456286868e+00 9.365567517754695e+03 + 45220 1.014884389942635e+00 -6.022639499349491e+00 -6.021834794969820e+00 3.569088695345047e+00 4.573709432420721e+00 9.284167893845650e+03 + 45240 9.609991049530829e-01 -5.951021366942196e+00 -6.047123042655146e+00 3.936934244000892e+00 4.385103550370880e+00 9.362266183393145e+03 + 45260 9.860285264153303e-01 -5.998294014252766e+00 -6.024747874803780e+00 3.705515919166511e+00 4.553613758160898e+00 9.293180745229589e+03 + 45280 1.039500089932220e+00 -6.090752722379923e+00 -5.957914941721507e+00 3.209294620511539e+00 4.972069713632290e+00 9.088329038598336e+03 + 45300 9.914855379572206e-01 -6.031828476144758e+00 -5.969515768864861e+00 3.599695176136700e+00 4.957504384198160e+00 9.123696228189738e+03 + 45320 9.928047573685331e-01 -6.046510541925003e+00 -6.009536543703220e+00 3.455046294074056e+00 4.667356713571265e+00 9.246357374623882e+03 + 45340 9.738279510449656e-01 -6.034074839546645e+00 -6.042779204880069e+00 3.453919054416601e+00 4.403937241675900e+00 9.348831099002326e+03 + 45360 1.034756486499149e+00 -6.141996497742743e+00 -5.962786609980720e+00 2.942248048764549e+00 4.971298956934593e+00 9.103166585679541e+03 + 45380 9.660119205882111e-01 -6.056130103610525e+00 -5.968562744318561e+00 3.419241906807790e+00 4.922067234867301e+00 9.120793767244262e+03 + 45400 8.815184303390018e-01 -5.943744522652819e+00 -6.004943030045705e+00 3.975396723660041e+00 4.623985423771676e+00 9.232230305807490e+03 + 45420 9.150665021736227e-01 -6.001178525575921e+00 -5.993558879859882e+00 3.684605862280283e+00 4.728359047118143e+00 9.197290538511814e+03 + 45440 1.009690982375667e+00 -6.144693766793868e+00 -5.965249730633436e+00 2.969699193625116e+00 5.000094618133167e+00 9.110694326481607e+03 + 45460 9.802079686647477e-01 -6.101061999234433e+00 -5.974148773348036e+00 3.155579172627301e+00 4.884334555425228e+00 9.137872695360151e+03 + 45480 9.064530400004156e-01 -5.987314765332380e+00 -6.011781184309340e+00 3.714891149562635e+00 4.574401185630830e+00 9.253240653380661e+03 + 45500 9.270713427255561e-01 -6.003528696881522e+00 -5.994572577499298e+00 3.689433974206628e+00 4.740861397654359e+00 9.200401916061559e+03 + 45520 9.386765430170138e-01 -5.997613956261170e+00 -5.982842516153095e+00 3.713550293937092e+00 4.798370188910630e+00 9.164458514304373e+03 + 45540 9.907620792352331e-01 -6.042017169531688e+00 -6.033113399816497e+00 3.442580399322137e+00 4.493707222880677e+00 9.318959265289719e+03 + 45560 1.007557366295257e+00 -6.026174034478126e+00 -6.018532694151251e+00 3.590278618088091e+00 4.634156376738604e+00 9.274033728611394e+03 + 45580 1.036602352842762e+00 -6.030962624412669e+00 -6.025782339607796e+00 3.513917359421110e+00 4.543663356417176e+00 9.296380268850406e+03 + 45600 9.825801915476166e-01 -5.917334926316772e+00 -6.059700231234692e+00 4.135638216232778e+00 4.318154604434347e+00 9.401202756799008e+03 + 45620 1.086929699947403e+00 -6.043661484504853e+00 -5.997158206488040e+00 3.498966143830534e+00 4.765995162562092e+00 9.208318320480696e+03 + 45640 1.015784972069015e+00 -5.918560634637530e+00 -6.020037981822809e+00 4.167762136776048e+00 4.585063505669452e+00 9.278644329216979e+03 + 45660 9.905874066106548e-01 -5.867585363371559e+00 -6.085361711668277e+00 4.374961477312450e+00 4.124455984611710e+00 9.480946858428193e+03 + 45680 1.001403069643705e+00 -5.877699934157615e+00 -6.093142471850548e+00 4.274427325679746e+00 4.037322934621963e+00 9.505185810532963e+03 + 45700 1.012208629431235e+00 -5.896062902470717e+00 -6.002874956155948e+00 4.266775583418445e+00 4.653444242045954e+00 9.225873899126333e+03 + 45720 1.028046023958991e+00 -5.924749673863724e+00 -6.011400608525927e+00 4.051852582902914e+00 4.554289506883745e+00 9.252094438410912e+03 + 45740 1.083669740621331e+00 -6.017464256459352e+00 -5.980852146335405e+00 3.608665557306204e+00 4.818897959343641e+00 9.158359251375145e+03 + 45760 9.875412767167220e-01 -5.890034404873836e+00 -6.002074493731762e+00 4.291165326069461e+00 4.647813797699533e+00 9.223429906175650e+03 + 45780 9.582501034354468e-01 -5.864430838773478e+00 -6.017662036957267e+00 4.479894056211259e+00 4.600016803788660e+00 9.271317968838737e+03 + 45800 1.055868437196296e+00 -6.031074750768443e+00 -5.949643473826411e+00 3.558242509748278e+00 5.025833503398810e+00 9.063107851390636e+03 + 45820 1.074399035137153e+00 -6.081707616759515e+00 -5.965470011851463e+00 3.258419426780411e+00 4.925873741873676e+00 9.111354859078245e+03 + 45840 9.816627586646965e-01 -5.973088573349747e+00 -5.970578580690987e+00 3.861642821587270e+00 4.876055587853982e+00 9.126952455130249e+03 + 45860 9.634852339177441e-01 -5.975460845645318e+00 -5.976025838607751e+00 3.884523248003387e+00 4.881278970980717e+00 9.143583779641971e+03 + 45880 9.926686437227590e-01 -6.048308139025887e+00 -5.994277890567073e+00 3.439510682329893e+00 4.749760730134333e+00 9.199458976169082e+03 + 45900 9.828988381451896e-01 -6.062550379604077e+00 -5.975280955308194e+00 3.346555072174505e+00 4.847669611381228e+00 9.141324345445451e+03 + 45920 9.045368836714649e-01 -5.972890214255204e+00 -6.006844827084905e+00 3.825116503358220e+00 4.630143862030728e+00 9.238058438540929e+03 + 45940 9.373422585535576e-01 -6.043753499313156e+00 -6.010579809560938e+00 3.448124252181436e+00 4.638612712350567e+00 9.249514668200247e+03 + 45960 9.523795198154340e-01 -6.086806503256065e+00 -6.005837686214207e+00 3.234086369198321e+00 4.699021846536617e+00 9.234991326998052e+03 + 45980 9.920661511212907e-01 -6.166016779048537e+00 -5.931754102076604e+00 2.845988173321975e+00 5.191160716526914e+00 9.008744292714087e+03 + 46000 9.285306155636552e-01 -6.091379627318396e+00 -5.957951166111413e+00 3.229431358969648e+00 4.995598231207788e+00 9.088421003321448e+03 + 46020 9.076159055086368e-01 -6.081968831540318e+00 -6.022628923921800e+00 3.234696084090612e+00 4.575435016457167e+00 9.286659356591610e+03 + 46040 8.781644010579813e-01 -6.068414701817208e+00 -6.016899669901378e+00 3.307936947077756e+00 4.603744232263873e+00 9.269008610018995e+03 + 46060 8.966261590375787e-01 -6.128674807252696e+00 -5.973697570715760e+00 3.024641586980180e+00 4.914544861825114e+00 9.136493029150446e+03 + 46080 8.589240617693639e-01 -6.101087551653540e+00 -5.955316240345145e+00 3.207046797127908e+00 5.044088224698235e+00 9.080375913452643e+03 + 46100 8.739211096640135e-01 -6.142170080139031e+00 -5.974088292155754e+00 2.944086527498830e+00 4.909238164671434e+00 9.137685941073249e+03 + 46120 8.805460670904588e-01 -6.160615234811071e+00 -5.982884436801590e+00 2.820529283054132e+00 4.841087028976679e+00 9.164582532157927e+03 + 46140 8.966594402874921e-01 -6.180920329450290e+00 -5.947902340217479e+00 2.709265132279674e+00 5.047290485871767e+00 9.057810131478103e+03 + 46160 8.609720846127109e-01 -6.108645153294935e+00 -5.978130023836520e+00 3.107180668181516e+00 4.856618738682744e+00 9.150021582722595e+03 + 46180 8.891309228205539e-01 -6.116043413584434e+00 -5.991305472610404e+00 3.086303092701571e+00 4.802567652908430e+00 9.190390910191671e+03 + 46200 9.512295332094245e-01 -6.163171934526775e+00 -5.986032333532468e+00 2.803072608732340e+00 4.820235609906312e+00 9.174243548359696e+03 + 46220 9.925743823608261e-01 -6.178736376527546e+00 -5.975312734233944e+00 2.811295669833350e+00 4.979385703590121e+00 9.141436108923073e+03 + 46240 9.028499916711410e-01 -6.006682631094439e+00 -6.026581172630292e+00 3.661865108026519e+00 4.547604603238301e+00 9.298832433675374e+03 + 46260 9.905475460665116e-01 -6.103509603428252e+00 -5.959624970721642e+00 3.181219637396503e+00 5.007427464472810e+00 9.093546563359747e+03 + 46280 9.856565008831203e-01 -6.063999974939899e+00 -6.005157860257087e+00 3.380693785963591e+00 4.718574314260112e+00 9.232910146229293e+03 + 46300 9.868317854060463e-01 -6.038878409433588e+00 -6.019843514244683e+00 3.530849008414803e+00 4.640150322230006e+00 9.278060797230195e+03 + 46320 9.808713668706407e-01 -6.007704357707952e+00 -5.995988144271009e+00 3.644334198466209e+00 4.711610509099303e+00 9.204773455926890e+03 + 46340 1.003361535283730e+00 -6.018195638868329e+00 -5.984683405727990e+00 3.634633638184982e+00 4.827066066878128e+00 9.170090852533142e+03 + 46360 9.928029947049347e-01 -5.982335037817466e+00 -6.004405525219875e+00 3.776771579894942e+00 4.650039425833428e+00 9.230580612208647e+03 + 46380 1.029994413635385e+00 -6.017942914438843e+00 -6.004174567319483e+00 3.567804118799927e+00 4.646864098604128e+00 9.229885633001895e+03 + 46400 1.022548020002067e+00 -5.989625462536409e+00 -5.978494174812478e+00 3.774362281942298e+00 4.838279858614319e+00 9.151146239445870e+03 + 46420 1.029245211091858e+00 -5.983867300788291e+00 -6.008134384731347e+00 3.761827335720981e+00 4.622481984400851e+00 9.242017541289739e+03 + 46440 1.020189142121825e+00 -5.956209122181994e+00 -6.022278171022351e+00 4.005384521652338e+00 4.626005819058744e+00 9.285568744160906e+03 + 46460 1.107429562447294e+00 -6.074636432274575e+00 -5.985976654061473e+00 3.308424768755934e+00 4.817522935311906e+00 9.174068702676712e+03 + 46480 1.001615602748194e+00 -5.913793728939163e+00 -6.038915962182665e+00 4.131715843658667e+00 4.413244617771460e+00 9.336889645880470e+03 + 46500 1.056554707018495e+00 -5.993482696537441e+00 -6.006648279040602e+00 3.736268544710905e+00 4.660669732610444e+00 9.237481016985610e+03 + 46520 1.001338730523760e+00 -5.914377498803793e+00 -6.011708438045956e+00 4.171954107810986e+00 4.613064792768315e+00 9.253023626269813e+03 + 46540 1.065616188181594e+00 -6.016908957024450e+00 -5.965520373269309e+00 3.645748315098257e+00 4.940829515377909e+00 9.111497839385747e+03 + 46560 1.007066228262183e+00 -5.941972819988367e+00 -6.011267282829115e+00 4.012864926660507e+00 4.614965397745462e+00 9.251674517835585e+03 + 46580 1.051429956216368e+00 -6.025391080674834e+00 -5.981359892968555e+00 3.580533493281107e+00 4.833367386894833e+00 9.159911312423343e+03 + 46600 1.010591966937790e+00 -5.988500890293908e+00 -5.980291151525179e+00 3.775004230353700e+00 4.822145820816711e+00 9.156637638471004e+03 + 46620 1.056512396752328e+00 -6.085637696104891e+00 -5.988386933105334e+00 3.297786840155432e+00 4.856215770805825e+00 9.181428484707807e+03 + 46640 9.913258287267246e-01 -6.024537634592517e+00 -6.010238953136936e+00 3.564879110879077e+00 4.646984352510826e+00 9.248493622629509e+03 + 46660 9.667712774426389e-01 -6.024009557574392e+00 -6.019808456609887e+00 3.513954223776246e+00 4.538077595632705e+00 9.277978424915716e+03 + 46680 1.012256253770115e+00 -6.125793266929136e+00 -5.966542485779259e+00 3.019974348740370e+00 4.934416978081705e+00 9.114648648979874e+03 + 46700 9.172761110772630e-01 -6.014628533400526e+00 -5.975848957233569e+00 3.600394551189991e+00 4.823072878660673e+00 9.143070037083056e+03 + 46720 9.178267793505699e-01 -6.035434831276690e+00 -5.998852307041420e+00 3.497288784008906e+00 4.707351299295151e+00 9.213532317088946e+03 + 46740 9.396208660924898e-01 -6.079406958720270e+00 -5.975116683298361e+00 3.320357302371268e+00 4.919208202711832e+00 9.140830597019691e+03 + 46760 9.787384622379391e-01 -6.141198095062737e+00 -5.991098629305255e+00 2.951800975846797e+00 4.813695336043512e+00 9.189758366420401e+03 + 46780 9.168946240138081e-01 -6.046733124765542e+00 -6.016430316535546e+00 3.459818734074484e+00 4.633822148275540e+00 9.267566944102247e+03 + 46800 9.644447702023515e-01 -6.107906205149953e+00 -5.960272540301948e+00 3.192351229540711e+00 5.040086579333755e+00 9.095518289198460e+03 + 46820 9.490687349507424e-01 -6.071701976891272e+00 -5.986111073356558e+00 3.294373940005948e+00 4.785850153251788e+00 9.174458209325132e+03 + 46840 9.263478168223128e-01 -6.019260852984536e+00 -5.984050518980050e+00 3.637976176243283e+00 4.840159362878619e+00 9.168146565528912e+03 + 46860 9.549986310541327e-01 -6.035340907834312e+00 -6.044607437009500e+00 3.448815388560492e+00 4.395605544045811e+00 9.354484222306095e+03 + 46880 1.005868168781037e+00 -6.082471317243534e+00 -6.000899150881201e+00 3.231518096616500e+00 4.699918099120959e+00 9.219832570904862e+03 + 46900 9.600253819661831e-01 -5.986677471309874e+00 -6.032424101215349e+00 3.751507243150709e+00 4.488823014965374e+00 9.316858461229618e+03 + 46920 1.026666603563075e+00 -6.062311875074732e+00 -5.972791642643607e+00 3.421493816526797e+00 4.935532844357517e+00 9.133715357537843e+03 + 46940 1.023229501432172e+00 -6.040816482670267e+00 -5.984405881990998e+00 3.498685843795264e+00 4.822604242407865e+00 9.169222661644033e+03 + 46960 1.000453376694894e+00 -5.995795871128336e+00 -5.990133015680362e+00 3.745024210739944e+00 4.777541203046258e+00 9.186762852611764e+03 + 46980 1.018629910254946e+00 -6.016355909648707e+00 -5.988058099690006e+00 3.611816729114151e+00 4.774307132968949e+00 9.180435557939947e+03 + 47000 9.772524410600779e-01 -5.950848143358937e+00 -6.012859336442002e+00 3.899324850903198e+00 4.543246984019121e+00 9.256556364887409e+03 + 47020 1.035298727182403e+00 -6.033973495513307e+00 -5.959045466855176e+00 3.458993313430749e+00 4.889241649060695e+00 9.091764286812964e+03 + 47040 9.589495224925221e-01 -5.916924043268216e+00 -5.992256975144133e+00 4.162150020742001e+00 4.729576668176959e+00 9.193276351291361e+03 + 47060 9.685772226057998e-01 -5.927835970815170e+00 -6.029710357230710e+00 4.076404971447407e+00 4.491426479639027e+00 9.308480011291824e+03 + 47080 1.019468218865350e+00 -6.002177951596217e+00 -5.986616126090959e+00 3.647800686897764e+00 4.737159097133674e+00 9.176025620250395e+03 + 47100 1.022831742634128e+00 -6.006547928676476e+00 -6.035209849739507e+00 3.631897094316886e+00 4.467315908155016e+00 9.325455951549146e+03 + 47120 1.022293272171524e+00 -6.009773222131590e+00 -5.980523234102611e+00 3.624184276536950e+00 4.792142234220367e+00 9.157347779918020e+03 + 47140 9.423056859973550e-01 -5.895374629409778e+00 -5.975315283222015e+00 4.253127990493542e+00 4.794096385527482e+00 9.141399169122735e+03 + 47160 1.027915621663734e+00 -6.022381440948004e+00 -5.969576175829859e+00 3.548734707252225e+00 4.851950711148976e+00 9.123899539004036e+03 + 47180 1.076724790766702e+00 -6.093593003795228e+00 -5.991042620157881e+00 3.182734458585097e+00 4.771594631051325e+00 9.189576801926924e+03 + 47200 9.589907462149174e-01 -5.922185735565795e+00 -6.025500381257070e+00 4.061856262561983e+00 4.468607579112933e+00 9.295484401723021e+03 + 47220 1.037842817744221e+00 -6.042664240200288e+00 -6.017250601881949e+00 3.462159237189799e+00 4.608088281161518e+00 9.270090425741470e+03 + 47240 9.819795796705822e-01 -5.968707834517965e+00 -6.045703747695363e+00 3.779399774251591e+00 4.337277325707919e+00 9.357899071369449e+03 + 47260 1.010013572691110e+00 -6.022275807773817e+00 -5.987891011434825e+00 3.596985989957035e+00 4.794428811565566e+00 9.179907574650379e+03 + 47280 9.740897188651769e-01 -5.980484006628861e+00 -6.006221212009626e+00 3.845637181632835e+00 4.697850165516819e+00 9.236148688021134e+03 + 47300 9.448152764101302e-01 -5.951379869003774e+00 -5.986156980944982e+00 3.986834422173886e+00 4.787138863666788e+00 9.174598966954753e+03 + 47320 9.166005529509663e-01 -5.925688560142874e+00 -6.005115797657377e+00 4.070704348490401e+00 4.614620859356845e+00 9.232775415816768e+03 + 47340 9.851198548545493e-01 -6.044608009255396e+00 -5.988566546802008e+00 3.464987872227755e+00 4.786786622023396e+00 9.182001807310131e+03 + 47360 9.640526246689106e-01 -6.032809718373374e+00 -6.008194608582533e+00 3.540259719871117e+00 4.681603489466055e+00 9.242218240932571e+03 + 47380 9.389829112775817e-01 -6.014410531689600e+00 -5.985379181739933e+00 3.616970998640036e+00 4.783673502637906e+00 9.172219877817934e+03 + 47400 9.644741444950589e-01 -6.067070477756026e+00 -5.956100937489136e+00 3.349159559718594e+00 4.986363832411936e+00 9.082783795652038e+03 + 47420 9.476358226414632e-01 -6.052925710199912e+00 -5.979698778648117e+00 3.448130267936671e+00 4.868610640738117e+00 9.154820543277292e+03 + 47440 9.718178155550132e-01 -6.096780064715259e+00 -5.964356792332919e+00 3.161817782315639e+00 4.922212704770207e+00 9.107973207592200e+03 + 47460 9.342347111835503e-01 -6.045562708798508e+00 -5.961207038148329e+00 3.488518959970464e+00 4.972902274841636e+00 9.098351615872145e+03 + 47480 1.004395621849268e+00 -6.147587553967104e+00 -5.943212678725708e+00 2.858638675722382e+00 5.032190836268208e+00 9.043548940025654e+03 + 47500 9.352932252712870e-01 -6.033432059606342e+00 -5.970244360445858e+00 3.521355553211318e+00 4.884189100055659e+00 9.125933532819468e+03 + 47520 9.035306106016098e-01 -5.964973611041597e+00 -5.998973883521501e+00 3.871765888157765e+00 4.676531062052995e+00 9.213896633884660e+03 + 47540 9.500705343246588e-01 -6.002348667491014e+00 -5.989398977612783e+00 3.653769787706337e+00 4.728128910945173e+00 9.184533536203171e+03 + 47560 1.058680126848192e+00 -6.123864727391484e+00 -5.995591017646378e+00 2.988246940470632e+00 4.724814432119462e+00 9.203520944791037e+03 + 47580 9.933779450102438e-01 -5.986917194238927e+00 -5.973996745601135e+00 3.750046354961777e+00 4.824237570472944e+00 9.137399593099341e+03 + 47600 1.023192411970130e+00 -5.993569485678100e+00 -6.007429054107777e+00 3.737917960088068e+00 4.658334173403581e+00 9.239840714975684e+03 + 47620 9.617353405254992e-01 -5.869418807919121e+00 -6.025352057817954e+00 4.422390340607120e+00 4.526997489095588e+00 9.295033665024937e+03 + 47640 1.017926245968575e+00 -5.928967725688439e+00 -6.037614780982510e+00 4.030753386180224e+00 4.406885181604198e+00 9.332881180529850e+03 + 47660 1.049446135949654e+00 -5.959585038803749e+00 -6.013958604718921e+00 3.898377127259581e+00 4.586155697492531e+00 9.259959594976697e+03 + 47680 1.021850869143050e+00 -5.910955789202574e+00 -6.002424068973411e+00 4.191166347857600e+00 4.665941330742901e+00 9.224487394923333e+03 + 47700 1.035777978435509e+00 -5.929087991497107e+00 -6.014795287901498e+00 4.088724227730848e+00 4.596579668615578e+00 9.262541353551826e+03 + 47720 1.105539913381812e+00 -6.037597280977045e+00 -5.996219240228155e+00 3.463787876417025e+00 4.701386989628266e+00 9.205447208609179e+03 + 47740 9.781290046482486e-01 -5.858802045848045e+00 -6.006292815599252e+00 4.423884103720174e+00 4.576969279685886e+00 9.236368759384113e+03 + 47760 1.021448729452294e+00 -5.934007018234693e+00 -6.031631580577208e+00 4.034546090227980e+00 4.473970745905062e+00 9.314371657272459e+03 + 47780 9.597579824182658e-01 -5.856581177218993e+00 -6.081676067534707e+00 4.438988435860451e+00 4.146458742345918e+00 9.469470215984624e+03 + 47800 1.019281893528648e+00 -5.965087415347896e+00 -6.028633626030746e+00 3.872464444032479e+00 4.507572268547232e+00 9.305130885341976e+03 + 47820 9.688567097848912e-01 -5.911607154527433e+00 -5.998102735314928e+00 4.155959169191423e+00 4.659288159161753e+00 9.211219221217003e+03 + 47840 9.934748098728130e-01 -5.968960846338255e+00 -6.019629765402802e+00 3.876905925107859e+00 4.585957150849348e+00 9.277397188909807e+03 + 47860 1.049716418809813e+00 -6.077479430334300e+00 -6.029167161685926e+00 3.279726577390448e+00 4.557143100268823e+00 9.306810846017066e+03 + 47880 1.015357014804412e+00 -6.052510404720012e+00 -5.986539127733677e+00 3.447926946424655e+00 4.826744227902307e+00 9.175763938551667e+03 + 47900 9.970165991329032e-01 -6.049293773958754e+00 -5.981726647161199e+00 3.472440737612222e+00 4.860421635662862e+00 9.161026303656457e+03 + 47920 9.043362186140707e-01 -5.932254045547368e+00 -6.034620513277404e+00 4.045817465257281e+00 4.458013366391729e+00 9.323634550516099e+03 + 47940 9.715978377178396e-01 -6.048338942087860e+00 -5.982946268651575e+00 3.447704766459533e+00 4.823199616814192e+00 9.164761530882686e+03 + 47960 1.012887801145155e+00 -6.120270485000437e+00 -5.944972051518166e+00 3.073727275642639e+00 5.080318008042747e+00 9.048889284324729e+03 + 47980 9.069349980077585e-01 -5.967976947518326e+00 -6.022850369407328e+00 3.840870058571364e+00 4.525778378450122e+00 9.287325290350896e+03 + 48000 9.802200638679152e-01 -6.075950455434011e+00 -6.014242719884612e+00 3.255269926908890e+00 4.609605293674756e+00 9.260842836446942e+03 + 48020 1.019676289109958e+00 -6.132297044406452e+00 -5.971609034854695e+00 3.003107961493594e+00 4.925803378728896e+00 9.130103317746771e+03 + 48040 9.307626890877065e-01 -5.994544788054818e+00 -6.020081031423273e+00 3.714582714207531e+00 4.567949653064974e+00 9.278781272431908e+03 + 48060 9.591645664943167e-01 -6.025824978099593e+00 -5.970012214878137e+00 3.568981196009621e+00 4.889466719424417e+00 9.125222133666848e+03 + 48080 9.431422338479717e-01 -5.983030416998596e+00 -6.014045653639080e+00 3.759158117633214e+00 4.581063829251197e+00 9.260210410482972e+03 + 48100 1.017949080721878e+00 -6.064317642964275e+00 -5.994840958967280e+00 3.328708989290573e+00 4.727654860283420e+00 9.201238854310041e+03 + 48120 1.042634456966121e+00 -6.052839824573993e+00 -5.976959029646900e+00 3.407243389260697e+00 4.842962656247128e+00 9.146452461065901e+03 + 48140 9.408577083036700e-01 -5.821211183224125e+00 -6.015427341556861e+00 4.660994036821984e+00 4.545774800822046e+00 9.264465815326656e+03 + 48160 1.030585516462605e+00 -5.865872977161039e+00 -6.067777087701285e+00 4.345352679857655e+00 4.185988032575432e+00 9.426256047023180e+03 + 48180 1.139682932914843e+00 -5.970015017531304e+00 -5.978705624017688e+00 3.859416467103258e+00 4.809513659791436e+00 9.151807002856847e+03 + 48200 1.072191356002077e+00 -5.849974812903472e+00 -6.038610066321944e+00 4.393222717932279e+00 4.310049901592288e+00 9.335963103269078e+03 + 48220 1.078872925780270e+00 -5.855936368367009e+00 -6.049032890073923e+00 4.424049260847038e+00 4.315259151615773e+00 9.368169864033069e+03 + 48240 1.114112736498687e+00 -5.916753758017330e+00 -6.008179187767999e+00 4.158532745584832e+00 4.633553779916965e+00 9.242177451092912e+03 + 48260 1.085934645707828e+00 -5.895101522602380e+00 -6.055661290811640e+00 4.213949819014003e+00 4.291990783412603e+00 9.388687871725870e+03 + 48280 1.031792152914885e+00 -5.844732589181486e+00 -6.040697452584264e+00 4.486564227068834e+00 4.361303655945483e+00 9.342397504992032e+03 + 48300 1.103401396094482e+00 -5.989786610906229e+00 -5.987172349438199e+00 3.729813875412410e+00 4.744825369317494e+00 9.177706875608743e+03 + 48320 1.054332432966434e+00 -5.957918381279505e+00 -5.984491430585625e+00 3.939726721907716e+00 4.787140160625885e+00 9.169476899844631e+03 + 48340 1.015535377382261e+00 -5.937572199674421e+00 -5.999900377501064e+00 4.043704359137872e+00 4.685806316802943e+00 9.216723785746890e+03 + 48360 1.002654139582188e+00 -5.954622882505687e+00 -6.031376537613969e+00 3.967780220100761e+00 4.527048854879260e+00 9.313609187953723e+03 + 48380 1.033057655788855e+00 -6.034832171827000e+00 -6.003961349630051e+00 3.512667270907924e+00 4.689932309207103e+00 9.229192032738181e+03 + 48400 9.733471434508630e-01 -5.976870677864805e+00 -5.973167511658129e+00 3.832692291497569e+00 4.853956444919422e+00 9.134844798083617e+03 + 48420 1.026776532070965e+00 -6.078892048606168e+00 -5.988384919938065e+00 3.248973641850832e+00 4.768679580595971e+00 9.181433617400513e+03 + 48440 9.731082347646042e-01 -6.018209502113998e+00 -5.995583100109060e+00 3.651130300761780e+00 4.781054602498525e+00 9.203475374448963e+03 + 48460 9.615964223609431e-01 -6.017108573009856e+00 -6.005932901661578e+00 3.623726818908322e+00 4.687899253219687e+00 9.235267452319675e+03 + 48480 9.631697477898618e-01 -6.032250137615542e+00 -6.004211363280502e+00 3.540877721749003e+00 4.701880702967109e+00 9.229967592925723e+03 + 48500 9.780881068752744e-01 -6.063567858407954e+00 -5.978014048861581e+00 3.358358249730126e+00 4.849621463554641e+00 9.149676515529101e+03 + 48520 9.534173308651359e-01 -6.030556597427357e+00 -6.004455522500621e+00 3.549595406398676e+00 4.699471817756288e+00 9.230734843158583e+03 + 48540 9.487392879841468e-01 -6.023278130289144e+00 -6.005419689715017e+00 3.654067200383567e+00 4.756613129744949e+00 9.233698690948364e+03 + 48560 9.140006243709936e-01 -5.968274703704282e+00 -6.031956717918466e+00 3.892636711452368e+00 4.526964731074670e+00 9.315416861527508e+03 + 48580 1.018747999182326e+00 -6.116064409438147e+00 -5.986152939765185e+00 3.146709469690728e+00 4.892681232287837e+00 9.174608827126467e+03 + 48600 9.692345149179286e-01 -6.029161728581490e+00 -6.020304006172298e+00 3.561992458460034e+00 4.612854871261733e+00 9.279490070758904e+03 + 48620 9.448235242678893e-01 -5.977201698153387e+00 -6.010767026289907e+00 3.833615483895861e+00 4.640878175518219e+00 9.250116336716439e+03 + 48640 9.709584392157622e-01 -5.994070234062184e+00 -5.994748288496804e+00 3.719183715916007e+00 4.715290222423834e+00 9.200925243190643e+03 + 48660 1.011455341634459e+00 -6.024137007239858e+00 -5.972360033007915e+00 3.576366460977876e+00 4.873677859478561e+00 9.132407540970195e+03 + 48680 1.049542287562041e+00 -6.046544659943481e+00 -6.022896800844131e+00 3.438906803799227e+00 4.574696470242065e+00 9.287468639337689e+03 + 48700 1.018097753043231e+00 -5.968165557371307e+00 -5.990618102568760e+00 3.817441808485307e+00 4.688515819441395e+00 9.188270282457133e+03 + 48720 1.005127079261219e+00 -5.918821708936687e+00 -6.002302857493188e+00 4.094454937858867e+00 4.615093264181448e+00 9.224132191875873e+03 + 48740 1.111683962178856e+00 -6.048451344368667e+00 -5.972018029516452e+00 3.468882594903976e+00 4.907774516802645e+00 9.131363705013911e+03 + 48760 1.100551782574782e+00 -6.010621432116328e+00 -6.031499697091800e+00 3.626918876648790e+00 4.507032648258567e+00 9.314015380052400e+03 + 48780 1.024850020859685e+00 -5.885985841417209e+00 -6.053755409938208e+00 4.368394989048728e+00 4.405036164344327e+00 9.382794820766820e+03 + 48800 1.038986612965877e+00 -5.905658645886709e+00 -6.083158880918434e+00 4.134813515321957e+00 4.115579697697194e+00 9.474080432669640e+03 + 48820 1.065642094635793e+00 -5.950639225197349e+00 -6.045418509988269e+00 3.956916960731101e+00 4.412679640414722e+00 9.356960206620961e+03 + 48840 1.088593118493099e+00 -5.995250459161168e+00 -6.030081589277753e+00 3.681708920399130e+00 4.481703181169735e+00 9.309647072265925e+03 + 48860 1.071772352166674e+00 -5.991095504085848e+00 -6.024926264347941e+00 3.786491533309456e+00 4.592230072591290e+00 9.293720155024484e+03 + 48880 1.001595232113722e+00 -5.915372324625001e+00 -6.003595410325644e+00 4.156808974756324e+00 4.650218364184844e+00 9.228094773860739e+03 + 48900 9.522522171856076e-01 -5.875696612227006e+00 -6.020114959600915e+00 4.382311418324385e+00 4.553038919036372e+00 9.278891324245807e+03 + 48920 9.892203865307139e-01 -5.963034533138735e+00 -6.031248344429786e+00 3.892616992295109e+00 4.500922731808715e+00 9.313229801493380e+03 + 48940 1.014970859695119e+00 -6.033679494980607e+00 -6.019187502582506e+00 3.472444007213311e+00 4.555659270191786e+00 9.276062173261718e+03 + 48960 9.523003962799221e-01 -5.969466204279728e+00 -5.994394434848235e+00 3.923392046465469e+00 4.780250288909890e+00 9.199860701688054e+03 + 48980 9.871827717184365e-01 -6.041295292798919e+00 -6.010701557225357e+00 3.439229341836943e+00 4.614903305865623e+00 9.249936703594944e+03 + 49000 1.005408577802902e+00 -6.079704183843540e+00 -6.001204375754503e+00 3.289124286455544e+00 4.739882332308837e+00 9.220755673066991e+03 + 49020 9.646997179670587e-01 -6.024868802079363e+00 -6.013272912165401e+00 3.592445446442863e+00 4.659030840787002e+00 9.257848098872293e+03 + 49040 1.063414115325231e+00 -6.171582997403231e+00 -5.992613837430204e+00 2.737161646098397e+00 4.764830258051518e+00 9.194397139995641e+03 + 49060 9.272678602195490e-01 -5.967719936118869e+00 -6.011031254582509e+00 3.879293731123520e+00 4.630593438100433e+00 9.250943378711341e+03 + 49080 9.768093290486305e-01 -6.037914629294730e+00 -5.983923268993870e+00 3.548875242848396e+00 4.858901988831940e+00 9.167750113379392e+03 + 49100 9.674611881450518e-01 -6.018260586084838e+00 -5.970667012711619e+00 3.594100035824495e+00 4.867389699215193e+00 9.127223885654030e+03 + 49120 9.747882291705945e-01 -6.019686567967014e+00 -5.996577846526719e+00 3.578410102716620e+00 4.711103957289883e+00 9.206563200482971e+03 + 49140 1.021847620355163e+00 -6.076433005376655e+00 -6.007752432520269e+00 3.251920132023790e+00 4.646294609649459e+00 9.240876710196428e+03 + 49160 9.400928245145591e-01 -5.940175489823420e+00 -6.030113493139533e+00 3.967202456377268e+00 4.450764523475116e+00 9.309753345281018e+03 + 49180 9.838042027639273e-01 -5.990040666382249e+00 -6.010533748769880e+00 3.719286966791073e+00 4.601612516427052e+00 9.249445610969804e+03 + 49200 9.882322946811980e-01 -5.982494338435917e+00 -6.010296868804792e+00 3.784337917287297e+00 4.624691485481544e+00 9.248691904699102e+03 + 49220 9.631025896087370e-01 -5.928152732037622e+00 -6.060650908382201e+00 4.025298882660586e+00 4.264473850063490e+00 9.404181969978032e+03 + 49240 1.026215513593853e+00 -6.004541483379546e+00 -6.026062039176782e+00 3.679554182329038e+00 4.555979820646058e+00 9.297242740626350e+03 + 49260 1.030853008640274e+00 -5.995246156069519e+00 -6.032290463483811e+00 3.761312004244114e+00 4.548597858483204e+00 9.316429978721832e+03 + 49280 9.761273331256058e-01 -5.901852527982892e+00 -6.042341252303732e+00 4.182307804325788e+00 4.375599808715698e+00 9.347501731213661e+03 + 49300 1.044738314500833e+00 -5.993198292501122e+00 -5.973005401185380e+00 3.770816816853895e+00 4.886767523628722e+00 9.134347942879691e+03 + 49320 1.019364009519541e+00 -5.946026377045889e+00 -6.008861007014701e+00 3.970872129589444e+00 4.610065960680968e+00 9.244245690602624e+03 + 49340 1.065228019032234e+00 -6.005690111766587e+00 -5.967890204904438e+00 3.672959995219149e+00 4.890012909938289e+00 9.118752441800440e+03 + 49360 1.039341815884592e+00 -5.959783951023377e+00 -5.995329881733830e+00 3.910604444755188e+00 4.706494209900767e+00 9.202719247829560e+03 + 49380 1.063173117837755e+00 -5.989948140148889e+00 -6.041765707599088e+00 3.687429707297512e+00 4.389885216255821e+00 9.345699373890020e+03 + 49400 1.011988625905621e+00 -5.914486105747187e+00 -6.002360311039925e+00 4.161084859835595e+00 4.656497574555375e+00 9.224287694166540e+03 + 49420 1.065170747685042e+00 -5.999039876668198e+00 -5.965824865844365e+00 3.709297137595300e+00 4.900022869752068e+00 9.112432854331237e+03 + 49440 1.051669161450359e+00 -5.989467448667519e+00 -6.002690577040401e+00 3.734014898632972e+00 4.658085649243381e+00 9.225313680776328e+03 + 49460 1.043186952203883e+00 -5.995735806172373e+00 -6.029158904403056e+00 3.651367428821360e+00 4.459446826573044e+00 9.306778235083257e+03 + 49480 9.704208216590099e-01 -5.916310893504618e+00 -6.022696254441475e+00 4.149428478466396e+00 4.538547272885565e+00 9.286863933818331e+03 + 49500 9.846691602425099e-01 -5.972460889498598e+00 -6.006725407232146e+00 3.825144789502567e+00 4.628392626259555e+00 9.237714299610238e+03 + 49520 9.830162561994052e-01 -6.007515617761664e+00 -6.061518076295020e+00 3.560291514611001e+00 4.250201040859021e+00 9.406884618180440e+03 + 49540 9.563193122460731e-01 -6.006102979413655e+00 -5.987977305961195e+00 3.677766958287668e+00 4.781847380190596e+00 9.180199549324425e+03 + 49560 9.496843337182070e-01 -6.027197903720966e+00 -5.975649473910049e+00 3.570315476110371e+00 4.866314537178387e+00 9.142442040141437e+03 + 49580 9.905523653144579e-01 -6.108880474928243e+00 -5.964001413944545e+00 3.142663077733176e+00 4.974581065863802e+00 9.106854807614136e+03 + 49600 9.948488223490037e-01 -6.129629717418061e+00 -5.968804332848658e+00 3.016203035934646e+00 4.939687281779984e+00 9.121534201421306e+03 + 49620 9.824913379715953e-01 -6.119542933140023e+00 -5.987048447909253e+00 3.037605458445725e+00 4.798409296096132e+00 9.177358193547325e+03 + 49640 9.402803569188763e-01 -6.059879871058753e+00 -6.012439454201580e+00 3.345578458356621e+00 4.617988673331291e+00 9.255291549559355e+03 + 49660 9.357193007933300e-01 -6.051918842896614e+00 -5.962520523254814e+00 3.458720741328510e+00 4.972059727056982e+00 9.102359286802923e+03 + 49680 9.869178361013634e-01 -6.117773300507631e+00 -5.994343881559730e+00 3.075588790352731e+00 4.784339614592431e+00 9.199707659316986e+03 + 49700 9.471771613811811e-01 -6.044115934185584e+00 -5.975071660282525e+00 3.543726821932316e+00 4.940189727250530e+00 9.140657798228658e+03 + 49720 8.845688482930033e-01 -5.929610318326787e+00 -5.997010519989712e+00 4.078326032908327e+00 4.691303644812318e+00 9.207847107290261e+03 + 49740 1.034285742870357e+00 -6.120598335403827e+00 -5.933503796486266e+00 3.130836824319832e+00 5.205162619570791e+00 9.014037500406581e+03 + 49760 1.014923792631830e+00 -6.052656543478963e+00 -6.037048587195011e+00 3.414086389622610e+00 4.503709689928494e+00 9.331130138216462e+03 + 49780 1.028580829600424e+00 -6.037546398557192e+00 -6.013982221086176e+00 3.481697487037759e+00 4.617006640621010e+00 9.260035704968246e+03 + 49800 9.918987547662945e-01 -5.951652863996735e+00 -6.025406607469065e+00 3.984074982151195e+00 4.560569573778159e+00 9.295206033565137e+03 + 49820 9.649368419862987e-01 -5.887456547210538e+00 -6.049334921231297e+00 4.312110963005241e+00 4.382580288780630e+00 9.369103993224971e+03 + 49840 1.039319870474989e+00 -5.982552057062671e+00 -6.016575415731664e+00 3.818345183679530e+00 4.622977793104435e+00 9.267984283474150e+03 + 49860 1.019469996128546e+00 -5.946549854149473e+00 -5.996088098929134e+00 3.936241522297452e+00 4.651785254754035e+00 9.205038957284776e+03 + 49880 1.002828677524869e+00 -5.918236362888348e+00 -5.983446595432111e+00 4.158497632741261e+00 4.784050386224103e+00 9.166280693043114e+03 + 49900 1.017580672109399e+00 -5.938879381847934e+00 -5.983775448277921e+00 4.008123497535477e+00 4.750323336450666e+00 9.167285780683491e+03 + 49920 1.043722065121099e+00 -5.978297640544159e+00 -5.977490124566501e+00 3.873178167412284e+00 4.877815049118693e+00 9.148068505029394e+03 + 49940 1.055274561657066e+00 -5.999348038846908e+00 -6.010039087432594e+00 3.669275844117397e+00 4.607886188703972e+00 9.247903131288473e+03 + 49960 1.053223385952575e+00 -6.005283149089586e+00 -5.980163485038802e+00 3.649200437503405e+00 4.793441435738456e+00 9.156250672098911e+03 + 49980 1.036636083373875e+00 -5.990016091464960e+00 -5.968394003875577e+00 3.777478940083470e+00 4.901636313028949e+00 9.120268941147277e+03 + 50000 9.347809848277790e-01 -5.848348956788850e+00 -6.033723907284978e+00 4.481469906841286e+00 4.417018254411643e+00 9.320835921824397e+03 + 50020 1.048042142643880e+00 -6.027074600230936e+00 -5.948231713866965e+00 3.569671727389160e+00 5.022399781788312e+00 9.058796258268056e+03 + 50040 1.010882377579863e+00 -5.981403984413469e+00 -5.978673967917296e+00 3.765968972855084e+00 4.781645150044795e+00 9.151681005690358e+03 + 50060 9.628503024032478e-01 -5.921213832272064e+00 -6.012814447754034e+00 4.088254949554337e+00 4.562270040307435e+00 9.256409066572216e+03 + 50080 1.010223339509348e+00 -6.002484855528738e+00 -5.985398527731820e+00 3.687855869811480e+00 4.785968208122068e+00 9.172254751634498e+03 + 50100 1.001030790155916e+00 -6.001879219812774e+00 -5.979512858175347e+00 3.669126864370451e+00 4.797557974075836e+00 9.154237247691854e+03 + 50120 9.728502085737065e-01 -5.972406445479762e+00 -5.997108210553504e+00 3.814461116433904e+00 4.672619758794681e+00 9.208127962122860e+03 + 50140 9.603116292019739e-01 -5.966482129366100e+00 -5.981868989248910e+00 3.872450464049140e+00 4.784096733493175e+00 9.161468216480474e+03 + 50160 1.029386271117250e+00 -6.080345801056568e+00 -5.975217590065412e+00 3.276575011392812e+00 4.880237467442100e+00 9.141139378609003e+03 + 50180 9.916519387234235e-01 -6.038637136080856e+00 -6.019009158140265e+00 3.460111635805110e+00 4.572818522559757e+00 9.275504784305849e+03 + 50200 9.270338004349133e-01 -5.962580219456789e+00 -6.030402319547695e+00 3.815619853236619e+00 4.426174859078568e+00 9.310618299750673e+03 + 50220 9.772307223112187e-01 -6.061019967596733e+00 -5.998164756649634e+00 3.371590818341882e+00 4.732515166412587e+00 9.211408895894268e+03 + 50240 9.113991201335150e-01 -5.992614515377489e+00 -6.012670097272196e+00 3.705614733838208e+00 4.590452479007527e+00 9.256000499062413e+03 + 50260 9.469536417090276e-01 -6.079117499633528e+00 -5.999036126248356e+00 3.247634500973351e+00 4.707474139503494e+00 9.214091720683818e+03 + 50280 9.947909829129837e-01 -6.182945133191103e+00 -5.960842997103935e+00 2.741104279764050e+00 5.016449115371047e+00 9.097253717556239e+03 + 50300 9.444270115102688e-01 -6.138822663369643e+00 -5.972223501829921e+00 2.963687745957625e+00 4.920325912655633e+00 9.132010053989628e+03 + 50320 9.467215890815247e-01 -6.165152545747036e+00 -5.969149766839883e+00 2.829630942969079e+00 4.955109230785963e+00 9.122606514505844e+03 + 50340 8.884683631481608e-01 -6.093373377640092e+00 -5.960204716384486e+00 3.216048048805449e+00 4.980723109518870e+00 9.095308242407968e+03 + 50360 9.354639546879521e-01 -6.167437301137475e+00 -5.955414411845856e+00 2.823279159329291e+00 5.040747400077841e+00 9.080688717986763e+03 + 50380 9.200394577070150e-01 -6.138712224708702e+00 -5.972950089405519e+00 2.897430002605848e+00 4.849261835124262e+00 9.134207284956599e+03 + 50400 8.877300132711061e-01 -6.073906430188877e+00 -5.996251543417921e+00 3.308574975440318e+00 4.754481352334034e+00 9.205537301505667e+03 + 50420 9.766528264332138e-01 -6.174564377184337e+00 -6.018075687715577e+00 2.697370669110385e+00 4.595952940586443e+00 9.272634128519585e+03 + 50440 9.367383906562713e-01 -6.073439602714039e+00 -6.009370139880023e+00 3.350359741294610e+00 4.718256511604864e+00 9.245839875080566e+03 + 50460 1.016296505323768e+00 -6.144219573501404e+00 -6.004724122993658e+00 2.917777535141496e+00 4.718781998808172e+00 9.231562184673910e+03 + 50480 9.779204020810265e-01 -6.047345913998645e+00 -6.000794821385687e+00 3.465381575437741e+00 4.732685152979649e+00 9.219480161314723e+03 + 50500 9.932387072138371e-01 -6.041047351547241e+00 -5.964855662594410e+00 3.473517260779823e+00 4.911021729372735e+00 9.109465779788108e+03 + 50520 9.598239489220848e-01 -5.967993160364544e+00 -5.993271187034201e+00 3.852080507885196e+00 4.706930166986039e+00 9.196381278041974e+03 + 50540 9.919356155580373e-01 -5.997569545982326e+00 -5.963915070483893e+00 3.742363477393493e+00 4.935612683718741e+00 9.106596916839404e+03 + 50560 9.914927702750076e-01 -5.981534594532715e+00 -6.001302687568809e+00 3.796533506255475e+00 4.683022056939716e+00 9.221018954930403e+03 + 50580 9.982174594185610e-01 -5.979366865785390e+00 -5.986172076819497e+00 3.857482124237686e+00 4.818405549376838e+00 9.174530781267473e+03 + 50600 9.926025508454089e-01 -5.959970561475489e+00 -6.022797143781956e+00 3.849287751892840e+00 4.488527793906915e+00 9.287142927246781e+03 + 50620 9.804371044233543e-01 -5.932814417656726e+00 -5.981051104687015e+00 4.048096536587424e+00 4.771114015056305e+00 9.158954381747775e+03 + 50640 9.855910480561910e-01 -5.931708444238303e+00 -5.997701873332740e+00 4.047750158614251e+00 4.668805676303854e+00 9.209966582243898e+03 + 50660 1.003115410399010e+00 -5.949290560859173e+00 -5.996972927367745e+00 3.963276729286906e+00 4.689477201972318e+00 9.207740965030876e+03 + 50680 1.054054797389577e+00 -6.018796428655352e+00 -5.948621286531692e+00 3.647487548112994e+00 5.050444073755195e+00 9.059995375574263e+03 + 50700 1.024246155194408e+00 -5.969916257774501e+00 -6.008902537671252e+00 3.888918811269142e+00 4.665053558994677e+00 9.244370355984600e+03 + 50720 1.059345644717179e+00 -6.019978664659551e+00 -5.930033198097449e+00 3.666262659011285e+00 5.182743447026842e+00 9.003496197036568e+03 + 50740 1.033285188610389e+00 -5.979641565786328e+00 -6.017426513388751e+00 3.702128324705009e+00 4.485161308370151e+00 9.270621202637658e+03 + 50760 1.026365032062761e+00 -5.969388456763151e+00 -5.993536230824522e+00 3.859696151959576e+00 4.721035896443227e+00 9.197229479995653e+03 + 50780 1.034164795388583e+00 -5.986802164927403e+00 -6.003609126346675e+00 3.758525435160444e+00 4.662017261822109e+00 9.228107331114728e+03 + 50800 9.724304132940095e-01 -5.905810767781840e+00 -5.999597888521965e+00 4.159561518712751e+00 4.621021357912925e+00 9.215807262960543e+03 + 50820 9.742110337787011e-01 -5.923625822752065e+00 -5.993044201855982e+00 4.111304282544733e+00 4.712693207270596e+00 9.195688263539105e+03 + 50840 1.016522934943721e+00 -6.005333403402849e+00 -5.997220702411089e+00 3.669067610973946e+00 4.715651995505054e+00 9.208517474534847e+03 + 50860 9.855986051312848e-01 -5.984671633611327e+00 -6.032489785996475e+00 3.770667263086021e+00 4.496088032255339e+00 9.317032321046712e+03 + 50880 9.818174041362580e-01 -6.009441543384095e+00 -6.028771018671472e+00 3.649519746773015e+00 4.538526908446260e+00 9.305572422411053e+03 + 50900 9.265598581227038e-01 -5.962208828111066e+00 -6.040849443679447e+00 3.860000552682661e+00 4.408433968493095e+00 9.342854572039438e+03 + 50920 9.838843325524833e-01 -6.080871460471497e+00 -5.987458629093135e+00 3.278981636890721e+00 4.815372570254209e+00 9.178593232183581e+03 + 50940 9.329269729867284e-01 -6.034508528755980e+00 -6.037082921968420e+00 3.443293876610036e+00 4.428511312398145e+00 9.331255283737177e+03 + 50960 9.837277722685468e-01 -6.133371526563404e+00 -5.996071267855140e+00 3.000699604108495e+00 4.789098936757714e+00 9.204999426843136e+03 + 50980 8.702854982158668e-01 -5.981775451855867e+00 -6.060146978459880e+00 3.777657461830151e+00 4.327636028115366e+00 9.402614208273910e+03 + 51000 9.303081706730552e-01 -6.081232189657023e+00 -5.989764867404089e+00 3.324619873666510e+00 4.849839392565235e+00 9.185656808821976e+03 + 51020 9.362062832949892e-01 -6.094201533224385e+00 -5.994795858784208e+00 3.142074241480663e+00 4.712877007094562e+00 9.201079260013401e+03 + 51040 8.916724519068148e-01 -6.023573367327862e+00 -5.991655183484181e+00 3.585614088628065e+00 4.768893239581466e+00 9.191451222172351e+03 + 51060 9.496049770041730e-01 -6.095008359988786e+00 -5.991024599229093e+00 3.215032615465062e+00 4.812123461182193e+00 9.189516493543077e+03 + 51080 9.619916911226388e-01 -6.090569294193849e+00 -5.977867331693296e+00 3.173839925741933e+00 4.820992034992443e+00 9.149226195549452e+03 + 51100 9.658689906463416e-01 -6.064901932694718e+00 -5.972304744806273e+00 3.371965645125561e+00 4.903673027349527e+00 9.132206230068714e+03 + 51120 9.046054585225609e-01 -5.931771938116999e+00 -5.991746600862268e+00 4.094039390014879e+00 4.749655595482483e+00 9.191705148152854e+03 + 51140 9.704872552337590e-01 -5.981210451993307e+00 -6.024449021869296e+00 3.843386754803953e+00 4.595104195428959e+00 9.292240537702499e+03 + 51160 1.056813943904141e+00 -6.069305609638939e+00 -5.945723842710056e+00 3.393456172336288e+00 5.103081802258558e+00 9.051173173418034e+03 + 51180 1.000936629768517e+00 -5.958944049570591e+00 -6.013813275098727e+00 3.910008724303332e+00 4.594941140335565e+00 9.259489118274239e+03 + 51200 1.076942797090729e+00 -6.056011617741278e+00 -5.965345796768132e+00 3.422183047183304e+00 4.942800221701567e+00 9.110967684296853e+03 + 51220 1.001952029979790e+00 -5.936437209989361e+00 -6.015231062650301e+00 4.022384837293339e+00 4.569938342004929e+00 9.263845047357210e+03 + 51240 1.009760259942262e+00 -5.944456743464603e+00 -6.004084448473741e+00 4.028100334402474e+00 4.685708824882480e+00 9.229545729503996e+03 + 51260 1.041214657757352e+00 -5.989762400399491e+00 -5.996717450140490e+00 3.789934647964235e+00 4.749997676060953e+00 9.206963830070823e+03 + 51280 9.873780543116208e-01 -5.912741161960450e+00 -5.985079689066913e+00 4.179353597853135e+00 4.763974580856937e+00 9.171288347258091e+03 + 51300 9.458221571843548e-01 -5.853779710132804e+00 -5.997559365352577e+00 4.508777349786932e+00 4.683172319685257e+00 9.209552678828681e+03 + 51320 9.819913962944069e-01 -5.911708223714713e+00 -6.001413967189768e+00 4.182449487543105e+00 4.667345226590403e+00 9.221385642385763e+03 + 51340 1.011379443511577e+00 -5.960385247248838e+00 -5.990296655882952e+00 3.918690910411009e+00 4.746934973258399e+00 9.187284884095849e+03 + 51360 1.072304499396025e+00 -6.059768862924918e+00 -5.973504851488315e+00 3.372341523386148e+00 4.867682826367751e+00 9.135904468082566e+03 + 51380 1.009567364433845e+00 -5.979075618233754e+00 -6.016322092095097e+00 3.810734851105227e+00 4.596859834320194e+00 9.267195268590232e+03 + 51400 9.758340396241678e-01 -5.942925286669498e+00 -5.984994678059278e+00 4.071550838741338e+00 4.829981883163944e+00 9.171026010426125e+03 + 51420 9.995822326524497e-01 -5.993505503160767e+00 -6.003904430537700e+00 3.719813360193166e+00 4.660101109966003e+00 9.229039047119042e+03 + 51440 9.301334440437113e-01 -5.907991783603136e+00 -6.040033829323480e+00 4.174542386200208e+00 4.416336526233454e+00 9.340323695294672e+03 + 51460 9.538107309061349e-01 -5.962955583773232e+00 -6.000556628319814e+00 3.878656771273245e+00 4.662745754743936e+00 9.218689658912770e+03 + 51480 9.471465747023062e-01 -5.970918029893483e+00 -5.959029695731681e+00 3.882079184794659e+00 4.950343839265495e+00 9.091691857314732e+03 + 51500 9.490321868955238e-01 -5.989309161411400e+00 -6.015989186165962e+00 3.791552111155077e+00 4.638351280293898e+00 9.266193508301110e+03 + 51520 9.535641696492776e-01 -6.011809454547708e+00 -6.027959787965264e+00 3.604144974948812e+00 4.511407261209192e+00 9.303107696895384e+03 + 51540 1.005071032913334e+00 -6.105500555478793e+00 -6.032883225040666e+00 3.147533872937250e+00 4.564513821808542e+00 9.318274688095309e+03 + 51560 9.380748835465266e-01 -6.025870830866712e+00 -5.989247335313960e+00 3.537476557505350e+00 4.747774336436866e+00 9.184075832812823e+03 + 51580 9.259592934249862e-01 -6.026089046347916e+00 -6.016283967517524e+00 3.551921430671273e+00 4.608223710646426e+00 9.267093792332176e+03 + 51600 9.147637762751668e-01 -6.026768696214934e+00 -5.988134491832954e+00 3.598123864851806e+00 4.819967445036944e+00 9.180673772076632e+03 + 51620 9.870478551098852e-01 -6.148591727285904e+00 -5.980150487319964e+00 2.899391151860252e+00 4.866606817942323e+00 9.156224908340382e+03 + 51640 8.982848445049423e-01 -6.028480720906710e+00 -6.003435455185428e+00 3.576760548170372e+00 4.720574339684317e+00 9.227592642900363e+03 + 51660 9.743162099801198e-01 -6.147056358201722e+00 -5.967176388004423e+00 2.937969170891938e+00 4.970867796100254e+00 9.116570496834482e+03 + 51680 9.065447238652278e-01 -6.046621842401782e+00 -6.044849384456986e+00 3.482974886166088e+00 4.493152613972086e+00 9.355225788010583e+03 + 51700 9.252719405794706e-01 -6.066727533320868e+00 -6.007182571070153e+00 3.356108654160840e+00 4.698025041957573e+00 9.239126641171921e+03 + 51720 9.154243715009501e-01 -6.035377344101134e+00 -6.044691088574472e+00 3.479945081909376e+00 4.426464119846168e+00 9.354753219253567e+03 + 51740 9.560427940661892e-01 -6.069065215884385e+00 -5.976734227988724e+00 3.336016496016396e+00 4.866195316687483e+00 9.145765978635041e+03 + 51760 9.346537403776455e-01 -5.997849578075826e+00 -6.000120622853693e+00 3.746846751005250e+00 4.733806060447694e+00 9.217406971760780e+03 + 51780 1.008562057280396e+00 -6.064088041047438e+00 -5.949124649880481e+00 3.370607132802836e+00 5.030744715410787e+00 9.061529847140102e+03 + 51800 1.015131164922165e+00 -6.030699638438955e+00 -5.963740228703680e+00 3.518871968992393e+00 4.903363261627513e+00 9.106032651749667e+03 + 51820 1.007063507540216e+00 -5.980932020272008e+00 -5.985570945107920e+00 3.730144171719611e+00 4.703506747440505e+00 9.172800647356073e+03 + 51840 1.027943325767666e+00 -5.982298529524112e+00 -6.005240055729294e+00 3.778483857861036e+00 4.646750064201173e+00 9.233143568023681e+03 + 51860 1.026476534990275e+00 -5.959518428509644e+00 -6.046258826899614e+00 3.874383585628508e+00 4.376306795040033e+00 9.359587227077636e+03 + 51880 1.052284957712779e+00 -5.985500434120616e+00 -5.983253124512844e+00 3.805377306000628e+00 4.818281705538494e+00 9.165712052839463e+03 + 51900 1.045666458477144e+00 -5.968220015717245e+00 -5.999227351851104e+00 3.870046032849890e+00 4.691997110399514e+00 9.214666312535022e+03 + 51920 1.046688056766279e+00 -5.967247812089924e+00 -6.022051925049804e+00 3.890709504236362e+00 4.576015806711657e+00 9.284857125085031e+03 + 51940 9.855932020874038e-01 -5.879925685450293e+00 -6.050061835027734e+00 4.307405859285987e+00 4.330457759928261e+00 9.371369888927360e+03 + 51960 1.110355275138234e+00 -6.071909511313173e+00 -5.987444286967867e+00 3.304976512023054e+00 4.789988901165024e+00 9.178564225228083e+03 + 51980 9.929521519905856e-01 -5.910473081707128e+00 -6.020697101072803e+00 4.160731333014965e+00 4.527807956705388e+00 9.280670102762710e+03 + 52000 1.008408035924027e+00 -5.950135202123340e+00 -6.039454031686636e+00 3.910558942152007e+00 4.397676400755358e+00 9.338521010698263e+03 + 52020 9.650096050577709e-01 -5.906788417566562e+00 -5.997993144246366e+00 4.205739054970559e+00 4.682027400489286e+00 9.210882852758918e+03 + 52040 1.022933414540078e+00 -6.014578286283375e+00 -5.963866836575396e+00 3.612485947212137e+00 4.903678939006832e+00 9.106455099707433e+03 + 52060 1.006202595740163e+00 -6.012249866807991e+00 -6.011214842072961e+00 3.575835348497304e+00 4.581778620695411e+00 9.251525328875889e+03 + 52080 1.052417697164816e+00 -6.107534096237893e+00 -5.996008313858428e+00 3.089946653128287e+00 4.730344954110221e+00 9.204817581149982e+03 + 52100 9.431680840612089e-01 -5.977941204102937e+00 -6.023459131354882e+00 3.823355159989752e+00 4.561984177832610e+00 9.289194471499681e+03 + 52120 9.659619327480997e-01 -6.040284890910605e+00 -5.973514128472051e+00 3.472215774673018e+00 4.855623825337283e+00 9.135919492612627e+03 + 52140 9.308807677781163e-01 -6.011977845369612e+00 -5.970509228467302e+00 3.582762387161297e+00 4.820881602662089e+00 9.126732443230156e+03 + 52160 9.071861400048858e-01 -5.993126500493627e+00 -5.952020985588605e+00 3.735003116506627e+00 4.971037344149133e+00 9.070345152608201e+03 + 52180 9.653304313496931e-01 -6.088875063270415e+00 -5.969421063264388e+00 3.191642640839530e+00 4.877565994320890e+00 9.123404892128525e+03 + 52200 9.164479643663841e-01 -6.020947804289304e+00 -6.026905995779346e+00 3.551747887317327e+00 4.517535029754352e+00 9.299831728682744e+03 + 52220 9.297632623658564e-01 -6.040706533150455e+00 -5.978767466085873e+00 3.483262439655498e+00 4.838926147779983e+00 9.151988193854344e+03 + 52240 9.402843507872609e-01 -6.049955312177967e+00 -5.957535012511811e+00 3.459884846562414e+00 4.990576509240629e+00 9.087133281453420e+03 + 52260 9.295722169973417e-01 -6.013645720742579e+00 -5.990555231031236e+00 3.596533569943698e+00 4.729122735107968e+00 9.188084563107286e+03 + 52280 9.903536822885919e-01 -6.059673795152221e+00 -6.013065422301480e+00 3.325546476652243e+00 4.593178966183586e+00 9.257212874981069e+03 + 52300 1.019880398791717e+00 -6.041306430727134e+00 -5.970509573751407e+00 3.526460617785359e+00 4.932987126318192e+00 9.126733210775525e+03 + 52320 1.007240931584947e+00 -5.955597470598349e+00 -6.010101335371619e+00 3.887351002256649e+00 4.574381376282718e+00 9.248102214581102e+03 + 52340 1.023622438577219e+00 -5.928661719555032e+00 -6.026252365879883e+00 4.048652284205052e+00 4.488271690904042e+00 9.297833266251941e+03 + 52360 1.046798246009373e+00 -5.932724098997346e+00 -6.035898569657915e+00 4.006224157428909e+00 4.413780380698188e+00 9.327588143881630e+03 + 52380 1.106596386733531e+00 -6.005649720883485e+00 -5.981900185259828e+00 3.666676053337945e+00 4.803049562117743e+00 9.161585955208917e+03 + 52400 1.036506603730997e+00 -5.895470860335545e+00 -6.058068686167688e+00 4.199426067612437e+00 4.265764189752043e+00 9.396148971152239e+03 + 52420 1.076991826339070e+00 -5.958568191142979e+00 -5.968495784482372e+00 3.936968372984319e+00 4.879962595739419e+00 9.120600012704457e+03 + 52440 1.062932242835895e+00 -5.946009167806302e+00 -6.006278935124068e+00 3.948052527332568e+00 4.601974196677610e+00 9.236339494235986e+03 + 52460 1.070917419718506e+00 -5.973098800307517e+00 -5.983105168000568e+00 3.848088797899381e+00 4.790630686125487e+00 9.165254845568827e+03 + 52480 9.736384904994325e-01 -5.849949329320849e+00 -6.009789441181217e+00 4.444748850110064e+00 4.526922192630459e+00 9.247105651436716e+03 + 52500 1.063873915301763e+00 -6.007793601078929e+00 -5.956701757883597e+00 3.656532458801290e+00 4.949909728866066e+00 9.084517922688878e+03 + 52520 1.065780977131344e+00 -6.035156426614756e+00 -5.971497263413688e+00 3.496073457040874e+00 4.861614223365068e+00 9.129761107981814e+03 + 52540 9.788905514271805e-01 -5.934515972533159e+00 -6.028120656718690e+00 4.029671650583085e+00 4.492179068711709e+00 9.303583080173354e+03 + 52560 1.017888607173856e+00 -6.019728414652999e+00 -5.992547740530533e+00 3.639922759937061e+00 4.795998396943984e+00 9.194164078348520e+03 + 52580 9.735498260878793e-01 -5.982062076866749e+00 -6.007894704482911e+00 3.714935411829019e+00 4.566600466470815e+00 9.241313485180091e+03 + 52600 1.025871500414417e+00 -6.082466558518600e+00 -5.950172431019364e+00 3.278024905395235e+00 5.037678257945911e+00 9.064718418318713e+03 + 52620 9.754376729899238e-01 -6.025142988036771e+00 -5.993717291120018e+00 3.618541631043576e+00 4.798992845850453e+00 9.197780340024152e+03 + 52640 9.481246097829640e-01 -5.999243319143893e+00 -6.045235297331171e+00 3.672496373965805e+00 4.408403317978836e+00 9.356447485059593e+03 + 52660 1.001975454221739e+00 -6.091639522441146e+00 -5.989956357705017e+00 3.240559257147956e+00 4.824439724481699e+00 9.186247976451472e+03 + 52680 9.329808847849286e-01 -5.997763162984405e+00 -6.036817060109509e+00 3.688638817209709e+00 4.464385296346315e+00 9.330397447026453e+03 + 52700 9.142057337974470e-01 -5.973639329139375e+00 -6.014037663004262e+00 3.826043391418043e+00 4.594069906743899e+00 9.260208075779587e+03 + 52720 9.490040564353914e-01 -6.024229581351186e+00 -6.016592591296121e+00 3.490902002055461e+00 4.534754780772039e+00 9.268070123068326e+03 + 52740 1.001085698040597e+00 -6.095797009360768e+00 -6.000593426606239e+00 3.177299797692559e+00 4.723973502575886e+00 9.218891563568488e+03 + 52760 1.011231922447134e+00 -6.101593962210096e+00 -5.987306713874187e+00 3.160567663288969e+00 4.816822729128283e+00 9.178127830153120e+03 + 52780 9.329168122251138e-01 -5.972932811588024e+00 -5.959177213568859e+00 3.849697371975708e+00 4.928684144473662e+00 9.092163439538352e+03 + 52800 9.833136632247781e-01 -6.024374575036149e+00 -5.993717337286055e+00 3.543040194335394e+00 4.719078797688642e+00 9.197756060186164e+03 + 52820 9.924891576511857e-01 -6.001133170360404e+00 -5.975010092147766e+00 3.717414632300875e+00 4.867417389931134e+00 9.140483081146873e+03 + 52840 1.025028437966833e+00 -5.995004407447468e+00 -5.985953831873790e+00 3.696509464457718e+00 4.748479269973822e+00 9.173971626106906e+03 + 52860 9.786745177733325e-01 -5.866570465648356e+00 -6.029338951070430e+00 4.386956182581171e+00 4.452314350945906e+00 9.307294431352690e+03 + 52880 1.061703689307365e+00 -5.936875268461118e+00 -6.001814782766835e+00 3.990919317750786e+00 4.618026577250000e+00 9.222594596798250e+03 + 52900 1.091442686073946e+00 -5.947022164560953e+00 -5.975296121149489e+00 3.963534227981891e+00 4.801180793869876e+00 9.141360884173373e+03 + 52920 1.018147657110040e+00 -5.821231940709525e+00 -6.023374006980244e+00 4.658747177257646e+00 4.498016151347511e+00 9.288890980931996e+03 + 52940 1.106921234944824e+00 -5.948230501963789e+00 -6.009478674925897e+00 3.992538596182386e+00 4.640842108909830e+00 9.246161800478541e+03 + 52960 1.043850723994171e+00 -5.858517140262991e+00 -6.037421273667280e+00 4.420745381812571e+00 4.393450162479976e+00 9.332254275703262e+03 + 52980 1.146572084146277e+00 -6.024123742386364e+00 -5.992008195267806e+00 3.626360458907028e+00 4.810772900326647e+00 9.192512020501281e+03 + 53000 1.045708768352617e+00 -5.893566419835420e+00 -6.036023925205782e+00 4.263743125401001e+00 4.445730084336671e+00 9.327976687495480e+03 + 53020 1.066139618325122e+00 -5.949931833177454e+00 -6.008253453186554e+00 3.982385348091484e+00 4.647493580757702e+00 9.242388717424526e+03 + 53040 9.717946982252299e-01 -5.841095634475598e+00 -6.042196177504766e+00 4.511556816639685e+00 4.356806378357741e+00 9.347040636933820e+03 + 53060 1.072321437004657e+00 -6.020874172903369e+00 -5.984668312996838e+00 3.631074164424207e+00 4.838973814846221e+00 9.170038597085044e+03 + 53080 9.523846234842458e-01 -5.871321604560748e+00 -6.054842510593891e+00 4.403404172283365e+00 4.349598730072635e+00 9.386175005812172e+03 + 53100 1.018425726091077e+00 -5.996774029250003e+00 -6.015408131640375e+00 3.701582775990699e+00 4.594582876447157e+00 9.264422874205799e+03 + 53120 9.924607349976536e-01 -5.983069244398583e+00 -6.017439609970824e+00 3.753154824659362e+00 4.555794866746666e+00 9.270656866810732e+03 + 53140 9.974854833458909e-01 -6.009885452766574e+00 -6.009867521563295e+00 3.573702770731136e+00 4.573805734475211e+00 9.247368710658689e+03 + 53160 9.940751085819003e-01 -6.021595100052499e+00 -5.987711967347504e+00 3.579831050168595e+00 4.774393241558514e+00 9.179343816160032e+03 + 53180 9.666443054771724e-01 -5.993462840315974e+00 -5.965816521705590e+00 3.696135650678614e+00 4.854885090393418e+00 9.112393798526584e+03 + 53200 9.821699458789496e-01 -6.023249894731318e+00 -5.970367592701577e+00 3.551468191425392e+00 4.855126553189956e+00 9.126312828370314e+03 + 53220 9.272710253604787e-01 -5.944831109699081e+00 -6.030603698023383e+00 3.925040786441650e+00 4.432521311018358e+00 9.311239915970351e+03 + 53240 9.775165789530345e-01 -6.019507539357808e+00 -5.997289550889714e+00 3.587730402354819e+00 4.715309530361220e+00 9.208740338720916e+03 + 53260 1.057424203802684e+00 -6.138467595003966e+00 -5.915235692997455e+00 2.955192362793489e+00 5.237024489140065e+00 8.958678007761646e+03 + 53280 9.729165361109603e-01 -6.009315713517995e+00 -5.936377673937319e+00 3.651878232534388e+00 5.070699742931779e+00 9.022750436479284e+03 + 53300 9.829913345104407e-01 -6.015422455548157e+00 -5.983219005422930e+00 3.595302654250568e+00 4.780219848337429e+00 9.165591694171459e+03 + 53320 1.008794017081309e+00 -6.041954815400758e+00 -5.964851259336182e+00 3.467282428155766e+00 4.910022978815300e+00 9.109458049205927e+03 + 53340 1.005485120102753e+00 -6.020518057739581e+00 -5.977110253813974e+00 3.557920712955947e+00 4.807175040432733e+00 9.146895715578885e+03 + 53360 1.055782348600047e+00 -6.071377907471522e+00 -5.965462634459401e+00 3.309910355384630e+00 4.918092243355754e+00 9.111334947731586e+03 + 53380 1.034449759511274e+00 -6.008561035570028e+00 -6.020860443853002e+00 3.643613660363733e+00 4.572988554675614e+00 9.281195782495422e+03 + 53400 9.651743107645262e-01 -5.872006685577692e+00 -6.043195811315903e+00 4.294690028639466e+00 4.311695577219067e+00 9.350104080379133e+03 + 53420 1.035796442713569e+00 -5.934699347903999e+00 -5.989171246635725e+00 4.065959874381704e+00 4.753173802365050e+00 9.183807317234046e+03 + 53440 1.091746920455752e+00 -5.966754028769856e+00 -6.004497118016895e+00 3.854542728896817e+00 4.637816069716134e+00 9.230853072815878e+03 + 53460 1.131146227325475e+00 -5.978769549799787e+00 -6.008578138872749e+00 3.831975053144749e+00 4.660809521823552e+00 9.243383605451416e+03 + 53480 1.068258819224858e+00 -5.853311307979129e+00 -6.062825444552813e+00 4.498764652528436e+00 4.295702058114491e+00 9.410920501478418e+03 + 53500 1.144473784186664e+00 -5.948350374672767e+00 -6.056046390364228e+00 3.949425658581212e+00 4.331018470576275e+00 9.389924574736506e+03 + 53520 1.094728735030157e+00 -5.876270621218036e+00 -6.011388199900348e+00 4.386411964252725e+00 4.610545918081166e+00 9.252025039117731e+03 + 53540 1.068698498071433e+00 -5.850478698851571e+00 -6.022678006677888e+00 4.469215103502977e+00 4.480420030207506e+00 9.286760560622026e+03 + 53560 1.022025568330448e+00 -5.798739379430535e+00 -5.990213704163977e+00 4.847693102479370e+00 4.748217899303960e+00 9.186988240052389e+03 + 53580 1.080971893856868e+00 -5.908623943052528e+00 -6.017548357678433e+00 4.165044144311972e+00 4.539583299531339e+00 9.270989663307830e+03 + 53600 1.118183833765542e+00 -5.990172635510129e+00 -5.961533455299629e+00 3.761228045880086e+00 4.925678650547590e+00 9.099347281947013e+03 + 53620 1.100736206269385e+00 -5.991340670929203e+00 -5.987486481812516e+00 3.752664713471614e+00 4.774796063813468e+00 9.178655665610202e+03 + 53640 1.058632135947689e+00 -5.953942087571248e+00 -6.032624614549675e+00 3.906532273412553e+00 4.454725027420723e+00 9.317457763580438e+03 + 53660 1.036072524780025e+00 -5.941173994648743e+00 -5.989155437233582e+00 4.007475482415006e+00 4.731958613988618e+00 9.183770979502053e+03 + 53680 1.011098842717600e+00 -5.921279638574397e+00 -6.003511772663831e+00 4.059320044703824e+00 4.587130405380668e+00 9.227808797213391e+03 + 53700 1.042140276238395e+00 -5.982974244087150e+00 -5.962119762222389e+00 3.816153838863448e+00 4.935903500951545e+00 9.101122843343459e+03 + 53720 1.015132616623391e+00 -5.956981855314658e+00 -5.990511364806482e+00 3.961074147459456e+00 4.768542515282583e+00 9.187944782908702e+03 + 53740 9.838176637114679e-01 -5.924379754177998e+00 -6.019223725442540e+00 4.093615606318439e+00 4.549006846260322e+00 9.276162708457075e+03 + 53760 1.053302193298816e+00 -6.041660854400758e+00 -6.026787902909297e+00 3.416274278185297e+00 4.501677067231068e+00 9.299474800658514e+03 + 53780 1.000063208067193e+00 -5.978762919306122e+00 -6.012850090770648e+00 3.806504514058653e+00 4.610770700536607e+00 9.256550002760396e+03 + 53800 9.980375814867323e-01 -5.992572129120801e+00 -6.003969749041622e+00 3.710507271653715e+00 4.645060374292378e+00 9.229241116642581e+03 + 53820 1.042543449439469e+00 -6.075565126382925e+00 -5.975658040444740e+00 3.321594412917892e+00 4.895276360946530e+00 9.142470240619261e+03 + 53840 9.985450816635743e-01 -6.029411096125779e+00 -5.984794791206328e+00 3.566725331049144e+00 4.822919058247507e+00 9.170372290875619e+03 + 53860 1.035715401997662e+00 -6.101182126500418e+00 -5.952485337190494e+00 3.147828763935610e+00 5.001668738906972e+00 9.071762626318081e+03 + 53880 9.870568060008424e-01 -6.043273541372438e+00 -5.973501173485889e+00 3.449701431837473e+00 4.850345165481069e+00 9.135874385736128e+03 + 53900 9.155667710208502e-01 -5.947236788178921e+00 -5.980924681428175e+00 3.954460145815324e+00 4.761019049593475e+00 9.158556841170022e+03 + 53920 9.534139397041693e-01 -6.009258257218812e+00 -5.935998289205425e+00 3.655948475322871e+00 5.076618548599148e+00 9.021595347392269e+03 + 53940 9.831178025735192e-01 -6.053395494736893e+00 -5.912139268709897e+00 3.462595488988847e+00 5.273710598166195e+00 8.949298640865523e+03 + 53960 1.007717841815206e+00 -6.083446510073417e+00 -5.948344141634580e+00 3.234341502631163e+00 5.010120209230912e+00 9.059136750347028e+03 + 53980 9.595405683186373e-01 -6.000367912871468e+00 -6.010790333339369e+00 3.679355622244875e+00 4.619508471053836e+00 9.250182114446752e+03 + 54000 9.770449537282063e-01 -6.008994040440683e+00 -6.024713741685058e+00 3.583692327893432e+00 4.493427370732323e+00 9.293047830086660e+03 + 54020 1.024637848056716e+00 -6.051792812883864e+00 -5.990618076428905e+00 3.436483268815437e+00 4.787758072299678e+00 9.188268443097966e+03 + 54040 9.818594127211741e-01 -5.949050069722733e+00 -6.021403700422540e+00 4.036178662189709e+00 4.620712918023255e+00 9.282857879932666e+03 + 54060 1.091477687510626e+00 -6.066219296214215e+00 -5.992907664473782e+00 3.298016698629028e+00 4.718983433020942e+00 9.195304647267138e+03 + 54080 1.073057900154336e+00 -5.994236350042423e+00 -5.995493973971848e+00 3.764430025319911e+00 4.757208554100484e+00 9.203197592571596e+03 + 54100 1.076770153951080e+00 -5.963734840019113e+00 -5.993359873743739e+00 3.886297044919783e+00 4.716185516813827e+00 9.196658386561119e+03 + 54120 1.086255932639081e+00 -5.949761631920937e+00 -6.005991963039690e+00 4.048906228560317e+00 4.726022965660820e+00 9.235453556036309e+03 + 54140 1.105744408686670e+00 -5.962985047293924e+00 -6.026146170595598e+00 3.898881195026275e+00 4.536200250875821e+00 9.297488992661685e+03 + 54160 1.070487361786937e+00 -5.908335621743166e+00 -6.026832263401276e+00 4.190032313696031e+00 4.509606259999134e+00 9.299588776385383e+03 + 54180 1.098088690069195e+00 -5.955584101182066e+00 -6.026589012631286e+00 3.982595650760899e+00 4.574874461244946e+00 9.298840796003318e+03 + 54200 9.866563593999562e-01 -5.806740737845078e+00 -6.059025010112924e+00 4.639262317332776e+00 4.190606985105847e+00 9.399121816076367e+03 + 54220 1.075717877795899e+00 -5.956746585466376e+00 -5.960290828418375e+00 3.935512086157409e+00 4.915160494657204e+00 9.095557724466327e+03 + 54240 1.035827334390549e+00 -5.921079555687382e+00 -5.996851287655333e+00 4.131266988693183e+00 4.696173978095584e+00 9.207350468619268e+03 + 54260 1.127915649114686e+00 -6.081901170805526e+00 -5.963965435802386e+00 3.276584960001056e+00 4.953790200885093e+00 9.106750144146325e+03 + 54280 1.054877057039187e+00 -5.999697581123558e+00 -5.993456709662678e+00 3.714311651896822e+00 4.750147701596931e+00 9.196975995099487e+03 + 54300 9.628232125924775e-01 -5.889137643868834e+00 -6.031467394488017e+00 4.318038066573212e+00 4.500758613060134e+00 9.313894258397562e+03 + 54320 9.615570204218201e-01 -5.908998779812577e+00 -6.013433636630330e+00 4.197414887755412e+00 4.597733778666011e+00 9.258339195786244e+03 + 54340 9.932746340689625e-01 -5.971692953564488e+00 -6.006559622403910e+00 3.852415662715926e+00 4.652205854640401e+00 9.237190943320966e+03 + 54360 1.012407481702020e+00 -6.010853582313801e+00 -5.998083717318947e+00 3.614637646351827e+00 4.687964187282502e+00 9.211188072684419e+03 + 54380 1.009680495622634e+00 -6.013927312559051e+00 -6.022159601557566e+00 3.667467982864707e+00 4.620196905492634e+00 9.285185285526140e+03 + 54400 9.668698350026017e-01 -5.957758157456656e+00 -6.037198806573427e+00 4.000746172843474e+00 4.544585672214253e+00 9.331582454080000e+03 + 54420 1.007328646271102e+00 -6.023625989749931e+00 -6.026213050498333e+00 3.593274111507349e+00 4.578418808343668e+00 9.297670202081641e+03 + 54440 9.864892413799866e-01 -5.997248970003383e+00 -6.008657168125299e+00 3.714940141429913e+00 4.649432502400920e+00 9.243635272155399e+03 + 54460 9.530134833113747e-01 -5.951006745276899e+00 -6.003029112187733e+00 4.037144712765244e+00 4.738424231527972e+00 9.226351764741863e+03 + 54480 1.036880768159336e+00 -6.076515863439096e+00 -5.994320574596797e+00 3.272804341455232e+00 4.744782409667551e+00 9.199631076640653e+03 + 54500 9.804467287213167e-01 -5.992977294774775e+00 -6.034702610969758e+00 3.725957634589291e+00 4.486364412025885e+00 9.323900751107401e+03 + 54520 9.700098898365177e-01 -5.977938283224316e+00 -6.021186568401783e+00 3.833078935517706e+00 4.584740589378192e+00 9.282220122015045e+03 + 54540 1.030318662881385e+00 -6.068733020322838e+00 -5.988817546510124e+00 3.365933022447825e+00 4.824820039960036e+00 9.182774168443117e+03 + 54560 9.853601595940844e-01 -6.003353594084792e+00 -5.993827554132017e+00 3.748997592232018e+00 4.803697587790767e+00 9.198100040946489e+03 + 54580 9.678204542768577e-01 -5.976283357817767e+00 -6.012164101197142e+00 3.798140800403278e+00 4.592108019391814e+00 9.254424220422532e+03 + 54600 1.001254533071817e+00 -6.021782905553730e+00 -6.011284848679870e+00 3.603615665157530e+00 4.663897132296282e+00 9.251728000235782e+03 + 54620 1.022602942584029e+00 -6.049267499318328e+00 -6.014502819326941e+00 3.433302600118131e+00 4.632926772445522e+00 9.261637785656110e+03 + 54640 9.630289851929216e-01 -5.955535304955922e+00 -6.067957871332143e+00 3.936373644321743e+00 4.290825870853560e+00 9.426843972880242e+03 + 54660 1.000252976011499e+00 -6.004244185197375e+00 -6.030681149653883e+00 3.715586044564397e+00 4.563780903548096e+00 9.311477266155383e+03 + 54680 9.979828450038610e-01 -5.993307335543915e+00 -6.013931419528004e+00 3.711901954800187e+00 4.593475272996868e+00 9.259863635940037e+03 + 54700 9.591074227254339e-01 -5.923855770338760e+00 -6.014125794711280e+00 4.102850299306270e+00 4.584505850118135e+00 9.260461990444615e+03 + 54720 1.055207166018260e+00 -6.048739352345833e+00 -5.989351303155625e+00 3.461943760671218e+00 4.802959129392301e+00 9.184382366949339e+03 + 54740 9.924737107982928e-01 -5.936274616187706e+00 -5.980420481879225e+00 4.090499437447669e+00 4.837007045096330e+00 9.157030414819163e+03 + 54760 1.075457941007258e+00 -6.038962118502762e+00 -5.975611041681628e+00 3.532780727057252e+00 4.896552413711659e+00 9.142312958113214e+03 + 54780 1.054672790977728e+00 -5.985377771005628e+00 -5.998193711112647e+00 3.834376910619855e+00 4.760785799265030e+00 9.211497180719063e+03 + 54800 1.074215523895364e+00 -5.994690195941192e+00 -6.021485014174578e+00 3.710152945234278e+00 4.556292952453455e+00 9.283136347189517e+03 + 54820 1.080545844480252e+00 -5.987897249804607e+00 -6.062171907037995e+00 3.775956898894978e+00 4.349460323094806e+00 9.408910863657862e+03 + 54840 1.001081951092371e+00 -5.863762351121441e+00 -6.025861090346333e+00 4.395614315640981e+00 4.464818270312827e+00 9.296608324225268e+03 + 54860 1.028542998155979e+00 -5.904540204630682e+00 -6.008354808985229e+00 4.253975912284474e+00 4.657856388822563e+00 9.242689775723200e+03 + 54880 1.055990892570608e+00 -5.947236210662278e+00 -6.032069131953977e+00 3.984079513875495e+00 4.496955751966420e+00 9.315746820429342e+03 + 54900 1.071827291445359e+00 -5.981924178496953e+00 -6.016929493945915e+00 3.791467630294655e+00 4.590461691931658e+00 9.269086089453991e+03 + 54920 9.403814438438366e-01 -5.806305905542190e+00 -6.080817893410321e+00 4.643500676526418e+00 4.067210361594777e+00 9.466787177354996e+03 + 54940 1.104005542354030e+00 -6.074634993591562e+00 -6.036930265382416e+00 3.265758140179180e+00 4.482264524343927e+00 9.330771000703622e+03 + 54960 1.001691174846374e+00 -5.959317167654111e+00 -6.054938117242724e+00 3.902075449456775e+00 4.353005159624838e+00 9.386475375247321e+03 + 54980 9.801914539256972e-01 -5.967116892328596e+00 -5.988516449275192e+00 3.897047947315808e+00 4.774168379757721e+00 9.181837126922790e+03 + 55000 1.004584611527497e+00 -6.040049603077405e+00 -5.953927569639819e+00 3.569276778744225e+00 5.063802822084446e+00 9.076146546371046e+03 + 55020 9.854498551933859e-01 -6.040737550071690e+00 -5.994883739547839e+00 3.407945182696316e+00 4.671244858578515e+00 9.201369756381502e+03 + 55040 9.508405235514381e-01 -6.012166725188421e+00 -5.978543388182563e+00 3.633207198583318e+00 4.826277602865542e+00 9.151305541870759e+03 + 55060 9.623122759976038e-01 -6.044469994423334e+00 -5.970754424943978e+00 3.449008169797089e+00 4.872294377195063e+00 9.127487493495057e+03 + 55080 9.480421244285583e-01 -6.031710035309490e+00 -5.979846134314544e+00 3.558848009725099e+00 4.856658555150821e+00 9.155280620111158e+03 + 55100 9.371940237231567e-01 -6.016860921068209e+00 -6.015961310126649e+00 3.570372818196861e+00 4.575538523437638e+00 9.266125965117457e+03 + 55120 9.911777898489990e-01 -6.093483399793873e+00 -5.993346980733392e+00 3.218584797315810e+00 4.793583611621855e+00 9.196638173075327e+03 + 55140 9.537924429572718e-01 -6.032143538905562e+00 -6.016262577214070e+00 3.521890143244586e+00 4.613081082848014e+00 9.267051266410836e+03 + 55160 9.498273437749721e-01 -6.016666198934384e+00 -6.022861591455192e+00 3.608509910675919e+00 4.572935008087548e+00 9.287378034600104e+03 + 55180 9.950888083677079e-01 -6.071822302059814e+00 -6.023477346049612e+00 3.296274313137027e+00 4.573878531905374e+00 9.289272892149336e+03 + 55200 9.549631119442991e-01 -5.999330558394665e+00 -6.014103882207289e+00 3.705269981922795e+00 4.620439270426237e+00 9.260396556938038e+03 + 55220 9.605798548383276e-01 -5.991721214376103e+00 -6.010154927132058e+00 3.733062778820205e+00 4.627213547567679e+00 9.248245134610923e+03 + 55240 9.916325071023556e-01 -6.020759439311673e+00 -5.986897955276588e+00 3.566387603635186e+00 4.760825485012361e+00 9.176849553983015e+03 + 55260 9.691418454834565e-01 -5.964816542694719e+00 -5.997033527366728e+00 3.878993804814602e+00 4.693998893265665e+00 9.207944377336498e+03 + 55280 9.782736770897118e-01 -5.955396204141939e+00 -6.041201106102031e+00 3.905134677473414e+00 4.412429652152903e+00 9.343967689852265e+03 + 55300 1.013556994024557e+00 -5.985182331693085e+00 -6.027659120854840e+00 3.727716060050962e+00 4.483807763422286e+00 9.302157547573366e+03 + 55320 9.440857106319652e-01 -5.863201537063844e+00 -6.037869777253064e+00 4.390469350782919e+00 4.387497285793608e+00 9.333661226244176e+03 + 55340 1.061464906581466e+00 -6.016285056597329e+00 -5.975356206233603e+00 3.639652479510406e+00 4.874672272018048e+00 9.141539591407012e+03 + 55360 1.111809585094297e+00 -6.070076799777863e+00 -5.978798670564735e+00 3.274935623500686e+00 4.799068766687314e+00 9.152088762461864e+03 + 55380 9.962644919933222e-01 -5.883332408019612e+00 -6.010149986098979e+00 4.325798836611804e+00 4.597592678323296e+00 9.248173553235240e+03 + 55400 9.904718916244285e-01 -5.858101200963367e+00 -6.010186904630062e+00 4.414051886010650e+00 4.540752240369906e+00 9.248316835643403e+03 + 55420 1.082247825759530e+00 -5.969851888534757e+00 -5.982744927478870e+00 3.823232671755847e+00 4.749198846947421e+00 9.164133311401360e+03 + 55440 1.103718933420287e+00 -5.963292616620775e+00 -5.968486794633510e+00 3.907025427217947e+00 4.877199653272374e+00 9.120544846574141e+03 + 55460 1.099196214053692e+00 -5.901406465874010e+00 -6.009178099107871e+00 4.253669195069651e+00 4.634827799434482e+00 9.245242706547931e+03 + 55480 1.131073514661555e+00 -5.888831868071505e+00 -6.033040003177653e+00 4.259182946844825e+00 4.431117518928539e+00 9.318735267204067e+03 + 55500 1.140176430949628e+00 -5.857404018669083e+00 -6.012364505833356e+00 4.501862411424236e+00 4.612055314069091e+00 9.255032365682195e+03 + 55520 1.175221974737584e+00 -5.884356079668315e+00 -6.002094877112311e+00 4.320018796563801e+00 4.643944401620352e+00 9.223452729324892e+03 + 55540 1.138997679434158e+00 -5.826261945273386e+00 -6.007118212830075e+00 4.597502634368149e+00 4.558997958640691e+00 9.238905142846359e+03 + 55560 1.094434084126901e+00 -5.771825281159740e+00 -5.997336181104487e+00 4.892465389555270e+00 4.597546904373552e+00 9.208847982577541e+03 + 55580 1.107379697739695e+00 -5.818138275348063e+00 -5.990570959084911e+00 4.648804961063947e+00 4.658669807175399e+00 9.188116160141271e+03 + 55600 1.081705620864433e+00 -5.820654667159614e+00 -6.055349120475372e+00 4.657836584886988e+00 4.310184715098638e+00 9.387690524033884e+03 + 55620 1.041811185859008e+00 -5.810883416253248e+00 -6.057037123362514e+00 4.673498783686807e+00 4.260046105302339e+00 9.392943387747664e+03 + 55640 1.100896416326611e+00 -5.948992200438391e+00 -6.031537319307255e+00 3.997589382200984e+00 4.523602535840107e+00 9.314079194798518e+03 + 55660 1.062231029140101e+00 -5.937998930740423e+00 -5.979857942279100e+00 4.058875853784927e+00 4.818514931868740e+00 9.155302706418655e+03 + 55680 1.012821139753760e+00 -5.901178951698629e+00 -5.976755615339060e+00 4.249571507303352e+00 4.815598609229096e+00 9.145801158605425e+03 + 55700 9.779215065255480e-01 -5.877218372010355e+00 -6.036059451751992e+00 4.317360968633214e+00 4.405270908179086e+00 9.328028120053665e+03 + 55720 1.029095161509971e+00 -5.977435392989284e+00 -5.955343570916724e+00 3.823813034798215e+00 4.950667695837272e+00 9.080456583992438e+03 + 55740 9.933027378525247e-01 -5.942954744816950e+00 -5.981900739790127e+00 3.984125700377021e+00 4.760491770367789e+00 9.161529149668595e+03 + 55760 1.010296222797366e+00 -5.986579434992611e+00 -5.960598608317880e+00 3.802663374187271e+00 4.951849301473509e+00 9.096471407476078e+03 + 55780 9.713903304251943e-01 -5.945717717259810e+00 -5.941064050560882e+00 4.008107680870858e+00 5.034829755208695e+00 9.036985494715853e+03 + 55800 1.048416949187498e+00 -6.072265018161504e+00 -5.970416478500017e+00 3.278444156313515e+00 4.863274232060352e+00 9.126442238773061e+03 + 55820 9.928829601872921e-01 -6.002222927089231e+00 -6.010154035652733e+00 3.698929236856991e+00 4.653387584150278e+00 9.248233641298104e+03 + 55840 9.583111180999919e-01 -5.964857001059129e+00 -6.054917548153746e+00 3.853210862223546e+00 4.336069263981632e+00 9.386394646918869e+03 + 55860 9.514781812610510e-01 -5.969112965419253e+00 -6.028782929209297e+00 3.898242046734633e+00 4.555607880755151e+00 9.305591900159063e+03 + 55880 1.039158557855002e+00 -6.111224522029953e+00 -5.987120121082040e+00 3.129225550402055e+00 4.841852225738952e+00 9.177551789694453e+03 + 55900 9.638277058582696e-01 -6.009999155671554e+00 -6.014167484222057e+00 3.647397979687235e+00 4.623462792103489e+00 9.260601501558012e+03 + 55920 1.016012779676597e+00 -6.099273464983181e+00 -5.956360298540643e+00 3.133121898052023e+00 4.953751415506112e+00 9.083572894966006e+03 + 55940 9.247355447388724e-01 -5.971431960412266e+00 -5.941668381594416e+00 3.875925881875115e+00 5.046832957346151e+00 9.038838180359313e+03 + 55960 9.459038462526007e-01 -6.004186716280334e+00 -5.979442746174939e+00 3.654444364811247e+00 4.796528070273423e+00 9.154066165213551e+03 + 55980 9.988168241166809e-01 -6.079447766358204e+00 -6.007089674059547e+00 3.223866512864781e+00 4.639357876222265e+00 9.238854250840297e+03 + 56000 9.541825627409692e-01 -6.009637511883415e+00 -6.023675056637651e+00 3.584786542170633e+00 4.504180787888782e+00 9.289865404546832e+03 + 56020 9.415009393902448e-01 -5.982863630168257e+00 -5.951771965446629e+00 3.812157902784855e+00 4.990691053036008e+00 9.069561507806642e+03 + 56040 9.854186131503715e-01 -6.030888582830000e+00 -5.931082057806807e+00 3.577582134745762e+00 5.150686646438770e+00 9.006654467091950e+03 + 56060 9.525893747406403e-01 -5.952782225455519e+00 -6.054471222183893e+00 3.881617783092133e+00 4.297703827556423e+00 9.384968017956671e+03 + 56080 1.055919330528610e+00 -6.067679960328285e+00 -5.973898747455350e+00 3.351335923828400e+00 4.889842160740583e+00 9.137104957540247e+03 + 56100 1.012677065006862e+00 -5.962490298406584e+00 -6.017139038341393e+00 3.851494831496397e+00 4.537693309925545e+00 9.269729124765279e+03 + 56120 1.109086415310063e+00 -6.066971328858539e+00 -5.984290073594297e+00 3.349240052859003e+00 4.824008615469189e+00 9.168888689954405e+03 + 56140 1.043746985128696e+00 -5.940487073973911e+00 -5.994830850863329e+00 4.041970344835120e+00 4.729919968263791e+00 9.201141159840747e+03 + 56160 1.053480236927609e+00 -5.933614678523356e+00 -5.964324018357866e+00 4.046436393240709e+00 4.870098611655977e+00 9.107790381480962e+03 + 56180 1.113603375938232e+00 -6.004934336723722e+00 -5.975294718862550e+00 3.608282772142091e+00 4.778478044616984e+00 9.141330526154146e+03 + 56200 1.028644206899561e+00 -5.870522003672527e+00 -5.998366074108910e+00 4.339705539939957e+00 4.605605103688281e+00 9.212003079311035e+03 + 56220 1.033630750327328e+00 -5.876453409689939e+00 -5.990591536444792e+00 4.361511336255752e+00 4.706112549611358e+00 9.188179007827379e+03 + 56240 9.954566925141832e-01 -5.822888081281322e+00 -6.050253303675944e+00 4.604927133043205e+00 4.299360841398829e+00 9.371957459553389e+03 + 56260 1.031175844402633e+00 -5.885867466803091e+00 -6.068160687100173e+00 4.291742048935100e+00 4.244986168204584e+00 9.427436124020882e+03 + 56280 1.120293206176698e+00 -6.038545517569005e+00 -6.006079163239403e+00 3.505921762307090e+00 4.692348593019760e+00 9.235725059757649e+03 + 56300 1.052099671442379e+00 -5.968260229321049e+00 -6.011610422079510e+00 3.852762091914611e+00 4.603838576674880e+00 9.252746597973975e+03 + 56320 9.847671929878378e-01 -5.905827336333842e+00 -6.022919604020021e+00 4.187811819481618e+00 4.515449898457709e+00 9.287510193727046e+03 + 56340 9.626743385624225e-01 -5.909469487153911e+00 -6.007381592311148e+00 4.166545523584544e+00 4.604319063922381e+00 9.239704703796539e+03 + 56360 1.030715940167979e+00 -6.040380728247204e+00 -5.980769653687504e+00 3.438457397633834e+00 4.780753412539608e+00 9.158105055936645e+03 + 56380 9.790271385083111e-01 -5.986585989476599e+00 -5.997328685396431e+00 3.760027434414242e+00 4.698341212015748e+00 9.208860758526149e+03 + 56400 9.933189752516800e-01 -6.023543384424475e+00 -6.020145991158939e+00 3.554712349009919e+00 4.574220706885532e+00 9.279008744357612e+03 + 56420 9.838577626535955e-01 -6.020886190507584e+00 -5.984587635449633e+00 3.578055503148692e+00 4.786487423474690e+00 9.169810687885325e+03 + 56440 9.953290388767712e-01 -6.043809221810512e+00 -5.985808403620138e+00 3.419151084061821e+00 4.752200757708555e+00 9.173520964788280e+03 + 56460 9.621866753620619e-01 -5.995171612504797e+00 -5.968416684706860e+00 3.742124832538082e+00 4.895755768265535e+00 9.120339009166642e+03 + 56480 1.022059081848043e+00 -6.081924634640547e+00 -5.969113798692411e+00 3.250670039231960e+00 4.898447316666602e+00 9.122482786886205e+03 + 56500 9.979482149714280e-01 -6.041625846467564e+00 -5.989482284452763e+00 3.467532162747139e+00 4.766948565026269e+00 9.184800154793762e+03 + 56520 9.552797713004187e-01 -5.974470115458068e+00 -5.951832308380862e+00 3.854261530087014e+00 4.984251321513659e+00 9.069784681626597e+03 + 56540 9.598652374063001e-01 -5.973339948079397e+00 -5.969514402086134e+00 3.872347956098194e+00 4.894314833192841e+00 9.123675788315752e+03 + 56560 1.055429156720691e+00 -6.102229551193080e+00 -5.984992892614327e+00 3.199269802493843e+00 4.872460838367326e+00 9.171035090683912e+03 + 56580 1.001417392060915e+00 -6.009746475331953e+00 -6.060659708207388e+00 3.588339213843066e+00 4.295987551874993e+00 9.404220846683806e+03 + 56600 9.752211629039319e-01 -5.961334123817178e+00 -6.033248481601555e+00 3.933145254152790e+00 4.520201883043993e+00 9.319380187179253e+03 + 56620 1.052876728025028e+00 -6.067817167931534e+00 -5.975873592028023e+00 3.359870111603169e+00 4.887824352663521e+00 9.143124916422981e+03 + 56640 1.020148930437832e+00 -6.008563584042925e+00 -5.972384160303980e+00 3.662151734051142e+00 4.869899583907897e+00 9.132470599327276e+03 + 56660 9.450695930718166e-01 -5.885840347372925e+00 -6.006953403634609e+00 4.326739520312268e+00 4.631289609072798e+00 9.238389834616033e+03 + 56680 1.014317038816941e+00 -5.974109529097629e+00 -5.978330226398517e+00 3.880458512093112e+00 4.856222615040616e+00 9.150636267339936e+03 + 56700 1.028627632487641e+00 -5.979862652534659e+00 -5.984854949909543e+00 3.820577003424158e+00 4.791910459342050e+00 9.170614265771743e+03 + 56720 1.069368575933357e+00 -6.023378051639678e+00 -5.987747914337899e+00 3.592135184119027e+00 4.796728946251763e+00 9.179466040324558e+03 + 56740 1.040692124528165e+00 -5.962908919427649e+00 -6.008668362073653e+00 3.902760277806810e+00 4.640002476882590e+00 9.243672076598288e+03 + 56760 1.061071651849394e+00 -5.975166123791226e+00 -5.978659440837047e+00 3.862468396721510e+00 4.842409229655337e+00 9.151652706380406e+03 + 56780 1.046244079710479e+00 -5.932404566872014e+00 -6.067245348720643e+00 4.061963311643838e+00 4.287686675725458e+00 9.424612878923019e+03 + 56800 1.090587983038526e+00 -5.979216357738387e+00 -6.082365234279841e+00 3.780039521517765e+00 4.187742710179674e+00 9.471607089786830e+03 + 56820 1.017069717936967e+00 -5.857837627507098e+00 -6.063049321827076e+00 4.512042644830719e+00 4.333685339638337e+00 9.411597693501979e+03 + 56840 1.074534840585458e+00 -5.937964292584121e+00 -6.026430218751513e+00 4.022868209340350e+00 4.514883171229353e+00 9.298355453239121e+03 + 56860 1.105629699966827e+00 -5.985307903068275e+00 -6.009531571606672e+00 3.765878610695090e+00 4.626782557347019e+00 9.246323097474140e+03 + 56880 9.365978094482771e-01 -5.744898045909923e+00 -6.059783970533518e+00 5.057032545320546e+00 4.248908837692513e+00 9.401471807284226e+03 + 56900 1.059126566704163e+00 -5.946247482905694e+00 -6.014738660154975e+00 3.939769540265047e+00 4.546482601524247e+00 9.262359511215305e+03 + 56920 1.034009451917799e+00 -5.939885557199513e+00 -6.037292762856680e+00 4.019507716597229e+00 4.460180467997419e+00 9.331874306239702e+03 + 56940 1.025129209339759e+00 -5.966246311000991e+00 -5.991540009711406e+00 3.874451722768945e+00 4.729211390586516e+00 9.191086118622326e+03 + 56960 1.050421294699241e+00 -6.045997413710398e+00 -5.947563400845658e+00 3.500224247207867e+00 5.065447581691472e+00 9.056776142799330e+03 + 56980 1.007163412290015e+00 -6.023911250402898e+00 -5.983686649086141e+00 3.569959820578359e+00 4.800935706076117e+00 9.167034959257613e+03 + 57000 9.309288945719089e-01 -5.945039667994267e+00 -6.000378628168360e+00 3.948789579605922e+00 4.631024706609864e+00 9.218184404654423e+03 + 57020 9.884710892965154e-01 -6.053586995468538e+00 -5.916060656516715e+00 3.422082527318230e+00 5.211780047711770e+00 8.961151492768930e+03 + 57040 8.809970621089549e-01 -5.905985787923622e+00 -5.958383854005830e+00 4.223865119365154e+00 4.922987315346592e+00 9.089707557564196e+03 + 57060 9.959878111939372e-01 -6.080469682398911e+00 -5.967018343882826e+00 3.258690500850638e+00 4.910145643147893e+00 9.116092495548628e+03 + 57080 9.951104246659106e-01 -6.079383148315304e+00 -5.992230507265564e+00 3.297694488620225e+00 4.798138440355446e+00 9.193208252986884e+03 + 57100 9.740927638140553e-01 -6.045504406196317e+00 -6.013516122281800e+00 3.417450269600709e+00 4.601131946008805e+00 9.258576820475606e+03 + 57120 9.280859684191589e-01 -5.973691887965853e+00 -5.999119963096357e+00 3.828794374965326e+00 4.682782432584067e+00 9.214328532624862e+03 + 57140 9.013227941011318e-01 -5.925972063906412e+00 -5.998699397622463e+00 4.066515881551177e+00 4.648904276835089e+00 9.213040556424934e+03 + 57160 1.037557155624623e+00 -6.113118072510668e+00 -5.980432260738726e+00 3.040883582954080e+00 4.802786047211579e+00 9.157059212102398e+03 + 57180 9.961209475269126e-01 -6.033330826081715e+00 -5.967111803431570e+00 3.531499611668199e+00 4.911739487085969e+00 9.116335646804642e+03 + 57200 9.592643393964942e-01 -5.957509723857826e+00 -5.979202556124649e+00 3.871351403686421e+00 4.746787803855381e+00 9.153258241448018e+03 + 57220 1.018595292936397e+00 -6.017991089762433e+00 -5.975110562031761e+00 3.611936877573310e+00 4.858163503543054e+00 9.140800659814173e+03 + 57240 9.698046728212524e-01 -5.914247230286537e+00 -5.992770843062300e+00 4.151822884837062e+00 4.700928148788827e+00 9.194847907793737e+03 + 57260 1.028762057750746e+00 -5.970084071654433e+00 -6.009823614037479e+00 3.836187233242287e+00 4.607996631204529e+00 9.247187412274752e+03 + 57280 1.061177841539753e+00 -5.982157446411677e+00 -6.033874102259278e+00 3.789964141077660e+00 4.492999100074108e+00 9.321313476370518e+03 + 57300 1.061930412776711e+00 -5.953879132270297e+00 -6.010541429223182e+00 3.944164842558918e+00 4.618801164993334e+00 9.249430949817965e+03 + 57320 1.068218235884576e+00 -5.944514999272682e+00 -5.993529754978590e+00 3.952884409418600e+00 4.671434097146344e+00 9.197175793040353e+03 + 57340 1.061407128291408e+00 -5.922963944554405e+00 -5.981815719512783e+00 4.128284738110631e+00 4.790348739016886e+00 9.161290247496561e+03 + 57360 1.070040270354071e+00 -5.931013571653581e+00 -5.978197364927041e+00 4.156343698371375e+00 4.885407055726758e+00 9.150224076257286e+03 + 57380 1.004790300895971e+00 -5.835843686039258e+00 -5.990164057433454e+00 4.662881698832980e+00 4.776750245287215e+00 9.186838912985426e+03 + 57400 1.043477524448684e+00 -5.898555074584457e+00 -6.019245454853479e+00 4.236661382120923e+00 4.543638541840214e+00 9.276205737101965e+03 + 57420 1.037511149702690e+00 -5.902337124123962e+00 -6.067278156085971e+00 4.257996017543566e+00 4.310879087475505e+00 9.424725604419642e+03 + 57440 1.065442054346394e+00 -5.970257373657727e+00 -6.022794202992227e+00 3.859013177318711e+00 4.557338573231948e+00 9.287161258683904e+03 + 57460 1.045608969903219e+00 -5.980438818162919e+00 -6.003951461071262e+00 3.818106406304108e+00 4.683093172154671e+00 9.229179106583289e+03 + 57480 1.019015465158626e+00 -5.994518600338761e+00 -6.007163568076230e+00 3.676282422154918e+00 4.603673060603938e+00 9.239038543115954e+03 + 57500 1.009307658928902e+00 -6.043030934006151e+00 -6.000612274579384e+00 3.477989605258881e+00 4.721564111953717e+00 9.218929287603551e+03 + 57520 8.956016867171760e-01 -5.932699401689880e+00 -6.022545216254093e+00 4.030415420640217e+00 4.514506849817639e+00 9.286395126207286e+03 + 57540 9.468704654063052e-01 -6.041449704027035e+00 -5.974217989977765e+00 3.463693565712345e+00 4.849748471857378e+00 9.138077484829397e+03 + 57560 1.014106161304705e+00 -6.153285866815664e+00 -5.963595157727054e+00 2.914541459786687e+00 5.003774865915846e+00 9.105644704177546e+03 + 57580 9.513942177781685e-01 -6.063408990174259e+00 -6.013737678437217e+00 3.367945316035701e+00 4.653165674640448e+00 9.259278238186578e+03 + 57600 9.656748671639561e-01 -6.083650444755706e+00 -6.005163257040923e+00 3.224561370568370e+00 4.675246948279701e+00 9.232917486372597e+03 + 57620 9.304784974217767e-01 -6.025887177299108e+00 -5.952901386681315e+00 3.598391001708544e+00 5.017486705950505e+00 9.073026728452460e+03 + 57640 8.859354506828339e-01 -5.946445833889057e+00 -6.036150048897182e+00 3.966431129890889e+00 4.451335645631824e+00 9.328342227703326e+03 + 57660 9.570076980988320e-01 -6.032793351667209e+00 -6.000103835749513e+00 3.533879339311802e+00 4.721587598397450e+00 9.217378555925117e+03 + 57680 1.001677146277492e+00 -6.077299728093116e+00 -6.005067161880394e+00 3.266042602281327e+00 4.680813175428279e+00 9.232611469469961e+03 + 57700 9.911236704863889e-01 -6.037547350732281e+00 -5.971953188943321e+00 3.541234466748128e+00 4.917886294404067e+00 9.131147359565119e+03 + 57720 9.924715539741471e-01 -6.013051339140683e+00 -5.989606668862947e+00 3.667591385747819e+00 4.802214310533580e+00 9.185138781506348e+03 + 57740 1.041261966106049e+00 -6.057236816798165e+00 -6.008501504777332e+00 3.402602894433098e+00 4.682448597821882e+00 9.243146640617026e+03 + 57760 9.997328673283132e-01 -5.968598170804616e+00 -6.003635078788765e+00 3.855284704882333e+00 4.654097357293359e+00 9.228214861732822e+03 + 57780 1.006012698705330e+00 -5.954499490274520e+00 -6.040625002992915e+00 3.884844251385740e+00 4.390298229476700e+00 9.342170351535724e+03 + 57800 9.906342650568428e-01 -5.911135844488461e+00 -6.007257422506256e+00 4.216580983364718e+00 4.664636007620414e+00 9.239321618872542e+03 + 57820 1.024725950716412e+00 -5.944581309409092e+00 -5.975890470029317e+00 4.009857811844733e+00 4.830075766486453e+00 9.143158468044978e+03 + 57840 9.714285191591902e-01 -5.850459286090520e+00 -5.994044098524901e+00 4.512669933239190e+00 4.688183720563061e+00 9.198763686468688e+03 + 57860 1.108915742465107e+00 -6.040685254623445e+00 -6.004530164982844e+00 3.487183861968586e+00 4.694791981666953e+00 9.230968436938134e+03 + 57880 1.004881075419804e+00 -5.879198161706875e+00 -6.072491434510811e+00 4.287150481239037e+00 4.177230596761546e+00 9.440949202579535e+03 + 57900 1.037495323852943e+00 -5.929265741863543e+00 -6.005579819214597e+00 4.119766157198249e+00 4.681558915483190e+00 9.234174760361120e+03 + 57920 1.041116311199739e+00 -5.942022505019296e+00 -6.015270436845870e+00 4.036777038720489e+00 4.616176079091487e+00 9.263956537539587e+03 + 57940 1.038724687709235e+00 -5.951408067019543e+00 -6.004812090936297e+00 3.957368035304772e+00 4.650713865728775e+00 9.231818491355192e+03 + 57960 9.960857835417728e-01 -5.908402194838742e+00 -5.993143797819463e+00 4.205299816352214e+00 4.718700418316240e+00 9.195986702476792e+03 + 57980 9.505022823946647e-01 -5.864365338137638e+00 -5.969656838252953e+00 4.408407139164474e+00 4.803807051695355e+00 9.124117949163701e+03 + 58000 1.076399271851330e+00 -6.078863819395770e+00 -5.992710138597121e+00 3.241830763652230e+00 4.736538531037086e+00 9.194700216822339e+03 + 58020 1.005926385888553e+00 -6.011851237586388e+00 -6.053791314904590e+00 3.620608048830939e+00 4.379781634663835e+00 9.382930124333487e+03 + 58040 1.001047283492316e+00 -6.047165357299381e+00 -5.988845901753745e+00 3.426664936398044e+00 4.761544275047667e+00 9.182848236276090e+03 + 58060 9.877652979066205e-01 -6.064892773178935e+00 -5.976702086534846e+00 3.342752573180662e+00 4.849157143355668e+00 9.145651730253752e+03 + 58080 9.032594114331778e-01 -5.968102668849370e+00 -5.997447273638224e+00 3.893645765320454e+00 4.725144503559934e+00 9.209205604693725e+03 + 58100 9.719758118198240e-01 -6.087138936411355e+00 -6.009889207027286e+00 3.196314043357640e+00 4.639893943837951e+00 9.247449423843163e+03 + 58120 9.584839524515807e-01 -6.079078423876790e+00 -5.984573178269248e+00 3.277693193585621e+00 4.820356938503622e+00 9.169760099018644e+03 + 58140 9.249124612389599e-01 -6.034911076230839e+00 -6.009815517748282e+00 3.516061548218623e+00 4.660164128550589e+00 9.247202731252013e+03 + 58160 9.449142267283563e-01 -6.064431931428130e+00 -5.967428704202793e+00 3.363280952283854e+00 4.920288494212641e+00 9.117317251080829e+03 + 58180 9.274836920299137e-01 -6.030610760538377e+00 -5.983889014765071e+00 3.529712510991764e+00 4.797996005388875e+00 9.167642857998491e+03 + 58200 9.179847522105481e-01 -6.002410882060476e+00 -6.005836431349362e+00 3.657444583643790e+00 4.637774549524964e+00 9.234961681864219e+03 + 58220 1.013024510342217e+00 -6.127840334616860e+00 -5.975833273606940e+00 3.000320632112745e+00 4.873168699448367e+00 9.143014218867347e+03 + 58240 1.005828934401468e+00 -6.101336638062905e+00 -5.948972310432037e+00 3.214827741288038e+00 5.089727288847978e+00 9.061071714400152e+03 + 58260 9.429647307340651e-01 -5.993124102747226e+00 -5.984914480817990e+00 3.751553990054798e+00 4.798694909607363e+00 9.170788918249900e+03 + 58280 9.321972471271022e-01 -5.960847654937502e+00 -6.022935180468163e+00 3.889652458985398e+00 4.533136279374812e+00 9.287571802424962e+03 + 58300 9.769737010219337e-01 -6.010114536823198e+00 -6.039959995677941e+00 3.650367881287829e+00 4.478990637974065e+00 9.340123606360659e+03 + 58320 9.837632761399432e-01 -6.005686910283173e+00 -6.025088690490664e+00 3.661722539957373e+00 4.550314515590174e+00 9.294219248176127e+03 + 58340 1.031535756208099e+00 -6.066773138596636e+00 -5.984388804408360e+00 3.341266742763604e+00 4.814330338607197e+00 9.169194838336231e+03 + 58360 9.275573368976099e-01 -5.903232681967690e+00 -6.015579648850107e+00 4.233919067492256e+00 4.588805398016487e+00 9.264930493092646e+03 + 58380 9.423703664844929e-01 -5.916516060035773e+00 -5.987764006355304e+00 4.158453502309025e+00 4.749336768958217e+00 9.179476237853176e+03 + 58400 1.012294573885812e+00 -6.009187329748126e+00 -6.032512728601686e+00 3.625311415479727e+00 4.491373365668780e+00 9.317092798603922e+03 + 58420 9.478431849003378e-01 -5.904895984255397e+00 -6.014835827822780e+00 4.229701858292442e+00 4.598410263392720e+00 9.262631598916216e+03 + 58440 1.011268602765617e+00 -5.991586683027603e+00 -5.995110244970489e+00 3.804726544419702e+00 4.784493706474202e+00 9.201982419056601e+03 + 58460 1.020847556970670e+00 -5.997277145240524e+00 -5.989265180187004e+00 3.698269005411587e+00 4.744274948596479e+00 9.184125379961786e+03 + 58480 1.026788502911057e+00 -6.000007437327396e+00 -5.996438308248305e+00 3.721031208373689e+00 4.741525699866764e+00 9.206134592969856e+03 + 58500 1.002664944759519e+00 -5.961095445427382e+00 -6.017130087499905e+00 3.919868804809270e+00 4.598109218696006e+00 9.269701097159556e+03 + 58520 1.026020172431052e+00 -5.994661329995901e+00 -6.027878741119370e+00 3.733086924051510e+00 4.542347409002794e+00 9.302824315108483e+03 + 58540 1.035676260524936e+00 -6.009911701950544e+00 -6.031362567018034e+00 3.614236426179470e+00 4.491062239451303e+00 9.313560277394936e+03 + 58560 9.733054121939841e-01 -5.921839790706622e+00 -6.006726244997078e+00 4.100383284114454e+00 4.612952127442310e+00 9.237701507447946e+03 + 58580 9.490813248613714e-01 -5.891813830250243e+00 -6.002337620180184e+00 4.277556234582229e+00 4.642911529303288e+00 9.224202853220073e+03 + 58600 9.940430724713530e-01 -5.965772611233597e+00 -6.024494042448991e+00 3.869525040302903e+00 4.532337495151999e+00 9.292373117608293e+03 + 58620 9.644357271642758e-01 -5.933779491584830e+00 -6.023365734221189e+00 4.060051486828431e+00 4.545633418184218e+00 9.288889303695845e+03 + 58640 1.005755334472315e+00 -6.016687819462007e+00 -6.036574522756470e+00 3.529068851291258e+00 4.414876323517062e+00 9.329671227755129e+03 + 58660 9.889224032260400e-01 -6.027169621335694e+00 -6.003891602404538e+00 3.581513854156959e+00 4.715179841121443e+00 9.228985329903071e+03 + 58680 9.410759285468472e-01 -5.997648130566728e+00 -6.006404047169152e+00 3.703081393345271e+00 4.652803565240435e+00 9.236710875206261e+03 + 58700 9.599436148396296e-01 -6.065356826978618e+00 -5.967035910073171e+00 3.369636398414156e+00 4.934210318397954e+00 9.116140910439275e+03 + 58720 9.496534672262221e-01 -6.083900376559034e+00 -5.998477120291343e+00 3.273111838472800e+00 4.763625395168064e+00 9.212369176615082e+03 + 58740 9.645414318118468e-01 -6.132156332036777e+00 -6.012310725550726e+00 2.970614061821262e+00 4.658786080311828e+00 9.254878439454769e+03 + 58760 9.201101517692554e-01 -6.085165991208918e+00 -5.982496841209803e+00 3.205836982351012e+00 4.795379129645545e+00 9.163402412615456e+03 + 58780 9.683386134928132e-01 -6.165054077136232e+00 -5.941152596657636e+00 2.813184027179356e+00 5.098860976729581e+00 9.037295148947767e+03 + 58800 8.944430554896183e-01 -6.054928317182882e+00 -5.942066541737340e+00 3.397226265002083e+00 5.045296044913693e+00 9.040062660688436e+03 + 58820 8.675805357832946e-01 -6.004751785173260e+00 -5.983018935618515e+00 3.632580252008828e+00 4.757373637299779e+00 9.164970468685849e+03 + 58840 9.598704907954412e-01 -6.121242106256878e+00 -5.957341362918162e+00 3.037795595125485e+00 4.978939026934453e+00 9.086523464139314e+03 + 58860 9.641407077146225e-01 -6.096997399929053e+00 -5.991998439987800e+00 3.153677160613374e+00 4.756597437132585e+00 9.192505935701876e+03 + 58880 9.643116264362642e-01 -6.061704028074330e+00 -5.986670350532929e+00 3.314061384081984e+00 4.744916371948785e+00 9.176184745118728e+03 + 58900 9.064691527858670e-01 -5.939735337241417e+00 -5.986646578479452e+00 3.999956246836992e+00 4.730584640157073e+00 9.176099231407568e+03 + 58920 1.034051363937244e+00 -6.094063259796147e+00 -5.985015968351875e+00 3.183912664158048e+00 4.810079086644873e+00 9.171111893869485e+03 + 58940 1.000784109659022e+00 -6.016194749275673e+00 -5.976128577891124e+00 3.651232078686731e+00 4.881298234996799e+00 9.143901083176794e+03 + 58960 1.039400951634418e+00 -6.052267542273590e+00 -6.002353876937832e+00 3.423517956504809e+00 4.710129946977481e+00 9.224272720629713e+03 + 58980 1.056951161040194e+00 -6.063285739511778e+00 -5.990225681168238e+00 3.357321608383203e+00 4.776843769399296e+00 9.187092530375601e+03 + 59000 9.958809855658596e-01 -5.962985394757744e+00 -6.009177729940236e+00 3.912023089404509e+00 4.646779552545870e+00 9.245249112214638e+03 + 59020 9.783177626942990e-01 -5.930291408518323e+00 -6.058598082222668e+00 4.100465045998412e+00 4.363708270194476e+00 9.397797623872819e+03 + 59040 1.015698865069285e+00 -5.982279992042273e+00 -6.026598550735181e+00 3.813574479644443e+00 4.559090457354973e+00 9.298877836689613e+03 + 59060 1.015680384129265e+00 -5.981517031168232e+00 -6.019994412406600e+00 3.785373701788907e+00 4.564430624362694e+00 9.278531303694637e+03 + 59080 1.028755303407844e+00 -6.001524257594443e+00 -6.017051357261577e+00 3.684158967467974e+00 4.594999958368385e+00 9.269475975089128e+03 + 59100 1.059759089702097e+00 -6.049823941142697e+00 -6.011879805595534e+00 3.431338526420405e+00 4.649219624568219e+00 9.253584089159702e+03 + 59120 9.801052347370552e-01 -5.940006957286903e+00 -6.031376359155289e+00 4.029370540019864e+00 4.504713295122344e+00 9.313613743784819e+03 + 59140 9.487465569433818e-01 -5.902336795489122e+00 -6.063024942034184e+00 4.123126014954376e+00 4.200429811082316e+00 9.411537507815916e+03 + 59160 1.008448324921810e+00 -6.001579468786293e+00 -5.998780143773669e+00 3.690835444902571e+00 4.706909602319202e+00 9.213314726614200e+03 + 59180 1.039918628503567e+00 -6.059723622447883e+00 -5.993142399172604e+00 3.423495328145849e+00 4.805815015603500e+00 9.196020660431866e+03 + 59200 9.866708949157019e-01 -5.997824689834903e+00 -6.019836061212965e+00 3.692915389139434e+00 4.566522688437886e+00 9.278071702578080e+03 + 59220 1.008163024596283e+00 -6.050061440522176e+00 -5.989287166151563e+00 3.414301055537558e+00 4.763276343762188e+00 9.184195297528147e+03 + 59240 9.583052444291630e-01 -6.000175453310914e+00 -5.948381623522613e+00 3.741589487945884e+00 5.038997673659564e+00 9.059242582655219e+03 + 59260 1.000496072776032e+00 -6.087291351202121e+00 -5.955398628182101e+00 3.245519831266229e+00 5.002868257180110e+00 9.080629934248949e+03 + 59280 1.000915292778944e+00 -6.117042481996833e+00 -5.961543585930920e+00 3.073653308424175e+00 4.966552033011041e+00 9.099382363421868e+03 + 59300 9.320119720417929e-01 -6.046080898130620e+00 -5.982054901619715e+00 3.464303586474574e+00 4.831950766431131e+00 9.162040872291556e+03 + 59320 8.925925370362344e-01 -6.016641607865853e+00 -5.997131742667202e+00 3.605498076029320e+00 4.717526741141853e+00 9.208256366699141e+03 + 59340 9.822228909330101e-01 -6.174319459293407e+00 -5.980854013052516e+00 2.761477228700336e+00 4.872385759696582e+00 9.158378968688852e+03 + 59360 9.786972168950439e-01 -6.190080887123922e+00 -5.939584071431471e+00 2.679945334147144e+00 5.118336814110144e+00 9.032528756724874e+03 + 59380 8.936717248503367e-01 -6.076724278836729e+00 -5.994237375102617e+00 3.257073754305357e+00 4.730726320353726e+00 9.199368825903453e+03 + 59400 9.509449113142381e-01 -6.166756597434548e+00 -5.967366534341311e+00 2.851787254408953e+00 4.996715852202861e+00 9.117166804145554e+03 + 59420 8.678736947766870e-01 -6.041145366325354e+00 -5.991430583979224e+00 3.453369561742953e+00 4.738839535312135e+00 9.190764945378487e+03 + 59440 9.483802580718994e-01 -6.146504210685661e+00 -5.948552562866452e+00 2.913105127330984e+00 5.049774122027378e+00 9.059804213489115e+03 + 59460 8.792292486754552e-01 -6.011356117168795e+00 -6.014255731852828e+00 3.626322605137725e+00 4.609672568908087e+00 9.260830574572230e+03 + 59480 1.010338792936593e+00 -6.155495850086938e+00 -5.979704361163775e+00 2.897787235423469e+00 4.907209168465262e+00 9.154851290442693e+03 + 59500 9.491484385219364e-01 -6.006471842061510e+00 -6.008886209163663e+00 3.656958016999332e+00 4.643094347476666e+00 9.244344161279045e+03 + 59520 9.499864699059760e-01 -5.960353878910550e+00 -6.046467222800006e+00 3.910953048421840e+00 4.416476901811686e+00 9.360247901990640e+03 + 59540 9.885921332821541e-01 -5.982769937957406e+00 -6.012287250441438e+00 3.807965045500434e+00 4.638472069427778e+00 9.254821807796765e+03 + 59560 9.968823989160316e-01 -5.972316026103670e+00 -6.028909287078861e+00 3.832939596892417e+00 4.507972334594041e+00 9.305999259800807e+03 + 59580 1.085372498665647e+00 -6.089844978811223e+00 -5.957583417299832e+00 3.243002348695980e+00 5.002468702304879e+00 9.087287218151723e+03 + 59600 9.633819806744103e-01 -5.900375027905479e+00 -5.959377441742014e+00 4.223140445345548e+00 4.884339454502132e+00 9.092734102612614e+03 + 59620 9.561697533826122e-01 -5.879174176885371e+00 -6.018247706134918e+00 4.367068984971281e+00 4.568487258461288e+00 9.273069450929030e+03 + 59640 1.019967247191937e+00 -5.963671404926610e+00 -5.981968501476847e+00 3.888312814608924e+00 4.783248054750924e+00 9.161781223086622e+03 + 59660 1.016001185246944e+00 -5.952222357601446e+00 -5.994248049449993e+00 3.962461925505065e+00 4.721143899455911e+00 9.199381675843109e+03 + 59680 1.068377258379176e+00 -6.026000026786372e+00 -5.983006010612563e+00 3.575240021898838e+00 4.822118316071348e+00 9.164946113578577e+03 + 59700 9.654187849492624e-01 -5.873070920104716e+00 -6.046905665485152e+00 4.412499352331275e+00 4.414313343516905e+00 9.361580205625285e+03 + 59720 1.037461749301269e+00 -5.982713172664191e+00 -6.015460497107250e+00 3.776644568395269e+00 4.588604363811148e+00 9.264572222055243e+03 + 59740 1.060344672568465e+00 -6.023079073233118e+00 -5.981475377867469e+00 3.537448852359108e+00 4.776343709299723e+00 9.160281975950631e+03 + 59760 1.047311608676578e+00 -6.016953019439373e+00 -5.980545391057571e+00 3.617910063749931e+00 4.826968299980515e+00 9.157424169788903e+03 + 59780 1.058899856119250e+00 -6.050023798514513e+00 -5.997940966957498e+00 3.444445511713078e+00 4.743513190305594e+00 9.210730023193502e+03 + 59800 9.551154484251290e-01 -5.915810396148823e+00 -6.007076556346243e+00 4.186527192929419e+00 4.662462777683182e+00 9.238773058164890e+03 + 59820 9.930531126987272e-01 -5.993509323791945e+00 -6.002979665279788e+00 3.712104459881503e+00 4.657724293527699e+00 9.226191835371526e+03 + 59840 1.051511610956686e+00 -6.105617806842254e+00 -5.991305923909244e+00 3.128348538133291e+00 4.784745059641347e+00 9.190400502258355e+03 + 59860 9.311161406033018e-01 -5.956971656025754e+00 -6.028132295863152e+00 3.907560905811055e+00 4.498945499791290e+00 9.303617809684900e+03 + 59880 9.712275494533898e-01 -6.046674781510689e+00 -6.015834647246673e+00 3.377516015348504e+00 4.554604838787840e+00 9.265735467609205e+03 + 59900 9.300920790646831e-01 -6.012921684602676e+00 -5.996371773710299e+00 3.604488263361513e+00 4.699520412795977e+00 9.205912250962991e+03 + 59920 9.334936013493887e-01 -6.037594149772793e+00 -6.020764718871918e+00 3.487550706295017e+00 4.584187902873854e+00 9.280915353924094e+03 + 59940 9.561050379509840e-01 -6.087110529347389e+00 -6.045363754813770e+00 3.204277610225582e+00 4.443994049890104e+00 9.356862134396924e+03 + 59960 9.105111103037776e-01 -6.034796244308469e+00 -5.985211485420075e+00 3.547179192066802e+00 4.831902550820593e+00 9.171710393016107e+03 + 59980 9.339628103071459e-01 -6.078452115336090e+00 -5.963848220197885e+00 3.271896649650429e+00 4.929969950429454e+00 9.106394129682360e+03 + 60000 9.326356079547117e-01 -6.076553530357597e+00 -5.986886874080894e+00 3.272636214467297e+00 4.787516030678343e+00 9.176841729716281e+03 + 60020 9.082549899239701e-01 -6.031901949207639e+00 -5.990108052662265e+00 3.487903041157142e+00 4.727890062705267e+00 9.186694923171002e+03 + 60040 9.471039857281653e-01 -6.069789477969184e+00 -5.939908087267364e+00 3.298143850731321e+00 5.043942895221427e+00 9.033496321762917e+03 + 60060 9.589293025517928e-01 -6.048652836483151e+00 -5.956963165129356e+00 3.438804290582639e+00 4.965300572426919e+00 9.085400803977478e+03 + 60080 9.745656886241997e-01 -6.012631037511982e+00 -6.004326161240376e+00 3.568845401770801e+00 4.616533286497807e+00 9.230347568211047e+03 + 60100 1.050111577279047e+00 -6.060391578023852e+00 -5.997750237555873e+00 3.357478786001105e+00 4.717175056684350e+00 9.210149639579291e+03 + 60120 9.991363128129627e-01 -5.936553674139247e+00 -5.993318461114309e+00 4.018024606069495e+00 4.692072414936292e+00 9.196532369842869e+03 + 60140 9.979504858944885e-01 -5.905986526557367e+00 -6.023992392416011e+00 4.096189926494700e+00 4.418581983385641e+00 9.290826281514162e+03 + 60160 1.064208231811221e+00 -5.987754920050626e+00 -5.983601665162109e+00 3.740509965034784e+00 4.764358597318768e+00 9.166777037742200e+03 + 60180 9.847299662027588e-01 -5.861195841722440e+00 -6.012960956763258e+00 4.385205615854266e+00 4.513746839714234e+00 9.256871173795189e+03 + 60200 1.036102566391551e+00 -5.931644602859085e+00 -6.023010252127620e+00 4.037311163437560e+00 4.512675466549100e+00 9.287810531170577e+03 + 60220 1.057810846715224e+00 -5.965013118953214e+00 -6.020828686383574e+00 3.835966967196811e+00 4.515465341580539e+00 9.281094090784252e+03 + 60240 1.013168124050836e+00 -5.904765462436835e+00 -6.041869169084322e+00 4.215987930373879e+00 4.428717230073975e+00 9.346027712285035e+03 + 60260 1.044149145393432e+00 -5.963109428689067e+00 -6.047182331151114e+00 3.895229714719647e+00 4.412470098542963e+00 9.362452628713394e+03 + 60280 1.005106131081343e+00 -5.923896061180303e+00 -6.011837385250484e+00 4.120637204041472e+00 4.615664512354576e+00 9.253417720376956e+03 + 60300 9.984667867805197e-01 -5.936055962849261e+00 -6.035219365889242e+00 4.037269262298496e+00 4.467857656555898e+00 9.325456193625821e+03 + 60320 1.005975232630111e+00 -5.973260544544568e+00 -6.000911432250216e+00 3.869297757990165e+00 4.710522081823290e+00 9.219835165051785e+03 + 60340 1.019077907479947e+00 -6.017982038681300e+00 -5.997533530929275e+00 3.631414929853293e+00 4.748833425761767e+00 9.209479370219547e+03 + 60360 9.805548382832275e-01 -5.988209943574650e+00 -5.998217817850090e+00 3.753674986402316e+00 4.696208223599197e+00 9.211581763027234e+03 + 60380 1.053432836783597e+00 -6.122074121080716e+00 -5.976228940911843e+00 3.101764619911388e+00 4.939230213909742e+00 9.144218562040789e+03 + 60400 9.440806495202885e-01 -5.983200287142159e+00 -5.979633108752109e+00 3.837282619340406e+00 4.857765909675140e+00 9.154624518589120e+03 + 60420 9.111214437473398e-01 -5.951541131968829e+00 -5.994635894705891e+00 3.971889899151186e+00 4.724433102621996e+00 9.200584343955530e+03 + 60440 9.743086191279530e-01 -6.056845491958948e+00 -6.023629971274188e+00 3.329211454325692e+00 4.519940114182799e+00 9.289744532695364e+03 + 60460 9.854420286509262e-01 -6.082981635755663e+00 -5.983396114820446e+00 3.308497841943468e+00 4.880333313963046e+00 9.166144717710977e+03 + 60480 9.606695602149672e-01 -6.051046765172395e+00 -5.949331417438604e+00 3.440266740845565e+00 5.024332007932180e+00 9.062181043051190e+03 + 60500 9.906414297138281e-01 -6.093154316509323e+00 -5.985890004335680e+00 3.234540747303890e+00 4.850469026903609e+00 9.173785513634541e+03 + 60520 9.618420731760928e-01 -6.043599094937499e+00 -6.030361631749406e+00 3.460910255594978e+00 4.536921817711818e+00 9.310498183958738e+03 + 60540 9.710088313828686e-01 -6.046901908271585e+00 -6.007481463843847e+00 3.413746601051358e+00 4.640104893249486e+00 9.240028161186297e+03 + 60560 9.491149361449821e-01 -5.995480493545756e+00 -6.010297906358645e+00 3.686738056804310e+00 4.601654179445483e+00 9.248705737198368e+03 + 60580 1.007394530280685e+00 -6.052227879749315e+00 -5.990911131362481e+00 3.441734517285489e+00 4.793824775258836e+00 9.189171192572167e+03 + 60600 9.611969896720821e-01 -5.941787638136677e+00 -6.025172587094395e+00 4.010703765718648e+00 4.531894485024282e+00 9.294478855984718e+03 + 60620 1.014839505829820e+00 -5.962893584689844e+00 -6.020615291689129e+00 3.885491208898184e+00 4.554044234902998e+00 9.280443654059600e+03 + 60640 1.050016015090035e+00 -5.955686080869675e+00 -6.039069172979191e+00 3.939880009184594e+00 4.461081390799952e+00 9.337368670361599e+03 + 60660 1.072695266133326e+00 -5.946071673111667e+00 -6.046835123419465e+00 3.999697029364278e+00 4.421097704603361e+00 9.361353501720638e+03 + 60680 1.119370355321477e+00 -5.991959901488542e+00 -6.019242229449417e+00 3.751675437779045e+00 4.595016088701094e+00 9.276216987538892e+03 + 60700 1.048458995862748e+00 -5.877990616601041e+00 -6.005188805867933e+00 4.361883449504436e+00 4.631491762877769e+00 9.232971583365386e+03 + 60720 1.007334225519496e+00 -5.815737954414548e+00 -6.030186998645957e+00 4.658594211155034e+00 4.427194613295942e+00 9.309916264591284e+03 + 60740 1.102879853041884e+00 -5.962781395334816e+00 -6.049391315785254e+00 3.870668351516370e+00 4.373340785448081e+00 9.369303129082127e+03 + 60760 1.077549412384116e+00 -5.942368703125942e+00 -6.042217249351811e+00 4.030205621429189e+00 4.456859817487653e+00 9.347082386942226e+03 + 60780 1.038233494629653e+00 -5.907025607581639e+00 -5.968615301830698e+00 4.234634284103359e+00 4.880976728750882e+00 9.120938911205194e+03 + 60800 1.022007782059748e+00 -5.907036662128790e+00 -6.012248048835870e+00 4.168652441859772e+00 4.564512377978245e+00 9.254663859324655e+03 + 60820 1.027832883578764e+00 -5.941293438085149e+00 -5.983747577932228e+00 4.014671042784137e+00 4.770892802025304e+00 9.167199302213297e+03 + 60840 1.062018379781630e+00 -6.016580835731190e+00 -5.967294361530313e+00 3.592389009995081e+00 4.875399571913750e+00 9.116890254416958e+03 + 60860 1.047770365968525e+00 -6.019979317520511e+00 -5.975929378528663e+00 3.609974826155185e+00 4.862916392552401e+00 9.143264077823282e+03 + 60880 9.353579639879310e-01 -5.875026602768679e+00 -6.018833445366045e+00 4.353842608854288e+00 4.528081464623245e+00 9.274941551961023e+03 + 60900 1.015387962721038e+00 -6.012253096118938e+00 -6.016615548037507e+00 3.630285864151996e+00 4.605235990148325e+00 9.268118673429000e+03 + 60920 9.651700581957866e-01 -5.956344342323308e+00 -6.029404086742044e+00 3.908369356666696e+00 4.488848998255405e+00 9.307546852097896e+03 + 60940 1.012878788338464e+00 -6.041850375282624e+00 -5.988854984234290e+00 3.497314655135134e+00 4.801622391544923e+00 9.182882497017346e+03 + 60960 1.031599605384278e+00 -6.082213215242061e+00 -6.010330507723271e+00 3.263549382133250e+00 4.676311012519180e+00 9.248803542966749e+03 + 60980 9.211229854860442e-01 -5.930613383486815e+00 -6.039761037330304e+00 4.050086498507375e+00 4.423343779593218e+00 9.339529111484531e+03 + 61000 9.796881789077424e-01 -6.026141098717870e+00 -5.988437627613825e+00 3.583955715853704e+00 4.800454881526431e+00 9.181584749405672e+03 + 61020 9.219623155876951e-01 -5.944960836244091e+00 -6.013030849323743e+00 3.955332785818956e+00 4.564464236915115e+00 9.257085542856787e+03 + 61040 1.005855475444968e+00 -6.070466029320415e+00 -5.967646796552494e+00 3.304668195234410e+00 4.895072141012659e+00 9.117989627950099e+03 + 61060 1.050138920563730e+00 -6.133105780198076e+00 -5.959852464321712e+00 3.029428840962315e+00 5.024276191588376e+00 9.094227399228574e+03 + 61080 1.027119239866936e+00 -6.096662741385543e+00 -5.964508802335668e+00 3.228242472033446e+00 4.987090840813805e+00 9.108424741209948e+03 + 61100 9.518633792054130e-01 -5.980414565805518e+00 -5.942418264382932e+00 3.859672322553151e+00 5.077852965230279e+00 9.041121064500581e+03 + 61120 9.421724324883870e-01 -5.955593692989001e+00 -6.008108780955716e+00 3.899395503457149e+00 4.597845741668671e+00 9.241931746407401e+03 + 61140 9.476655976629762e-01 -5.946506350874446e+00 -6.002676982233635e+00 3.991336994042750e+00 4.668796536401178e+00 9.225278560682287e+03 + 61160 1.005325117732789e+00 -6.006942755019475e+00 -5.991247613920590e+00 3.650861483241983e+00 4.740985412247013e+00 9.190198726650309e+03 + 61180 1.004977007394602e+00 -5.971896597783632e+00 -6.014559201422663e+00 3.808111362545284e+00 4.563136090433392e+00 9.261789210949803e+03 + 61200 1.073480155052599e+00 -6.022199744548899e+00 -5.993942309697625e+00 3.556087810138170e+00 4.718346373878095e+00 9.198474164826795e+03 + 61220 1.060395678844813e+00 -5.943947422254252e+00 -6.035923209058437e+00 3.943175596275157e+00 4.415036395238518e+00 9.327648628587121e+03 + 61240 1.051605935095988e+00 -5.873421447657885e+00 -6.001009493487530e+00 4.341348237581209e+00 4.608717934241104e+00 9.220122082356038e+03 + 61260 1.014090196215956e+00 -5.774257010686015e+00 -6.024904443819096e+00 4.899574325213547e+00 4.460317976598471e+00 9.293593854143663e+03 + 61280 1.111006791215841e+00 -5.892138778860734e+00 -5.987255059058262e+00 4.251228113563866e+00 4.705055713472867e+00 9.177937828181412e+03 + 61300 1.049066666422557e+00 -5.790393121097853e+00 -6.040587749045264e+00 4.818445559524850e+00 4.381789288357275e+00 9.342050805507297e+03 + 61320 1.182736536710780e+00 -5.992398216171536e+00 -6.004894274336925e+00 3.761471017810316e+00 4.689716718065903e+00 9.232086057682620e+03 + 61340 1.099718567809540e+00 -5.886918439817529e+00 -6.021995747879867e+00 4.316584347614694e+00 4.540949541574883e+00 9.284697445942962e+03 + 61360 1.093641355225546e+00 -5.900146037802878e+00 -6.052134989463049e+00 4.192156910877176e+00 4.319412830230223e+00 9.377773011282976e+03 + 61380 1.119371762376638e+00 -5.965445136945090e+00 -6.019184528309919e+00 3.884432517940150e+00 4.575852616579359e+00 9.276050003366863e+03 + 61400 1.052169609283154e+00 -5.899794667216999e+00 -6.039313376301611e+00 4.248773054912367e+00 4.447635036898071e+00 9.338115449034001e+03 + 61420 1.056596232957568e+00 -5.939574275409563e+00 -6.027572206871184e+00 4.036011384589248e+00 4.530713644500736e+00 9.301896415465875e+03 + 61440 1.092389403068731e+00 -6.026046338241717e+00 -5.993312294811931e+00 3.556683646588066e+00 4.744647589538749e+00 9.196542179243579e+03 + 61460 9.894303426633724e-01 -5.902772627253678e+00 -5.988132039371454e+00 4.275468934533507e+00 4.785321980826902e+00 9.180640023206690e+03 + 61480 1.002117612477918e+00 -5.944865855688568e+00 -6.006744675359065e+00 3.966866734500864e+00 4.611548976236474e+00 9.237739433257440e+03 + 61500 1.042803169699456e+00 -6.024951303766385e+00 -6.020703795289689e+00 3.563964698202195e+00 4.588354549175195e+00 9.280728182909759e+03 + 61520 1.093314720838085e+00 -6.122292683417463e+00 -6.016407329242061e+00 3.003032416193748e+00 4.611042505574506e+00 9.267513486630025e+03 + 61540 1.006645636893841e+00 -6.018573819905805e+00 -6.001021835103591e+00 3.600655049604654e+00 4.701441262499831e+00 9.220177929869897e+03 + 61560 9.345499833352101e-01 -5.932021769529269e+00 -5.981876071710351e+00 4.100433106380009e+00 4.814161988327909e+00 9.161451404017031e+03 + 61580 9.958636017601727e-01 -6.037301876911618e+00 -5.941226312260438e+00 3.501089206077693e+00 5.052769965950349e+00 9.037502310713999e+03 + 61600 9.188438133666438e-01 -5.931217229650757e+00 -5.986651474421728e+00 4.058837686042794e+00 4.740525674146228e+00 9.176121636575939e+03 + 61620 1.001248762200739e+00 -6.057340674030399e+00 -6.020693105126335e+00 3.364077910058467e+00 4.574513921898567e+00 9.280677707862375e+03 + 61640 1.029916542576110e+00 -6.102360149968993e+00 -5.989777302431670e+00 3.162749491517002e+00 4.809217624215659e+00 9.185701853494915e+03 + 61660 9.694615536529152e-01 -6.015846099566195e+00 -6.024713645647333e+00 3.579381329618545e+00 4.528462507772330e+00 9.293064714370934e+03 + 61680 9.864504577856739e-01 -6.043833456124684e+00 -5.976676375501144e+00 3.450534906166751e+00 4.836161255631757e+00 9.145588768237598e+03 + 61700 9.553350790039336e-01 -5.994246771243653e+00 -6.030353901881091e+00 3.699374827054574e+00 4.492042095374002e+00 9.310452051636210e+03 + 61720 9.449258183792295e-01 -5.973296389136583e+00 -6.005891240389476e+00 3.865634207672111e+00 4.678469527741074e+00 9.235115380297195e+03 + 61740 9.803583215159333e-01 -6.015820894218590e+00 -5.974685661520995e+00 3.668371505362269e+00 4.904576377168544e+00 9.139479992816658e+03 + 61760 1.024934585641631e+00 -6.063931966926279e+00 -5.973403013695261e+00 3.365510304919900e+00 4.885341563682637e+00 9.135605054751508e+03 + 61780 1.053036280692463e+00 -6.079157652587177e+00 -5.988275767738372e+00 3.264995424360284e+00 4.786853271088346e+00 9.181075025029904e+03 + 61800 9.829226760819189e-01 -5.942664881518653e+00 -6.009825452759612e+00 4.040203423499570e+00 4.654557030369173e+00 9.247214531297353e+03 + 61820 1.037986424399148e+00 -5.984374079973818e+00 -5.973052088178509e+00 3.781196730579395e+00 4.846209359540625e+00 9.134507745804895e+03 + 61840 1.042104754115736e+00 -5.946503162648386e+00 -6.003751777888934e+00 3.982704725784891e+00 4.653974317879092e+00 9.228569502368411e+03 + 61860 1.067509056410986e+00 -5.945535544555412e+00 -6.019858688216872e+00 3.980187597727642e+00 4.553412605354229e+00 9.278099795764236e+03 + 61880 1.029515798354857e+00 -5.859229579961484e+00 -6.033312674419276e+00 4.444736692685390e+00 4.445124625036949e+00 9.319612701714856e+03 + 61900 1.141344741310598e+00 -6.008034631700263e+00 -6.025522025155319e+00 3.615476182652930e+00 4.515060863268609e+00 9.295562601513226e+03 + 61920 1.065136092349673e+00 -5.888239003200082e+00 -6.040642823780544e+00 4.259268464061610e+00 4.384142141873588e+00 9.342226528817821e+03 + 61940 9.987893751008103e-01 -5.793682152696769e+00 -6.064621280751471e+00 4.800644959236443e+00 4.244870558251788e+00 9.416485359430086e+03 + 61960 1.119082207095418e+00 -5.985123332760330e+00 -6.015514703131416e+00 3.829553899214146e+00 4.655041947494005e+00 9.264736509970477e+03 + 61980 1.033188472321082e+00 -5.882455842158323e+00 -6.030283729440821e+00 4.367927823621811e+00 4.519077218554082e+00 9.310235737964213e+03 + 62000 1.095172582141058e+00 -6.003633994266933e+00 -5.990765851514809e+00 3.695839447578575e+00 4.769730314599928e+00 9.188712661515037e+03 + 62020 1.013766400857933e+00 -5.917169885208084e+00 -5.993055539590889e+00 4.136164032920583e+00 4.700416862187449e+00 9.195745410340076e+03 + 62040 9.833814838985087e-01 -5.901867246834272e+00 -6.033407149413845e+00 4.219066239213107e+00 4.463743762867060e+00 9.319865873810304e+03 + 62060 9.232744067696529e-01 -5.838437632843046e+00 -6.060400526538004e+00 4.520014587246910e+00 4.245469303003675e+00 9.403371456344574e+03 + 62080 1.067800531141307e+00 -6.074083093573461e+00 -5.981436855789848e+00 3.238185270418877e+00 4.770174304731345e+00 9.160154113687877e+03 + 62100 1.001618554581549e+00 -5.990077456146822e+00 -6.045855820604262e+00 3.694427519601059e+00 4.374139519212432e+00 9.358361356606802e+03 + 62120 1.103996603347696e+00 -6.154469137182450e+00 -5.941129333541703e+00 2.901222593434167e+00 5.126252760167253e+00 9.037227004131721e+03 + 62140 1.023491611478847e+00 -6.043240727990319e+00 -6.012460461789459e+00 3.473771621801052e+00 4.650516673557187e+00 9.255335659914041e+03 + 62160 9.778317882328085e-01 -5.983385290082311e+00 -6.038585533450189e+00 3.734599301629169e+00 4.417630962000759e+00 9.335876915553396e+03 + 62180 9.459327274506478e-01 -5.941956817178966e+00 -6.054717552351121e+00 3.955335641063033e+00 4.307846050037145e+00 9.385783345135143e+03 + 62200 9.454884344079292e-01 -5.945126773794835e+00 -6.035196535721229e+00 3.937742168279464e+00 4.420547657047496e+00 9.325426904862139e+03 + 62220 9.872919160739323e-01 -6.010367863494485e+00 -5.976743369628855e+00 3.705395078661452e+00 4.898472125811514e+00 9.145798200440675e+03 + 62240 9.909092868996452e-01 -6.016748356760095e+00 -6.010050107111287e+00 3.608945222706521e+00 4.647407608740762e+00 9.247929211579731e+03 + 62260 1.026008594964891e+00 -6.070386604680373e+00 -6.012162448532495e+00 3.285161895198021e+00 4.619494009958187e+00 9.254430707301744e+03 + 62280 9.769901480224044e-01 -5.999644758640054e+00 -5.991403915490690e+00 3.694120998615567e+00 4.741441195245567e+00 9.190655430735773e+03 + 62300 9.593415937376595e-01 -5.975189677885592e+00 -5.961200601146051e+00 3.852747051972373e+00 4.933074495413448e+00 9.098278769273636e+03 + 62320 9.412831322453625e-01 -5.945806545413086e+00 -5.942014030191040e+00 3.983535099067260e+00 5.005312308362084e+00 9.039849671295615e+03 + 62340 9.463177085193605e-01 -5.943694900369366e+00 -5.916506906109714e+00 4.038086761951024e+00 5.194204432318467e+00 8.962439345227185e+03 + 62360 1.006943557923969e+00 -6.014613893138720e+00 -5.948628483197519e+00 3.592836584618837e+00 4.971735019710403e+00 9.059995175013557e+03 + 62380 9.965566031564339e-01 -5.971208172570700e+00 -5.983382452146556e+00 3.860506050306090e+00 4.790599453017850e+00 9.166096260046679e+03 + 62400 9.944976981697846e-01 -5.936866577848943e+00 -5.994045686986631e+00 4.064745403508277e+00 4.736414110401134e+00 9.198762522456778e+03 + 62420 1.015894981100166e+00 -5.930741561645382e+00 -6.061938010278445e+00 4.002622614803411e+00 4.249272304167552e+00 9.408136840152114e+03 + 62440 1.037669063384203e+00 -5.926688561315016e+00 -6.001284781187461e+00 4.074480065760626e+00 4.646137027525328e+00 9.220963546749343e+03 + 62460 1.035992279573005e+00 -5.890208169940077e+00 -5.976721939414675e+00 4.317094910533779e+00 4.820319458248074e+00 9.145717288913607e+03 + 62480 1.066995588480791e+00 -5.905177099966295e+00 -6.039393681191653e+00 4.221650006811007e+00 4.450957627466185e+00 9.338354277081216e+03 + 62500 1.081294896306551e+00 -5.906622024378319e+00 -6.005496963597978e+00 4.149884853198679e+00 4.582129651352004e+00 9.233929347377287e+03 + 62520 1.106087681364176e+00 -5.932649874268967e+00 -6.005536300181316e+00 4.089968674559200e+00 4.671443537832542e+00 9.234043283701332e+03 + 62540 1.061937596909736e+00 -5.867343849235407e+00 -6.021100268975403e+00 4.405579726002757e+00 4.522686570126646e+00 9.281921140168261e+03 + 62560 1.089823767824810e+00 -5.919165954942680e+00 -6.035854003176727e+00 4.091170316780468e+00 4.421129486403466e+00 9.327421246697058e+03 + 62580 1.089429250016763e+00 -5.940359534443325e+00 -5.988055297367142e+00 3.968202833811559e+00 4.694326382207546e+00 9.180418790171363e+03 + 62600 9.684034447745520e-01 -5.795288751506830e+00 -6.032038383437884e+00 4.760050896083818e+00 4.400597872648574e+00 9.315629622684044e+03 + 62620 1.023458966542059e+00 -5.919625514277941e+00 -5.990997749239352e+00 4.141335005715377e+00 4.731504587749291e+00 9.189416442487882e+03 + 62640 1.025370736275058e+00 -5.969763788243594e+00 -5.981946137106796e+00 3.882837306844079e+00 4.812884374459180e+00 9.161679096948954e+03 + 62660 1.018772072729489e+00 -6.001847704842594e+00 -5.948995227049875e+00 3.749527469746766e+00 5.053014576127062e+00 9.061143529508119e+03 + 62680 9.806772337940259e-01 -5.977032718697505e+00 -6.020839424891445e+00 3.766474570006991e+00 4.514929683975510e+00 9.281124265863398e+03 + 62700 9.413686363415079e-01 -5.936659276371264e+00 -6.013150613264209e+00 4.052481320013379e+00 4.613256226577961e+00 9.257440097904853e+03 + 62720 9.974636241998932e-01 -6.029915719029262e+00 -5.961674628244488e+00 3.564414670123375e+00 4.956265573684218e+00 9.099763099819176e+03 + 62740 9.761842146170331e-01 -6.002310068539187e+00 -5.993186938703166e+00 3.672421069661672e+00 4.724807492979881e+00 9.196088726555505e+03 + 62760 1.007785924344952e+00 -6.050324024961209e+00 -5.954685644649416e+00 3.477515530163222e+00 5.026685909905062e+00 9.078441954889087e+03 + 62780 9.888615018315380e-01 -6.019881209454237e+00 -5.973346598973175e+00 3.560203637828158e+00 4.827412572418112e+00 9.135403517860543e+03 + 62800 9.885952686534178e-01 -6.015196980243180e+00 -5.967416375979278e+00 3.657345739236780e+00 4.931709362944721e+00 9.117270870415578e+03 + 62820 1.036042704347277e+00 -6.079668317300062e+00 -5.989382685570827e+00 3.249897155497055e+00 4.768331224542677e+00 9.184469976219269e+03 + 62840 9.739512620619610e-01 -5.980101306436664e+00 -5.993292704939732e+00 3.780054883084091e+00 4.704307831517152e+00 9.196469608532176e+03 + 62860 9.761988946756960e-01 -5.975482683596345e+00 -6.005286135414658e+00 3.812065900588540e+00 4.640929868178523e+00 9.233283470550436e+03 + 62880 9.819470639997621e-01 -5.973754484528095e+00 -5.991552520217201e+00 3.846532935913688e+00 4.744333860749723e+00 9.191137069803890e+03 + 62900 1.011465636982320e+00 -6.003650993732537e+00 -6.032213412666207e+00 3.643426766675158e+00 4.479416937137976e+00 9.316205611311634e+03 + 62920 9.826653895523108e-01 -5.948538643841617e+00 -6.035554461044709e+00 3.977253483924385e+00 4.477595195890032e+00 9.326510802120034e+03 + 62940 1.024434483149470e+00 -5.999444653233049e+00 -6.029627323946122e+00 3.675526793305200e+00 4.502213227317539e+00 9.308231215691580e+03 + 62960 9.793616201459322e-01 -5.922110440194682e+00 -6.058270554341453e+00 4.120225880952586e+00 4.338373434812262e+00 9.396797822500601e+03 + 62980 1.025464946994930e+00 -5.981982622067201e+00 -6.007011028241269e+00 3.783373333739442e+00 4.639656352354602e+00 9.238591054828727e+03 + 63000 1.008704979515388e+00 -5.948694321433669e+00 -6.013462780682228e+00 3.924918803093109e+00 4.553008287201205e+00 9.258432086525905e+03 + 63020 1.071658360818167e+00 -6.034758728509550e+00 -6.001950532944242e+00 3.516961674531943e+00 4.705351410519799e+00 9.223044690914267e+03 + 63040 1.065330843849768e+00 -6.021043935566416e+00 -6.013970172031030e+00 3.584632876260151e+00 4.625251521141706e+00 9.259993200562163e+03 + 63060 1.042154054848827e+00 -5.988421074965594e+00 -6.006150809281766e+00 3.785569717028937e+00 4.683762838917961e+00 9.235931851231813e+03 + 63080 1.027932012205127e+00 -5.973203619287779e+00 -5.993555469374167e+00 3.803930994392104e+00 4.687067521757445e+00 9.197271565580919e+03 + 63100 1.040804392818381e+00 -6.000528627428446e+00 -5.959961504918008e+00 3.704885459740198e+00 4.937828154937056e+00 9.094527328633521e+03 + 63120 1.006026547289446e+00 -5.961441812629337e+00 -6.005100772564921e+00 3.837467054684912e+00 4.586770550532576e+00 9.232695830482035e+03 + 63140 1.029798153553050e+00 -6.015701122156917e+00 -5.971229081988095e+00 3.603550873036558e+00 4.858916209711913e+00 9.128927766894354e+03 + 63160 1.025771171471559e+00 -6.032670444310147e+00 -5.995400395970617e+00 3.515468600833028e+00 4.729478985919949e+00 9.202932585270699e+03 + 63180 9.631959121895662e-01 -5.968298767765773e+00 -6.053125716361849e+00 3.798990952237086e+00 4.311901486470542e+00 9.380849697869387e+03 + 63200 9.280178366504234e-01 -5.948448896945381e+00 -6.027863168784156e+00 3.948839198385943e+00 4.492830160168849e+00 9.302771923519034e+03 + 63220 9.319794185346946e-01 -5.984337605596137e+00 -5.998924473496148e+00 3.748798756170046e+00 4.665038703377668e+00 9.213736474205949e+03 + 63240 9.045872326390025e-01 -5.968411625001528e+00 -5.970118483353056e+00 3.861914864609539e+00 4.852113819819595e+00 9.125514117740009e+03 + 63260 9.817412893858715e-01 -6.101160895445014e+00 -5.957493812371935e+00 3.124607058050106e+00 4.949565681464982e+00 9.086993279566077e+03 + 63280 9.239800140321087e-01 -6.027297148187717e+00 -5.937447714149652e+00 3.641698043258198e+00 5.157627397659746e+00 9.025999568208203e+03 + 63300 9.587945790927189e-01 -6.084179694153965e+00 -5.951486769153604e+00 3.262669502625198e+00 5.024612812141054e+00 9.068718231598468e+03 + 63320 9.929204061403325e-01 -6.133226564890825e+00 -5.954694171930544e+00 3.018565484415354e+00 5.043726112591811e+00 9.078490832562426e+03 + 63340 9.158846842272510e-01 -6.009697491354939e+00 -5.978004668897957e+00 3.683906611520264e+00 4.865891702516679e+00 9.149655099529435e+03 + 63360 9.769240328269264e-01 -6.083293072091779e+00 -5.962482212853660e+00 3.247818744206460e+00 4.941533393371789e+00 9.102242904366129e+03 + 63380 9.851771204804662e-01 -6.068137785833398e+00 -5.998683576085343e+00 3.324482399906194e+00 4.723299220283748e+00 9.213012867599618e+03 + 63400 9.857459058777780e-01 -6.033315161749473e+00 -5.966134640393195e+00 3.582275385500284e+00 4.968036335280116e+00 9.113358618291519e+03 + 63420 9.457765451220203e-01 -5.929153849514661e+00 -6.027949035388561e+00 4.057355267178825e+00 4.490058021385289e+00 9.303026477564745e+03 + 63440 1.011046782635618e+00 -5.979918734940425e+00 -6.017743377033099e+00 3.777409634826612e+00 4.560214686586030e+00 9.271605805891904e+03 + 63460 1.073777476473059e+00 -6.033809738184863e+00 -6.037141383789757e+00 3.473750663583085e+00 4.454619838949293e+00 9.331423957826351e+03 + 63480 9.819039911558899e-01 -5.871980798014524e+00 -6.051817920064313e+00 4.400587100747927e+00 4.367934516233348e+00 9.376793317788171e+03 + 63500 1.047613982452744e+00 -5.956751278791237e+00 -6.026835973812791e+00 3.912650705663611e+00 4.510213541278342e+00 9.299607483368287e+03 + 63520 1.020193482747235e+00 -5.910659234009197e+00 -6.023471294792973e+00 4.204735791549656e+00 4.556951480919229e+00 9.289254586368488e+03 + 63540 1.026809206204617e+00 -5.922780285837630e+00 -6.025209339138868e+00 4.071935740959562e+00 4.483772266059083e+00 9.294582279403156e+03 + 63560 1.072367806096915e+00 -5.995091235794606e+00 -6.002598139914095e+00 3.730447692980064e+00 4.687341887836299e+00 9.225036809141504e+03 + 63580 1.023623413703573e+00 -5.932818212136196e+00 -5.967785502501092e+00 4.098774556962713e+00 4.897986964516779e+00 9.118429703035059e+03 + 63600 1.039826158804733e+00 -5.967032044540379e+00 -6.012721197569079e+00 3.848738186726391e+00 4.586383999662014e+00 9.256155497611318e+03 + 63620 1.059980028067638e+00 -6.010633786400336e+00 -6.030479902326549e+00 3.603896799359462e+00 4.489937330534634e+00 9.310861336137796e+03 + 63640 1.018402075481751e+00 -5.967625607360969e+00 -6.013423144098168e+00 3.863401313861679e+00 4.600424770770777e+00 9.258313124312017e+03 + 63660 1.014865415896960e+00 -5.982081319574339e+00 -6.004690373316318e+00 3.812218320572083e+00 4.682393635245876e+00 9.231427873521438e+03 + 63680 1.029326664780490e+00 -6.022113502236264e+00 -6.010045958840003e+00 3.572478073761755e+00 4.641771775389397e+00 9.247905893701329e+03 + 63700 9.945723101857432e-01 -5.991524719286261e+00 -6.011213177129822e+00 3.737104012685281e+00 4.624049840968549e+00 9.251496120253165e+03 + 63720 9.607540476939712e-01 -5.961478737663711e+00 -6.008336622907481e+00 3.887676379518982e+00 4.618611151214949e+00 9.242635169873653e+03 + 63740 9.783746425676478e-01 -6.004308596012074e+00 -5.965007652363307e+00 3.713172547854090e+00 4.938844648086685e+00 9.109909511289668e+03 + 63760 9.449029602749898e-01 -5.966172609613625e+00 -6.010216310787241e+00 3.914487546523195e+00 4.661581798643559e+00 9.248420331714735e+03 + 63780 1.022454769871586e+00 -6.088740144391313e+00 -6.016707256769598e+00 3.183836238677741e+00 4.597460226454961e+00 9.268428204484617e+03 + 63800 9.986726902931755e-01 -6.062012549096561e+00 -5.994704007875488e+00 3.387068507689208e+00 4.773564567343702e+00 9.200809872848145e+03 + 63820 9.853202186434556e-01 -6.049656067198745e+00 -6.014650645417757e+00 3.441852746613843e+00 4.642859295551789e+00 9.262070074724750e+03 + 63840 9.368594277782202e-01 -5.984594551161003e+00 -6.008111744861891e+00 3.768852216682431e+00 4.633812851177970e+00 9.241953878926030e+03 + 63860 9.359417309510070e-01 -5.986423546936924e+00 -6.002498577191968e+00 3.750079738703742e+00 4.657774427376387e+00 9.224712057141462e+03 + 63880 9.565154353997274e-01 -6.015495571439857e+00 -6.021318870694260e+00 3.558037629937056e+00 4.524599344465628e+00 9.282590607441360e+03 + 63900 9.850053348524292e-01 -6.052040984054347e+00 -5.992069219454899e+00 3.433565906272784e+00 4.777933059203389e+00 9.192729626105642e+03 + 63920 9.458483358713964e-01 -5.979151653435197e+00 -6.018750673380209e+00 3.760336684327901e+00 4.532952983875109e+00 9.274702202951492e+03 + 63940 9.759726956889762e-01 -5.999800632496981e+00 -5.971499530031152e+00 3.736519191568076e+00 4.899028501508314e+00 9.129744877350651e+03 + 63960 9.961867359843239e-01 -5.994002243660457e+00 -5.997523276928232e+00 3.777537060450894e+00 4.757318742549194e+00 9.209433046250784e+03 + 63980 9.580420443866193e-01 -5.893103256043563e+00 -6.012259011206742e+00 4.274088846628159e+00 4.589878061187673e+00 9.254734545458123e+03 + 64000 1.003310115833148e+00 -5.916475754533387e+00 -6.056885745658179e+00 4.082633857460446e+00 4.276377960045989e+00 9.392507223378614e+03 + 64020 1.066506367378135e+00 -5.973702400335957e+00 -6.024244906270763e+00 3.841766631957318e+00 4.551543741452146e+00 9.291633860607977e+03 + 64040 1.062201548727471e+00 -5.944496783488112e+00 -5.950512817701010e+00 4.032127272992513e+00 4.997582273563767e+00 9.065759480237059e+03 + 64060 9.493812502936735e-01 -5.760103571878942e+00 -6.024456310680781e+00 4.948517045029253e+00 4.430562710374971e+00 9.292243175053169e+03 + 64080 1.008609541770014e+00 -5.834579641034106e+00 -6.008247269762795e+00 4.562814470626127e+00 4.565588071487302e+00 9.242356848805885e+03 + 64100 1.120369648389353e+00 -5.992017513751180e+00 -5.989085971070988e+00 3.759350206018000e+00 4.776183577742424e+00 9.183577556350254e+03 + 64120 1.087862457723697e+00 -5.945877704738129e+00 -6.022932050132463e+00 3.999986057428029e+00 4.557528082052356e+00 9.287576428048858e+03 + 64140 1.036441755032167e+00 -5.881906071942267e+00 -6.038269199036900e+00 4.298663377740539e+00 4.400802104847442e+00 9.334908519438428e+03 + 64160 1.076075733757537e+00 -5.963311356003650e+00 -6.012679270480314e+00 3.890882129491142e+00 4.607403924906061e+00 9.256022193808094e+03 + 64180 1.021680785778537e+00 -5.913679970376115e+00 -6.032592653398145e+00 4.117951660294665e+00 4.435136632703943e+00 9.317332486194706e+03 + 64200 1.042074111458011e+00 -5.979086941150754e+00 -5.942882068673196e+00 3.778011142890716e+00 4.985905123342769e+00 9.042520910674513e+03 + 64220 9.727289736547844e-01 -5.909367978886213e+00 -6.016334251395611e+00 4.176863869999002e+00 4.562646980272867e+00 9.267238479392869e+03 + 64240 1.006589168793295e+00 -5.991991139749508e+00 -6.008777033006195e+00 3.685277615740957e+00 4.588890419052479e+00 9.244030543358342e+03 + 64260 9.883898949615147e-01 -5.994135957505360e+00 -6.004306708544147e+00 3.704907605023625e+00 4.646505578640275e+00 9.230299200775093e+03 + 64280 9.818514898713160e-01 -6.008076183678162e+00 -5.983299378374969e+00 3.680679837414999e+00 4.822952087664163e+00 9.165821403732953e+03 + 64300 9.986243689270662e-01 -6.049662586229292e+00 -5.966510751578223e+00 3.418503864896565e+00 4.895974567167833e+00 9.114520533539397e+03 + 64320 1.000412635844610e+00 -6.063018251625168e+00 -5.969437392314848e+00 3.344255232793161e+00 4.881611008544196e+00 9.123477658999682e+03 + 64340 9.912370828701690e-01 -6.055009199200229e+00 -5.989476717997743e+00 3.342468555276638e+00 4.718766203460008e+00 9.184790248359306e+03 + 64360 1.001545206296879e+00 -6.072522449282598e+00 -6.005947668678487e+00 3.294336497353398e+00 4.676619189996206e+00 9.235319489241065e+03 + 64380 9.552162634110006e-01 -6.004612235815550e+00 -6.014634253896670e+00 3.649711105765573e+00 4.592163127041498e+00 9.262048749773028e+03 + 64400 9.393099083480686e-01 -5.979586268680275e+00 -6.023672135207129e+00 3.797234661722231e+00 4.544086793859234e+00 9.289872583607432e+03 + 64420 1.036677794366756e+00 -6.121168270393387e+00 -5.976337888223911e+00 3.035577102074269e+00 4.867215568920605e+00 9.144572116841262e+03 + 64440 9.844402662131657e-01 -6.038089600081673e+00 -5.996790326013798e+00 3.500788759974591e+00 4.737935582714336e+00 9.207195265151828e+03 + 64460 9.316825937454173e-01 -5.951550955208468e+00 -6.004385148914509e+00 3.949284708684203e+00 4.645902592359064e+00 9.230526854520211e+03 + 64480 1.000985352296279e+00 -6.041112049539642e+00 -5.998907619495845e+00 3.502912004134307e+00 4.745256372560233e+00 9.213696179865237e+03 + 64500 9.373949049163564e-01 -5.931333286508147e+00 -6.049239070099915e+00 4.045413831248596e+00 4.368380576003625e+00 9.368813462582093e+03 + 64520 9.575008668139905e-01 -5.945600161232155e+00 -5.998450472223661e+00 3.971095505017687e+00 4.667620840745260e+00 9.212280398441593e+03 + 64540 1.017930553810809e+00 -6.014739857501250e+00 -6.016665878500361e+00 3.645388598625590e+00 4.634329087997910e+00 9.268266019213524e+03 + 64560 9.695351918443063e-01 -5.915432662417722e+00 -6.020541677920328e+00 4.141328914061977e+00 4.537776681478427e+00 9.280240227077016e+03 + 64580 1.061373159911985e+00 -6.014663881657287e+00 -5.998446922291521e+00 3.613065505709245e+00 4.706185795953824e+00 9.212297799013344e+03 + 64600 9.986079072162235e-01 -5.877030817866021e+00 -5.999323909637960e+00 4.355363239382890e+00 4.653137381633624e+00 9.214979660098450e+03 + 64620 1.106149048371082e+00 -5.982270034458686e+00 -6.031583859581318e+00 3.740845307811537e+00 4.457677692667612e+00 9.314255816572982e+03 + 64640 1.069250763283860e+00 -5.873519047872080e+00 -6.027724685614988e+00 4.419949197854041e+00 4.534476562688941e+00 9.302344721388705e+03 + 64660 1.123901882577953e+00 -5.916153047307929e+00 -6.017978382566520e+00 4.165718148934864e+00 4.581021316460327e+00 9.272270689594527e+03 + 64680 1.136406057644009e+00 -5.913121243580729e+00 -5.978950142837332e+00 4.186841654650135e+00 4.808841928129483e+00 9.152484136235393e+03 + 64700 1.138012434260695e+00 -5.907068729953219e+00 -6.019335641960604e+00 4.200060405812726e+00 4.555406423817841e+00 9.276474892615865e+03 + 64720 1.104236866995707e+00 -5.863501866490108e+00 -6.033812227974245e+00 4.488607642456103e+00 4.510659191370928e+00 9.321128573667462e+03 + 64740 1.099430920613121e+00 -5.873425909071909e+00 -6.040012262603555e+00 4.407347652163072e+00 4.450783031029465e+00 9.340262960279515e+03 + 64760 1.152095315537335e+00 -5.976181694733059e+00 -6.027342515506551e+00 3.869936268086412e+00 4.576162918093593e+00 9.301175720615593e+03 + 64780 1.158894199998673e+00 -6.016368942879380e+00 -5.998416253054008e+00 3.648713172992803e+00 4.751800296139862e+00 9.212176522118505e+03 + 64800 1.079715774013112e+00 -5.925461512820438e+00 -6.032337775372649e+00 4.092982166571727e+00 4.479282127948754e+00 9.316596751587167e+03 + 64820 1.133106650600378e+00 -6.032523636106405e+00 -6.029909490984015e+00 3.517012944992208e+00 4.532023770822621e+00 9.309084340395057e+03 + 64840 1.082422500381488e+00 -5.986153447815374e+00 -5.998303716871964e+00 3.779104382353485e+00 4.709335657182481e+00 9.211851127958296e+03 + 64860 1.041032782256140e+00 -5.951462078125060e+00 -6.003483349262452e+00 3.953246617748094e+00 4.654532428611498e+00 9.227706470636687e+03 + 64880 9.847883316651345e-01 -5.890016994726702e+00 -5.978678723806104e+00 4.285237562374158e+00 4.776128193641999e+00 9.151677108292464e+03 + 64900 9.953025786961780e-01 -5.923202288663068e+00 -5.978033808424744e+00 4.067575072957108e+00 4.752724001335300e+00 9.149729687582239e+03 + 64920 1.075785451914827e+00 -6.060512887410032e+00 -6.000941885754408e+00 3.344356188922957e+00 4.686422099012267e+00 9.219943071734959e+03 + 64940 1.062339713390021e+00 -6.063000938026938e+00 -5.981406319580043e+00 3.406354271415851e+00 4.874883197264317e+00 9.160053213325558e+03 + 64960 9.379199284841601e-01 -5.899339773647284e+00 -6.027364561574146e+00 4.205192820337231e+00 4.470054676289289e+00 9.301228478872579e+03 + 64980 9.542199539357837e-01 -5.942679077992116e+00 -6.035833579894796e+00 3.983555787531351e+00 4.448648221993581e+00 9.327360128897244e+03 + 65000 1.023352552975453e+00 -6.065776975960691e+00 -5.958600661342716e+00 3.354587222609745e+00 4.970010206627236e+00 9.090403643474689e+03 + 65020 9.442547372369401e-01 -5.962862866449044e+00 -5.970513617906954e+00 3.929742968181574e+00 4.885811169360289e+00 9.126744354919916e+03 + 65040 1.011470321414996e+00 -6.074292824329987e+00 -5.998023372115079e+00 3.262887335995571e+00 4.700838333273159e+00 9.211002547648051e+03 + 65060 9.559294447972756e-01 -6.003205997093528e+00 -5.991602263847186e+00 3.647091873063382e+00 4.713722305035792e+00 9.191315971000673e+03 + 65080 9.037393446547465e-01 -5.933161540474356e+00 -6.046732818235311e+00 4.014163290785985e+00 4.362019438784150e+00 9.361062911091753e+03 + 65100 9.452533990217297e-01 -6.000975013167154e+00 -5.989013073904189e+00 3.667724831680471e+00 4.736412138032533e+00 9.183355005123594e+03 + 65120 9.573719671976332e-01 -6.020639833081344e+00 -5.994074865889042e+00 3.562880445208243e+00 4.715420597741832e+00 9.198885088792887e+03 + 65140 9.828026722647268e-01 -6.056604850442708e+00 -5.980545259775145e+00 3.441641017638086e+00 4.878386957434850e+00 9.157407931622623e+03 + 65160 9.458443852636623e-01 -5.994965058188140e+00 -5.946453120322980e+00 3.743709304774989e+00 5.022272359194862e+00 9.053392944545703e+03 + 65180 9.727625115452220e-01 -6.018118691676275e+00 -5.978902347068054e+00 3.555979382185639e+00 4.781165701635755e+00 9.152380209138255e+03 + 65200 9.919763790717426e-01 -6.019586846582705e+00 -5.980360395482942e+00 3.633899011059561e+00 4.859143363548091e+00 9.156816911853342e+03 + 65220 9.663451806014972e-01 -5.944076749504652e+00 -6.012693101983437e+00 4.003150260372657e+00 4.609144546093243e+00 9.256042089820816e+03 + 65240 9.828059917615051e-01 -5.923400170442718e+00 -6.034006432393315e+00 4.093472665689930e+00 4.458354393305885e+00 9.321740999229289e+03 + 65260 1.068708784058185e+00 -6.006035299007579e+00 -5.967475234638855e+00 3.651754615724310e+00 4.873172472480202e+00 9.117442133227445e+03 + 65280 1.048260052767487e+00 -5.937586001803232e+00 -5.982815191630610e+00 4.032769781444872e+00 4.773056774261565e+00 9.164361158139351e+03 + 65300 1.095893455777025e+00 -5.977445913982258e+00 -5.971643729718593e+00 3.858838139565363e+00 4.892155179492442e+00 9.130195593002065e+03 + 65320 1.091811258685477e+00 -5.953577221513087e+00 -6.005024011229192e+00 3.965613473698706e+00 4.670198045783851e+00 9.232475121378935e+03 + 65340 1.044856660943211e+00 -5.879369417727929e+00 -6.060069784827506e+00 4.338845347053343e+00 4.301235875876137e+00 9.402365892068408e+03 + 65360 1.040988447554181e+00 -5.877766639346378e+00 -6.039274046820625e+00 4.316429902727068e+00 4.389029375819409e+00 9.337979788542320e+03 + 65380 9.890419143420222e-01 -5.810874523499997e+00 -5.994544360847625e+00 4.722244312698892e+00 4.667583683833342e+00 9.200261249283900e+03 + 65400 1.029645495067025e+00 -5.881770577377221e+00 -5.970019365867810e+00 4.299323930931474e+00 4.792585730962629e+00 9.125220679148015e+03 + 65420 1.060251928429955e+00 -5.943190310630442e+00 -5.977241757433022e+00 3.982392060640954e+00 4.786863383656175e+00 9.147284485434657e+03 + 65440 1.019121783373137e+00 -5.902872896071439e+00 -5.989657991825597e+00 4.182675965769502e+00 4.684342515998964e+00 9.185249768441236e+03 + 65460 1.076059565470839e+00 -6.010222207037476e+00 -5.977474815639834e+00 3.624031025341535e+00 4.812071614389234e+00 9.148013359297081e+03 + 65480 1.041389009012619e+00 -5.982649870182797e+00 -6.015153317266501e+00 3.770462546719682e+00 4.583822723672872e+00 9.263623206902725e+03 + 65500 1.023206214774157e+00 -5.978897601642629e+00 -6.049028807144020e+00 3.771382030912257e+00 4.368677796154293e+00 9.368174480512404e+03 + 65520 1.029011004227786e+00 -6.011670328717359e+00 -5.986789528717868e+00 3.666618040645287e+00 4.809487444533718e+00 9.176533514124823e+03 + 65540 9.757242701052797e-01 -5.952227277801682e+00 -6.007602611054625e+00 3.968066285287259e+00 4.650092552443732e+00 9.240391237181177e+03 + 65560 9.592383271024414e-01 -5.942755740309119e+00 -6.008595020340802e+00 4.035033222486600e+00 4.656973887949023e+00 9.243462131666261e+03 + 65580 1.048686369348883e+00 -6.086193547446296e+00 -5.994697983444187e+00 3.237716784290276e+00 4.763098471683156e+00 9.200785652437424e+03 + 65600 1.043521806596037e+00 -6.086817224246090e+00 -5.970257211803178e+00 3.216126909491451e+00 4.885432538542287e+00 9.125982505955944e+03 + 65620 9.774593127747844e-01 -5.993763930128718e+00 -6.006734616245240e+00 3.732486018642273e+00 4.658006331754013e+00 9.237745517011745e+03 + 65640 1.067800443726384e+00 -6.130454815211847e+00 -5.972312967283594e+00 3.043397770118092e+00 4.951472733293995e+00 9.132265565921538e+03 + 65660 9.779990340915540e-01 -6.000274350941320e+00 -6.015322439937025e+00 3.676816979950703e+00 4.590408524253119e+00 9.264153681257600e+03 + 65680 9.942739945525823e-01 -6.025660343557830e+00 -6.019763131354469e+00 3.551280938488499e+00 4.585143643550843e+00 9.277824144694348e+03 + 65700 1.018268082458024e+00 -6.061257355204458e+00 -6.047642625957879e+00 3.309673704343852e+00 4.387851586550253e+00 9.363880889079152e+03 + 65720 9.740302764191576e-01 -5.995745562925117e+00 -5.994041957822820e+00 3.763103927531318e+00 4.772886291660739e+00 9.198788797375966e+03 + 65740 1.001709180159406e+00 -6.034230360633322e+00 -6.020099652893245e+00 3.509711720182467e+00 4.590852430745946e+00 9.278870517408950e+03 + 65760 1.003122371744735e+00 -6.033960777155754e+00 -6.023733014152685e+00 3.518696058484299e+00 4.577425456389133e+00 9.290053442333972e+03 + 65780 8.675121503238773e-01 -5.830680943079776e+00 -6.087560878513758e+00 4.623207138312819e+00 4.148162797009355e+00 9.487774426563361e+03 + 65800 1.018284169273967e+00 -6.050379399813544e+00 -5.981361253206936e+00 3.456509982991949e+00 4.852822861330758e+00 9.159932067034502e+03 + 65820 1.006935310881990e+00 -6.026348658322816e+00 -6.016942227185641e+00 3.567659270483361e+00 4.621672453713533e+00 9.269124696013823e+03 + 65840 1.001375901871368e+00 -6.011535001289583e+00 -5.997973394868082e+00 3.643069529323482e+00 4.720942372047551e+00 9.210823779929757e+03 + 65860 9.933607190475716e-01 -5.990143284054682e+00 -6.005721236118526e+00 3.754586246010359e+00 4.665135234579476e+00 9.234613459169012e+03 + 65880 1.050975328644272e+00 -6.060215634934644e+00 -6.032851561535937e+00 3.366854370622662e+00 4.523983114654711e+00 9.318170444084893e+03 + 65900 1.000426726632251e+00 -5.967885195339933e+00 -5.999246724092002e+00 3.887970548068344e+00 4.707887796793072e+00 9.214749291094880e+03 + 65920 9.945489174347665e-01 -5.934554748251072e+00 -6.005314220986109e+00 4.084018682906196e+00 4.677706840468598e+00 9.233334206522451e+03 + 65940 1.040934292749284e+00 -5.970449483929085e+00 -5.983110608696709e+00 3.864144032728552e+00 4.791441895010129e+00 9.165255934690147e+03 + 65960 1.010007596505781e+00 -5.883503160239455e+00 -6.043076126747481e+00 4.301872558081109e+00 4.385579890555264e+00 9.349734518713358e+03 + 65980 1.148759998124574e+00 -6.049989840240140e+00 -5.995076100259435e+00 3.506965891692646e+00 4.822289084535653e+00 9.201942964046744e+03 + 66000 1.069068427566606e+00 -5.899774587346963e+00 -6.040751406298568e+00 4.210693025948485e+00 4.401182315436142e+00 9.342569682200998e+03 + 66020 1.110015934056683e+00 -5.941006994593684e+00 -6.026210987094728e+00 4.004688522328589e+00 4.515434012112366e+00 9.297689396154094e+03 + 66040 1.137733786828064e+00 -5.971045535505499e+00 -6.002397927177398e+00 3.868883572961104e+00 4.688853288214127e+00 9.224416225176748e+03 + 66060 1.080185705932078e+00 -5.888100880736138e+00 -6.010442279093865e+00 4.281865034732646e+00 4.579361793092370e+00 9.249124469756354e+03 + 66080 1.025138619855518e+00 -5.819253726273967e+00 -6.049406185819149e+00 4.640929733902702e+00 4.319358695216261e+00 9.369329481032310e+03 + 66100 1.099763731023909e+00 -5.953627008696292e+00 -6.012343147997401e+00 3.979696741862938e+00 4.642539583702783e+00 9.254970528913214e+03 + 66120 1.078230540742166e+00 -5.957644961621384e+00 -6.005328195069745e+00 3.927668146740602e+00 4.653863641323587e+00 9.233409114616652e+03 + 66140 9.734417008984010e-01 -5.847475606911382e+00 -5.993421256916630e+00 4.482934817003933e+00 4.644892309657454e+00 9.196834409642612e+03 + 66160 9.946284057296013e-01 -5.919114187439185e+00 -5.953497747633780e+00 4.132235019353375e+00 4.934799295877265e+00 9.074788629288998e+03 + 66180 9.708060288520367e-01 -5.914741458450351e+00 -5.978712407678747e+00 4.099973344146216e+00 4.732642254204367e+00 9.151780400217376e+03 + 66200 1.014974916202357e+00 -6.003406217764642e+00 -5.962389044420869e+00 3.670931605203974e+00 4.906458561930979e+00 9.101960553800434e+03 + 66220 1.001470725641395e+00 -6.001704250744334e+00 -6.022009382475545e+00 3.661037202493899e+00 4.544441993884302e+00 9.284755014731491e+03 + 66240 1.006220273569708e+00 -6.023409349163874e+00 -6.033012574132291e+00 3.529956686000107e+00 4.474813482137195e+00 9.318644217789395e+03 + 66260 9.782194972984947e-01 -5.993828707422923e+00 -6.010519544402745e+00 3.802443770477679e+00 4.706602401640858e+00 9.249358307968740e+03 + 66280 9.908869264474311e-01 -6.021106133253910e+00 -6.000019663448696e+00 3.620633136825902e+00 4.741714909568098e+00 9.217084456353577e+03 + 66300 1.020034630824749e+00 -6.069612313244798e+00 -5.974333230136956e+00 3.316782489397749e+00 4.863889728993435e+00 9.138435705446853e+03 + 66320 9.511238625755327e-01 -5.969843112470361e+00 -6.024244811792395e+00 3.837136510022721e+00 4.524753533879844e+00 9.291620482657047e+03 + 66340 9.714898467685636e-01 -5.999626991296810e+00 -6.024954439860316e+00 3.739553887432092e+00 4.594119758370442e+00 9.293802359490637e+03 + 66360 1.012260166776850e+00 -6.058454970693838e+00 -6.019840506657798e+00 3.329194168027486e+00 4.550924396091428e+00 9.278066783564984e+03 + 66380 1.003266121821861e+00 -6.043607882136898e+00 -6.007050391550767e+00 3.464858461837074e+00 4.674777230036023e+00 9.238710590489332e+03 + 66400 1.009456320348018e+00 -6.052328754002001e+00 -5.995214812220588e+00 3.400246325500061e+00 4.728203417562853e+00 9.202380413301162e+03 + 66420 9.343587568984277e-01 -5.937570443638043e+00 -6.006020143457339e+00 4.058297954789406e+00 4.665249185870195e+00 9.235522938064512e+03 + 66440 9.503047965886129e-01 -5.954019841400227e+00 -6.008719079277890e+00 3.913413624213580e+00 4.599322135640333e+00 9.243810371158041e+03 + 66460 9.696280401547355e-01 -5.971193084363878e+00 -5.987982538288606e+00 3.872333169534858e+00 4.775925526939472e+00 9.180153646196977e+03 + 66480 1.015017881851966e+00 -6.019645190588357e+00 -5.983741288297157e+00 3.611241529802151e+00 4.817407292869146e+00 9.167205749664821e+03 + 66500 1.057959754699335e+00 -6.056353373338747e+00 -6.054046300682630e+00 3.362294226967766e+00 4.375541795177531e+00 9.383712643052315e+03 + 66520 1.015807329619139e+00 -5.966431289323056e+00 -6.032950638132866e+00 3.841086570820030e+00 4.459122176118143e+00 9.318492615960706e+03 + 66540 1.050264140571100e+00 -5.989055129274790e+00 -5.953913580462945e+00 3.795045527969934e+00 4.996833739384653e+00 9.076089520825793e+03 + 66560 1.044767038688440e+00 -5.944603287253271e+00 -5.993003016918934e+00 3.948231212471732e+00 4.670312474897536e+00 9.195516605635814e+03 + 66580 1.010060643093009e+00 -5.852527984777908e+00 -6.010600982258619e+00 4.503443298882040e+00 4.595763685630494e+00 9.249591462320503e+03 + 66600 1.037752565804361e+00 -5.852458148558473e+00 -6.039429118137347e+00 4.508000191684914e+00 4.434383950698986e+00 9.338480503750281e+03 + 66620 1.123994865075966e+00 -5.947515713707972e+00 -6.035272928995831e+00 3.944343370695194e+00 4.440427860127131e+00 9.325674889152193e+03 + 66640 1.143493819075815e+00 -5.961661677516529e+00 -6.040189871472986e+00 3.900357772745592e+00 4.449436730848880e+00 9.340815469975352e+03 + 66660 1.021761236767090e+00 -5.780030575021286e+00 -6.106465901764150e+00 4.824541698481449e+00 3.950099536620369e+00 9.546751652521867e+03 + 66680 1.107905585672560e+00 -5.918187947094172e+00 -5.982355728999860e+00 4.137307748152503e+00 4.768846414517886e+00 9.162961173797634e+03 + 66700 1.080402229534054e+00 -5.896520295060216e+00 -5.999686250327597e+00 4.247378524678070e+00 4.654983644652783e+00 9.216069481013285e+03 + 66720 1.150680385491405e+00 -6.029969587925449e+00 -5.981853921307319e+00 3.565594552292289e+00 4.841882155888939e+00 9.161431186674032e+03 + 66740 1.109683714581079e+00 -6.012243185155223e+00 -6.037906409259394e+00 3.602350059206560e+00 4.454987855029316e+00 9.333777658150057e+03 + 66760 1.006496469842205e+00 -5.906699496924787e+00 -6.038371494367388e+00 4.253771519597263e+00 4.497690534106101e+00 9.335173261455562e+03 + 66780 1.045465265520584e+00 -6.003045768580300e+00 -5.990120989896773e+00 3.686029235404559e+00 4.760245314708411e+00 9.186722864119809e+03 + 66800 1.054719598448941e+00 -6.043571059307715e+00 -5.979266488347832e+00 3.496501896055073e+00 4.865748693606916e+00 9.153507356192094e+03 + 66820 1.025158956225415e+00 -6.016898328113887e+00 -6.013144323166510e+00 3.545303080827172e+00 4.566859158165395e+00 9.257445549416649e+03 + 66840 1.030738580282839e+00 -6.037541920680705e+00 -5.945410609800390e+00 3.510160916717602e+00 5.039193161066647e+00 9.050219246155890e+03 + 66860 1.034517081330480e+00 -6.051542967082438e+00 -5.956789523718410e+00 3.422800733753269e+00 4.966889668597492e+00 9.084883670750236e+03 + 66880 9.665251167567536e-01 -5.956030158204709e+00 -6.025983530594360e+00 3.948041447654047e+00 4.546358358143280e+00 9.296993528739964e+03 + 66900 1.027976343959499e+00 -6.053112865744838e+00 -6.021107665827106e+00 3.390966437057970e+00 4.574745247774268e+00 9.281985288512269e+03 + 66920 1.035908543912025e+00 -6.073894743250997e+00 -6.001896689724553e+00 3.262671064128053e+00 4.676095029139670e+00 9.222843074556109e+03 + 66940 9.184844932077428e-01 -5.906300096198942e+00 -6.007171425155247e+00 4.198532076160069e+00 4.619313295505260e+00 9.239066322376630e+03 + 66960 9.675114290761154e-01 -5.982000298177605e+00 -6.016792237999073e+00 3.723831294890430e+00 4.524050592400279e+00 9.268683297402637e+03 + 66980 9.980775021825152e-01 -6.030297149040487e+00 -6.008457281797232e+00 3.443648962466180e+00 4.569056859885483e+00 9.243041059731651e+03 + 67000 1.014661175527209e+00 -6.055450681272718e+00 -5.966535466815431e+00 3.385537139748468e+00 4.896102060747179e+00 9.114601977895209e+03 + 67020 9.809825643129686e-01 -6.005405135644025e+00 -6.004961524821542e+00 3.637496172434896e+00 4.640043454426144e+00 9.232284479602433e+03 + 67040 9.925217427807769e-01 -6.021734291615489e+00 -5.944791279718197e+00 3.626291567703969e+00 5.068110248910834e+00 9.048346806065429e+03 + 67060 1.045045209742671e+00 -6.094310057275067e+00 -5.978581805474740e+00 3.155526304972898e+00 4.820055835699458e+00 9.151416217083724e+03 + 67080 1.029032681680708e+00 -6.064094842698008e+00 -6.013966617507196e+00 3.330647990483311e+00 4.618492016846730e+00 9.259996556025222e+03 + 67100 9.653578352075562e-01 -5.963046874648354e+00 -6.010477459132173e+00 3.878670567549176e+00 4.606316811583858e+00 9.249233190612787e+03 + 67120 9.111914750514458e-01 -5.873954642728507e+00 -6.022400525489984e+00 4.354905471897273e+00 4.502506241154756e+00 9.285924952280346e+03 + 67140 1.012045505514191e+00 -6.008828714844642e+00 -5.973809279154077e+00 3.613094796304594e+00 4.814181815279980e+00 9.136834481195685e+03 + 67160 1.037322284428271e+00 -6.026638936251421e+00 -5.985533258359941e+00 3.501323285335869e+00 4.737358448871848e+00 9.172711505789448e+03 + 67180 9.945356287320889e-01 -5.938925525492723e+00 -6.057603632783982e+00 4.013822091367842e+00 4.332354033923687e+00 9.394716205735773e+03 + 67200 9.902636146576347e-01 -5.908320781601970e+00 -6.023235622178771e+00 4.237351661188532e+00 4.577492863582436e+00 9.288500631202858e+03 + 67220 1.034801977716242e+00 -5.949956350706637e+00 -6.016560708427788e+00 3.983545810567581e+00 4.601093281541691e+00 9.267947429512298e+03 + 67240 1.094741893894295e+00 -6.014162746613278e+00 -5.995825254781174e+00 3.630796090165475e+00 4.736092805983105e+00 9.204248677133743e+03 + 67260 1.063510806201818e+00 -5.947456089102931e+00 -6.018495490023627e+00 3.901420236478869e+00 4.493501003080469e+00 9.273938817471424e+03 + 67280 1.030211633956133e+00 -5.883328455719835e+00 -6.065474181772851e+00 4.275054063603320e+00 4.229145117646891e+00 9.419137096804589e+03 + 67300 1.057266281292817e+00 -5.916045975257955e+00 -6.011039821948060e+00 4.148966133224875e+00 4.603496765280027e+00 9.250960060604291e+03 + 67320 1.084516341467682e+00 -5.955276201353674e+00 -6.038558393428315e+00 3.843905129966247e+00 4.365685895196087e+00 9.335788907830007e+03 + 67340 1.064873261193631e+00 -5.931478498814941e+00 -6.063571001747287e+00 3.979706871203585e+00 4.221211278117284e+00 9.413243571481162e+03 + 67360 1.071087580253549e+00 -5.960422172350937e+00 -6.012114474902051e+00 3.879601789129118e+00 4.582776588522661e+00 9.254283617499683e+03 + 67380 1.036123680590614e+00 -5.942165427495971e+00 -5.990684529577715e+00 3.994366525180706e+00 4.715762332720550e+00 9.188474325612846e+03 + 67400 1.051582813033685e+00 -6.007179909111077e+00 -5.974667923295326e+00 3.665943750785678e+00 4.852632604553268e+00 9.139441977633478e+03 + 67420 9.709975521444160e-01 -5.934680098267561e+00 -6.039860079278758e+00 4.024598995972303e+00 4.420639268456557e+00 9.339836772836907e+03 + 67440 9.800332281181369e-01 -5.993985332204249e+00 -5.988866315888821e+00 3.731680575496282e+00 4.761074759344686e+00 9.182910633965370e+03 + 67460 9.727127352087102e-01 -6.018224159604705e+00 -5.957210256654268e+00 3.610311564970593e+00 4.960662837582968e+00 9.086142919915826e+03 + 67480 9.935865521129884e-01 -6.070808224808062e+00 -5.959274232517251e+00 3.286017356965337e+00 4.926462800528703e+00 9.092457202902164e+03 + 67500 9.659288915365276e-01 -6.041726304730241e+00 -6.006816563893703e+00 3.450681297495695e+00 4.651138431644029e+00 9.238005252809729e+03 + 67520 9.437216959995213e-01 -6.015515335158201e+00 -6.047887810345625e+00 3.559280465827150e+00 4.373392703676624e+00 9.364663274463783e+03 + 67540 1.018805057238960e+00 -6.131038816540118e+00 -6.004966308907223e+00 2.985726003101048e+00 4.709653851586630e+00 9.232318315624198e+03 + 67560 8.890172558509115e-01 -5.939195216749964e+00 -6.039957315440844e+00 4.007184226961141e+00 4.428592663393728e+00 9.340113013731758e+03 + 67580 9.385492618415294e-01 -6.008499065333626e+00 -6.053780067487033e+00 3.663169305417676e+00 4.403158783840382e+00 9.382881059434820e+03 + 67600 9.934606512002037e-01 -6.083047926480554e+00 -5.979991089950689e+00 3.267152315213068e+00 4.858920618561465e+00 9.155746363878472e+03 + 67620 9.773289644904192e-01 -6.047717312240374e+00 -6.038455927117944e+00 3.441805270766634e+00 4.494985577334345e+00 9.335467672049726e+03 + 67640 1.027830989682253e+00 -6.109438640164305e+00 -6.011097873406803e+00 3.091924864168302e+00 4.656612765074353e+00 9.251185531652034e+03 + 67660 1.010139484400637e+00 -6.068628031414050e+00 -6.009766175200919e+00 3.354728549090443e+00 4.692722436309057e+00 9.247057399872681e+03 + 67680 9.231937782787338e-01 -5.922962779643796e+00 -5.997665660922301e+00 4.122098009311824e+00 4.693142504777125e+00 9.209883647192377e+03 + 67700 9.930742251700908e-01 -6.006596237091420e+00 -5.982821254863474e+00 3.680646100554837e+00 4.817165727674313e+00 9.164405008556450e+03 + 67720 1.035096893606238e+00 -6.041593723610310e+00 -6.011939678914450e+00 3.531178869477331e+00 4.701456983069545e+00 9.253735381909983e+03 + 67740 1.037594562815710e+00 -6.019043692451458e+00 -5.984374325189156e+00 3.553101234055458e+00 4.752178105942838e+00 9.169154615161660e+03 + 67760 1.018464434681254e+00 -5.962429806436684e+00 -5.970074553258466e+00 3.929434730663952e+00 4.885537411392530e+00 9.125406249438678e+03 + 67780 1.029906905026654e+00 -5.946865140857094e+00 -6.005602303781080e+00 3.928476362119121e+00 4.591198483063006e+00 9.234257630196680e+03 + 67800 1.090930895736436e+00 -6.004827698174290e+00 -5.981713082960802e+00 3.718667360771149e+00 4.851395058302140e+00 9.161003031029926e+03 + 67820 1.042693508814884e+00 -5.903100599208122e+00 -6.047986962687466e+00 4.173231924455184e+00 4.341272004264509e+00 9.364948878169289e+03 + 67840 1.041026787681816e+00 -5.875924823950196e+00 -6.077563558815307e+00 4.309697206892895e+00 4.151856387804057e+00 9.456682619561718e+03 + 67860 1.066926500110198e+00 -5.896057128221269e+00 -6.007142861860547e+00 4.287039077814943e+00 4.649167604796483e+00 9.238956414163220e+03 + 67880 1.048544337115573e+00 -5.856593712239366e+00 -5.963823007783274e+00 4.480853490475383e+00 4.865126281782409e+00 9.106276317336960e+03 + 67900 1.057837220360690e+00 -5.860167888368156e+00 -5.978237300143055e+00 4.473276300880061e+00 4.795303467286169e+00 9.150342829856920e+03 + 67920 1.100985916644492e+00 -5.914119901500097e+00 -6.054259791430436e+00 4.112022035620860e+00 4.307317101062977e+00 9.384360949461605e+03 + 67940 1.084181408897506e+00 -5.890822860337608e+00 -6.029178191143545e+00 4.305460831529329e+00 4.511003111623395e+00 9.306793842762041e+03 + 67960 1.037499164465762e+00 -5.836590981593044e+00 -6.022496651890181e+00 4.605640155493202e+00 4.538141027837538e+00 9.286206995054910e+03 + 67980 1.094811827774892e+00 -5.953428792748918e+00 -6.018291503908625e+00 3.942457260585613e+00 4.570005535634467e+00 9.273262805702136e+03 + 68000 9.752374519098556e-01 -5.822614335543644e+00 -6.040614554218312e+00 4.617710894650749e+00 4.365919903595996e+00 9.342126112087342e+03 + 68020 1.019904820338775e+00 -5.936154114887150e+00 -6.010225630763998e+00 4.045186075880252e+00 4.619855969185354e+00 9.248454477428140e+03 + 68040 1.072022976081843e+00 -6.059593893396194e+00 -6.009303353015047e+00 3.393943616955830e+00 4.682719682260347e+00 9.245641793019744e+03 + 68060 1.006807607024998e+00 -6.005119202723638e+00 -6.041674279388438e+00 3.648891151952471e+00 4.438986244863361e+00 9.345428499924587e+03 + 68080 9.838454267410869e-01 -6.007810566786055e+00 -6.013181147680291e+00 3.652288758747965e+00 4.621450052158553e+00 9.257568848014051e+03 + 68100 9.267217073018031e-01 -5.951397793842877e+00 -6.025901587052223e+00 3.923982209573860e+00 4.496169899541057e+00 9.296709164082320e+03 + 68120 1.016948422495785e+00 -6.106074971665565e+00 -5.952050261500757e+00 3.146710196696843e+00 5.031143917710041e+00 9.070433997275897e+03 + 68140 9.438753743621873e-01 -6.011776684319846e+00 -5.989250924181849e+00 3.636731400362192e+00 4.766077800924686e+00 9.184073865712693e+03 + 68160 9.672068263374420e-01 -6.054542487150885e+00 -5.978878397635601e+00 3.430953183583238e+00 4.865428094560013e+00 9.152325206316666e+03 + 68180 1.024470142788593e+00 -6.144107759612810e+00 -5.989762546584246e+00 2.921245010258468e+00 4.807519108313004e+00 9.185673058707902e+03 + 68200 9.889891800882168e-01 -6.094343214049258e+00 -6.006144693348371e+00 3.176957151119697e+00 4.683406705661160e+00 9.235933751600342e+03 + 68220 9.382949753058375e-01 -6.017555137692742e+00 -6.016911374372552e+00 3.585723222391469e+00 4.589419810998054e+00 9.269041097361180e+03 + 68240 9.300158836562472e-01 -5.998464279014645e+00 -6.007483362171068e+00 3.673461502304512e+00 4.621672531121726e+00 9.240041860614194e+03 + 68260 9.722081216810353e-01 -6.049364703063667e+00 -6.007315329709964e+00 3.442320213845938e+00 4.683774222762398e+00 9.239511602044133e+03 + 68280 9.895926293987768e-01 -6.058885828631868e+00 -5.990540685045837e+00 3.374172753303237e+00 4.766621144151015e+00 9.188047696539257e+03 + 68300 9.595079793762733e-01 -5.993299896819209e+00 -6.021781009720743e+00 3.686602197293266e+00 4.523059239574678e+00 9.284038609288093e+03 + 68320 9.117840498664789e-01 -5.895743247489367e+00 -6.047526212296312e+00 4.213210689015853e+00 4.341649416756487e+00 9.363526138169025e+03 + 68340 9.723648590457549e-01 -5.955608493344664e+00 -5.989626655477355e+00 3.909247141950867e+00 4.713909590691383e+00 9.185213205174214e+03 + 68360 1.004831480827679e+00 -5.971030057111545e+00 -6.016351155793582e+00 3.801805039375094e+00 4.541564277325484e+00 9.267294025509300e+03 + 68380 1.009877735477846e+00 -5.947299387909505e+00 -5.964624781636716e+00 4.006121920105558e+00 4.906636828227897e+00 9.108751469956236e+03 + 68400 1.011815775503380e+00 -5.923419581669514e+00 -6.004340436200906e+00 4.095236979098734e+00 4.630576909917718e+00 9.230338786585540e+03 + 68420 1.120228201619910e+00 -6.061664055020864e+00 -5.968472436127905e+00 3.383589582169538e+00 4.918710279209325e+00 9.120519681024865e+03 + 68440 1.066519355260748e+00 -5.966600839988372e+00 -6.041889313987196e+00 3.833149815207118e+00 4.400831746652177e+00 9.346058317431158e+03 + 68460 1.015596865508945e+00 -5.883510444586338e+00 -6.017569405595361e+00 4.327173462363793e+00 4.557386162692814e+00 9.271062804701987e+03 + 68480 1.032624497610213e+00 -5.908544652832996e+00 -6.003078241942255e+00 4.188799757873143e+00 4.645973260182141e+00 9.226465394646300e+03 + 68500 1.000131835311615e+00 -5.864180613339229e+00 -6.031145100368463e+00 4.376064402878270e+00 4.417328480685543e+00 9.312891518459719e+03 + 68520 1.051750454197759e+00 -5.949321041045928e+00 -6.067293432294156e+00 3.910675865377326e+00 4.233260138661454e+00 9.424770863506303e+03 + 68540 1.014166407618716e+00 -5.910768561835623e+00 -6.041413276400032e+00 4.121788452559661e+00 4.371606284326586e+00 9.344608960883110e+03 + 68560 1.057700465267585e+00 -5.998238807531517e+00 -5.962281003848353e+00 3.690677158899802e+00 4.897152432100670e+00 9.101639621927749e+03 + 68580 9.479572945866706e-01 -5.860399954653880e+00 -6.051492616957435e+00 4.410307109222020e+00 4.313023470781085e+00 9.375759768944983e+03 + 68600 1.040854465800414e+00 -6.027131530410442e+00 -5.982855122083357e+00 3.506676873794838e+00 4.760918862161009e+00 9.164492351668210e+03 + 68620 1.018729827104335e+00 -6.020429717848271e+00 -5.994052637406304e+00 3.557365304271101e+00 4.708826582008879e+00 9.198796814603245e+03 + 68640 9.913987843793604e-01 -6.006060916982197e+00 -6.009758132482378e+00 3.664173902020241e+00 4.642943918475956e+00 9.247030391660363e+03 + 68660 9.880190789070139e-01 -6.025024877049546e+00 -6.008376032891793e+00 3.531902978341807e+00 4.627503217895931e+00 9.242801125856495e+03 + 68680 9.334084051983137e-01 -5.962791938200769e+00 -6.026978423864458e+00 3.824118631946610e+00 4.455549898439150e+00 9.300061850534506e+03 + 68700 9.384454904219944e-01 -5.981707239873182e+00 -6.024957471246437e+00 3.789711121429558e+00 4.541361599932650e+00 9.293825309770693e+03 + 68720 1.046027374070244e+00 -6.147076055934745e+00 -5.956723668613973e+00 2.906661660707237e+00 4.999694525639846e+00 9.084702966435460e+03 + 68740 9.486992988240669e-01 -6.003841259871783e+00 -5.984041157070878e+00 3.690993563545074e+00 4.804688817883882e+00 9.168117300765291e+03 + 68760 9.704346715714314e-01 -6.034496540326515e+00 -5.978160458135860e+00 3.455102440681337e+00 4.778592942600623e+00 9.150139732523608e+03 + 68780 1.013641136520927e+00 -6.093303350555248e+00 -5.985424035465829e+00 3.186855677682247e+00 4.806315399195742e+00 9.172363262240191e+03 + 68800 9.144277208672775e-01 -5.939495969183015e+00 -5.998812280193453e+00 4.005244914255635e+00 4.664641477264234e+00 9.213382368997900e+03 + 68820 9.333018535754948e-01 -5.957349399693246e+00 -5.998706295160906e+00 3.858222722320409e+00 4.620745028586215e+00 9.213087618516525e+03 + 68840 9.851493928308517e-01 -6.022964685691626e+00 -5.991940493796610e+00 3.543428183211157e+00 4.721573894050517e+00 9.192296960055361e+03 + 68860 9.434938618806449e-01 -5.948748570321367e+00 -5.976543181012717e+00 3.981252549339512e+00 4.821651593547678e+00 9.145135209271961e+03 + 68880 9.588175088911657e-01 -5.956862868603661e+00 -5.974456790028420e+00 3.945544547309466e+00 4.844517527837963e+00 9.138729127529756e+03 + 68900 9.744653219018354e-01 -5.961302800458627e+00 -5.950751095685412e+00 3.997187604453059e+00 5.057777126131899e+00 9.066421458317380e+03 + 68920 1.019564081598813e+00 -6.004924085593796e+00 -5.939319355068856e+00 3.668368257065376e+00 5.045080772038817e+00 9.031693198774226e+03 + 68940 1.010685331362514e+00 -5.967281440994053e+00 -5.983712374111588e+00 3.868008646581639e+00 4.773659685942070e+00 9.167094912838520e+03 + 68960 1.007687392619904e+00 -5.940978697280507e+00 -5.945243335967706e+00 3.983167397613843e+00 4.958679182321246e+00 9.049711154681843e+03 + 68980 1.003447874960950e+00 -5.911796299986793e+00 -5.997671637569777e+00 4.123577252997211e+00 4.630467775430176e+00 9.209878524030568e+03 + 69000 1.075274355662337e+00 -5.999821677522811e+00 -5.989997576300167e+00 3.711464823045240e+00 4.767876332540412e+00 9.186360145784383e+03 + 69020 1.033963165283710e+00 -5.924263675231807e+00 -6.020845880126675e+00 4.155553501225540e+00 4.600963534671305e+00 9.281142080128458e+03 + 69040 1.036928557025325e+00 -5.918743908717836e+00 -6.074646163582215e+00 4.083657522116015e+00 4.188442648888784e+00 9.447615322009495e+03 + 69060 1.044258113618064e+00 -5.928288439834048e+00 -6.034212119469940e+00 4.050693552179355e+00 4.442463392073617e+00 9.322382414205853e+03 + 69080 1.059459326141740e+00 -5.956876464061159e+00 -5.992333109334949e+00 3.985384174683948e+00 4.781786630623724e+00 9.193516196254308e+03 + 69100 9.849047026747783e-01 -5.858670978555253e+00 -6.035611152114821e+00 4.431921160206561e+00 4.415903302224151e+00 9.326662993759661e+03 + 69120 1.024838739143535e+00 -5.938749971706142e+00 -5.962956739661691e+00 4.024851754351905e+00 4.885852746765909e+00 9.103662184019338e+03 + 69140 9.902899932124012e-01 -5.916084141108882e+00 -6.024396648549645e+00 4.112933240847429e+00 4.490986061816215e+00 9.292086527790236e+03 + 69160 1.042306788255892e+00 -6.032453480299648e+00 -6.017440806436720e+00 3.472543153137463e+00 4.558748249662172e+00 9.270650678851845e+03 + 69180 1.019406965107340e+00 -6.045628741387449e+00 -5.987366358873903e+00 3.466370344020468e+00 4.800921960487806e+00 9.178300138240107e+03 + 69200 1.001163520033020e+00 -6.066530941477739e+00 -5.959635080865036e+00 3.341111243362488e+00 4.954923817081598e+00 9.093547020577938e+03 + 69220 9.879991392610417e-01 -6.084108281407361e+00 -5.978134758531469e+00 3.234435285782184e+00 4.842951653485217e+00 9.150053373971095e+03 + 69240 9.382962747098970e-01 -6.036199240633215e+00 -5.996990648252419e+00 3.488028398615518e+00 4.713170203576110e+00 9.207848076099952e+03 + 69260 9.812338724709685e-01 -6.114337566963933e+00 -5.982288504284372e+00 3.108189159378512e+00 4.866435311810963e+00 9.162775909190796e+03 + 69280 9.412562021764928e-01 -6.060525928242287e+00 -6.011634389743836e+00 3.349954371089106e+00 4.630697151088337e+00 9.252806005409180e+03 + 69300 9.408870177361662e-01 -6.059685523835410e+00 -6.012608274065905e+00 3.347290823458287e+00 4.617615676815638e+00 9.255816097367548e+03 + 69320 9.327491733997499e-01 -6.043982291018529e+00 -6.004865386490144e+00 3.482941969963893e+00 4.707557289087290e+00 9.231985545030388e+03 + 69340 9.397431608475214e-01 -6.046387312542032e+00 -6.002593409233991e+00 3.436777978864884e+00 4.688249348744296e+00 9.224993415276283e+03 + 69360 9.495452801287275e-01 -6.046616011437129e+00 -5.996982784684540e+00 3.463918346117792e+00 4.748920014848178e+00 9.207779949359048e+03 + 69380 9.738306559239879e-01 -6.065197717124311e+00 -6.015018409674704e+00 3.368841200344467e+00 4.656978548942845e+00 9.263211394609030e+03 + 69400 9.598789858393282e-01 -6.025569561287480e+00 -6.004689244742758e+00 3.563610834670167e+00 4.683508843488499e+00 9.231444455057152e+03 + 69420 9.941749203489039e-01 -6.055573092542616e+00 -6.026212061176351e+00 3.375886750958415e+00 4.544482336668427e+00 9.297686240339821e+03 + 69440 1.023894670745189e+00 -6.079558468737997e+00 -5.955677943081458e+00 3.327909644687157e+00 5.039250793456395e+00 9.081508353461004e+03 + 69460 1.029093875392457e+00 -6.068602790848482e+00 -5.986471491288456e+00 3.369668386641428e+00 4.841279018492630e+00 9.175554306300777e+03 + 69480 9.792433423116675e-01 -5.977161237868673e+00 -6.013043755135509e+00 3.756438624038982e+00 4.550395657091205e+00 9.257130619256297e+03 + 69500 9.328048157680555e-01 -5.891998114641646e+00 -6.021244179548226e+00 4.314109658841696e+00 4.571958753384207e+00 9.282334467695709e+03 + 69520 1.005794012832830e+00 -5.984705110523979e+00 -6.043924258552813e+00 3.709354710865605e+00 4.369309198750504e+00 9.352372225401237e+03 + 69540 9.688452838350087e-01 -5.916669643774752e+00 -6.028553154558140e+00 4.102551598841625e+00 4.460099166006076e+00 9.304901875777367e+03 + 69560 9.559410113108339e-01 -5.886576701845258e+00 -6.042357416117171e+00 4.278398434982454e+00 4.383881466645509e+00 9.347539454549071e+03 + 69580 1.019217639021093e+00 -5.973984159754081e+00 -5.999073069968986e+00 3.817137604692410e+00 4.673073199742116e+00 9.214186815282666e+03 + 69600 1.025647368555346e+00 -5.979400701225217e+00 -5.966463191915377e+00 3.819364201494218e+00 4.893653382024412e+00 9.114361484806544e+03 + 69620 1.039133762991373e+00 -5.996298860422524e+00 -5.990497612582082e+00 3.678071846078063e+00 4.711383508918080e+00 9.187878708611281e+03 + 69640 9.678250724812770e-01 -5.888550638365031e+00 -6.000707300182396e+00 4.286090753825563e+00 4.642069845482934e+00 9.219196281072789e+03 + 69660 1.108218439596053e+00 -6.097739024837245e+00 -5.967516494641372e+00 3.147898260263040e+00 4.895656180519160e+00 9.117610103866133e+03 + 69680 1.015884218402705e+00 -5.963867987125743e+00 -5.988902125354911e+00 3.950626156858185e+00 4.806876261125934e+00 9.182999205909098e+03 + 69700 1.078750192922928e+00 -6.063362120637528e+00 -5.988016845692251e+00 3.397881257947003e+00 4.830525486326398e+00 9.180299315568545e+03 + 69720 1.023989674573248e+00 -5.991311933360216e+00 -6.006521337817111e+00 3.723773173140301e+00 4.636438419101081e+00 9.237087195545648e+03 + 69740 1.043907612788110e+00 -6.030004272761485e+00 -5.985386223513388e+00 3.485513807592651e+00 4.741717550996032e+00 9.172244110551563e+03 + 69760 9.855258844270411e-01 -5.952326312771618e+00 -5.952862923915262e+00 3.992347048326526e+00 4.989265744099417e+00 9.072894438183102e+03 + 69780 1.008490619358759e+00 -5.991480691777755e+00 -5.924798705146660e+00 3.762463677460752e+00 5.145361963700583e+00 8.987614233113913e+03 + 69800 9.768201722638907e-01 -5.946731322094103e+00 -6.005928448009952e+00 3.898669639089970e+00 4.558750581355541e+00 9.235242404814710e+03 + 69820 9.844026951240963e-01 -5.958194927055757e+00 -6.015660591996427e+00 3.895035637687472e+00 4.565058896815239e+00 9.265181287775671e+03 + 69840 1.010596180323453e+00 -5.997919600672968e+00 -6.005956846925616e+00 3.670386022517257e+00 4.624234910774711e+00 9.235351643668326e+03 + 69860 9.748406791105271e-01 -5.946518880326788e+00 -6.011113623952737e+00 3.997393583499323e+00 4.626480569594856e+00 9.251169231989958e+03 + 69880 1.020277718700095e+00 -6.014887391637299e+00 -5.975131517784170e+00 3.668547576558483e+00 4.896831956424746e+00 9.140846370669844e+03 + 69900 1.029936795111498e+00 -6.030468731246760e+00 -5.972571785788999e+00 3.509648093336735e+00 4.842101313678548e+00 9.133043052821786e+03 + 69920 9.700978727879976e-01 -5.941941053479931e+00 -6.042721825331602e+00 3.949946207774847e+00 4.371247420028505e+00 9.348667494216550e+03 + 69940 9.936440920501012e-01 -5.979255450970929e+00 -6.007803570394982e+00 3.772561237608811e+00 4.608633518068699e+00 9.241016464042998e+03 + 69960 1.003130497428304e+00 -5.996242277028681e+00 -5.969039788753699e+00 3.757648261183772e+00 4.913849158430178e+00 9.122253330851694e+03 + 69980 1.044216552150625e+00 -6.059617274019580e+00 -5.965672748645492e+00 3.363628355778575e+00 4.903072358344904e+00 9.111960383400810e+03 + 70000 9.852857866268403e-01 -5.975417659615371e+00 -5.970595546649576e+00 3.866052625835466e+00 4.893741944704631e+00 9.126910560092116e+03 + 70020 9.521447088454075e-01 -5.927483317338010e+00 -5.952569967525423e+00 4.122190150795339e+00 4.978138723272644e+00 9.071984686956723e+03 + 70040 9.747547741272348e-01 -5.959234848799405e+00 -6.006684639081742e+00 3.898570742372665e+00 4.626106703740174e+00 9.237543811284933e+03 + 70060 1.021498447510868e+00 -6.025454432247567e+00 -6.029011446204793e+00 3.547178596103394e+00 4.526753671514875e+00 9.306316644346169e+03 + 70080 9.842505595894889e-01 -5.968322796902347e+00 -6.040565239801804e+00 3.828337532943981e+00 4.413510246333392e+00 9.342008701067141e+03 + 70100 9.787463834619456e-01 -5.961409855374034e+00 -5.981210801964068e+00 3.931127570188163e+00 4.817427470681613e+00 9.159435500639856e+03 + 70120 1.005660325235447e+00 -5.999992349811070e+00 -5.961977363406611e+00 3.742765598305623e+00 4.961053533040163e+00 9.100660831558309e+03 + 70140 1.075726393744813e+00 -6.101457502694361e+00 -5.912979323039012e+00 3.206323843680755e+00 5.288594718165804e+00 8.951843394956073e+03 + 70160 9.845988129087385e-01 -5.962434327511987e+00 -5.979147109364762e+00 3.899467719727201e+00 4.803500340033934e+00 9.153135457445871e+03 + 70180 9.799969509590278e-01 -5.948930351744463e+00 -5.989827389496398e+00 3.984979019634499e+00 4.750141900066749e+00 9.185828683835414e+03 + 70200 1.037500294428731e+00 -6.025233160214045e+00 -5.994370061893564e+00 3.497477298763991e+00 4.674697985369223e+00 9.199784988112962e+03 + 70220 9.524353245933865e-01 -5.889063724799857e+00 -6.019965267981704e+00 4.295613033114425e+00 4.543956115215919e+00 9.278420973733590e+03 + 70240 1.067401808273573e+00 -6.048512074212003e+00 -5.986156549958411e+00 3.447391860841215e+00 4.805446930591536e+00 9.174620454315991e+03 + 70260 1.046030181995155e+00 -6.005630572946362e+00 -6.026213986680897e+00 3.688382975507184e+00 4.570189828570503e+00 9.297708983252876e+03 + 70280 9.903238708068244e-01 -5.915714231403570e+00 -6.018863352333780e+00 4.193332711376542e+00 4.601034496720406e+00 9.275041767742216e+03 + 70300 1.054368400603872e+00 -6.005602617323390e+00 -5.981921502339052e+00 3.639226892776482e+00 4.775207519657253e+00 9.161634493099718e+03 + 70320 1.011213555644030e+00 -5.937321608885989e+00 -6.023202137758682e+00 4.020843469966564e+00 4.527704183210672e+00 9.288403073807489e+03 + 70340 1.076064964292021e+00 -6.032135154411962e+00 -6.030132772653575e+00 3.481623870196108e+00 4.493121856120338e+00 9.309797944034064e+03 + 70360 1.061282699097143e+00 -6.014762539367547e+00 -6.000263003707929e+00 3.694112843429825e+00 4.777371420983245e+00 9.217846907252660e+03 + 70380 9.274184484191209e-01 -5.825845023373073e+00 -6.021975436273323e+00 4.610739909111313e+00 4.484528727154773e+00 9.284618513366244e+03 + 70400 9.968163766711503e-01 -5.942685970212311e+00 -6.007575058536053e+00 3.950072650814566e+00 4.577469464105680e+00 9.240317648013504e+03 + 70420 9.761201635242843e-01 -5.930428694557924e+00 -5.981747164273491e+00 4.059653450487869e+00 4.764974855873560e+00 9.161078792380131e+03 + 70440 9.713867024820535e-01 -5.942086313575240e+00 -5.988125586064596e+00 3.948170404684166e+00 4.683805777495895e+00 9.180624759127617e+03 + 70460 1.006316693216304e+00 -6.013881445374881e+00 -5.978615344848601e+00 3.627481595938903e+00 4.829985002572228e+00 9.151533585943896e+03 + 70480 9.742213254284857e-01 -5.989170371003017e+00 -6.016548922505499e+00 3.755182416056681e+00 4.597970536512280e+00 9.267925499612702e+03 + 70500 9.826545144732803e-01 -6.026691591154540e+00 -6.024090706430131e+00 3.545288759747112e+00 4.560223442320284e+00 9.291159161167199e+03 + 70520 9.782870695124780e-01 -6.045872841111764e+00 -6.000400319605284e+00 3.435645516539124e+00 4.696755771879292e+00 9.218285934531230e+03 + 70540 9.168055778294389e-01 -5.979603577274032e+00 -6.019506460953115e+00 3.743787636488924e+00 4.514659103452336e+00 9.277024441967735e+03 + 70560 9.389316120792757e-01 -6.031078850665705e+00 -5.997412805144283e+00 3.497552172331292e+00 4.690867815519000e+00 9.209088750918942e+03 + 70580 9.742844868648181e-01 -6.097691873557064e+00 -6.011636152959340e+00 3.173067763463403e+00 4.667213028215262e+00 9.252803378852028e+03 + 70600 9.253321688657712e-01 -6.034674828112920e+00 -6.002645493200635e+00 3.485558753745739e+00 4.669476151335639e+00 9.225185260167767e+03 + 70620 9.638397026808231e-01 -6.097880327193794e+00 -6.014401242159638e+00 3.127516825126767e+00 4.606866649739553e+00 9.261330813197288e+03 + 70640 9.522620139952841e-01 -6.082628860789078e+00 -5.991198387439900e+00 3.270241528856104e+00 4.795249455647108e+00 9.190080458703873e+03 + 70660 9.684716586148416e-01 -6.103273277182125e+00 -5.982686277821319e+00 3.134777701811175e+00 4.827206912918764e+00 9.164002490463175e+03 + 70680 9.171964825713237e-01 -6.015633855824018e+00 -6.016846673568081e+00 3.645728821557715e+00 4.638764634388365e+00 9.268836177777528e+03 + 70700 9.911609315718957e-01 -6.099817159418151e+00 -6.017086254254054e+00 3.165736950888002e+00 4.640790610906448e+00 9.269601532287068e+03 + 70720 9.661113374224485e-01 -6.022847961052972e+00 -6.017463993586402e+00 3.582951994257866e+00 4.613867568617183e+00 9.270753969747608e+03 + 70740 1.015579423875894e+00 -6.046392958132828e+00 -6.007622299553887e+00 3.414422599669069e+00 4.637049720969373e+00 9.240480080510595e+03 + 70760 1.074355378180800e+00 -6.082092272173974e+00 -5.985522041420553e+00 3.272056349904133e+00 4.826577559085191e+00 9.172650288016712e+03 + 70780 1.017195074304929e+00 -5.956383062276692e+00 -5.966740378251631e+00 3.963624358940110e+00 4.904151047822547e+00 9.115194435344187e+03 + 70800 1.101391231856071e+00 -6.048493724259082e+00 -5.956504310747908e+00 3.452222075447216e+00 4.980439523144108e+00 9.083995891575007e+03 + 70820 1.076202380315758e+00 -5.989694510715016e+00 -5.994555745973149e+00 3.767818409275956e+00 4.739904444150034e+00 9.200343781739284e+03 + 70840 1.037920201539905e+00 -5.921749992826493e+00 -6.048647478772059e+00 4.092086695192322e+00 4.363421693570398e+00 9.367006359100198e+03 + 70860 1.079208670518661e+00 -5.981092501605542e+00 -6.033288883422049e+00 3.733859371381083e+00 4.434139669626719e+00 9.319526617272555e+03 + 70880 1.048641041490575e+00 -5.942072683509028e+00 -6.006378112287126e+00 4.030525458075617e+00 4.661273734798833e+00 9.236611420864498e+03 + 70900 1.102799369453900e+00 -6.033091195231801e+00 -5.945244797691348e+00 3.564146134883438e+00 5.068573743746803e+00 9.049696764594084e+03 + 70920 1.008300738029986e+00 -5.906474110435020e+00 -6.023051531940904e+00 4.151850578187029e+00 4.482444983602562e+00 9.287935505941927e+03 + 70940 1.047963690697337e+00 -5.984637984682442e+00 -5.957685353903432e+00 3.779913093828033e+00 4.934679270667241e+00 9.087590216990026e+03 + 70960 1.008306471711980e+00 -5.944218940330399e+00 -5.965502609161605e+00 4.014844160352446e+00 4.892630040286548e+00 9.111416952318772e+03 + 70980 9.844830554343613e-01 -5.927349625248446e+00 -6.047706044847937e+00 4.117153086760546e+00 4.426047900324531e+00 9.364064428847594e+03 + 71000 1.093317831662293e+00 -6.110440455961140e+00 -5.998143462359575e+00 3.136419328069795e+00 4.781246043233581e+00 9.211364543873264e+03 + 71020 1.038069042806743e+00 -6.055952119068007e+00 -5.999544966122630e+00 3.402379814607985e+00 4.726278415799051e+00 9.215670323833736e+03 + 71040 1.025771698772686e+00 -6.065206555135048e+00 -5.993512898087752e+00 3.326689458465902e+00 4.738365531789048e+00 9.197151163681378e+03 + 71060 9.547924300294415e-01 -5.986235781953862e+00 -5.992641994750723e+00 3.804814336268505e+00 4.768028871030708e+00 9.194443923604809e+03 + 71080 9.512512126915852e-01 -6.002195813934761e+00 -5.990430261843304e+00 3.648025364530105e+00 4.715584985352550e+00 9.187682429775406e+03 + 71100 9.651238720003124e-01 -6.035617255876769e+00 -5.995355254643203e+00 3.493611807361433e+00 4.724802448969121e+00 9.202791570511039e+03 + 71120 9.391212134331031e-01 -6.006264927523270e+00 -6.046366543574567e+00 3.625374424039867e+00 4.395104738968298e+00 9.359939621428322e+03 + 71140 9.780995346144636e-01 -6.070067227560605e+00 -5.970070803421549e+00 3.319388716141143e+00 4.893583657944221e+00 9.125410549761558e+03 + 71160 9.422439273216913e-01 -6.018277632392623e+00 -5.971017781226005e+00 3.596251370947818e+00 4.867624749784873e+00 9.128292673623775e+03 + 71180 8.953373227922906e-01 -5.946020470998536e+00 -5.975201594063404e+00 3.981807879385665e+00 4.814245354982994e+00 9.141066389661488e+03 + 71200 9.360093497416029e-01 -5.997496255992095e+00 -5.980727185098404e+00 3.701732116268822e+00 4.798022716345729e+00 9.157964485325909e+03 + 71220 9.595510957103931e-01 -6.017115915163399e+00 -6.014012620058224e+00 3.595762814233475e+00 4.613582414960758e+00 9.260114197716155e+03 + 71240 1.022302189070466e+00 -6.095498445915018e+00 -6.015103342600139e+00 3.138538683845451e+00 4.600179808181517e+00 9.263492158518040e+03 + 71260 9.539600300306490e-01 -5.980707235361757e+00 -6.018253033809237e+00 3.843244400920065e+00 4.627650616041106e+00 9.273164613456660e+03 + 71280 9.739483252419429e-01 -5.998982189843243e+00 -6.003156494943964e+00 3.743211536071267e+00 4.719242030211303e+00 9.226739303074457e+03 + 71300 9.893267733632010e-01 -6.013681210394778e+00 -6.026503647679898e+00 3.589013233293067e+00 4.515384814136151e+00 9.298603268027542e+03 + 71320 1.017717248988810e+00 -6.051447611332551e+00 -5.958475412843285e+00 3.409260828244252e+00 4.943121579370836e+00 9.090024406506074e+03 + 71340 9.027491933194501e-01 -5.875832359433527e+00 -6.013647845202923e+00 4.367336871939717e+00 4.575979025774354e+00 9.258963720507543e+03 + 71360 9.835126301373331e-01 -5.990083740944773e+00 -5.963465901635574e+00 3.749871921717480e+00 4.902715674128228e+00 9.105229265018572e+03 + 71380 1.009951659107425e+00 -6.021849331190434e+00 -5.971680356860030e+00 3.583107187749538e+00 4.871185201978407e+00 9.130293538631422e+03 + 71400 9.660978550681558e-01 -5.948350579057478e+00 -5.993786045792977e+00 3.993130431750898e+00 4.732232950639904e+00 9.197967254355051e+03 + 71420 9.942729105538943e-01 -5.982157256176687e+00 -6.019930944773595e+00 3.763163289123331e+00 4.546260923740464e+00 9.278334019747579e+03 + 71440 1.023346812833159e+00 -6.019275154002194e+00 -5.961517903862942e+00 3.577538064967328e+00 4.909189133172486e+00 9.099311039274462e+03 + 71460 9.785984074370471e-01 -5.947305811079222e+00 -6.008961838180979e+00 3.893727960694233e+00 4.539689511836582e+00 9.244563207524108e+03 + 71480 1.001936663544862e+00 -5.975383712620124e+00 -5.956220974946108e+00 3.841988271537350e+00 4.952023676685622e+00 9.083106487852001e+03 + 71500 9.758448619969763e-01 -5.928267489567518e+00 -6.003519838924873e+00 4.080415439762302e+00 4.648304804488941e+00 9.227851979846764e+03 + 71520 9.605426494497725e-01 -5.895851747017744e+00 -6.033080830948842e+00 4.255397191485234e+00 4.467406555420765e+00 9.318854210038962e+03 + 71540 1.086107132529073e+00 -6.072618791262723e+00 -5.978637413810428e+00 3.334561108831889e+00 4.874216721734129e+00 9.151604360545736e+03 + 71560 1.029487312461365e+00 -5.981881127300630e+00 -6.055172442504591e+00 3.738029171596152e+00 4.317179097900635e+00 9.387207366835322e+03 + 71580 9.889155214991516e-01 -5.917961882898070e+00 -6.038813180282013e+00 4.145515858090084e+00 4.451569006833656e+00 9.336597849567606e+03 + 71600 1.071779992790046e+00 -6.041715881375589e+00 -6.010042222290681e+00 3.422355544638722e+00 4.604230596587167e+00 9.247909183106223e+03 + 71620 1.045387051001033e+00 -6.007750656713964e+00 -5.991513631816355e+00 3.679137699798679e+00 4.772373209432231e+00 9.191013334353796e+03 + 71640 9.976304201425148e-01 -5.945722862013246e+00 -6.044979896073477e+00 3.953607522972456e+00 4.383658273422228e+00 9.355627793013258e+03 + 71660 1.030093144481907e+00 -6.008134872534762e+00 -5.958354142466147e+00 3.640828627041974e+00 4.926677282639041e+00 9.089661195187107e+03 + 71680 9.735890601838096e-01 -5.944521426992388e+00 -5.992746557657135e+00 3.962701487246581e+00 4.685785324154749e+00 9.194766387294718e+03 + 71700 9.718136152909835e-01 -5.968458793532701e+00 -5.947302403517010e+00 3.919440512801529e+00 5.040923778212404e+00 9.055953398534011e+03 + 71720 9.792500838272675e-01 -6.004369400978486e+00 -5.972438802520508e+00 3.630917930505519e+00 4.814268368095367e+00 9.132621416567956e+03 + 71740 1.017132512715343e+00 -6.087041548014650e+00 -5.946915139378068e+00 3.261134059083399e+00 5.065761581966309e+00 9.054791549602849e+03 + 71760 9.555981724742256e-01 -6.021054229370844e+00 -5.920401848356870e+00 3.613861167213172e+00 5.191822714901035e+00 8.974300585536268e+03 + 71780 9.326143455157420e-01 -6.005861366301362e+00 -5.972227275070633e+00 3.653356503763681e+00 4.846488660469321e+00 9.131959975134478e+03 + 71800 9.975761355065270e-01 -6.117550414376658e+00 -6.000454371284926e+00 3.048669700552140e+00 4.721053300538970e+00 9.218466002419173e+03 + 71820 9.578328188394227e-01 -6.073291908825091e+00 -6.005364507636676e+00 3.286102627160187e+00 4.676152276515430e+00 9.233542137315902e+03 + 71840 9.270729084556937e-01 -6.038286802033809e+00 -5.984575005010816e+00 3.530174098905868e+00 4.838595549285622e+00 9.169774523495307e+03 + 71860 8.938653310582083e-01 -5.995159379664235e+00 -6.019055955107147e+00 3.718523844482976e+00 4.581306010306676e+00 9.275655539246645e+03 + 71880 8.885410792384233e-01 -5.987873088774513e+00 -6.022412297676153e+00 3.736625872255009e+00 4.538296389816487e+00 9.285964427022614e+03 + 71900 9.563839895870021e-01 -6.079389394263660e+00 -6.011537465583292e+00 3.310235737837579e+00 4.699852012372279e+00 9.252484777712945e+03 + 71920 9.630348703513819e-01 -6.069517923419712e+00 -6.020844649068945e+00 3.273111089010839e+00 4.552600562497805e+00 9.281178426019344e+03 + 71940 9.739172391723437e-01 -6.056290238992450e+00 -6.003402839964583e+00 3.391715287284835e+00 4.695402916801395e+00 9.227517787445719e+03 + 71960 1.014113125183813e+00 -6.074593328143569e+00 -6.017723051222243e+00 3.292142529767240e+00 4.618700460496411e+00 9.271540432418946e+03 + 71980 9.699793435163528e-01 -5.962405309120965e+00 -6.001887957330549e+00 3.909722251238596e+00 4.683006775299100e+00 9.222843508214788e+03 + 72000 9.965478382267619e-01 -5.955830184798292e+00 -5.987265053858229e+00 3.921532276477161e+00 4.741028393804736e+00 9.177998887989144e+03 + 72020 1.078830008245408e+00 -6.037300092625221e+00 -5.983593211518478e+00 3.534839929774795e+00 4.843233152202703e+00 9.166767228477911e+03 + 72040 1.024939424166102e+00 -5.930672601878696e+00 -5.996544735008255e+00 4.075965573065004e+00 4.697717590955416e+00 9.206422189260182e+03 + 72060 1.102019506506799e+00 -6.030123380995437e+00 -5.956862211376690e+00 3.550052817922530e+00 4.970729791002737e+00 9.085078264463828e+03 + 72080 1.118149395075737e+00 -6.045421837898967e+00 -5.983311416211918e+00 3.412658874124937e+00 4.769306527008667e+00 9.165836409897805e+03 + 72100 1.002070216051627e+00 -5.871989531821907e+00 -6.008740031353540e+00 4.375232544573538e+00 4.589990014191490e+00 9.243889402190953e+03 + 72120 1.105415426892710e+00 -6.028277198756220e+00 -5.993854563758683e+00 3.531847971546880e+00 4.729508068588291e+00 9.198180755602387e+03 + 72140 1.009588243500069e+00 -5.894971833292948e+00 -6.041816542486082e+00 4.275535187323851e+00 4.432330142991575e+00 9.345858563363059e+03 + 72160 1.071683397213957e+00 -6.000744960720912e+00 -5.981885776964592e+00 3.674754665468287e+00 4.783047017046325e+00 9.161540611702623e+03 + 72180 9.946490512149536e-01 -5.902927079986131e+00 -6.090570727767410e+00 4.168632618087143e+00 4.091153754766386e+00 9.497191335466954e+03 + 72200 1.035507107271916e+00 -5.986990137599246e+00 -6.071748818749489e+00 3.756459179495844e+00 4.269761715967634e+00 9.438634855822280e+03 + 72220 9.895302681295302e-01 -5.946568895527877e+00 -6.071431176268351e+00 3.933916525493481e+00 4.216937987106183e+00 9.437658667263580e+03 + 72240 1.006784842984461e+00 -6.002232964994853e+00 -6.043165678976586e+00 3.646251387976828e+00 4.411209409976699e+00 9.350045822141316e+03 + 72260 9.800317915637684e-01 -5.990997667820258e+00 -5.993367971854662e+00 3.747706670204098e+00 4.734096017635187e+00 9.196711542883490e+03 + 72280 9.541611269377547e-01 -5.974495549746352e+00 -6.007631576537778e+00 3.827984914091407e+00 4.637712720471461e+00 9.240485748317889e+03 + 72300 9.703441132470307e-01 -6.014343188160325e+00 -6.007154961405859e+00 3.606793443586267e+00 4.648069353984906e+00 9.239037110084399e+03 + 72320 9.745826216168099e-01 -6.033042940840031e+00 -5.995390535825360e+00 3.553661731551272e+00 4.769867667836362e+00 9.202907563139648e+03 + 72340 9.893766172010181e-01 -6.062682746386683e+00 -5.971765898482897e+00 3.329315320608014e+00 4.851373930608297e+00 9.130588548477490e+03 + 72360 9.878885767452101e-01 -6.063625814109034e+00 -5.973130717294594e+00 3.338390998424539e+00 4.858027848404026e+00 9.134745742633941e+03 + 72380 1.003590090487693e+00 -6.084627335388021e+00 -5.973996400962502e+00 3.218669066042920e+00 4.853929011596021e+00 9.137400143012603e+03 + 72400 9.195761994545517e-01 -5.953605992015820e+00 -6.032573934334579e+00 3.953282218703383e+00 4.499836073659494e+00 9.317319563778892e+03 + 72420 1.007041620130130e+00 -6.077595323448280e+00 -5.986208045547843e+00 3.274393168785463e+00 4.799153060625322e+00 9.174770250881435e+03 + 72440 9.677492330028552e-01 -6.012882846342269e+00 -5.996740833921867e+00 3.629383792598831e+00 4.722073725885132e+00 9.207031490438956e+03 + 72460 9.297533990240068e-01 -5.947561024179301e+00 -6.052522664197780e+00 3.974802111536600e+00 4.372096131789196e+00 9.378981314326251e+03 + 72480 1.063229623977600e+00 -6.137372029978506e+00 -6.005256953442391e+00 2.902032248855926e+00 4.660657463068318e+00 9.233205226432330e+03 + 72500 9.821717840758694e-01 -6.010700947077045e+00 -5.996165548888605e+00 3.683418418385881e+00 4.766882924129504e+00 9.205279165884531e+03 + 72520 9.960538776416079e-01 -6.024524719042795e+00 -5.981954926054741e+00 3.567371546294845e+00 4.811813885286423e+00 9.161718748452320e+03 + 72540 9.633678176032293e-01 -5.966936630652946e+00 -5.993010304996823e+00 3.843526335369314e+00 4.693807262398707e+00 9.195589549789927e+03 + 72560 9.436046650141162e-01 -5.929456081398350e+00 -6.022480457203101e+00 4.061817871340354e+00 4.527657509993846e+00 9.286179719219996e+03 + 72580 9.869399320821113e-01 -5.984915766452129e+00 -5.996407449061546e+00 3.743978240213786e+00 4.677991220338381e+00 9.206039087703763e+03 + 72600 9.894433802598150e-01 -5.981765974398888e+00 -5.959143559923051e+00 3.825207478848676e+00 4.955108883576259e+00 9.092020922724414e+03 + 72620 1.012369969648965e+00 -6.007789460735888e+00 -5.968406337016056e+00 3.659451806762527e+00 4.885595797680506e+00 9.120327299602290e+03 + 72640 1.044833696804149e+00 -6.047548816885360e+00 -6.011591570363553e+00 3.401532642358674e+00 4.608004716252809e+00 9.252668929408239e+03 + 72660 1.042878119919221e+00 -6.041315105648441e+00 -5.967067552800815e+00 3.492665916880504e+00 4.919006855103245e+00 9.116232694050203e+03 + 72680 1.008609856064491e+00 -5.987829635750078e+00 -5.967645505756782e+00 3.792659165324096e+00 4.908559563229623e+00 9.117980949141656e+03 + 72700 9.837594588270533e-01 -5.949459601908766e+00 -5.998439563256382e+00 3.964513392359255e+00 4.683262874676719e+00 9.212240496179531e+03 + 72720 1.017579545891803e+00 -5.996451497709772e+00 -5.975441180260935e+00 3.695138026292372e+00 4.815782520419708e+00 9.141822906846657e+03 + 72740 1.035840642719175e+00 -6.020132138761793e+00 -6.005159753250268e+00 3.530463830540507e+00 4.616437585116852e+00 9.232895592936085e+03 + 72760 1.008928834107873e+00 -5.980747121490047e+00 -6.047023041371335e+00 3.788062050982600e+00 4.407495462858786e+00 9.361943374652943e+03 + 72780 1.059828341742672e+00 -6.060382805099971e+00 -6.013695712495570e+00 3.334679677148328e+00 4.602764187687033e+00 9.259105652548031e+03 + 72800 9.850789975835570e-01 -5.954030867994521e+00 -6.004543221841659e+00 3.935518103732135e+00 4.645468351180375e+00 9.231003177710052e+03 + 72820 9.630241799581404e-01 -5.927236528573200e+00 -6.003756287345747e+00 4.074351982060411e+00 4.634963685794044e+00 9.228568747751471e+03 + 72840 9.581509196072250e-01 -5.926424763739678e+00 -6.047814422295869e+00 4.073210582322220e+00 4.376172377903617e+00 9.364393046675106e+03 + 72860 9.538324350628707e-01 -5.927467671614225e+00 -6.033619713073127e+00 4.085138023159058e+00 4.475596574126718e+00 9.320508817989046e+03 + 72880 9.772919038816135e-01 -5.972255849766232e+00 -5.989933659745402e+00 3.804085942703376e+00 4.702577222170730e+00 9.186126927392355e+03 + 72900 9.385267236917162e-01 -5.928091576125930e+00 -5.977136678490178e+00 4.095129188857376e+00 4.813504621376804e+00 9.146987296195839e+03 + 72920 1.021914793879981e+00 -6.072481960013378e+00 -5.987770565577112e+00 3.298779120805454e+00 4.785205056704415e+00 9.179548916763926e+03 + 72940 9.956241273626569e-01 -6.069942850214470e+00 -5.972962058692605e+00 3.381462542508841e+00 4.938341255156369e+00 9.134227172931334e+03 + 72960 9.427537345327136e-01 -6.035433873158660e+00 -5.951503630991672e+00 3.479841322705057e+00 4.961781761390906e+00 9.068788063262227e+03 + 72980 9.584143174194453e-01 -6.096835711690988e+00 -5.962184387590973e+00 3.202888540254170e+00 4.976077280461521e+00 9.101322917840846e+03 + 73000 8.897433346864606e-01 -6.024582010244712e+00 -6.017266691069381e+00 3.511186317004973e+00 4.553192011751712e+00 9.270148894877773e+03 + 73020 9.420612941723159e-01 -6.122161043361315e+00 -5.988142730234958e+00 3.046100560714555e+00 4.815654453953028e+00 9.180710849400839e+03 + 73040 8.594203884316532e-01 -6.012021370172440e+00 -6.009392384352215e+00 3.653872842319607e+00 4.668968885733579e+00 9.245902218776162e+03 + 73060 9.153951703108179e-01 -6.098295642571225e+00 -5.966823386775557e+00 3.170637024517309e+00 4.925571062561866e+00 9.115492559813993e+03 + 73080 9.349185694147871e-01 -6.120332458214604e+00 -6.001838774433670e+00 3.009713019007640e+00 4.690122088116064e+00 9.222725441704393e+03 + 73100 8.902830525473573e-01 -6.038485246691873e+00 -6.055086490664407e+00 3.461832692944674e+00 4.366505781020178e+00 9.386933520293398e+03 + 73120 9.541177678962579e-01 -6.111302430691705e+00 -5.979619975024582e+00 3.073326582084753e+00 4.829467620319527e+00 9.154612407239043e+03 + 73140 9.446079358073918e-01 -6.066305813332002e+00 -6.000901303808815e+00 3.351472652066009e+00 4.727035467063291e+00 9.219808191803604e+03 + 73160 9.523283277816054e-01 -6.042124963276870e+00 -6.002409310929325e+00 3.424798832755642e+00 4.652852254512582e+00 9.224451131833444e+03 + 73180 9.860677071782967e-01 -6.052937141030777e+00 -6.011844524543125e+00 3.406591736981609e+00 4.642551899915558e+00 9.253454857453789e+03 + 73200 9.696758730040042e-01 -5.994139723843039e+00 -6.025167885409884e+00 3.696605648769986e+00 4.518437143460674e+00 9.294474643759902e+03 + 73220 9.685698567268297e-01 -5.964575540333408e+00 -5.978939121916369e+00 3.886407841529038e+00 4.803929933322610e+00 9.152493213761703e+03 + 73240 1.019949351075725e+00 -6.015005137941038e+00 -5.981924377408824e+00 3.629690850558613e+00 4.819645696765731e+00 9.161627700778021e+03 + 73260 9.802523650212820e-01 -5.933636352721432e+00 -5.996465272586661e+00 4.061399387477482e+00 4.700626006867407e+00 9.206215603778859e+03 + 73280 1.076139918541565e+00 -6.059214805804439e+00 -5.973754177933229e+00 3.418326278007336e+00 4.909054428233251e+00 9.136651810245194e+03 + 73300 9.951623101387671e-01 -5.926586783501308e+00 -6.023392146861017e+00 4.054972388352441e+00 4.499101011359426e+00 9.289000950348618e+03 + 73320 1.055424429054787e+00 -6.008430208280769e+00 -5.978004059442274e+00 3.621902741777660e+00 4.796614396839617e+00 9.149647265445203e+03 + 73340 1.023412207219636e+00 -5.956181948449548e+00 -6.003579218605379e+00 3.938087102240011e+00 4.665924642301377e+00 9.228042560828810e+03 + 73360 1.003807728222969e+00 -5.924937004075042e+00 -6.015707898954442e+00 4.091170215272779e+00 4.569949690124677e+00 9.265330261004359e+03 + 73380 9.559026332572658e-01 -5.855027826825950e+00 -6.055654366462881e+00 4.458932121982870e+00 4.306903484530941e+00 9.388669100465399e+03 + 73400 1.037852592749056e+00 -5.981079648619350e+00 -6.019974027281796e+00 3.847248531387730e+00 4.623910990222319e+00 9.278458618208364e+03 + 73420 1.072692042707207e+00 -6.044203960592385e+00 -5.988698961330708e+00 3.468813445786739e+00 4.787531740918162e+00 9.182385700210083e+03 + 73440 9.999946427266874e-01 -5.949725561931774e+00 -6.010709462947363e+00 3.972585780990825e+00 4.622406784131132e+00 9.249974056372803e+03 + 73460 9.886386741721456e-01 -5.951484561933450e+00 -6.023008183882084e+00 3.996156357327556e+00 4.585456651853772e+00 9.287819923013794e+03 + 73480 9.909420370217351e-01 -5.981962918496282e+00 -6.003082398752563e+00 3.804987889341656e+00 4.683716565481086e+00 9.226526522068676e+03 + 73500 9.735022201765233e-01 -5.987359680096206e+00 -5.998398472885821e+00 3.754767131161684e+00 4.691380674716045e+00 9.212140434787490e+03 + 73520 1.024103750097410e+00 -6.098275858583709e+00 -5.982401838108406e+00 3.174730058843979e+00 4.840096615859887e+00 9.163125262598514e+03 + 73540 9.490113754906571e-01 -6.025421573095553e+00 -6.008590778178114e+00 3.549747662637606e+00 4.646392691610639e+00 9.243450055791789e+03 + 73560 9.691281323624915e-01 -6.092049403394366e+00 -6.008933304298841e+00 3.176295959447998e+00 4.653561462629268e+00 9.244515878588805e+03 + 73580 8.869036170327755e-01 -6.000736475722387e+00 -6.018539277353098e+00 3.655714114911441e+00 4.553487672973247e+00 9.274070909065875e+03 + 73600 8.587375873138998e-01 -5.980523213660408e+00 -6.048936868582329e+00 3.777920883587395e+00 4.385079090046842e+00 9.367880511000523e+03 + 73620 8.887515577539745e-01 -6.036262402152713e+00 -6.025585650016043e+00 3.474824805092692e+00 4.536132368083503e+00 9.295783918509487e+03 + 73640 9.566899483279282e-01 -6.139458744436604e+00 -5.980252060230255e+00 2.980864258747454e+00 4.895053676615069e+00 9.156548221226662e+03 + 73660 9.059638205367911e-01 -6.060451563490118e+00 -5.987297905192203e+00 3.341698514287480e+00 4.761758140726145e+00 9.178105566097443e+03 + 73680 9.885040644887858e-01 -6.170493717751187e+00 -5.947091466689836e+00 2.819292181875123e+00 5.102102478856027e+00 9.055374459334902e+03 + 73700 8.840688143161977e-01 -5.997909589055889e+00 -6.017597169699814e+00 3.711955057981150e+00 4.598905923280478e+00 9.271167702400740e+03 + 73720 9.365566228236535e-01 -6.056835763544740e+00 -5.993285098337915e+00 3.404465325526309e+00 4.769383079577556e+00 9.196441354819448e+03 + 73740 9.751530238993469e-01 -6.092074963164404e+00 -5.967047927530567e+00 3.289551343810193e+00 5.007475930290920e+00 9.116170926077595e+03 + 73760 9.975831492148352e-01 -6.105257473770175e+00 -6.006174425853515e+00 3.116666309592710e+00 4.685616503782285e+00 9.236034698245219e+03 + 73780 9.491981272752904e-01 -6.019022887507274e+00 -6.006799806614746e+00 3.587465015970548e+00 4.657651837971096e+00 9.237945318475575e+03 + 73800 9.216555509806402e-01 -5.965813920687352e+00 -6.003387736334689e+00 3.887301085769727e+00 4.671546421793536e+00 9.227435384514798e+03 + 73820 9.406659277907080e-01 -5.982136118589128e+00 -5.996893245455352e+00 3.769564501857281e+00 4.684826795733422e+00 9.207538606891629e+03 + 73840 9.891430459387738e-01 -6.039551973014363e+00 -5.996521143106872e+00 3.462672563550377e+00 4.709762247878601e+00 9.206382389439392e+03 + 73860 9.641956462911899e-01 -5.988434455456525e+00 -6.022913449543973e+00 3.744670657850876e+00 4.546686938193655e+00 9.287525970883193e+03 + 73880 1.040436998836157e+00 -6.089197740751824e+00 -5.976583468637202e+00 3.209747510178056e+00 4.856396087662505e+00 9.145325511218460e+03 + 73900 9.902134433520842e-01 -6.001736018431164e+00 -5.988534457843059e+00 3.704927291764693e+00 4.780732695596491e+00 9.181887026660757e+03 + 73920 9.750133245832493e-01 -5.967663066883413e+00 -5.984000698922340e+00 3.876406902899693e+00 4.782593691491786e+00 9.168004380084978e+03 + 73940 9.676659038298104e-01 -5.943527519341075e+00 -6.009167331150826e+00 4.003113238752114e+00 4.626199281612475e+00 9.245192341642587e+03 + 73960 1.022926795406777e+00 -6.010827826801174e+00 -5.963057261811311e+00 3.622604812793118e+00 4.896910789435950e+00 9.103971088960068e+03 + 73980 9.936230909444714e-01 -5.950745586237474e+00 -5.970523657728851e+00 4.012275095885297e+00 4.898706348735141e+00 9.126760256883810e+03 + 74000 9.677971904937270e-01 -5.894639047040153e+00 -6.007142541591760e+00 4.309578534251855e+00 4.663566058677013e+00 9.238960846668213e+03 + 74020 1.038021345896250e+00 -5.980809707069948e+00 -6.017287406949886e+00 3.775172775859496e+00 4.565712178243079e+00 9.270201201010348e+03 + 74040 1.049623301639240e+00 -5.984762706398663e+00 -5.981745335087776e+00 3.764489474779817e+00 4.781815687783631e+00 9.161089525729400e+03 + 74060 1.002188666697246e+00 -5.903731468758542e+00 -6.022085452384821e+00 4.179474039450710e+00 4.499867150248843e+00 9.284940314765439e+03 + 74080 1.053302478472394e+00 -5.970006720760422e+00 -5.980070735402563e+00 3.901223859450767e+00 4.843434729974358e+00 9.155948172651344e+03 + 74100 9.993446325774886e-01 -5.881536762101338e+00 -6.051637262444094e+00 4.320948035587771e+00 4.344204639652308e+00 9.376222675169513e+03 + 74120 1.057371373534696e+00 -5.964382717968213e+00 -5.992082708326333e+00 3.875401649070734e+00 4.716344017874761e+00 9.192744929416014e+03 + 74140 1.059100064726554e+00 -5.970089011035608e+00 -5.991851099144516e+00 3.905355264036811e+00 4.780393986443207e+00 9.192004089486787e+03 + 74160 1.012734066428334e+00 -5.909967931623578e+00 -6.000440588299190e+00 4.144806234804341e+00 4.625298239574605e+00 9.218380888102363e+03 + 74180 1.008633872007563e+00 -5.920232898388734e+00 -5.955999617057108e+00 4.206675812570014e+00 5.001297779094386e+00 9.082443468750953e+03 + 74200 9.591600109347872e-01 -5.868373407856528e+00 -6.032826827320543e+00 4.416313621040069e+00 4.471996637393285e+00 9.318083929682352e+03 + 74220 1.095452984239014e+00 -6.103580511714972e+00 -5.996643799287971e+00 3.089170627233890e+00 4.703217778392498e+00 9.206765921389173e+03 + 74240 9.886066303671122e-01 -5.988512526126677e+00 -5.994509048595935e+00 3.766928270991767e+00 4.732495311014439e+00 9.200180359988837e+03 + 74260 9.411223199422218e-01 -5.960400452457267e+00 -5.970375259741683e+00 3.882880109001749e+00 4.825603221978195e+00 9.126319633202982e+03 + 74280 9.529909602980556e-01 -6.011606380794977e+00 -5.958498274012977e+00 3.644466846916080e+00 4.949421814511286e+00 9.090089143758922e+03 + 74300 9.235976668988890e-01 -5.989878319568323e+00 -5.991331221478392e+00 3.763403608490166e+00 4.755060820886709e+00 9.190441240661332e+03 + 74320 9.502289029324132e-01 -6.044833725493511e+00 -5.985216240738840e+00 3.471777046062495e+00 4.814109869299768e+00 9.171738115742695e+03 + 74340 9.652570913703946e-01 -6.076206760035795e+00 -6.011626902902939e+00 3.274773042297301e+00 4.645600575654756e+00 9.252804115994682e+03 + 74360 9.831976872799403e-01 -6.108786456278864e+00 -5.965360665919958e+00 3.131444597894031e+00 4.955017681204195e+00 9.111006700122731e+03 + 74380 9.468762251630668e-01 -6.055160460683966e+00 -5.981432884859819e+00 3.411454123922700e+00 4.834809273610433e+00 9.160119526759952e+03 + 74400 9.711692127968108e-01 -6.084723659965508e+00 -5.974109568396302e+00 3.268680654709732e+00 4.903843885975464e+00 9.137738108864660e+03 + 74420 9.571691205037024e-01 -6.051103259394720e+00 -5.997803782302231e+00 3.392340136575918e+00 4.698393982108413e+00 9.210316074517208e+03 + 74440 9.431146066364593e-01 -6.011444772907545e+00 -6.000585752889872e+00 3.619722061850069e+00 4.682076235219466e+00 9.218831306517093e+03 + 74460 9.894509465667535e-01 -6.053388857474249e+00 -5.980634912109710e+00 3.438883501037140e+00 4.856647913956983e+00 9.157684392197632e+03 + 74480 9.466338595274219e-01 -5.958288926465344e+00 -5.970911898820786e+00 3.957492679641246e+00 4.885009618977638e+00 9.127988633256457e+03 + 74500 1.072644057698383e+00 -6.111003206831461e+00 -5.934422816210002e+00 3.115830994191301e+00 5.129782922866848e+00 9.016853729222163e+03 + 74520 9.600788146021789e-01 -5.907807867108827e+00 -5.967626846587486e+00 4.204741608582630e+00 4.861251771459010e+00 9.117905091596664e+03 + 74540 1.002354400594536e+00 -5.935926997373625e+00 -5.955875563865781e+00 4.000893959997279e+00 4.886346204168629e+00 9.082068068329376e+03 + 74560 1.031669038183964e+00 -5.950385553548172e+00 -5.990021288327481e+00 3.941737550592642e+00 4.714143027879710e+00 9.186440899080435e+03 + 74580 1.119767064394269e+00 -6.062424206716082e+00 -6.006498337256842e+00 3.350412455689892e+00 4.671547452625178e+00 9.237022633588091e+03 + 74600 1.027980859129202e+00 -5.921036440618494e+00 -6.059313969190134e+00 4.088703246316681e+00 4.294692278879936e+00 9.400028553773775e+03 + 74620 9.971038222135958e-01 -5.875922197200731e+00 -5.998062168033779e+00 4.383276683798255e+00 4.681930070175494e+00 9.211064967646806e+03 + 74640 1.013258001856223e+00 -5.902500533533529e+00 -6.016190543704621e+00 4.177963530508841e+00 4.525137898634221e+00 9.266791164605867e+03 + 74660 1.059193675430028e+00 -5.976240775410083e+00 -6.035402595073657e+00 3.725388198118878e+00 4.385671874348631e+00 9.326032035460832e+03 + 74680 1.028157248942786e+00 -5.941259312767286e+00 -6.005303709807145e+00 3.994003166115061e+00 4.626250327473783e+00 9.233298723132541e+03 + 74700 1.014413372245092e+00 -5.934158874136894e+00 -6.013106878784708e+00 3.971760586441834e+00 4.518428926589850e+00 9.257330827541056e+03 + 74720 1.001833892551771e+00 -5.928896048569301e+00 -6.061116476130052e+00 4.042941513524431e+00 4.283711357425559e+00 9.405594345123131e+03 + 74740 1.061532192839292e+00 -6.034599053163236e+00 -6.000426365711791e+00 3.544977641761573e+00 4.741202501314065e+00 9.218346310761026e+03 + 74760 9.902227363604282e-01 -5.945828299383903e+00 -5.996289226839925e+00 4.028104925798226e+00 4.738350471542462e+00 9.205632245778941e+03 + 74780 9.861669758834188e-01 -5.956543563755902e+00 -5.985005868812186e+00 3.965476236022762e+00 4.802041275862109e+00 9.171079723979035e+03 + 74800 1.048940095783802e+00 -6.065132321655853e+00 -6.010596632637689e+00 3.367041636440358e+00 4.680194002153256e+00 9.249612316436929e+03 + 74820 1.015834966429493e+00 -6.034067298275076e+00 -6.015563651510153e+00 3.447482379290489e+00 4.553733182444764e+00 9.264919554420389e+03 + 74840 1.005087561666618e+00 -6.035735410062025e+00 -6.018618063564039e+00 3.460597649048988e+00 4.558888101541232e+00 9.274279876957518e+03 + 74860 9.962693175405798e-01 -6.037874776910914e+00 -6.006042770159165e+00 3.517454826834097e+00 4.700239135589765e+00 9.235615055760793e+03 + 74880 9.838210984550469e-01 -6.035391567341517e+00 -6.024031198393784e+00 3.491072320046960e+00 4.556305316556253e+00 9.290978717553890e+03 + 74900 9.898835861940940e-01 -6.057328591809266e+00 -5.975912018857560e+00 3.497926911986112e+00 4.965433473048749e+00 9.143251803428291e+03 + 74920 1.004909477001958e+00 -6.090743513431176e+00 -5.990829394774128e+00 3.273634725577022e+00 4.847357056565681e+00 9.188942810119861e+03 + 74940 9.013714894836677e-01 -5.947063166425846e+00 -6.067129678785827e+00 3.919276247697617e+00 4.229835753493866e+00 9.424284924996366e+03 + 74960 9.906082050584657e-01 -6.086509472189142e+00 -5.982767825923970e+00 3.230484647502322e+00 4.826185234324818e+00 9.164245384517386e+03 + 74980 9.731575350486679e-01 -6.065009099184050e+00 -5.989783895955930e+00 3.313236137130429e+00 4.745190895128873e+00 9.185734125492649e+03 + 75000 9.031767636327735e-01 -5.964194071152052e+00 -6.034594344179341e+00 3.847100290925394e+00 4.442851028795658e+00 9.323569205250889e+03 + 75020 9.891656218570476e-01 -6.091341204240019e+00 -6.013609404111023e+00 3.263613987255953e+00 4.709962012553845e+00 9.258872094576778e+03 + 75040 9.561902958900501e-01 -6.037082946438109e+00 -6.003341784424343e+00 3.459469436498536e+00 4.653216410209525e+00 9.227293357467415e+03 + 75060 9.581524310898951e-01 -6.025986576067939e+00 -5.989262989277131e+00 3.582128423811049e+00 4.793000942120560e+00 9.184122051767541e+03 + 75080 9.387389412284702e-01 -5.970807685842014e+00 -6.049767478002581e+00 3.806458001259527e+00 4.353058655685205e+00 9.370478257929057e+03 + 75100 1.044418386700193e+00 -6.097579746599338e+00 -6.004396905190619e+00 3.138306937845605e+00 4.673377233212571e+00 9.230566845158684e+03 + 75120 1.018087072607931e+00 -6.027268641292266e+00 -5.983662875710836e+00 3.540156788160131e+00 4.790547842099112e+00 9.166961386994813e+03 + 75140 9.909883097485785e-01 -5.954810891121200e+00 -5.995294338021647e+00 3.977313591988026e+00 4.744851375092496e+00 9.202589508768591e+03 + 75160 1.045909543562959e+00 -6.004171330811315e+00 -6.008944506402410e+00 3.658947651965899e+00 4.631539339075294e+00 9.244518642556346e+03 + 75180 1.054989044812415e+00 -5.991284879842066e+00 -5.987879125589654e+00 3.750026629047960e+00 4.769582997004078e+00 9.179871770258265e+03 + 75200 1.067002661576107e+00 -5.986307099405733e+00 -6.011345862520630e+00 3.769605685167063e+00 4.625829232625257e+00 9.251906644338298e+03 + 75220 1.105922795263517e+00 -6.028050886859274e+00 -6.017253752654459e+00 3.523489917872748e+00 4.585488733327917e+00 9.270110509705943e+03 + 75240 1.066246616021045e+00 -5.962059308394772e+00 -6.022797370135529e+00 3.818319742034890e+00 4.469552392334786e+00 9.287174457689011e+03 + 75260 1.067160928989269e+00 -5.960776474914677e+00 -5.997389461603242e+00 3.996222794054231e+00 4.785985358647114e+00 9.209036466065896e+03 + 75280 1.044739411074072e+00 -5.933220932086551e+00 -6.004514426293211e+00 4.084634762806452e+00 4.675256486439234e+00 9.230875370225827e+03 + 75300 1.010352341456237e+00 -5.894483044046141e+00 -6.006525821265237e+00 4.272884885446588e+00 4.629517920090801e+00 9.237089432280158e+03 + 75320 1.057688127006629e+00 -5.981959759748929e+00 -5.985651972876907e+00 3.824511211462229e+00 4.803309952313250e+00 9.173043169743796e+03 + 75340 1.083425482846253e+00 -6.043483076819438e+00 -6.006912996151572e+00 3.433519005409829e+00 4.643510067806410e+00 9.238295037052616e+03 + 75360 9.995795688748972e-01 -5.950110364480969e+00 -6.079360059960619e+00 3.905626636812446e+00 4.163454884042567e+00 9.462256827859637e+03 + 75380 9.801132111970365e-01 -5.957699646594110e+00 -6.019643513734653e+00 3.918240176567147e+00 4.562548905663687e+00 9.277434126401597e+03 + 75400 9.492582882703273e-01 -5.947366728712081e+00 -5.994264775209764e+00 3.959913947333450e+00 4.690618106894517e+00 9.199404777115471e+03 + 75420 9.892236933165036e-01 -6.036082187835361e+00 -5.975129311222140e+00 3.506518680043181e+00 4.856519529983462e+00 9.140827764862217e+03 + 75440 9.981365269938101e-01 -6.071597767123696e+00 -5.967698078811980e+00 3.324924850573961e+00 4.921532939284633e+00 9.118135088139110e+03 + 75460 9.866187069707827e-01 -6.070671803030987e+00 -5.953334102278861e+00 3.319037862306783e+00 4.992809097975996e+00 9.074333977195169e+03 + 75480 9.334906943703306e-01 -5.999884647112624e+00 -5.977785797213302e+00 3.671864168506138e+00 4.798759184414012e+00 9.148976605514208e+03 + 75500 1.023552451891128e+00 -6.136493766140057e+00 -5.930544394049958e+00 2.989713577526071e+00 5.172306742629749e+00 9.005066546657363e+03 + 75520 1.039443698483504e+00 -6.159465345475929e+00 -5.951838761235138e+00 2.825702610259700e+00 5.017926587080393e+00 9.069789785376292e+03 + 75540 8.903103785785813e-01 -5.933463243448830e+00 -5.984812899822739e+00 4.117314744942707e+00 4.822457071710081e+00 9.170441904241015e+03 + 75560 9.784698811300135e-01 -6.054469740441311e+00 -5.978496184325833e+00 3.402317915518569e+00 4.838569831603455e+00 9.151138456328537e+03 + 75580 9.733704414436345e-01 -6.033475562350262e+00 -6.005629566254975e+00 3.509287982797400e+00 4.669184001530511e+00 9.234321088914077e+03 + 75600 9.574098149151347e-01 -5.995844739760355e+00 -5.966459203382239e+00 3.698554207571252e+00 4.867290504851455e+00 9.114356866955495e+03 + 75620 9.334794682956703e-01 -5.944318230217112e+00 -5.967220120411055e+00 3.997128777686285e+00 4.865622580136614e+00 9.116679492964717e+03 + 75640 1.017813216774222e+00 -6.050475456241590e+00 -5.988513375223678e+00 3.411555454694427e+00 4.767351312500325e+00 9.181792010965863e+03 + 75660 1.018247067036535e+00 -6.033456197337858e+00 -6.007367624479294e+00 3.499831735510538e+00 4.649636358058020e+00 9.239687057587367e+03 + 75680 9.841612210055232e-01 -5.969275112742001e+00 -5.977324694765610e+00 3.838262099970233e+00 4.792040154321882e+00 9.147584227092411e+03 + 75700 1.023086156526466e+00 -6.016973927045079e+00 -6.002793952378700e+00 3.571559721494112e+00 4.652983330372449e+00 9.225626114234668e+03 + 75720 1.044223430331100e+00 -6.041212489930854e+00 -6.007142877061423e+00 3.474701268222751e+00 4.670334257574575e+00 9.238983486353010e+03 + 75740 9.802168433681153e-01 -5.943511748215252e+00 -6.022010906204428e+00 3.946425407635748e+00 4.495671094756464e+00 9.284735706470581e+03 + 75760 1.038954613890368e+00 -6.029881328656793e+00 -5.952945884107309e+00 3.540871849266513e+00 4.982647077591219e+00 9.073172151790774e+03 + 75780 9.993848586369747e-01 -5.970201108789675e+00 -6.023846731486981e+00 3.831640501698355e+00 4.523599034537143e+00 9.290374204570977e+03 + 75800 1.029290720166318e+00 -6.014602965115286e+00 -5.995357952957322e+00 3.606274871449123e+00 4.716782709416160e+00 9.202799288889351e+03 + 75820 9.917700322078955e-01 -5.959765865789294e+00 -6.026380689064617e+00 3.890163113003064e+00 4.507650489145570e+00 9.298211084524097e+03 + 75840 1.042892857361761e+00 -6.038284676672754e+00 -5.991404087365744e+00 3.522401576659979e+00 4.791597175208578e+00 9.190700934275812e+03 + 75860 1.026569282707879e+00 -6.018164703331084e+00 -6.013845163119138e+00 3.625743335696706e+00 4.650546804040385e+00 9.259590123767643e+03 + 75880 1.019310343460502e+00 -6.012670587135110e+00 -6.001861194840267e+00 3.673453076236659e+00 4.735522279541696e+00 9.222747903413472e+03 + 75900 9.996539443294665e-01 -5.991643372108337e+00 -5.966618700324237e+00 3.693974437407740e+00 4.837669975347482e+00 9.114835772791226e+03 + 75920 9.749006909556794e-01 -5.959933933584758e+00 -5.984274830928804e+00 3.885337413815258e+00 4.745568214524056e+00 9.168819951777805e+03 + 75940 1.032945191378279e+00 -6.048987263396410e+00 -6.000415941836204e+00 3.387731501983450e+00 4.666635546769871e+00 9.218341025775851e+03 + 75960 9.730442500072982e-01 -5.966501829892515e+00 -6.011242578217908e+00 3.829347408102279e+00 4.572439107609442e+00 9.251593896570248e+03 + 75980 9.563082526846279e-01 -5.946660088488365e+00 -5.995462278642439e+00 3.967992828326419e+00 4.687763100347206e+00 9.203122695522623e+03 + 76000 1.058997723492553e+00 -6.102536669633796e+00 -5.984321062105490e+00 3.157451226388706e+00 4.836263538622379e+00 9.168991509861893e+03 + 76020 9.805013462076424e-01 -5.993833789140003e+00 -5.998408899395569e+00 3.691087299817792e+00 4.664816308734304e+00 9.212182104184820e+03 + 76040 8.964928755427293e-01 -5.879642025898708e+00 -6.030264511635922e+00 4.272221797885052e+00 4.407324176027634e+00 9.310194074019859e+03 + 76060 1.006614301242289e+00 -6.051929230974168e+00 -5.991137774956438e+00 3.387713568774124e+00 4.736787516675347e+00 9.189878940377828e+03 + 76080 9.666553023282343e-01 -6.003549831001783e+00 -6.009936022633726e+00 3.679526993772567e+00 4.642856493161990e+00 9.247577640962007e+03 + 76100 9.614220741673107e-01 -6.008141877320506e+00 -5.978339355400136e+00 3.670887373936226e+00 4.842018066728354e+00 9.150675254777896e+03 + 76120 1.050500463316089e+00 -6.152801754801598e+00 -5.960273058215344e+00 2.883719295811404e+00 4.989248865329185e+00 9.095510106599324e+03 + 76140 9.346987238936402e-01 -5.996138869001317e+00 -6.001785448946238e+00 3.738170515829923e+00 4.705746979980766e+00 9.222525502074384e+03 + 76160 9.624118833728623e-01 -6.049282951305624e+00 -5.995734564101333e+00 3.458774950666093e+00 4.766258076579273e+00 9.203963132863235e+03 + 76180 9.431754148477602e-01 -6.030602554820272e+00 -6.020957590001691e+00 3.474640771180346e+00 4.530023651722122e+00 9.281502497573641e+03 + 76200 9.610186511686951e-01 -6.063543948994777e+00 -5.974839186615586e+00 3.368646722591369e+00 4.878003195190301e+00 9.139945889255712e+03 + 76220 9.086669644498075e-01 -5.987174244648362e+00 -5.981709122120128e+00 3.788426841995949e+00 4.819808421278049e+00 9.160989287064844e+03 + 76240 9.828826413289135e-01 -6.091437614645936e+00 -5.987485726540633e+00 3.230818062193644e+00 4.827725890196984e+00 9.178683911059974e+03 + 76260 9.713643711485727e-01 -6.062857408670565e+00 -6.012977713258335e+00 3.345658239932754e+00 4.632075169847695e+00 9.256939776110510e+03 + 76280 9.717497689601412e-01 -6.047388616174181e+00 -5.992313679297825e+00 3.456976691083747e+00 4.773225501446716e+00 9.193452782296879e+03 + 76300 9.732700430416599e-01 -6.025984166507838e+00 -5.965058366150467e+00 3.577698014021527e+00 4.927543387910685e+00 9.110106368520201e+03 + 76320 9.393263477521796e-01 -5.942602203717096e+00 -6.065160260035038e+00 4.008285687267376e+00 4.304538362091839e+00 9.418172735395015e+03 + 76340 1.025899129067717e+00 -6.037101081803071e+00 -5.990736718099890e+00 3.533370710060143e+00 4.799602061305902e+00 9.188637865100225e+03 + 76360 9.919463173302240e-01 -5.956023663040701e+00 -6.023207319579790e+00 3.951460898631297e+00 4.565681946146595e+00 9.288417673778627e+03 + 76380 1.074341972016869e+00 -6.048711788087820e+00 -6.004593177984445e+00 3.423100265281648e+00 4.676436151828078e+00 9.231158279894786e+03 + 76400 1.050799163978738e+00 -5.990433181623408e+00 -5.993920747600994e+00 3.780347102606379e+00 4.760320959063991e+00 9.198381864829003e+03 + 76420 9.792960951859160e-01 -5.866313953106109e+00 -6.041130800374077e+00 4.370715456274557e+00 4.366890066442200e+00 9.343735117088994e+03 + 76440 1.051384956401572e+00 -5.959778268615379e+00 -6.066305459797434e+00 3.881959272693226e+00 4.270263655896306e+00 9.421700878732379e+03 + 76460 1.036357685677671e+00 -5.931955912465336e+00 -6.025265234334005e+00 4.101667679746796e+00 4.565871114006007e+00 9.294747850975224e+03 + 76480 1.032009800217366e+00 -5.927388978314423e+00 -5.987017449215912e+00 4.101684063275973e+00 4.759288155883572e+00 9.177214174658451e+03 + 76500 1.027925035859570e+00 -5.926031675911401e+00 -6.018092463977688e+00 4.104122092603991e+00 4.575494801166463e+00 9.272655896554184e+03 + 76520 1.037580419386850e+00 -5.949032323179776e+00 -6.010198246998746e+00 4.024535934602671e+00 4.673311734638030e+00 9.248352565538145e+03 + 76540 1.035843889618901e+00 -5.960264906968655e+00 -6.053228202961442e+00 3.936829012181193e+00 4.403019380567052e+00 9.381166835479979e+03 + 76560 9.850519214102815e-01 -5.909536929257771e+00 -6.057584879157478e+00 4.199545301874537e+00 4.349431063204216e+00 9.394666394615720e+03 + 76580 9.998792076062604e-01 -5.963449729100997e+00 -6.020336461459119e+00 3.880447041390928e+00 4.553794620997207e+00 9.279553199305970e+03 + 76600 9.512210008359980e-01 -5.930078940772505e+00 -6.024702116058537e+00 4.100948196493619e+00 4.557607281112174e+00 9.293013388693058e+03 + 76620 9.226928427989315e-01 -5.930462054213585e+00 -6.035250457730156e+00 4.066645576362719e+00 4.464934347417533e+00 9.325534101334048e+03 + 76640 9.553986471574069e-01 -6.022872648314278e+00 -6.007687329245370e+00 3.553731684802222e+00 4.640928136816425e+00 9.240655830261981e+03 + 76660 9.383121041992821e-01 -6.033672842800294e+00 -5.998979769155121e+00 3.486821575638184e+00 4.686034573244561e+00 9.213910877011687e+03 + 76680 9.708105990326795e-01 -6.106143700013234e+00 -6.003165510453729e+00 3.095578960978561e+00 4.686895661252573e+00 9.226761497758769e+03 + 76700 8.912951718497409e-01 -6.001832657872717e+00 -5.983007315887091e+00 3.701910437137620e+00 4.810008464031336e+00 9.164961761229897e+03 + 76720 9.421990495286363e-01 -6.080301351109673e+00 -5.945697200326824e+00 3.341281492039762e+00 5.114199355759895e+00 9.051086277698612e+03 + 76740 9.432327326156946e-01 -6.077393098316669e+00 -5.982082890038811e+00 3.295132721809369e+00 4.842418686947893e+00 9.162123478709380e+03 + 76760 9.767937287972908e-01 -6.118548008785300e+00 -5.985724566341556e+00 3.061428558737151e+00 4.824121319610417e+00 9.173298336570455e+03 + 76780 9.561903923863774e-01 -6.077181607750971e+00 -6.003353010775188e+00 3.300242689887436e+00 4.724177918660837e+00 9.227345771209897e+03 + 76800 9.558471488326886e-01 -6.064119608469790e+00 -6.026584230859662e+00 3.368143719830464e+00 4.583677666648735e+00 9.298848875920663e+03 + 76820 9.877554494593810e-01 -6.096851290251675e+00 -6.001954716969349e+00 3.169299761614575e+00 4.714210570598948e+00 9.223071498655368e+03 + 76840 1.005662093760999e+00 -6.107363719388782e+00 -6.016023354510056e+00 3.129652788210538e+00 4.654143298219965e+00 9.266324546636293e+03 + 76860 9.629276590705684e-01 -6.028074305305965e+00 -6.010914277840445e+00 3.551764779963115e+00 4.650300313175793e+00 9.250593438980522e+03 + 76880 1.005640017437750e+00 -6.074059817665225e+00 -5.950349520443142e+00 3.360527956479642e+00 5.070891627235463e+00 9.065254930255074e+03 + 76900 9.558007498231788e-01 -5.978732247916508e+00 -6.029972410141292e+00 3.813202752771977e+00 4.518973811887786e+00 9.309281942000423e+03 + 76920 9.635833397830832e-01 -5.967959170085510e+00 -6.041678171327630e+00 3.820041388581217e+00 4.396735475470393e+00 9.345441925865203e+03 + 76940 9.421301427258595e-01 -5.912777915648110e+00 -6.053422211223491e+00 4.179861542793535e+00 4.372260232965303e+00 9.381751527154622e+03 + 76960 9.915752406071684e-01 -5.963930328138336e+00 -6.060114546532394e+00 3.872947542065824e+00 4.320642875587452e+00 9.402506821147526e+03 + 76980 1.046934619054613e+00 -6.030377398822007e+00 -5.997148154381055e+00 3.489395323496897e+00 4.680202787285801e+00 9.208317420400437e+03 + 77000 1.042335079469620e+00 -6.009978117040044e+00 -5.987932821460490e+00 3.600368097258323e+00 4.726955595974588e+00 9.180041326215613e+03 + 77020 1.024535178915475e+00 -5.971476807277279e+00 -5.980277684946483e+00 3.803232739899332e+00 4.752696738391347e+00 9.156605091412457e+03 + 77040 1.019598176556116e+00 -5.953315687064539e+00 -5.976077003144718e+00 4.009009834140306e+00 4.878310834905633e+00 9.143744415178186e+03 + 77060 1.041713831077807e+00 -5.976726548851118e+00 -5.996791784442926e+00 3.843018017423572e+00 4.727800329570239e+00 9.207181835851172e+03 + 77080 1.002934024327031e+00 -5.913750650813284e+00 -5.981341624834481e+00 4.163475944753184e+00 4.775358112254052e+00 9.159831459162140e+03 + 77100 9.982358074409257e-01 -5.902955991983289e+00 -6.016781512694070e+00 4.212760848272399e+00 4.559157093908688e+00 9.268602774832119e+03 + 77120 1.047665876949249e+00 -5.971728448697578e+00 -5.993512477430713e+00 3.821828849272328e+00 4.696741585219117e+00 9.197138565099101e+03 + 77140 1.036375780664809e+00 -5.954992368112570e+00 -6.004017623558129e+00 3.963488125319666e+00 4.681977521917512e+00 9.229384525264504e+03 + 77160 1.083417338499295e+00 -6.033351500097038e+00 -5.996351446041330e+00 3.510460346594006e+00 4.722920382721744e+00 9.205855566115824e+03 + 77180 9.497134417590708e-01 -5.854649528744345e+00 -6.026590805702252e+00 4.449485889100739e+00 4.462172468981819e+00 9.298847342883562e+03 + 77200 9.894655001962721e-01 -5.942531811988326e+00 -5.981341099856079e+00 3.997693021935425e+00 4.774844085280900e+00 9.159873237650569e+03 + 77220 1.010360947542924e+00 -6.012945004811342e+00 -6.006646322910180e+00 3.609005985009591e+00 4.645173991203935e+00 9.237467810396494e+03 + 77240 1.009200263605901e+00 -6.055225077700695e+00 -6.002119266627410e+00 3.393315630480870e+00 4.698257415761375e+00 9.223565661772283e+03 + 77260 9.836360584015219e-01 -6.060451391665072e+00 -5.998732676427379e+00 3.356611243517663e+00 4.711009657352810e+00 9.213168639885615e+03 + 77280 9.685437663568397e-01 -6.071742387060486e+00 -5.980134191056099e+00 3.311472811239249e+00 4.837501249018960e+00 9.156158120998918e+03 + 77300 9.452389807198504e-01 -6.061294159980749e+00 -5.968168502439280e+00 3.381130275701753e+00 4.915872212453797e+00 9.119599846795047e+03 + 77320 8.955472392653632e-01 -6.001762377437462e+00 -5.987818778440642e+00 3.732232254297299e+00 4.812298557502010e+00 9.179678733990897e+03 + 77340 9.683223768458368e-01 -6.115776029469878e+00 -5.966384884551712e+00 3.015040293711091e+00 4.872867366036164e+00 9.114162292673003e+03 + 77360 9.710326237342986e-01 -6.118669132700488e+00 -5.948709757641238e+00 3.058176408492790e+00 5.034109441211292e+00 9.060269773849717e+03 + 77380 8.650356003156162e-01 -5.952971528810299e+00 -6.008998753139428e+00 4.019882699531170e+00 4.698165707248370e+00 9.244682902453351e+03 + 77400 9.131556331120234e-01 -6.008409215535228e+00 -6.033416286288848e+00 3.630685856247787e+00 4.487091386148810e+00 9.319927730441170e+03 + 77420 9.763404064804806e-01 -6.078787770396910e+00 -6.016241409066623e+00 3.275117929098804e+00 4.634268814875448e+00 9.266995746758601e+03 + 77440 9.722340708376678e-01 -6.044122619354061e+00 -6.022693640634591e+00 3.451021339515321e+00 4.574069851446258e+00 9.286869486844340e+03 + 77460 1.017177365850317e+00 -6.082248924880900e+00 -5.981284691907249e+00 3.327329319937198e+00 4.907081569836457e+00 9.159703313212249e+03 + 77480 9.658975788279093e-01 -5.977402502441602e+00 -6.000395282625137e+00 3.795422905219624e+00 4.663394803284532e+00 9.218283139285564e+03 + 77500 9.442353782665713e-01 -5.914206468712625e+00 -6.032329993343484e+00 4.178594818543623e+00 4.500311260556872e+00 9.316545250762139e+03 + 77520 1.049576398605439e+00 -6.042887420064083e+00 -6.016984287363749e+00 3.475965489165315e+00 4.624705285627462e+00 9.269274340549440e+03 + 77540 1.021397397043001e+00 -5.980467997483546e+00 -6.023540739281695e+00 3.829482468465731e+00 4.582152119575504e+00 9.289441571086822e+03 + 77560 1.081718043063313e+00 -6.056658624635601e+00 -5.984961488239033e+00 3.389079210130718e+00 4.800775262415809e+00 9.170940437994550e+03 + 77580 1.051081133994240e+00 -6.002790863731874e+00 -6.002531779993344e+00 3.677989618991821e+00 4.679477317911537e+00 9.224820826580171e+03 + 77600 1.045144838650354e+00 -5.991019784205380e+00 -5.978131754932868e+00 3.774131312633760e+00 4.848136371132615e+00 9.150037938357164e+03 + 77620 9.680182838729169e-01 -5.875749678636447e+00 -6.035411279728108e+00 4.335281813683196e+00 4.418480192661962e+00 9.326070036218438e+03 + 77640 1.018954919826581e+00 -5.953533830460769e+00 -6.011670857923179e+00 3.909833588969740e+00 4.576001780604657e+00 9.252887617546943e+03 + 77660 1.007176929957126e+00 -5.938976396837838e+00 -6.036216775611024e+00 4.013974431109268e+00 4.455605128293656e+00 9.328551083226552e+03 + 77680 9.923511004572109e-01 -5.923442677615512e+00 -6.007661993330843e+00 4.065261397484885e+00 4.581661053750467e+00 9.240564443597070e+03 + 77700 1.039543549697005e+00 -6.001704272572851e+00 -5.960326312842605e+00 3.660259294958065e+00 4.897857942947711e+00 9.095654480658228e+03 + 77720 9.777990251909182e-01 -5.917285478683038e+00 -5.974411061196603e+00 4.206973561374035e+00 4.878949626425817e+00 9.138656956949191e+03 + 77740 1.022082528259537e+00 -5.989813024689306e+00 -5.978510241774536e+00 3.740885041193038e+00 4.805787369789648e+00 9.151175886242883e+03 + 77760 9.886953834658311e-01 -5.946410118122367e+00 -5.969587743105917e+00 3.975347972888523e+00 4.842258463507106e+00 9.123922926439400e+03 + 77780 1.061578330014396e+00 -6.059888056967913e+00 -5.991066218143676e+00 3.375710787152073e+00 4.770896435825980e+00 9.189647861639460e+03 + 77800 9.778484419740191e-01 -5.942984135445919e+00 -6.034167921374210e+00 3.972253946178110e+00 4.448662536732597e+00 9.322236018570735e+03 + 77820 1.034720078141913e+00 -6.036308450085625e+00 -5.980369853044770e+00 3.522590125062709e+00 4.843798205741212e+00 9.156889356561118e+03 + 77840 9.302569749794343e-01 -5.889827459535896e+00 -6.026527443334457e+00 4.260438756138591e+00 4.475486294913128e+00 9.298631571649845e+03 + 77860 9.854076357739538e-01 -5.978832068227005e+00 -5.991086670188578e+00 3.856886925175240e+00 4.786519104318365e+00 9.189660556677058e+03 + 77880 9.771709204725942e-01 -5.971340944069631e+00 -5.979993153965307e+00 3.826373791193700e+00 4.776691463047578e+00 9.155717981676084e+03 + 77900 9.838583252085812e-01 -5.983809071754007e+00 -5.947244266093203e+00 3.815421261565676e+00 5.025382034055401e+00 9.055784828092406e+03 + 77920 1.023374661453120e+00 -6.040827521537453e+00 -5.998995531952848e+00 3.479597086961526e+00 4.719802844635797e+00 9.213964150318579e+03 + 77940 9.753855008387742e-01 -5.970113202504599e+00 -6.051150741753498e+00 3.816902406340703e+00 4.351572315454859e+00 9.374740422117926e+03 + 77960 9.509833467938199e-01 -5.935861221172030e+00 -6.047364674563227e+00 4.004458025930132e+00 4.364187941454230e+00 9.363003209466837e+03 + 77980 1.000501956016721e+00 -6.009152484900175e+00 -5.979040776311124e+00 3.674137609486086e+00 4.847043699976264e+00 9.152795525109021e+03 + 78000 1.035558276446623e+00 -6.059646399185356e+00 -5.992183597233770e+00 3.360187400948170e+00 4.747569249589040e+00 9.193070884090206e+03 + 78020 1.031801518384735e+00 -6.054078037849761e+00 -5.978234881181659e+00 3.360844305816719e+00 4.796347448095525e+00 9.150348501088243e+03 + 78040 9.656222245905778e-01 -5.954411071397783e+00 -5.973511694340407e+00 3.972578943109828e+00 4.862900210361437e+00 9.135923912500321e+03 + 78060 1.011170700379149e+00 -6.020073804435849e+00 -5.979121773776226e+00 3.610937885366757e+00 4.846090782720574e+00 9.153057244485020e+03 + 78080 9.699830484688068e-01 -5.955785044985195e+00 -6.027195256344613e+00 3.907290035032333e+00 4.497241550712058e+00 9.300704756762751e+03 + 78100 9.610813965348000e-01 -5.942013859772642e+00 -5.987966570586007e+00 4.048235447364529e+00 4.784367870715170e+00 9.180139242009309e+03 + 78120 1.025812866564263e+00 -6.036576277231871e+00 -5.944614075377666e+00 3.520874316821975e+00 5.048935510973559e+00 9.047800525774805e+03 + 78140 1.029167987924762e+00 -6.037594329055075e+00 -5.980582677870343e+00 3.501838374707892e+00 4.829208098335134e+00 9.157541919890924e+03 + 78160 9.835237912607578e-01 -5.966550558786542e+00 -5.987165477301216e+00 3.864639646367784e+00 4.746265594108194e+00 9.177683698383820e+03 + 78180 9.561486445934152e-01 -5.920453392326651e+00 -5.983548461030182e+00 4.167595956491040e+00 4.805294308065045e+00 9.166587688297264e+03 + 78200 9.903941374251212e-01 -5.963828557270103e+00 -6.002396686169795e+00 3.894386921306210e+00 4.672922756765524e+00 9.224407529202610e+03 + 78220 1.057876955569207e+00 -6.057179896004997e+00 -5.964932011275994e+00 3.391526269118286e+00 4.921227898546247e+00 9.109667761734130e+03 + 78240 9.630265461838489e-01 -5.911619901225698e+00 -5.934907501226494e+00 4.216078442369825e+00 5.082357439420801e+00 9.018240981451250e+03 + 78260 1.077269212336475e+00 -6.072782749252964e+00 -5.876633914204840e+00 3.341010884937469e+00 5.467327849717924e+00 8.842183324704531e+03 + 78280 9.970598298591326e-01 -5.938080612214741e+00 -6.011349291534779e+00 3.969420566979301e+00 4.548700472032163e+00 9.251906226570100e+03 + 78300 1.061435024299968e+00 -6.014334463287263e+00 -6.009462189894336e+00 3.649028169986043e+00 4.677005517790101e+00 9.246092102465727e+03 + 78320 9.787270709110747e-01 -5.871717681722421e+00 -6.032583403681477e+00 4.360343534504780e+00 4.436627665125861e+00 9.317298261436030e+03 + 78340 1.102678630242116e+00 -6.034447246869417e+00 -5.973227655273385e+00 3.515790822786725e+00 4.867323191432330e+00 9.135048578131275e+03 + 78360 1.057204241775132e+00 -5.946192097353454e+00 -5.988388452768039e+00 3.984615675429995e+00 4.742317672774551e+00 9.181443210237541e+03 + 78380 9.893280282933085e-01 -5.828745090516662e+00 -6.045387884200591e+00 4.587886553160031e+00 4.343890106462939e+00 9.356865321622250e+03 + 78400 1.053306678465758e+00 -5.910026704823762e+00 -6.010779473515328e+00 4.156065726245334e+00 4.577527736977802e+00 9.250150928122406e+03 + 78420 9.868150142513562e-01 -5.800963539042431e+00 -6.049397822676246e+00 4.712709349528486e+00 4.286161247821981e+00 9.369304693532913e+03 + 78440 9.901759031263837e-01 -5.800094036448796e+00 -6.052342573985558e+00 4.756807655012659e+00 4.308357517141542e+00 9.378419942071738e+03 + 78460 1.073739643344300e+00 -5.924865216846635e+00 -6.001921228762137e+00 4.061646669862794e+00 4.619179125064680e+00 9.222943560826216e+03 + 78480 1.143927342387567e+00 -6.038550978516589e+00 -6.011563258982916e+00 3.442869434448245e+00 4.597837096346694e+00 9.252593040444399e+03 + 78500 1.032179657833521e+00 -5.897918239120339e+00 -6.029853108690820e+00 4.236786427244221e+00 4.479195989315442e+00 9.308915026663193e+03 + 78520 1.042215401167458e+00 -5.950578158116070e+00 -5.989930918181021e+00 3.931172340263523e+00 4.705202702150635e+00 9.186129068838927e+03 + 78540 9.970476489870109e-01 -5.926341348062729e+00 -5.944589811448207e+00 4.071803912423094e+00 4.967018411723097e+00 9.047715710282891e+03 + 78560 9.517091121773785e-01 -5.897295666729639e+00 -6.003733757849261e+00 4.217445591714504e+00 4.606261601264264e+00 9.228480719592844e+03 + 78580 1.081789729646000e+00 -6.124980925436486e+00 -5.955077474193791e+00 3.010762435639613e+00 4.986374345149272e+00 9.079666659425113e+03 + 78600 1.014627314971315e+00 -6.055275194414532e+00 -5.983834517690553e+00 3.361596416479979e+00 4.771819837638057e+00 9.167490450124029e+03 + 78620 9.616948928726742e-01 -6.000035195042575e+00 -5.940127530466191e+00 3.714984392001054e+00 5.058983472679778e+00 9.034163809888018e+03 + 78640 9.524373869648703e-01 -6.000872336999088e+00 -6.010610131253565e+00 3.622197142985709e+00 4.566281221457712e+00 9.249621586994937e+03 + 78660 1.028927671274577e+00 -6.124736986929117e+00 -5.940876632743382e+00 3.061046469344237e+00 5.116801075376577e+00 9.036450298520682e+03 + 78680 9.456871941114241e-01 -6.006817994074615e+00 -5.978133941407339e+00 3.685806025051366e+00 4.850514294309672e+00 9.150040581860607e+03 + 78700 9.591998253277820e-01 -6.027926903531983e+00 -5.951362200963295e+00 3.522568575390019e+00 4.962214945888855e+00 9.068332423019394e+03 + 78720 9.285202023313307e-01 -5.976431947831863e+00 -6.013021018716906e+00 3.793411721804943e+00 4.583311614642611e+00 9.257059500192408e+03 + 78740 1.018128245515924e+00 -6.097645963800478e+00 -6.037455264090092e+00 3.138253804227053e+00 4.483878116444762e+00 9.332400033088696e+03 + 78760 9.795047739244352e-01 -6.032619372988026e+00 -6.005281103602453e+00 3.557891298829758e+00 4.714871872225229e+00 9.233247589986886e+03 + 78780 9.797599624029488e-01 -6.022422407558693e+00 -6.018758136649420e+00 3.548159106901778e+00 4.569199917506918e+00 9.274714482911944e+03 + 78800 9.889848552322934e-01 -6.019938375789486e+00 -5.990886136505022e+00 3.606712311864928e+00 4.773534765655818e+00 9.189085688942474e+03 + 78820 1.016181227012294e+00 -6.039945699056154e+00 -6.002442407504644e+00 3.457259117302304e+00 4.672608821006688e+00 9.224544831556430e+03 + 78840 1.020038795584622e+00 -6.022951695514823e+00 -6.007542024771134e+00 3.559278285303629e+00 4.647762999352734e+00 9.240208373979474e+03 + 78860 1.031588973236699e+00 -6.010667460352778e+00 -5.994376011284881e+00 3.662324383711345e+00 4.755872405352804e+00 9.199785395935016e+03 + 78880 1.050418868335119e+00 -6.004578971182838e+00 -5.994522496902715e+00 3.700638146875298e+00 4.758383978426126e+00 9.200236146901805e+03 + 78900 1.057654014429690e+00 -5.977309490504414e+00 -6.044375388860435e+00 3.796956648130540e+00 4.411853881356040e+00 9.353777061147757e+03 + 78920 1.039118074481839e+00 -5.910382592475586e+00 -6.052977517470810e+00 4.229751421488650e+00 4.410949295672747e+00 9.380391232580549e+03 + 78940 1.043392432989924e+00 -5.879519212341009e+00 -6.074252070616045e+00 4.308309312968984e+00 4.190123105941303e+00 9.446401254562359e+03 + 78960 1.078145343636826e+00 -5.899075920199808e+00 -6.011773951239642e+00 4.270903374757216e+00 4.623773840562547e+00 9.253217154549773e+03 + 78980 1.074152668398324e+00 -5.868991093625352e+00 -6.042776177483228e+00 4.390863481301415e+00 4.392962636634677e+00 9.348798996054009e+03 + 79000 1.087119540468721e+00 -5.872479099440164e+00 -6.028040506981574e+00 4.396650785246825e+00 4.503393110094033e+00 9.303313985013136e+03 + 79020 1.045594376917950e+00 -5.806400210036923e+00 -5.978380898053079e+00 4.766158122425988e+00 4.778618397911764e+00 9.150779076462419e+03 + 79040 1.050787461867241e+00 -5.817866658126946e+00 -6.042735076944107e+00 4.609850743621839e+00 4.318621484498357e+00 9.348664290039538e+03 + 79060 1.118529069719522e+00 -5.936477655074926e+00 -6.011877044980094e+00 4.049474259201137e+00 4.616519294347784e+00 9.253541687095676e+03 + 79080 1.037653782897599e+00 -5.861895815075505e+00 -6.048808746908097e+00 4.426638768443851e+00 4.353355789178391e+00 9.367459128955737e+03 + 79100 1.038199487015037e+00 -5.933490529071011e+00 -6.019888840877403e+00 4.037378768024137e+00 4.541266291536290e+00 9.278166779912566e+03 + 79120 1.041007842571978e+00 -6.007252077349941e+00 -6.036054921119177e+00 3.633078153130786e+00 4.467687766982163e+00 9.328078612817981e+03 + 79140 1.025406368535512e+00 -6.041361898140677e+00 -6.041000342870972e+00 3.486120739853750e+00 4.488196846162893e+00 9.343357298072640e+03 + 79160 9.341456859815093e-01 -5.941385867746375e+00 -6.048466434129687e+00 3.994571257516307e+00 4.379698074679232e+00 9.366428492812618e+03 + 79180 9.771608506276181e-01 -6.028575982982802e+00 -5.991812443083738e+00 3.568658433428185e+00 4.779760368668022e+00 9.191926435683650e+03 + 79200 9.921923681853101e-01 -6.066906159128821e+00 -6.019636137038110e+00 3.328163013577709e+00 4.599594795434848e+00 9.277443305901108e+03 + 79220 9.862049653849216e-01 -6.071625437979191e+00 -5.989908855589705e+00 3.341828607592565e+00 4.811057869273252e+00 9.186122238372905e+03 + 79240 9.306235220428800e-01 -5.999125961340726e+00 -6.044789960055729e+00 3.700988318142798e+00 4.438778571040285e+00 9.355053231425367e+03 + 79260 9.589629413367583e-01 -6.046224955906822e+00 -6.019065989180349e+00 3.406947773015941e+00 4.562898762795867e+00 9.275677671331601e+03 + 79280 9.595196581274834e-01 -6.048244259439383e+00 -6.030818493424709e+00 3.413428615115200e+00 4.513490060200033e+00 9.311891654543091e+03 + 79300 8.952387423203870e-01 -5.950500260629876e+00 -6.050300929690748e+00 3.922360906396322e+00 4.349290020545174e+00 9.372099766257763e+03 + 79320 9.956690213581377e-01 -6.093825854364747e+00 -5.989998018352688e+00 3.229345426648499e+00 4.825540928335434e+00 9.186359282861100e+03 + 79340 9.453222731746629e-01 -6.008015081781671e+00 -6.007742814689832e+00 3.694970934431101e+00 4.696534334205639e+00 9.240827163162217e+03 + 79360 9.422612152029742e-01 -5.987268120853800e+00 -6.024558769907834e+00 3.767374432947217e+00 4.553245755369661e+00 9.292586234921657e+03 + 79380 9.705144832288686e-01 -6.007845519056992e+00 -6.044050643127449e+00 3.623239496518131e+00 4.415344071380728e+00 9.352753501102710e+03 + 79400 9.764064812159740e-01 -5.993056183192470e+00 -5.964515679474910e+00 3.770704505345157e+00 4.934588494320066e+00 9.108432166291823e+03 + 79420 9.995662938005271e-01 -6.000435576227896e+00 -5.985457144450022e+00 3.738560421878058e+00 4.824568895051439e+00 9.172421662091130e+03 + 79440 9.774946319946323e-01 -5.936023080946880e+00 -6.059649770402508e+00 3.975415994600592e+00 4.265532412578008e+00 9.401075581334733e+03 + 79460 1.040666700708623e+00 -6.002604690484982e+00 -6.004831082142114e+00 3.673864766461619e+00 4.661080481033374e+00 9.231892682418078e+03 + 79480 9.637832161120380e-01 -5.866068025215973e+00 -6.000650551884299e+00 4.433261003931724e+00 4.660467309223500e+00 9.219057385786535e+03 + 79500 1.077214823249315e+00 -6.013177271419051e+00 -6.028254098450110e+00 3.625312698312519e+00 4.538739224368737e+00 9.303986105161433e+03 + 79520 1.052711047504761e+00 -5.963100550037455e+00 -5.991324134985586e+00 3.921142717210432e+00 4.759078524852609e+00 9.190406266832431e+03 + 79540 1.021354527330367e+00 -5.908605877420546e+00 -6.009051397536357e+00 4.169295232950930e+00 4.592521512551939e+00 9.244836810343091e+03 + 79560 1.096226664016190e+00 -6.015433960272047e+00 -6.002037267466036e+00 3.607595185069786e+00 4.684521068293415e+00 9.223286085006308e+03 + 79580 1.064245855906995e+00 -5.969268792070979e+00 -6.029122077216962e+00 3.827926427958697e+00 4.484239602384521e+00 9.306677768741232e+03 + 79600 1.003499502899127e+00 -5.888123818580556e+00 -6.054317103121496e+00 4.262769895303282e+00 4.308462337141539e+00 9.384546528756066e+03 + 79620 1.064809178017311e+00 -5.999038060160107e+00 -6.001619904533060e+00 3.678894622960706e+00 4.664069273032084e+00 9.222000426559915e+03 + 79640 9.877173187762055e-01 -5.911497761250411e+00 -6.002963567027717e+00 4.155609457668405e+00 4.630398646607413e+00 9.226127831034701e+03 + 79660 9.852382359490183e-01 -5.941360703207859e+00 -6.013246242452160e+00 4.004987737681130e+00 4.592209847089107e+00 9.257749902507167e+03 + 79680 9.939942998932763e-01 -5.999508769907811e+00 -6.024586127723809e+00 3.616648045999105e+00 4.472649976711066e+00 9.292582044842904e+03 + 79700 9.637614969008178e-01 -6.001786483017087e+00 -5.929274555850238e+00 3.734650161543867e+00 5.151024868520377e+00 9.001201648249598e+03 + 79720 9.407338276555868e-01 -6.005320715260617e+00 -5.988953697364212e+00 3.648915111905061e+00 4.742897061454052e+00 9.183164777338403e+03 + 79740 9.709731459904474e-01 -6.079583019285436e+00 -5.984275981036768e+00 3.286585792120399e+00 4.833853554460755e+00 9.168869075737641e+03 + 79760 9.325677434475586e-01 -6.042795988785289e+00 -6.032028380941854e+00 3.467948037595739e+00 4.529777308114667e+00 9.315633429764390e+03 + 79780 9.240363800334991e-01 -6.039962831195194e+00 -5.989540885375548e+00 3.517547077489255e+00 4.807077693156561e+00 9.184974748497798e+03 + 79800 9.076214887800623e-01 -6.017846629183991e+00 -6.015104129449033e+00 3.613188873951509e+00 4.628936731830101e+00 9.263465934474720e+03 + 79820 9.148004830786736e-01 -6.023555502456211e+00 -5.991199799061269e+00 3.536928556284388e+00 4.722720012207068e+00 9.190060882125381e+03 + 79840 1.003276045520737e+00 -6.143483104619577e+00 -5.986359992497601e+00 2.863317542376134e+00 4.765542766903541e+00 9.175236724547416e+03 + 79860 9.311505090750651e-01 -6.024912465883136e+00 -6.006804331693696e+00 3.577492525247938e+00 4.681472233988409e+00 9.237961438708477e+03 + 79880 1.007102443784402e+00 -6.124752048473201e+00 -5.992352891390007e+00 3.023103175949877e+00 4.783359624624916e+00 9.193604061899778e+03 + 79900 9.288749603926837e-01 -5.993582502641173e+00 -6.045098621374047e+00 3.687153003981361e+00 4.391339478123589e+00 9.356009695512674e+03 + 79920 1.013468818583371e+00 -6.103411831721618e+00 -5.971150467325057e+00 3.156237046518667e+00 4.915702268263713e+00 9.128700634827090e+03 + 79940 9.249619277342788e-01 -5.952829499322999e+00 -6.049300172742184e+00 3.921393815847391e+00 4.367444280285968e+00 9.368987612881707e+03 + 79960 1.017806098949270e+00 -6.071529968378758e+00 -5.989422847065706e+00 3.312290670286356e+00 4.783762466901862e+00 9.184615414263824e+03 + 79980 9.726882956039568e-01 -5.987296761532740e+00 -6.021699503801274e+00 3.733345807914835e+00 4.535799938001746e+00 9.283783941442605e+03 + 80000 9.366239342432657e-01 -5.916542959325585e+00 -6.049069225485999e+00 4.104096918150409e+00 4.343110589483905e+00 9.368288602878134e+03 + 80020 1.022562156099422e+00 -6.028402590945284e+00 -5.965334982792205e+00 3.629449698397726e+00 4.991593664093521e+00 9.110930307936145e+03 + 80040 1.073006760161844e+00 -6.085723510921007e+00 -6.010984433782476e+00 3.278500855276069e+00 4.707664202040325e+00 9.250802248721324e+03 + 80060 1.000923032111309e+00 -5.964486778323271e+00 -6.000547876188676e+00 3.922840426039583e+00 4.715772021659564e+00 9.218737482223594e+03 + 80080 1.054789334973315e+00 -6.032466785682548e+00 -6.006878069879154e+00 3.505020528193227e+00 4.651954894177283e+00 9.238210025759370e+03 + 80100 1.079020134353119e+00 -6.061725250931890e+00 -6.018056015711058e+00 3.343909008216640e+00 4.594664514646965e+00 9.272592485769901e+03 + 80120 9.910760768741169e-01 -5.928646802222105e+00 -6.032968242951397e+00 4.015718079355172e+00 4.416688222996799e+00 9.318528387495733e+03 + 80140 1.012729698022931e+00 -5.960248454716059e+00 -5.994495355014786e+00 3.906741370071966e+00 4.710090368865988e+00 9.200151966363617e+03 + 80160 1.017073259977118e+00 -5.968382964472666e+00 -6.002711794354492e+00 3.900394643998811e+00 4.703273190448110e+00 9.225361722372822e+03 + 80180 1.009754466357514e+00 -5.961809005841932e+00 -6.048992414638651e+00 3.882999433049620e+00 4.382378808149952e+00 9.368063603673143e+03 + 80200 9.840641303668226e-01 -5.934551503560703e+00 -6.001546954233500e+00 4.041362868054193e+00 4.656664622778509e+00 9.221806147869038e+03 + 80220 1.020150107437041e+00 -6.005484971021632e+00 -6.012640717247824e+00 3.643883985996792e+00 4.602794583817848e+00 9.255894537591532e+03 + 80240 1.027808346007375e+00 -6.047297739592243e+00 -6.003989339968561e+00 3.452332751028595e+00 4.701016283620962e+00 9.229307477366827e+03 + 80260 9.710938719639687e-01 -6.009794834081909e+00 -6.015303424276796e+00 3.674976165677223e+00 4.643344988326604e+00 9.264102343213766e+03 + 80280 1.005308968292563e+00 -6.113177771759589e+00 -5.972408966459526e+00 3.107568226515959e+00 4.915884490451136e+00 9.132564403632909e+03 + 80300 9.389401309332899e-01 -6.060540564445474e+00 -6.048666000201535e+00 3.363890162958627e+00 4.432075748430205e+00 9.367039241100510e+03 + 80320 9.241062467503227e-01 -6.073454606534898e+00 -6.001425456154335e+00 3.356852032887244e+00 4.770454560847432e+00 9.221446396061525e+03 + 80340 8.833462273966666e-01 -6.035957833763788e+00 -6.034255921889043e+00 3.486456701765138e+00 4.496229343119937e+00 9.322504708063156e+03 + 80360 9.493122671748692e-01 -6.144817403545582e+00 -5.950978995559146e+00 2.949503367647100e+00 5.062553502701908e+00 9.067192449584752e+03 + 80380 9.163274466862645e-01 -6.096696677189597e+00 -5.974461534733840e+00 3.146109329971375e+00 4.848002433779497e+00 9.138816627758773e+03 + 80400 8.501628562375787e-01 -5.989703312936279e+00 -5.994164609337531e+00 3.722680586705049e+00 4.697063132385672e+00 9.199170347053829e+03 + 80420 9.338276758610530e-01 -6.094974390350162e+00 -6.003289512521252e+00 3.164037086336537e+00 4.690505843019126e+00 9.227159029375613e+03 + 80440 9.574498239769434e-01 -6.103702368495416e+00 -5.998833861138986e+00 3.135777019426153e+00 4.737948217015838e+00 9.213484470195814e+03 + 80460 9.855587276769316e-01 -6.116517641838018e+00 -6.003043944517124e+00 3.022594823916026e+00 4.674178353930509e+00 9.226418386047864e+03 + 80480 9.714783139240762e-01 -6.064368621315294e+00 -6.020704893342796e+00 3.325704364288514e+00 4.576428247246664e+00 9.280709651108018e+03 + 80500 9.379706375302218e-01 -5.982795020295552e+00 -5.986756310739745e+00 3.800289455735065e+00 4.777543112996799e+00 9.176440618945833e+03 + 80520 1.009036777861350e+00 -6.058046724237927e+00 -5.980974854070714e+00 3.440361455603704e+00 4.882920060937201e+00 9.158737359902861e+03 + 80540 9.870359009581027e-01 -5.999625329492440e+00 -6.044037125569371e+00 3.706739379193622e+00 4.451719973416652e+00 9.352721527911088e+03 + 80560 9.623530713359646e-01 -5.943040791810138e+00 -6.055129887893505e+00 3.987915303353470e+00 4.344282367911212e+00 9.387069918433835e+03 + 80580 1.031561597103923e+00 -6.032757617342055e+00 -5.993572189343842e+00 3.594056965044876e+00 4.819065756536000e+00 9.197317755113076e+03 + 80600 1.019562032654253e+00 -6.004401316920705e+00 -6.008283534235638e+00 3.669408290920511e+00 4.647115998326985e+00 9.242492430894137e+03 + 80620 9.367886552658038e-01 -5.872710417976832e+00 -6.067768540961339e+00 4.350329380928301e+00 4.230275453604287e+00 9.426266944879830e+03 + 80640 1.076395709720129e+00 -6.073852671880659e+00 -6.000877965558938e+00 3.327555401816166e+00 4.746587458314798e+00 9.219756153192788e+03 + 80660 1.019102983032667e+00 -5.986716026194557e+00 -6.034654751003762e+00 3.752482539298216e+00 4.477210962950069e+00 9.323726966663880e+03 + 80680 9.978764706079299e-01 -5.956785991007037e+00 -6.005859447290690e+00 3.946860320113310e+00 4.665072940039761e+00 9.235047954506415e+03 + 80700 1.013170555733291e+00 -5.980566064884793e+00 -6.013223205259580e+00 3.756964538195416e+00 4.569442184487253e+00 9.257694894995091e+03 + 80720 1.051045572187355e+00 -6.040667787672361e+00 -5.990315620016016e+00 3.526214851666324e+00 4.815344790321822e+00 9.187341179678519e+03 + 80740 1.018723735111449e+00 -5.998373942147798e+00 -6.011348875066314e+00 3.671713562513529e+00 4.597209489831029e+00 9.251907305857234e+03 + 80760 9.388896651013440e-01 -5.888021158640180e+00 -6.025353762316770e+00 4.271214323644519e+00 4.482629261181807e+00 9.295029343700997e+03 + 80780 9.913057477415382e-01 -5.975762338683044e+00 -5.999744266697094e+00 3.819462363494888e+00 4.681754421646844e+00 9.216252403003507e+03 + 80800 9.970842564945607e-01 -5.994862949978187e+00 -5.964498244650276e+00 3.760072319566222e+00 4.934431156482054e+00 9.108407533359547e+03 + 80820 1.066741115716560e+00 -6.111376102653941e+00 -6.001338880983326e+00 3.082363251204188e+00 4.714214006241885e+00 9.221167300849755e+03 + 80840 9.676113626873384e-01 -5.984858071142508e+00 -6.025691290882198e+00 3.812873613105807e+00 4.578402946440170e+00 9.296096041970153e+03 + 80860 9.787856153928439e-01 -6.031312880323497e+00 -6.014127640927860e+00 3.493805978474848e+00 4.592486282491798e+00 9.260482064191039e+03 + 80880 9.418771088223991e-01 -6.014824561717117e+00 -6.012829791467682e+00 3.678012679589869e+00 4.689466959051821e+00 9.256473845489218e+03 + 80900 9.675145015215378e-01 -6.091994146765102e+00 -5.992931133901148e+00 3.233504474453409e+00 4.802339624269928e+00 9.195372933330171e+03 + 80920 9.267750612309956e-01 -6.067490114839657e+00 -6.019000456061543e+00 3.281640202195465e+00 4.560075326649841e+00 9.275465113029946e+03 + 80940 9.481390598626093e-01 -6.126033019168437e+00 -5.988648088079658e+00 3.011374777829801e+00 4.800260312390948e+00 9.182242213242160e+03 + 80960 9.209411551406300e-01 -6.104439181185229e+00 -6.002271980117134e+00 3.133056609421621e+00 4.719716488277889e+00 9.224017543994136e+03 + 80980 8.830569647304123e-01 -6.057829103122396e+00 -5.978194044144404e+00 3.422691191393242e+00 4.879968023530418e+00 9.150233431167460e+03 + 81000 9.355533444389885e-01 -6.135942220504278e+00 -5.957328833224663e+00 3.012808307466556e+00 5.038434017558458e+00 9.086510006066192e+03 + 81020 8.830401509847313e-01 -6.046247691807124e+00 -6.005873854221210e+00 3.476738946050195e+00 4.708571769299687e+00 9.235093668422922e+03 + 81040 9.043462411016543e-01 -6.055312932565846e+00 -6.034717998617226e+00 3.403161973008423e+00 4.521421270797127e+00 9.323955447128938e+03 + 81060 9.015406876028933e-01 -6.023525922276758e+00 -6.038521946276705e+00 3.524879263439936e+00 4.438769773005024e+00 9.335685242561058e+03 + 81080 9.472460703928099e-01 -6.056179177689908e+00 -5.992290763042902e+00 3.420287497938613e+00 4.787144661541939e+00 9.193408703315539e+03 + 81100 9.615995417920067e-01 -6.038896939556994e+00 -6.020151107347472e+00 3.487485889974587e+00 4.595127359429828e+00 9.279021613406852e+03 + 81120 9.293075439340029e-01 -5.956989134386344e+00 -6.025964776540755e+00 3.918083183946968e+00 4.522014372750212e+00 9.296917925207892e+03 + 81140 9.702116481332475e-01 -5.990929138589618e+00 -6.004308464387154e+00 3.751068036875005e+00 4.674241877701573e+00 9.230269139572902e+03 + 81160 1.007811473703813e+00 -6.025182184063778e+00 -5.996242929562227e+00 3.572196869647291e+00 4.738370547330359e+00 9.205527839882789e+03 + 81180 1.016525618284013e+00 -6.024081465605152e+00 -5.987595358589862e+00 3.556329323594932e+00 4.765838196283541e+00 9.179027117547490e+03 + 81200 1.027224228153547e+00 -6.030021502765069e+00 -6.001647629067506e+00 3.572181103424383e+00 4.735108277038559e+00 9.222098694443555e+03 + 81220 9.904447680763622e-01 -5.969102687106306e+00 -5.965844383466072e+00 3.906534432956736e+00 4.925244116679815e+00 9.112456408849332e+03 + 81240 9.742049547334861e-01 -5.937461349674664e+00 -5.988827551493365e+00 4.103811691734906e+00 4.808859011997884e+00 9.182757154064100e+03 + 81260 1.071884573786312e+00 -6.075986600275069e+00 -6.007670413182030e+00 3.261579618508831e+00 4.653861736692846e+00 9.240623969403696e+03 + 81280 1.016163395514787e+00 -5.990331352893845e+00 -6.015608982490580e+00 3.759986444079833e+00 4.614838383234846e+00 9.265038412097279e+03 + 81300 1.012453047292900e+00 -5.984244092607574e+00 -5.973274928839892e+00 3.817309438026586e+00 4.880296073853218e+00 9.135159786269614e+03 + 81320 1.005687875221196e+00 -5.973031969248426e+00 -5.972904147607499e+00 3.849410935330150e+00 4.850144906972689e+00 9.134035825996556e+03 + 81340 1.035224570037387e+00 -6.017764647068367e+00 -5.936167837337880e+00 3.616412371414219e+00 5.084953879952169e+00 9.022114973947471e+03 + 81360 9.889713515010981e-01 -5.949553842469646e+00 -5.957855704024574e+00 4.004322247601471e+00 4.956651673844148e+00 9.088103233937512e+03 + 81380 9.309860811148067e-01 -5.863012355389993e+00 -6.052985259386458e+00 4.361630232409222e+00 4.270776419449641e+00 9.380323661049530e+03 + 81400 1.028914998747282e+00 -6.005683474244733e+00 -5.981550761973759e+00 3.651203239970426e+00 4.789777008355512e+00 9.160493957952887e+03 + 81420 1.048624124233346e+00 -6.034231486290285e+00 -6.010441461514860e+00 3.461536526600151e+00 4.598142530355080e+00 9.249116704159978e+03 + 81440 1.007608228698051e+00 -5.975592474812316e+00 -5.999812456342292e+00 3.800106391773873e+00 4.661031509798724e+00 9.216480597539468e+03 + 81460 9.983733675528411e-01 -5.966721998910436e+00 -6.022753099227367e+00 3.827570964981477e+00 4.505831716176908e+00 9.287035377354134e+03 + 81480 1.030630791774342e+00 -6.024347801108495e+00 -5.994720571365262e+00 3.557630548097550e+00 4.727754686082175e+00 9.200871163892465e+03 + 81500 1.001363231370770e+00 -5.996020514451788e+00 -6.009800782234871e+00 3.694053400859966e+00 4.614924970759960e+00 9.247154770608253e+03 + 81520 9.579853852605930e-01 -5.949480397373034e+00 -5.985283083692940e+00 4.029234590561018e+00 4.823650025264318e+00 9.171895959557856e+03 + 81540 9.947561644170929e-01 -6.022723766632827e+00 -5.986394348645819e+00 3.583941854424206e+00 4.792550994464873e+00 9.175326370471519e+03 + 81560 9.965107360183662e-01 -6.046267418031679e+00 -6.017566459718894e+00 3.439537451260096e+00 4.604342795351055e+00 9.271051745720584e+03 + 81580 9.831745904071457e-01 -6.051996004081508e+00 -5.983544643670847e+00 3.413247534346811e+00 4.806305838638619e+00 9.166622510698429e+03 + 81600 9.378187898646321e-01 -6.008009829871551e+00 -6.008004043138206e+00 3.618604380654046e+00 4.618637608972406e+00 9.241635297444838e+03 + 81620 9.566746583061461e-01 -6.058071026274408e+00 -5.989401261739907e+00 3.353838449095325e+00 4.748150863664147e+00 9.184536235032860e+03 + 81640 9.182911175658350e-01 -6.017413609352020e+00 -5.997249481806551e+00 3.568625621070960e+00 4.684411161825695e+00 9.208604973555040e+03 + 81660 9.482135488956011e-01 -6.072697876831310e+00 -6.001808548844648e+00 3.283748986176788e+00 4.690806477564250e+00 9.222591027499609e+03 + 81680 9.270388970890595e-01 -6.046969583323061e+00 -6.014656294789603e+00 3.366777008425369e+00 4.552324911649727e+00 9.262121170961431e+03 + 81700 9.529880999343767e-01 -6.086426882141552e+00 -6.006155763088550e+00 3.180629289780866e+00 4.641558477298728e+00 9.235980126459752e+03 + 81720 9.829182875102052e-01 -6.126620737043145e+00 -5.967748624530690e+00 3.018150919976269e+00 4.930419175402739e+00 9.118315350430348e+03 + 81740 8.873610894800430e-01 -5.972767014222449e+00 -5.948448888309578e+00 3.878858804969892e+00 5.018497247179424e+00 9.059471656376427e+03 + 81760 8.892950216302022e-01 -5.953234114348783e+00 -5.998947080579775e+00 3.944645398164917e+00 4.682154472007897e+00 9.213770698125241e+03 + 81780 9.511005142952208e-01 -6.007148231213190e+00 -6.006563499052527e+00 3.615658506797077e+00 4.619016129350610e+00 9.237209502101865e+03 + 81800 9.587155141345721e-01 -5.971155968453890e+00 -5.997747791038860e+00 3.849774196874663e+00 4.697079836520522e+00 9.210123401353727e+03 + 81820 1.007624251852019e+00 -6.000168150844220e+00 -5.933322585519431e+00 3.733257215438007e+00 5.117094795850749e+00 9.013501457340248e+03 + 81840 1.095662509292515e+00 -6.091024415814846e+00 -5.991261161366028e+00 3.231285716319813e+00 4.804141761678659e+00 9.190227771114402e+03 + 81860 1.052814539549743e+00 -5.998414813402425e+00 -6.037022804379238e+00 3.695722052437331e+00 4.474028993681173e+00 9.331053317827293e+03 + 81880 1.052743309857432e+00 -5.982577001246544e+00 -6.010557323255792e+00 3.796839215575521e+00 4.636171876657579e+00 9.249491437038587e+03 + 81900 1.044561155409496e+00 -5.964051874848947e+00 -6.006500305000297e+00 3.851432774687825e+00 4.607687319885436e+00 9.237034009173385e+03 + 81920 1.066565011486684e+00 -5.993767076054903e+00 -6.036099554018426e+00 3.729824293801166e+00 4.486744654404826e+00 9.328221083676031e+03 + 81940 9.781942326748866e-01 -5.866975592394632e+00 -6.133369774424001e+00 4.335836703311036e+00 3.806160085731958e+00 9.631017846498356e+03 + 81960 9.546576542302276e-01 -5.844305082616827e+00 -6.055401817482812e+00 4.528576058445224e+00 4.316425939730597e+00 9.387918035656179e+03 + 81980 1.079093288975099e+00 -6.043014852330816e+00 -5.971952922889414e+00 3.439308451456089e+00 4.847357047106664e+00 9.131168989423179e+03 + 82000 9.950364651531486e-01 -5.932668675069110e+00 -6.036720900010192e+00 4.088636854102226e+00 4.491152876460765e+00 9.330103035311287e+03 + 82020 1.010193193755492e+00 -5.973356942231920e+00 -5.996116143394983e+00 3.867959060282742e+00 4.737272205229438e+00 9.205115218153809e+03 + 82040 9.866440015206859e-01 -5.956985377417691e+00 -6.009654359907052e+00 3.912805338963088e+00 4.610371891010480e+00 9.246702599130509e+03 + 82060 1.016461417745936e+00 -6.020970820596495e+00 -5.968079507370866e+00 3.544017347838592e+00 4.847727453284424e+00 9.119331910815017e+03 + 82080 9.781416540235782e-01 -5.982112663385376e+00 -5.982390724539182e+00 3.869048182141401e+00 4.867451511966422e+00 9.163064699742366e+03 + 82100 9.878939093035733e-01 -6.014388191760175e+00 -6.044669063463915e+00 3.574302443036682e+00 4.400424991764059e+00 9.354703286571699e+03 + 82120 1.014146062293742e+00 -6.071829209806236e+00 -5.983782412963150e+00 3.293602895329442e+00 4.799181228000215e+00 9.167339556070028e+03 + 82140 9.613023947546808e-01 -6.010113700107163e+00 -5.993143584751316e+00 3.664382187242785e+00 4.761827215732925e+00 9.196021081876095e+03 + 82160 9.506892056175561e-01 -6.008723150834880e+00 -6.000075526752517e+00 3.624253176100621e+00 4.673909171797054e+00 9.217284560667546e+03 + 82180 9.714550203897128e-01 -6.054518496551383e+00 -5.990367224324778e+00 3.426846660956418e+00 4.795213193458872e+00 9.187493989536340e+03 + 82200 9.195638119569862e-01 -5.991931517434797e+00 -5.986800306063178e+00 3.735324726277692e+00 4.764788936025925e+00 9.176547944154587e+03 + 82220 9.808616445570533e-01 -6.095527050912048e+00 -5.963366444070888e+00 3.169483072006205e+00 4.928369728275955e+00 9.104922583975449e+03 + 82240 1.008723539044255e+00 -6.146959592810569e+00 -5.962097705580422e+00 2.851049932534960e+00 4.912555496295063e+00 9.101072227654904e+03 + 82260 8.946842146449914e-01 -5.986841294087809e+00 -5.988900583564863e+00 3.836284449626482e+00 4.824459690775225e+00 9.182992323663215e+03 + 82280 9.578342911083773e-01 -6.088064487003384e+00 -5.970147784163970e+00 3.227181411287218e+00 4.904277366541924e+00 9.125641748360757e+03 + 82300 9.694911601387092e-01 -6.107636100867752e+00 -5.973575146507881e+00 3.140689931086897e+00 4.910488676886915e+00 9.136129007293137e+03 + 82320 9.658653057589675e-01 -6.098505698190633e+00 -5.989555519356621e+00 3.202140603642655e+00 4.827749390493233e+00 9.185028458005339e+03 + 82340 9.379661457161677e-01 -6.047355213615767e+00 -6.016183252845675e+00 3.425539322666628e+00 4.604533545253837e+00 9.266802020251327e+03 + 82360 9.017394625799171e-01 -5.976424684432196e+00 -6.019947298880256e+00 3.782287142528470e+00 4.532373555264893e+00 9.278386416320462e+03 + 82380 9.730334381823149e-01 -6.056542553334780e+00 -5.995071188036888e+00 3.419568213155279e+00 4.772546305358814e+00 9.201928942361483e+03 + 82400 1.000803295488731e+00 -6.065152113757646e+00 -5.976119617770720e+00 3.398613681745325e+00 4.909852051436485e+00 9.143915153560623e+03 + 82420 9.728550401060606e-01 -5.989238385836188e+00 -6.031617298358183e+00 3.750048760156479e+00 4.506702486339665e+00 9.314368536515045e+03 + 82440 1.022564193625020e+00 -6.031763789987382e+00 -5.972284410436522e+00 3.513185556318443e+00 4.854725358103719e+00 9.132181457348595e+03 + 82460 9.761058637674128e-01 -5.931202883776870e+00 -6.039199807483305e+00 4.105989933415652e+00 4.485854885023369e+00 9.337790161793037e+03 + 82480 1.009789381686426e+00 -5.953810860302744e+00 -6.068442816127712e+00 3.904333014949665e+00 4.246098585364861e+00 9.428365404201744e+03 + 82500 1.028860711868931e+00 -5.962210599404283e+00 -5.997096425277109e+00 3.943631585253610e+00 4.743311774527743e+00 9.208129474730817e+03 + 82520 1.035062679872798e+00 -5.955329562456322e+00 -6.010748773176162e+00 3.954460980636004e+00 4.636235296587543e+00 9.250093249800075e+03 + 82540 1.054238226283539e+00 -5.973149471758526e+00 -6.042461879420514e+00 3.869580135041574e+00 4.471577564186021e+00 9.347872505137933e+03 + 82560 1.076932959179133e+00 -6.004273731519637e+00 -6.014114164871184e+00 3.649967011491726e+00 4.593461720385001e+00 9.260437948949771e+03 + 82580 1.011798123086409e+00 -5.911863027530152e+00 -5.997078553128691e+00 4.178123286961598e+00 4.688802551914814e+00 9.208047998437622e+03 + 82600 9.756076113288988e-01 -5.863513315498023e+00 -6.035408156944672e+00 4.394265203087627e+00 4.407218422860224e+00 9.326021830551015e+03 + 82620 1.048090987492292e+00 -5.979603885986118e+00 -6.001782916867038e+00 3.787018994691517e+00 4.659663567179340e+00 9.222519693155738e+03 + 82640 1.058728748828612e+00 -6.009245492367103e+00 -5.982931731302895e+00 3.698700342018598e+00 4.849798030090643e+00 9.164721432375725e+03 + 82660 1.028783642254434e+00 -5.986736475224807e+00 -5.969056462566000e+00 3.781310377964014e+00 4.882831746623999e+00 9.122288217869169e+03 + 82680 9.740672120237286e-01 -5.933137836329871e+00 -6.006871183667267e+00 4.091950707736221e+00 4.668562417126275e+00 9.238150446249676e+03 + 82700 9.837642372788657e-01 -5.979795352579099e+00 -5.995637825518246e+00 3.877088894846950e+00 4.786118963615603e+00 9.203640011978872e+03 + 82720 1.019370980901442e+00 -6.068002710135505e+00 -5.988050040575091e+00 3.343858308727194e+00 4.802958909978720e+00 9.180406179178553e+03 + 82740 9.582663682090585e-01 -6.012752916012633e+00 -6.015844089146303e+00 3.593990146607807e+00 4.576240152116775e+00 9.265747549733378e+03 + 82760 9.323966239193940e-01 -6.002991409893570e+00 -5.990647109338253e+00 3.728262691408681e+00 4.799145575471653e+00 9.188351693655675e+03 + 82780 9.955522658155039e-01 -6.121325651624503e+00 -5.957553731112955e+00 3.058050951226798e+00 4.998454662426903e+00 9.087193180582461e+03 + 82800 9.184627415617511e-01 -6.023721808391528e+00 -5.986348880995259e+00 3.540733978786725e+00 4.755335111337923e+00 9.175191162482495e+03 + 82820 9.735778803216142e-01 -6.115083982382918e+00 -5.992856563008321e+00 3.065959373345444e+00 4.767808130026401e+00 9.195135965955400e+03 + 82840 9.093557947545571e-01 -6.022330108012725e+00 -6.016110243383233e+00 3.572888913458059e+00 4.608604338681547e+00 9.266564045551109e+03 + 82860 9.277762549416532e-01 -6.046576696491860e+00 -5.989734116681646e+00 3.457447412629272e+00 4.783846302260315e+00 9.185558144933704e+03 + 82880 9.371037680591293e-01 -6.048637096445340e+00 -5.993366607048959e+00 3.458069258560763e+00 4.775440961755375e+00 9.196678154515012e+03 + 82900 1.024665905194715e+00 -6.162332866224692e+00 -5.979690097112136e+00 2.823073911619610e+00 4.871836955741085e+00 9.154828399714999e+03 + 82920 9.539038758915600e-01 -6.039942164867638e+00 -6.013273589437826e+00 3.445978589870300e+00 4.599113676936987e+00 9.257855391061325e+03 + 82940 9.724788231981104e-01 -6.049373574147997e+00 -5.986822971880763e+00 3.507855874368619e+00 4.867031112261494e+00 9.176648997133854e+03 + 82960 9.460939879618978e-01 -5.993999422683074e+00 -6.025080402886542e+00 3.703744923849428e+00 4.525273125754974e+00 9.294205080696967e+03 + 82980 9.887826415764448e-01 -6.043982829180702e+00 -5.995794208641036e+00 3.408352692195487e+00 4.685059208499176e+00 9.204129309972195e+03 + 83000 1.019617483988462e+00 -6.077848124836872e+00 -5.937536188897327e+00 3.304831859209812e+00 5.110524708576593e+00 9.026293008502615e+03 + 83020 9.960061147329781e-01 -6.033566786076968e+00 -6.005142498497038e+00 3.398768636085479e+00 4.561985294013731e+00 9.232842920166499e+03 + 83040 1.016045129092751e+00 -6.055350006717245e+00 -5.961917754303376e+00 3.419162458483446e+00 4.955664910438220e+00 9.100524852823795e+03 + 83060 1.014741293368914e+00 -6.047103051384099e+00 -5.938208355994676e+00 3.463780286346741e+00 5.089070478672456e+00 9.028342901093671e+03 + 83080 9.879491280658900e-01 -6.000787394535168e+00 -5.976730488074433e+00 3.680046697488698e+00 4.818185177180480e+00 9.145749936936871e+03 + 83100 1.000544870522238e+00 -6.011101244864054e+00 -6.013548361954304e+00 3.607549317793009e+00 4.593497592770652e+00 9.258698107162572e+03 + 83120 9.992312217060532e-01 -6.000539426992757e+00 -6.012349950640109e+00 3.687613473385762e+00 4.619795618930039e+00 9.254995429602508e+03 + 83140 9.910500090997214e-01 -5.980178434461548e+00 -5.994835136480335e+00 3.796914728822300e+00 4.712753677713120e+00 9.201194131088181e+03 + 83160 1.020567561879328e+00 -6.016373158321231e+00 -5.987234275614540e+00 3.599940733228034e+00 4.767260706957378e+00 9.177905779294051e+03 + 83180 1.008252736125395e+00 -5.989504670544965e+00 -6.017869197992520e+00 3.723158281029275e+00 4.560284775028980e+00 9.272008464445185e+03 + 83200 1.044702125853623e+00 -6.038003187475111e+00 -5.994002978724806e+00 3.504691436289792e+00 4.757347443944341e+00 9.198649545415356e+03 + 83220 1.014766158826204e+00 -5.989551977536405e+00 -6.003520644516099e+00 3.709282543473920e+00 4.629072296032287e+00 9.227876056548037e+03 + 83240 1.018346792526051e+00 -5.990782142697840e+00 -6.004885192513239e+00 3.750348225475986e+00 4.669366330996064e+00 9.232038947299005e+03 + 83260 1.015571821192288e+00 -5.981933779793769e+00 -5.996906924147795e+00 3.749803079314772e+00 4.663824967347356e+00 9.207568813295635e+03 + 83280 9.943961569784933e-01 -5.945717494592668e+00 -6.052502029840040e+00 3.954573104165176e+00 4.341399777921341e+00 9.378924718400589e+03 + 83300 1.043885155428620e+00 -6.017722407752172e+00 -6.035092894039782e+00 3.594212292435290e+00 4.494468272097770e+00 9.325095841248085e+03 + 83320 1.037014053333739e+00 -6.011075400488394e+00 -6.030515364624465e+00 3.588544718010921e+00 4.476917435616874e+00 9.310965887118535e+03 + 83340 1.029529637881501e+00 -6.009944070411532e+00 -5.997248126161251e+00 3.593564848813588e+00 4.666466925389724e+00 9.208589489633314e+03 + 83360 9.591201553998010e-01 -5.919485944033962e+00 -5.985337865888630e+00 4.087354010232805e+00 4.709222084391331e+00 9.172075084993483e+03 + 83380 9.766581225209140e-01 -5.961946950640565e+00 -5.958339663656905e+00 3.923084955603569e+00 4.943798555689600e+00 9.089565265744966e+03 + 83400 9.050127981097149e-01 -5.871690921835113e+00 -5.967297999309450e+00 4.388641168024956e+00 4.839650534019895e+00 9.116903250644124e+03 + 83420 9.848251829693634e-01 -6.005056569825634e+00 -5.977494642937002e+00 3.680223517531469e+00 4.838488366920391e+00 9.148084583993277e+03 + 83440 1.016800402521320e+00 -6.068936098848679e+00 -6.019120903282239e+00 3.262149330341355e+00 4.548195892160454e+00 9.275859764394107e+03 + 83460 1.019841436712444e+00 -6.093917670016561e+00 -6.012138071065612e+00 3.176889930081356e+00 4.646481042609736e+00 9.254367185931698e+03 + 83480 1.003217383286779e+00 -6.092085435277543e+00 -6.012574432058622e+00 3.213061279453906e+00 4.669625764224936e+00 9.255705666724227e+03 + 83500 9.712140943410815e-01 -6.068724918203396e+00 -5.978783004821642e+00 3.365808941211628e+00 4.882269326315773e+00 9.152035845497425e+03 + 83520 9.351480405057435e-01 -6.034498724117337e+00 -5.942652900435311e+00 3.565565107703276e+00 5.092958040380745e+00 9.041820389784802e+03 + 83540 9.520760133223785e-01 -6.073432005486771e+00 -5.970423468370412e+00 3.313647321633618e+00 4.905138282275351e+00 9.126453974903852e+03 + 83560 9.587634495166762e-01 -6.090437245940383e+00 -5.969542327879497e+00 3.195499162256489e+00 4.889696490190206e+00 9.123805148684696e+03 + 83580 9.453853684187936e-01 -6.072023563847937e+00 -5.973611591882420e+00 3.294349963721530e+00 4.859446735950973e+00 9.136248375061734e+03 + 83600 9.756426668302093e-01 -6.110807216968216e+00 -6.011334169689279e+00 3.092480856488386e+00 4.663670487368362e+00 9.251897575630841e+03 + 83620 9.479774549645172e-01 -6.059176054584704e+00 -6.031703544688195e+00 3.387070582732158e+00 4.544821985915076e+00 9.314648548461924e+03 + 83640 9.558524319208359e-01 -6.054644397050641e+00 -5.990848510322888e+00 3.426127526154075e+00 4.792453380126402e+00 9.188991474480565e+03 + 83660 9.996958752000751e-01 -6.090582422911696e+00 -6.020620179466914e+00 3.223403911124014e+00 4.625137939606135e+00 9.280463089091365e+03 + 83680 9.556055636515890e-01 -5.986225752764834e+00 -6.056544789639936e+00 3.720282393126126e+00 4.316499601553497e+00 9.391437248171100e+03 + 83700 1.004270147491593e+00 -6.015118799122514e+00 -6.008143564792480e+00 3.617013343908596e+00 4.657066218845680e+00 9.242076094225447e+03 + 83720 9.509790594218741e-01 -5.895179902246756e+00 -6.018604063240325e+00 4.245418430554174e+00 4.536697798301915e+00 9.274218715130617e+03 + 83740 9.990221976277095e-01 -5.930881406378872e+00 -5.981191908474198e+00 4.060807542088274e+00 4.771916853531878e+00 9.159365631033959e+03 + 83760 1.084288441071522e+00 -6.027211076451009e+00 -5.979305219404575e+00 3.523837482610969e+00 4.798920327179009e+00 9.153602479009949e+03 + 83780 1.024696249423569e+00 -5.919523380043979e+00 -6.004723155350313e+00 4.144548120656857e+00 4.655317826225271e+00 9.231519564709692e+03 + 83800 1.038327445677467e+00 -5.930470731987985e+00 -5.971570496267838e+00 4.101433989575588e+00 4.865432782912702e+00 9.129965879446505e+03 + 83820 1.058953966306702e+00 -5.956589960259331e+00 -5.948642250851357e+00 3.876615710347072e+00 4.922252687671715e+00 9.060019062186528e+03 + 83840 1.085130281325625e+00 -5.994645971336067e+00 -5.954809060682066e+00 3.710885294797575e+00 4.939635000514853e+00 9.078813900342915e+03 + 83860 9.505496123761860e-01 -5.797725186350079e+00 -6.031124250959805e+00 4.749844011375724e+00 4.409630463998160e+00 9.312811221200598e+03 + 83880 1.072353207199692e+00 -5.985641787520367e+00 -5.960386131782522e+00 3.777966719288048e+00 4.922988602834852e+00 9.095816834907035e+03 + 83900 1.081197750843141e+00 -6.008457305377542e+00 -5.990969671092563e+00 3.662127235831262e+00 4.762543938098270e+00 9.189343607931487e+03 + 83920 1.048181938080227e+00 -5.975639785599963e+00 -6.024377732711780e+00 3.847223285000534e+00 4.567362450511546e+00 9.292036989119279e+03 + 83940 9.974070766158065e-01 -5.921653994890525e+00 -6.028522190460560e+00 4.098904479766022e+00 4.485250763003060e+00 9.304811549187571e+03 + 83960 1.024565318307581e+00 -5.984335895569356e+00 -5.993707275696535e+00 3.793276926435241e+00 4.739465011528592e+00 9.197733120148190e+03 + 83980 1.017865506007781e+00 -5.996211530564809e+00 -6.003502524950385e+00 3.719023011394895e+00 4.677156993355183e+00 9.227815525551292e+03 + 84000 1.063023473089425e+00 -6.085401331103303e+00 -5.967995005351979e+00 3.295559973191711e+00 4.969725264226009e+00 9.119075273742701e+03 + 84020 9.626480567481749e-01 -5.959266524291955e+00 -6.040353312555385e+00 3.900191108186294e+00 4.434578221837750e+00 9.341321532034326e+03 + 84040 9.740875659371052e-01 -5.994988167987064e+00 -5.996930071223980e+00 3.694373973546555e+00 4.683223264651628e+00 9.207625124835218e+03 + 84060 9.859363850000875e-01 -6.028656148211839e+00 -6.001996548011524e+00 3.522713626221400e+00 4.675797176131406e+00 9.223172313891573e+03 + 84080 9.863605046776409e-01 -6.039437475193036e+00 -5.985956899618871e+00 3.464218810156083e+00 4.771312551195267e+00 9.173987158340749e+03 + 84100 1.012004730622638e+00 -6.082300939317780e+00 -5.984241515360643e+00 3.273563994066553e+00 4.836636381075250e+00 9.168744857989273e+03 + 84120 9.441818332748819e-01 -5.983927778044958e+00 -6.020740314371048e+00 3.783207696829967e+00 4.571824416523967e+00 9.280816078285647e+03 + 84140 1.003735579161963e+00 -6.072891129443262e+00 -5.953182250356521e+00 3.286290688466424e+00 4.973677597071654e+00 9.073891964410162e+03 + 84160 1.014102044223502e+00 -6.084287447544094e+00 -5.973728111176798e+00 3.289706781501494e+00 4.924555599924517e+00 9.136554417122343e+03 + 84180 1.030667087450818e+00 -6.104118217255365e+00 -5.957883531159842e+00 3.138287071451464e+00 4.977989268756496e+00 9.088242342759379e+03 + 84200 9.635870860559802e-01 -5.999864047929025e+00 -5.993663154250734e+00 3.716336874339766e+00 4.751943365425710e+00 9.197605645241667e+03 + 84220 9.756476251707782e-01 -6.012079911487096e+00 -5.998769136796401e+00 3.626825188761676e+00 4.703257716871369e+00 9.213281132239492e+03 + 84240 9.311007579445192e-01 -5.939391573686821e+00 -6.052878013655013e+00 3.945568685009747e+00 4.293911984742564e+00 9.380101204330451e+03 + 84260 9.421539869031614e-01 -5.950239057997283e+00 -5.994744204386438e+00 3.985111583828730e+00 4.729556146113056e+00 9.200910452239141e+03 + 84280 1.002659459250448e+00 -6.033340607988116e+00 -5.949710859198843e+00 3.491172989930198e+00 4.971387949140002e+00 9.063313645989736e+03 + 84300 1.028882939297666e+00 -6.061268061824960e+00 -5.973139035199505e+00 3.385702106753686e+00 4.891752615559841e+00 9.134764599736671e+03 + 84320 1.050556841409569e+00 -6.082754158083442e+00 -5.980699056337042e+00 3.267541952101660e+00 4.853558139305442e+00 9.157886728592446e+03 + 84340 9.488794747833637e-01 -5.921530994269777e+00 -6.014419044387854e+00 4.158165408761873e+00 4.624787850604577e+00 9.261351371018713e+03 + 84360 1.038200494760108e+00 -6.044506540190827e+00 -5.982980751004765e+00 3.451289980154667e+00 4.804580582746139e+00 9.164884011670158e+03 + 84380 1.015874987914531e+00 -6.000999761359258e+00 -5.976493103950714e+00 3.694994977470465e+00 4.835715996703296e+00 9.145028074575834e+03 + 84400 1.021455527831266e+00 -5.999277917145500e+00 -6.009530888450911e+00 3.653680194684402e+00 4.594806046806551e+00 9.246336841982358e+03 + 84420 1.011249625420927e+00 -5.974766528531382e+00 -6.009996701026735e+00 3.788172313853365e+00 4.585875211533477e+00 9.247748722970166e+03 + 84440 9.885488638284456e-01 -5.931224966320283e+00 -5.992945245050993e+00 4.102130768448835e+00 4.747723376794828e+00 9.195369814926698e+03 + 84460 1.013868591842864e+00 -5.955685417076170e+00 -6.043720124581638e+00 3.929108447523185e+00 4.423599533699830e+00 9.351738839543588e+03 + 84480 1.023178145254378e+00 -5.958569108421551e+00 -6.003145292313922e+00 3.935349021691608e+00 4.679385675639447e+00 9.226712453284414e+03 + 84500 1.033680571412560e+00 -5.963276928221003e+00 -6.006046923398692e+00 3.897035522606297e+00 4.651443591660639e+00 9.235612491930568e+03 + 84520 1.107613302758993e+00 -6.060227902750468e+00 -5.963274513928152e+00 3.396207309414449e+00 4.952928671520624e+00 9.104644329489218e+03 + 84540 1.115552755307359e+00 -6.059512397370105e+00 -5.978545363924956e+00 3.386308152801442e+00 4.851233388451421e+00 9.151283707217137e+03 + 84560 1.053060369095397e+00 -5.956808412135927e+00 -5.946038283757595e+00 3.945569091247287e+00 5.007412835067652e+00 9.052120651322619e+03 + 84580 9.833364925292210e-01 -5.843588597209396e+00 -5.979623428320504e+00 4.480689307555427e+00 4.699556255993371e+00 9.154530564177525e+03 + 84600 1.046990905042889e+00 -5.927968927179419e+00 -5.955934127636914e+00 4.040980744992873e+00 4.880400236365154e+00 9.082190122393538e+03 + 84620 1.094798652826411e+00 -5.989544201868482e+00 -5.933490700978428e+00 3.792751150030084e+00 5.114619026392004e+00 9.013969341971235e+03 + 84640 1.080848303878804e+00 -5.963795496740542e+00 -6.021003549144867e+00 3.793982961739441e+00 4.465485471916311e+00 9.281608944297730e+03 + 84660 1.047801247677787e+00 -5.917733155158873e+00 -5.996001484514320e+00 4.116194183006462e+00 4.666765323862669e+00 9.204754545772752e+03 + 84680 1.036958011131287e+00 -5.910869812602576e+00 -5.999753469962777e+00 4.155734861590705e+00 4.645351146326908e+00 9.216277133189240e+03 + 84700 1.063312566410562e+00 -5.967176374055030e+00 -6.007163273227895e+00 3.886335985647815e+00 4.656725022644576e+00 9.239031157810254e+03 + 84720 1.078939717618497e+00 -6.015721765907712e+00 -5.977914124883577e+00 3.652475726773897e+00 4.869573052248025e+00 9.149365832682635e+03 + 84740 1.011509517041024e+00 -5.946472969283246e+00 -6.005300594431811e+00 3.989647330601052e+00 4.651850003452417e+00 9.233347507168537e+03 + 84760 1.011400443152279e+00 -5.982921794410605e+00 -6.040714025272359e+00 3.763503146352312e+00 4.431651213425301e+00 9.342470234948243e+03 + 84780 1.003232673078363e+00 -6.007642137740804e+00 -6.031016747453735e+00 3.649779345233395e+00 4.515558719052587e+00 9.312492751827898e+03 + 84800 1.006380634367237e+00 -6.047255009435099e+00 -5.997239780097142e+00 3.432214638175145e+00 4.719409824865417e+00 9.208575871173738e+03 + 84820 9.821203757111072e-01 -6.040239702459711e+00 -5.933706141608698e+00 3.429973256398806e+00 5.041705448820581e+00 9.014652711029765e+03 + 84840 9.076120870306131e-01 -5.947169588226523e+00 -5.983372642556154e+00 3.980835552847954e+00 4.772952012482663e+00 9.166030929046821e+03 + 84860 9.784903389837658e-01 -6.062465844607673e+00 -5.983517674246301e+00 3.355674514538745e+00 4.809007125943626e+00 9.166510163039353e+03 + 84880 8.970553255090351e-01 -5.945773316902605e+00 -6.011071970248167e+00 3.978655721942389e+00 4.603700749498228e+00 9.251070889548220e+03 + 84900 9.327425249704981e-01 -5.998716635399487e+00 -6.001688346147189e+00 3.681252141219871e+00 4.664188118235813e+00 9.222227245503094e+03 + 84920 9.968843820319946e-01 -6.089448113487530e+00 -5.991879211991392e+00 3.183812443781767e+00 4.744068174911293e+00 9.192145826358030e+03 + 84940 9.925325040995808e-01 -6.076997804422980e+00 -5.950960262695428e+00 3.279385423811021e+00 5.003112492657172e+00 9.067109208753658e+03 + 84960 9.247646788477312e-01 -5.964268496852905e+00 -5.980385589722500e+00 3.889856409506395e+00 4.797309568137118e+00 9.156924339451922e+03 + 84980 1.040332951259129e+00 -6.114904153252266e+00 -5.999899764676422e+00 3.100406665970607e+00 4.760779662044722e+00 9.216754805603863e+03 + 85000 9.828995903922781e-01 -6.006652692534014e+00 -6.060176068087305e+00 3.586020387852435e+00 4.278680882709841e+00 9.402711802372669e+03 + 85020 9.825352926294716e-01 -5.981944301955520e+00 -6.019857316036861e+00 3.830406521192918e+00 4.612704127317892e+00 9.278093086625277e+03 + 85040 9.614071608802945e-01 -5.923977434466204e+00 -6.041745807208662e+00 4.046377829079951e+00 4.370133608195974e+00 9.345633764835229e+03 + 85060 1.037002772868444e+00 -6.006578002910302e+00 -5.980730300628804e+00 3.668040689543218e+00 4.816462195962581e+00 9.157979377937500e+03 + 85080 1.064511873617721e+00 -6.015821357766881e+00 -5.966826075840783e+00 3.664517333616874e+00 4.945855824431904e+00 9.115487212727474e+03 + 85100 1.034572992152146e+00 -5.936612261577809e+00 -6.044261201054148e+00 4.016732229111636e+00 4.398595360018950e+00 9.353416605843284e+03 + 85120 1.109621039117556e+00 -6.015152543787456e+00 -6.049337120672351e+00 3.601508771632120e+00 4.405215641112881e+00 9.369152675671798e+03 + 85140 1.044439554948636e+00 -5.894913518180918e+00 -6.022026340336833e+00 4.260747622555732e+00 4.530846127090813e+00 9.284795178680470e+03 + 85160 1.054154000198377e+00 -5.894232927324143e+00 -5.985227189672960e+00 4.268574026671506e+00 4.746070890948004e+00 9.171744921772555e+03 + 85180 1.082415621933125e+00 -5.922360400656340e+00 -6.049933229960412e+00 4.063325439096360e+00 4.330782511400850e+00 9.370991125204522e+03 + 85200 1.062324129292481e+00 -5.889618039057884e+00 -6.094331761158963e+00 4.202756608709528e+00 4.027258737059020e+00 9.508912775431865e+03 + 85220 1.054530618829150e+00 -5.889400060294108e+00 -6.026267504765381e+00 4.291112817969164e+00 4.505198771646532e+00 9.297855174025597e+03 + 85240 1.091453609218204e+00 -5.973861807053139e+00 -5.988717662033776e+00 3.826974347739303e+00 4.741669729504362e+00 9.182444066597107e+03 + 85260 1.030568064822196e+00 -5.940882714685558e+00 -6.042657048255553e+00 3.967956350484019e+00 4.383552377597891e+00 9.348462839314976e+03 + 85280 1.050457991648738e+00 -6.045507416897305e+00 -6.002992154019678e+00 3.500030942467963e+00 4.744160161126965e+00 9.226233380537873e+03 + 85300 9.853197970386394e-01 -6.014915818602343e+00 -6.006875808687411e+00 3.573982386677999e+00 4.620149367797048e+00 9.238170596655258e+03 + 85320 9.347668572239625e-01 -5.979049617427647e+00 -5.994026806740697e+00 3.800757267403786e+00 4.714755928655691e+00 9.198715517263152e+03 + 85340 9.221780353967184e-01 -5.982824224429404e+00 -5.982227095735458e+00 3.820219882876930e+00 4.823648688242936e+00 9.162582927053634e+03 + 85360 9.764486559168234e-01 -6.076717936255564e+00 -5.976330806329412e+00 3.339140783788716e+00 4.915579218682831e+00 9.144552571687462e+03 + 85380 9.401920848170242e-01 -6.032168723991283e+00 -6.027273372986587e+00 3.517207217180409e+00 4.545317080202496e+00 9.300974850680916e+03 + 85400 9.612960574008276e-01 -6.067946528902161e+00 -5.997291199165343e+00 3.342145774911700e+00 4.747859612137448e+00 9.208762989549179e+03 + 85420 9.377866397214502e-01 -6.031852136567582e+00 -6.030997901092457e+00 3.570814742153285e+00 4.575719894443965e+00 9.312452679188582e+03 + 85440 9.799813923517667e-01 -6.089505335114237e+00 -6.011498771067555e+00 3.228574213486147e+00 4.676499975718967e+00 9.252372608952413e+03 + 85460 9.622601828817088e-01 -6.054199967062465e+00 -5.999086638120253e+00 3.432888329967233e+00 4.749357593513507e+00 9.214253698999037e+03 + 85480 9.600289242558570e-01 -6.036745659129167e+00 -5.999232664870951e+00 3.503645190843773e+00 4.719050608991548e+00 9.214681745766729e+03 + 85500 9.844343791866615e-01 -6.053429121091479e+00 -5.989910577674925e+00 3.461235270945828e+00 4.825968576706503e+00 9.186108538637585e+03 + 85520 9.257659381545152e-01 -5.941086115737090e+00 -6.011351189942568e+00 4.009304932778993e+00 4.605832003206044e+00 9.251914021077599e+03 + 85540 1.009506250378244e+00 -6.037926234448069e+00 -5.963980054476973e+00 3.519125789402117e+00 4.943736197930514e+00 9.106807738479763e+03 + 85560 9.859800201403579e-01 -5.972116901362870e+00 -5.981448730430325e+00 3.874708529775036e+00 4.821123723173827e+00 9.160190884891501e+03 + 85580 1.052143637412863e+00 -6.039895898123552e+00 -5.994148644886725e+00 3.497048182492496e+00 4.759735989942915e+00 9.199087099901362e+03 + 85600 1.058768015398657e+00 -6.024244761555505e+00 -6.019642780508754e+00 3.502547912748343e+00 4.528973200073058e+00 9.277440436016745e+03 + 85620 1.009920271100476e+00 -5.931097261715783e+00 -5.994238868221135e+00 4.076340710664077e+00 4.713771834978318e+00 9.199356855586142e+03 + 85640 1.041399862817973e+00 -5.959636945117298e+00 -5.995379939850435e+00 3.871154947261358e+00 4.665913140293130e+00 9.202888310664857e+03 + 85660 1.017829787777435e+00 -5.911510876937125e+00 -6.009357780039622e+00 4.164938250268161e+00 4.603086190894301e+00 9.245784414975436e+03 + 85680 1.094147395880270e+00 -6.019483625254833e+00 -6.009677509785117e+00 3.547576231689391e+00 4.603884464207963e+00 9.246760709267426e+03 + 85700 9.709542438746669e-01 -5.836899025098720e+00 -6.027183605239897e+00 4.562068923454702e+00 4.469425417840454e+00 9.300652415819204e+03 + 85720 1.002961370673075e+00 -5.888890485806784e+00 -5.972440469876924e+00 4.364824887072399e+00 4.885067949223406e+00 9.132606226731294e+03 + 85740 1.044607807165134e+00 -5.956533849061823e+00 -5.949731854778598e+00 3.922973690313882e+00 4.962031794093375e+00 9.063379992253811e+03 + 85760 1.067385769092559e+00 -5.997717218182710e+00 -6.025393095298249e+00 3.674270328182148e+00 4.515351158956582e+00 9.295154675213043e+03 + 85780 1.027066451763875e+00 -5.956551080368008e+00 -6.044368445857954e+00 3.909713481401495e+00 4.405452579064834e+00 9.353756871823278e+03 + 85800 9.967904996587238e-01 -5.943730600551415e+00 -6.032147811274672e+00 3.922231136510339e+00 4.414525830018258e+00 9.316002506691826e+03 + 85820 9.506852219983875e-01 -5.917362100605700e+00 -6.035634187671103e+00 4.140701947867655e+00 4.461565321391787e+00 9.326757759666032e+03 + 85840 9.822477038803291e-01 -6.012738532940872e+00 -5.958785845472708e+00 3.711287230078281e+00 5.021091910671880e+00 9.090951803466263e+03 + 85860 9.792343353101105e-01 -6.053074860897378e+00 -5.967397484349865e+00 3.408768711489549e+00 4.900741466156537e+00 9.117225683190703e+03 + 85880 9.507024694708170e-01 -6.044372398184112e+00 -5.991505215916998e+00 3.455049839506120e+00 4.758621381253905e+00 9.190985941813682e+03 + 85900 9.095976824642882e-01 -6.007440790071660e+00 -6.024269566182666e+00 3.635221256742097e+00 4.538587820068017e+00 9.291714986115618e+03 + 85920 9.403146901392347e-01 -6.066331653738342e+00 -5.982950075719838e+00 3.331471633353629e+00 4.810261557593380e+00 9.164797554351633e+03 + 85940 9.286568894617255e-01 -6.051532697457348e+00 -5.991186291288416e+00 3.419942222206747e+00 4.766460625004931e+00 9.190027284232045e+03 + 85960 9.258456306193770e-01 -6.044875835797646e+00 -6.003934163406067e+00 3.462163400219690e+00 4.697256818795472e+00 9.229149786838512e+03 + 85980 9.233124071239158e-01 -6.034354795058297e+00 -5.993234079993287e+00 3.470445547107038e+00 4.706567056420417e+00 9.196311526134632e+03 + 86000 9.901823890011726e-01 -6.122134951389052e+00 -5.976031571837702e+00 3.047889016994294e+00 4.886837231803066e+00 9.143626868601103e+03 + 86020 9.324193332483318e-01 -6.020814132479530e+00 -6.026343156954042e+00 3.557794720265452e+00 4.526046206119034e+00 9.298113832517398e+03 + 86040 9.811158844857231e-01 -6.075011661955508e+00 -5.990942201501694e+00 3.339388596664093e+00 4.822128448296856e+00 9.189267030954768e+03 + 86060 1.009158927515387e+00 -6.097284072883913e+00 -6.021864191258642e+00 3.169911277606867e+00 4.602983909088141e+00 9.284301325366194e+03 + 86080 9.447266107967174e-01 -5.984345511589408e+00 -6.037150306126332e+00 3.783429547075847e+00 4.480216245329284e+00 9.331463326678228e+03 + 86100 1.001140021333597e+00 -6.052574072969052e+00 -5.976969752714588e+00 3.449967293427956e+00 4.884099000059833e+00 9.146495045813270e+03 + 86120 1.026793659482529e+00 -6.074568575323879e+00 -6.016104030820616e+00 3.272976213695189e+00 4.608688675591947e+00 9.266537635400178e+03 + 86140 1.007712141419936e+00 -6.029472745528380e+00 -6.012213620481358e+00 3.527201169182663e+00 4.626305736043629e+00 9.254587376063651e+03 + 86160 9.970866488795793e-01 -6.000262530249512e+00 -5.985544497986535e+00 3.714730833387569e+00 4.799244052249719e+00 9.172717098246720e+03 + 86180 9.627700827113690e-01 -5.936386784476974e+00 -6.007382149949372e+00 4.018973895589079e+00 4.611307520549269e+00 9.239703685461185e+03 + 86200 9.851736955909310e-01 -5.958245830799830e+00 -5.964980344830656e+00 3.893210393567562e+00 4.854539771839876e+00 9.109865244998557e+03 + 86220 9.838220290279112e-01 -5.944170664992822e+00 -6.015716707328028e+00 3.948634494488279e+00 4.537806047685260e+00 9.265345298441100e+03 + 86240 9.300764776991710e-01 -5.851954469688395e+00 -6.053044317482088e+00 4.466560114740895e+00 4.311871090156131e+00 9.380581578071953e+03 + 86260 1.048231720162885e+00 -6.017516715127877e+00 -6.000770443682439e+00 3.605701636072709e+00 4.701861318189545e+00 9.219386647092133e+03 + 86280 1.025878046960969e+00 -5.978143006356822e+00 -5.992094524925574e+00 3.816578223259520e+00 4.736466444647225e+00 9.192768551323279e+03 + 86300 1.035129427962068e+00 -5.988285753344441e+00 -5.984142314255219e+00 3.786980079155581e+00 4.810772347601024e+00 9.168418848412133e+03 + 86320 1.010418922445231e+00 -5.950414692766503e+00 -6.019689546406857e+00 3.953441180988162e+00 4.555654251136296e+00 9.277570185623292e+03 + 86340 9.794766581585499e-01 -5.905870141531375e+00 -6.021134133528297e+00 4.161771850171155e+00 4.499908171079718e+00 9.282015507754164e+03 + 86360 9.810062605206112e-01 -5.909291926039430e+00 -6.023998440422223e+00 4.161882189894559e+00 4.503219633532829e+00 9.290873613289519e+03 + 86380 1.098105620575937e+00 -6.087882471804434e+00 -6.004815896089561e+00 3.198247032461117e+00 4.675228164726967e+00 9.231853120089714e+03 + 86400 1.048336914352166e+00 -6.029648733284600e+00 -5.953110982188559e+00 3.610260420485484e+00 5.049752031457656e+00 9.073660314263341e+03 + 86420 1.012538946768838e+00 -6.005726585200223e+00 -5.987220150044053e+00 3.690143526610705e+00 4.796410341139020e+00 9.177840139522690e+03 + 86440 1.002621240991645e+00 -6.038224016795718e+00 -5.984332400837464e+00 3.523231084789116e+00 4.832685083322028e+00 9.169013131679436e+03 + 86460 1.000529008602647e+00 -6.093210732685285e+00 -5.981258498451524e+00 3.241281504031420e+00 4.884128557553931e+00 9.159625012400855e+03 + 86480 9.723607039197102e-01 -6.102630023928666e+00 -5.981595957062354e+00 3.128014093070997e+00 4.823010434978672e+00 9.160661845306495e+03 + 86500 9.503430146730145e-01 -6.108577705901904e+00 -5.991581359532315e+00 3.079823719503519e+00 4.751634845483791e+00 9.191249698307061e+03 + 86520 9.441325124027693e-01 -6.125279977027744e+00 -5.973901548502222e+00 3.008451574496290e+00 4.877689936825943e+00 9.137125274417156e+03 + 86540 9.475814530674008e-01 -6.144338066568928e+00 -5.962506936914583e+00 2.903099851485722e+00 4.947202336237345e+00 9.102317201707972e+03 + 86560 8.609993414277525e-01 -6.017393622644499e+00 -5.986321509585845e+00 3.643760247061969e+00 4.822181128638716e+00 9.175083840360357e+03 + 86580 9.341647751689643e-01 -6.117176932288999e+00 -5.971336486534417e+00 3.110781208791667e+00 4.948219617050514e+00 9.129278463691720e+03 + 86600 9.723429390489077e-01 -6.155459086719645e+00 -6.000039669205791e+00 2.856651623784922e+00 4.749093970226604e+00 9.217188414150622e+03 + 86620 9.511157908261799e-01 -6.099726757317611e+00 -5.988051415451066e+00 3.170138635299740e+00 4.811395730000742e+00 9.180425878340931e+03 + 86640 9.563994875475419e-01 -6.080442959965525e+00 -5.980579724334798e+00 3.335560465298761e+00 4.908990618076169e+00 9.157521832691118e+03 + 86660 9.522584205080881e-01 -6.040131731837635e+00 -6.024724880212442e+00 3.481926551774818e+00 4.570395078009260e+00 9.293095459050255e+03 + 86680 9.777711737250201e-01 -6.045006457417828e+00 -5.944640682983342e+00 3.483293884277828e+00 5.059609692634041e+00 9.047886045117921e+03 + 86700 9.507642716965754e-01 -5.972621374764476e+00 -5.969374826022224e+00 3.782822337996854e+00 4.801464523276655e+00 9.123268553680429e+03 + 86720 9.378947495534252e-01 -5.923209118693119e+00 -5.969720308003746e+00 4.093048217980206e+00 4.825973771375308e+00 9.124303108253707e+03 + 86740 9.300525171645357e-01 -5.884558462569068e+00 -5.996670914335820e+00 4.294257700101445e+00 4.650490652710912e+00 9.206809031030540e+03 + 86760 9.948575900907847e-01 -5.957337027373883e+00 -6.024449657060884e+00 3.905224831872771e+00 4.519853726564135e+00 9.292215647006642e+03 + 86780 1.017906282021607e+00 -5.973441698192220e+00 -5.985815188937838e+00 3.801822708018534e+00 4.730772209365686e+00 9.173570849787326e+03 + 86800 1.020585852263640e+00 -5.964153940052054e+00 -5.998443576406018e+00 3.922754277664653e+00 4.725857879416118e+00 9.212276872849114e+03 + 86820 1.051463283449119e+00 -6.002302504671576e+00 -5.964164334119651e+00 3.713836833297539e+00 4.932832110469510e+00 9.107366381470671e+03 + 86840 9.835398451248292e-01 -5.897408799694920e+00 -6.009397412806873e+00 4.242524231830249e+00 4.599468285159546e+00 9.245925698073286e+03 + 86860 1.009201434053627e+00 -5.933143278023069e+00 -6.027530944891758e+00 4.009492030919544e+00 4.467503441315290e+00 9.301765187583274e+03 + 86880 9.930727082850628e-01 -5.911495649528096e+00 -6.040557853625314e+00 4.171624891049028e+00 4.430529742811265e+00 9.341960086467818e+03 + 86900 9.782995908540587e-01 -5.895438113976540e+00 -6.039429351501269e+00 4.287858262558817e+00 4.461038294119832e+00 9.338442240696626e+03 + 86920 1.051454359101160e+00 -6.011244807038396e+00 -5.978079271750777e+00 3.604712341393579e+00 4.795153977365088e+00 9.149887473535518e+03 + 86940 1.035537816964454e+00 -5.997686581281909e+00 -5.982131052929835e+00 3.725045186179885e+00 4.814367437187722e+00 9.162273779951787e+03 + 86960 9.934353907898176e-01 -5.950419205137097e+00 -5.989086585111171e+00 3.974466513127480e+00 4.752432433558630e+00 9.183586032699397e+03 + 86980 1.010843066517213e+00 -5.994079481948472e+00 -5.989448526979586e+00 3.716020308210997e+00 4.742611968280305e+00 9.184701879340662e+03 + 87000 1.028179011090804e+00 -6.044421267517758e+00 -6.002385802602853e+00 3.473452633436020e+00 4.714826777944578e+00 9.224387437240021e+03 + 87020 9.772546124236521e-01 -5.999858301159904e+00 -6.055815168180567e+00 3.655973335012374e+00 4.334660345282541e+00 9.389183810980048e+03 + 87040 9.810912147955352e-01 -6.044940375612524e+00 -6.029157319645355e+00 3.443214727675336e+00 4.533843477458836e+00 9.306796734856734e+03 + 87060 9.336640837498928e-01 -6.015276728937685e+00 -6.046081139140911e+00 3.613855481714273e+00 4.436971791360277e+00 9.359065783129228e+03 + 87080 9.610635011873477e-01 -6.096249005205204e+00 -5.984590775297091e+00 3.148106231488717e+00 4.789265066676332e+00 9.169830326625959e+03 + 87100 9.190918508981027e-01 -6.065445250568673e+00 -5.979417307473307e+00 3.360901242330631e+00 4.854887004365390e+00 9.153969321197232e+03 + 87120 9.590932301035952e-01 -6.143192546092624e+00 -5.981155394668838e+00 2.897835325944201e+00 4.828277724587727e+00 9.159280196509071e+03 + 87140 9.129054277642863e-01 -6.083115279295972e+00 -6.000668811305125e+00 3.218882557446016e+00 4.692302935199143e+00 9.219127426786567e+03 + 87160 9.517076453840643e-01 -6.140760202437679e+00 -5.972469485140557e+00 2.975491332208631e+00 4.941842673833040e+00 9.132742771803876e+03 + 87180 9.083911346789949e-01 -6.069865298816334e+00 -5.996414868670912e+00 3.333957879320586e+00 4.755721615632932e+00 9.206050527195493e+03 + 87200 8.694811121963143e-01 -5.998976877815699e+00 -6.007044219850076e+00 3.675673937988148e+00 4.629350011609607e+00 9.238696623454296e+03 + 87220 9.657907789254421e-01 -6.123697331982244e+00 -5.966564554842357e+00 3.041286939519468e+00 4.943567662075376e+00 9.114684911534630e+03 + 87240 8.659808640343858e-01 -5.955356372344164e+00 -5.974151024037845e+00 3.959485213528181e+00 4.851563415040117e+00 9.137849180848829e+03 + 87260 9.460300507880154e-01 -6.050513645709183e+00 -6.009162930655269e+00 3.447603632698397e+00 4.685045837540443e+00 9.245195680682584e+03 + 87280 9.743365869069814e-01 -6.072164706622786e+00 -5.949231685209868e+00 3.327454701595865e+00 5.033355134372423e+00 9.061856778454079e+03 + 87300 9.421470225058499e-01 -6.007720219230656e+00 -5.961063570639872e+00 3.632177800129543e+00 4.900087496430860e+00 9.097910676633544e+03 + 87320 9.266191138506514e-01 -5.967053306226990e+00 -5.994851069427507e+00 3.880090331351311e+00 4.720471273363994e+00 9.201248249212116e+03 + 87340 9.819886307166142e-01 -6.032745924777306e+00 -6.014429864507569e+00 3.497045871032811e+00 4.602219523502804e+00 9.261374577228895e+03 + 87360 9.355005914293185e-01 -5.947998242835679e+00 -6.014916387193238e+00 3.977699421223885e+00 4.593445080773411e+00 9.262887026383245e+03 + 87380 1.003769362865478e+00 -6.034100921243784e+00 -6.006401730510238e+00 3.481822082536973e+00 4.640875122164910e+00 9.236718786241656e+03 + 87400 1.047856298596177e+00 -6.085101875734653e+00 -5.989471843975928e+00 3.278743308635994e+00 4.827865749694176e+00 9.184779455274718e+03 + 87420 1.015590305461614e+00 -6.025281894808702e+00 -5.969724533323554e+00 3.589120918655451e+00 4.908139885777082e+00 9.124355298365852e+03 + 87440 9.645413660219903e-01 -5.938319286779325e+00 -5.999114385190316e+00 4.054108408066362e+00 4.705013544979380e+00 9.214304790045649e+03 + 87460 1.007431973336879e+00 -5.988595512711586e+00 -5.994441524241253e+00 3.732862539624038e+00 4.699293836753328e+00 9.200014637446189e+03 + 87480 1.060333034128461e+00 -6.053322148294674e+00 -5.993223076495699e+00 3.450486554814337e+00 4.795584725385357e+00 9.196254799086022e+03 + 87500 1.057545037113472e+00 -6.037262292184003e+00 -5.993159564067867e+00 3.539066007991693e+00 4.792310697709670e+00 9.196065558901540e+03 + 87520 1.047278599180063e+00 -6.013321106364791e+00 -5.990323104024559e+00 3.679711026791906e+00 4.811769115158881e+00 9.187381753743681e+03 + 87540 1.088303633761622e+00 -6.067226969868288e+00 -5.992433332978033e+00 3.356099121527001e+00 4.785575758828745e+00 9.193843191334947e+03 + 87560 1.035595061541619e+00 -5.986970224129592e+00 -5.992898921229306e+00 3.792146877850747e+00 4.758103381641280e+00 9.195265562469473e+03 + 87580 9.797519045405076e-01 -5.904666345334410e+00 -6.062482200923472e+00 4.180285809051187e+00 4.274082744334067e+00 9.409836773212881e+03 + 87600 9.774144848170856e-01 -5.903643347603737e+00 -6.030933539186170e+00 4.243811504441731e+00 4.512891526281915e+00 9.312258660018852e+03 + 87620 9.867231566808101e-01 -5.924698131069157e+00 -5.996529359464201e+00 4.145359535332410e+00 4.732893506041398e+00 9.206363597705726e+03 + 87640 1.019477183472570e+00 -5.983553732907146e+00 -6.008282288193833e+00 3.723092486204243e+00 4.581097295016523e+00 9.242488428942981e+03 + 87660 1.019826568155523e+00 -6.001413590389120e+00 -5.970743280038472e+00 3.726996164876529e+00 4.903109833125140e+00 9.127448375816581e+03 + 87680 9.877081879888713e-01 -5.978156311523732e+00 -5.984813288465212e+00 3.765257863533420e+00 4.727032471771590e+00 9.170486849050903e+03 + 87700 1.011649638114211e+00 -6.043869195862638e+00 -5.986859012474381e+00 3.456275970100892e+00 4.783637265413628e+00 9.176724369387690e+03 + 87720 9.716818513192693e-01 -6.019122274954227e+00 -6.000538220162465e+00 3.588956429022489e+00 4.695668947509970e+00 9.218688664364376e+03 + 87740 9.479561206102147e-01 -6.015055336807865e+00 -6.004252959401319e+00 3.626665005214346e+00 4.688693927945237e+00 9.230065131778609e+03 + 87760 8.976716892220502e-01 -5.968456780034160e+00 -6.007302375530991e+00 3.859760309005633e+00 4.636702888326353e+00 9.239480844404150e+03 + 87780 9.379119102661597e-01 -6.049674040422585e+00 -5.971826808497644e+00 3.439340444845787e+00 4.886351297379007e+00 9.130761711466712e+03 + 87800 8.998355324421516e-01 -6.006759100234714e+00 -5.991389624415831e+00 3.662519921909108e+00 4.750773830479835e+00 9.190638278196766e+03 + 87820 9.375292563606198e-01 -6.068956657467351e+00 -5.989896409512418e+00 3.283205541336976e+00 4.737181719628035e+00 9.186058100125234e+03 + 87840 9.164034092509135e-01 -6.036344705777927e+00 -6.032670241999687e+00 3.478898811113268e+00 4.499998150749356e+00 9.317604079653694e+03 + 87860 9.821728884476075e-01 -6.126836046230142e+00 -5.991955461795866e+00 3.037047839383811e+00 4.811553027908404e+00 9.192393674894165e+03 + 87880 9.845279846120530e-01 -6.117218810761668e+00 -5.984651578876313e+00 3.072673683279847e+00 4.833895243478388e+00 9.170009891233740e+03 + 87900 9.680502137562979e-01 -6.072649224996309e+00 -5.991722830860368e+00 3.307570835592183e+00 4.772262714039775e+00 9.191673561325759e+03 + 87920 8.901706883363506e-01 -5.929195483000423e+00 -6.025137652823442e+00 4.039619717269023e+00 4.488704931142447e+00 9.294394070338809e+03 + 87940 1.053627785711828e+00 -6.132224004877521e+00 -6.000858460839430e+00 2.975720905826274e+00 4.730042188445234e+00 9.219714956200476e+03 + 87960 1.063882602942604e+00 -6.104615371265594e+00 -5.995823434548062e+00 3.176910154155445e+00 4.801610290285311e+00 9.204231529961498e+03 + 87980 1.009996573159096e+00 -5.987294857969151e+00 -5.986832462907298e+00 3.804089942703784e+00 4.806745086704349e+00 9.176676959946179e+03 + 88000 1.031208830412600e+00 -5.987289221284250e+00 -6.025258154438593e+00 3.769899513910123e+00 4.551876024064477e+00 9.294764286497431e+03 + 88020 1.020766585640555e+00 -5.949837510193895e+00 -6.059001491794567e+00 3.923552728423933e+00 4.296716253001315e+00 9.399071406785341e+03 + 88040 1.058608729907162e+00 -5.994697730438595e+00 -5.999891741604735e+00 3.733519544084634e+00 4.703694728198033e+00 9.216713203154586e+03 + 88060 1.028486550791528e+00 -5.946233621117347e+00 -5.983732471903285e+00 4.049785802329854e+00 4.834461598188595e+00 9.167139584368921e+03 + 88080 9.941298439024534e-01 -5.893437209518575e+00 -6.028692378972854e+00 4.287243010841905e+00 4.510586897165601e+00 9.305320701406890e+03 + 88100 9.945391307556721e-01 -5.894737386681252e+00 -6.055677896557765e+00 4.255960815445293e+00 4.331815502270943e+00 9.388752843167909e+03 + 88120 1.015625554483936e+00 -5.932713848922593e+00 -6.028569735392219e+00 4.064953247198217e+00 4.514533913439135e+00 9.304953434640212e+03 + 88140 1.004169022836957e+00 -5.924222252371581e+00 -6.012905876679588e+00 4.029332508246375e+00 4.520097413723289e+00 9.256703268950205e+03 + 88160 9.611141392888729e-01 -5.870318562890746e+00 -6.009761029060462e+00 4.394889235246561e+00 4.594189015848154e+00 9.247018801057542e+03 + 88180 1.044675319360136e+00 -6.005210755720507e+00 -5.973507809139254e+00 3.700457341619718e+00 4.882500566904398e+00 9.135908073806027e+03 + 88200 1.048064623908918e+00 -6.022690536288949e+00 -6.007399809147927e+00 3.571932936607478e+00 4.659734658083606e+00 9.239785632571467e+03 + 88220 1.024749269164748e+00 -6.003276617824223e+00 -6.013673590349065e+00 3.636755339696260e+00 4.577054314532316e+00 9.259071198455418e+03 + 88240 1.025859135692201e+00 -6.021346488322578e+00 -5.977225288064906e+00 3.578164721098011e+00 4.831515480711236e+00 9.147274771093316e+03 + 88260 9.620873763051131e-01 -5.943272608912184e+00 -6.021754837854949e+00 3.988317306558572e+00 4.537660202883541e+00 9.283947634053524e+03 + 88280 1.041394302005658e+00 -6.076129339306515e+00 -5.975800522085114e+00 3.309618932283958e+00 4.885722526603532e+00 9.142914976780701e+03 + 88300 1.026357732246263e+00 -6.068704697187347e+00 -5.982752751776253e+00 3.338383838892372e+00 4.831933210463442e+00 9.164183784828743e+03 + 88320 9.786321596486209e-01 -6.013142321670273e+00 -5.986988262763026e+00 3.621804993342937e+00 4.771985646915886e+00 9.177145074339131e+03 + 88340 9.922623331856517e-01 -6.046989333495447e+00 -5.993670777934438e+00 3.389974100496179e+00 4.696137497547305e+00 9.197642137419371e+03 + 88360 9.771858819237923e-01 -6.038530383610703e+00 -6.025640588550237e+00 3.440864440930647e+00 4.514879638857182e+00 9.295947421119197e+03 + 88380 1.023151082816274e+00 -6.121751959096362e+00 -5.963451689859408e+00 3.088794231575835e+00 4.997778874421919e+00 9.105203626402679e+03 + 88400 9.054183207084602e-01 -5.961517981239626e+00 -6.026217933914992e+00 3.935689234093978e+00 4.564172093546709e+00 9.297701534764175e+03 + 88420 9.772573050833140e-01 -6.085723836382913e+00 -6.017019429067936e+00 3.265186423224134e+00 4.659697761999403e+00 9.269349446593335e+03 + 88440 9.330567041886971e-01 -6.042752678567165e+00 -5.996453375367334e+00 3.448117340900954e+00 4.713975104668401e+00 9.206169719018635e+03 + 88460 9.514808916381501e-01 -6.097902067799129e+00 -6.019810649821789e+00 3.129981990597250e+00 4.578394997231013e+00 9.277970578917304e+03 + 88480 9.160147034463306e-01 -6.077015839004092e+00 -6.039868801682477e+00 3.226000555437470e+00 4.439304592223628e+00 9.339851082068279e+03 + 88500 9.092749090985396e-01 -6.097231968760007e+00 -5.996968930809714e+00 3.143501406254739e+00 4.719227285820297e+00 9.207751529639496e+03 + 88520 8.889781440781960e-01 -6.090103941391010e+00 -5.968768174475036e+00 3.263429618068091e+00 4.960158368348857e+00 9.121420725059768e+03 + 88540 9.127909703196988e-01 -6.139016089637335e+00 -5.972914696426336e+00 2.945220696816531e+00 4.899000600741610e+00 9.134103772237313e+03 + 88560 8.877803294197115e-01 -6.105714212880700e+00 -5.973392048410016e+00 3.140640008920569e+00 4.900454354100011e+00 9.135561995166554e+03 + 88580 8.778128455967099e-01 -6.084311967322473e+00 -5.976115550132464e+00 3.201317098549175e+00 4.822597669395659e+00 9.143884457630256e+03 + 88600 8.894518612174224e-01 -6.081637181901126e+00 -5.952349669705846e+00 3.206033111273057e+00 4.948422013476204e+00 9.071370238644886e+03 + 88620 9.249443655129866e-01 -6.099455250478443e+00 -5.979026492555028e+00 3.188281928567509e+00 4.879802492853816e+00 9.152770657170870e+03 + 88640 9.371024781649533e-01 -6.074666712945807e+00 -5.983423212413014e+00 3.298719418318991e+00 4.822653718264363e+00 9.166238394446105e+03 + 88660 1.014841050819118e+00 -6.146913622719190e+00 -5.961094417719136e+00 2.924475650811190e+00 4.991478281350541e+00 9.098017904811479e+03 + 88680 1.001229110470209e+00 -6.088944488939696e+00 -6.007233544446546e+00 3.217549375709646e+00 4.686746263717111e+00 9.239272130973863e+03 + 88700 9.516826087773159e-01 -5.985052613734860e+00 -6.023010564599581e+00 3.738238923376366e+00 4.520278495537227e+00 9.287818673264686e+03 + 88720 9.937741089808717e-01 -6.025150864487736e+00 -5.960353334422396e+00 3.583656608058491e+00 4.955734053079039e+00 9.095733557056474e+03 + 88740 9.913812824392139e-01 -5.999647004335644e+00 -6.005893360106677e+00 3.714316273240482e+00 4.678448731782780e+00 9.235131944843841e+03 + 88760 1.040405816525180e+00 -6.053510133618762e+00 -5.991697439346081e+00 3.413784254468234e+00 4.768722310465493e+00 9.191565905015541e+03 + 88780 9.629324168643597e-01 -5.923142539098103e+00 -6.021838979874664e+00 4.114933912352464e+00 4.548203676188606e+00 9.284202315456612e+03 + 88800 1.022142824396557e+00 -5.998749538606490e+00 -6.026458820647983e+00 3.649289085334886e+00 4.490178099855097e+00 9.298458320946382e+03 + 88820 1.031313743329312e+00 -6.003078925716706e+00 -5.997894933210134e+00 3.678401196746057e+00 4.708168483939042e+00 9.210570553796168e+03 + 88840 1.003528379976617e+00 -5.954265385455339e+00 -5.985452560845258e+00 3.988093114182294e+00 4.809011526893586e+00 9.172441110512602e+03 + 88860 1.008206544153851e+00 -5.953238856503750e+00 -6.008170663998642e+00 3.941463692743266e+00 4.626036753437866e+00 9.242156921619640e+03 + 88880 1.054516573573500e+00 -6.015573791797429e+00 -5.983121525226958e+00 3.623726591424894e+00 4.810072528044563e+00 9.165317842963359e+03 + 88900 1.038006053671899e+00 -5.987407165709443e+00 -5.978935248585669e+00 3.846321430090962e+00 4.894968489240608e+00 9.152504440961218e+03 + 88920 1.014424133005227e+00 -5.953127661645553e+00 -6.028881092982384e+00 3.915208636218025e+00 4.480220710676331e+00 9.305911976705849e+03 + 88940 1.024815199859206e+00 -5.973535711245635e+00 -6.008160100595526e+00 3.852426916831321e+00 4.653608315077312e+00 9.242095554031668e+03 + 88960 1.039900886754309e+00 -6.004101267904953e+00 -5.985875556032923e+00 3.659545170093172e+00 4.764200028082167e+00 9.173727868428194e+03 + 88980 1.003800980513256e+00 -5.962083765805920e+00 -6.014694299478510e+00 3.903476758469875e+00 4.601378932668089e+00 9.262215148076304e+03 + 89000 1.003345627153875e+00 -5.979274120867061e+00 -6.026109007077953e+00 3.735125958982781e+00 4.466192794684616e+00 9.297351369949498e+03 + 89020 9.688185098935996e-01 -5.951269556776326e+00 -6.000233393741544e+00 3.951478051781292e+00 4.670320122797733e+00 9.217759896874761e+03 + 89040 9.858627433054334e-01 -6.004800184789176e+00 -5.982015966008410e+00 3.734374752713193e+00 4.865205262798817e+00 9.161922619308532e+03 + 89060 1.053278082969985e+00 -6.137493658610869e+00 -5.931386152343289e+00 3.043373995373682e+00 5.226875191395640e+00 9.007633853532210e+03 + 89080 9.245791198893709e-01 -5.981890719107919e+00 -6.016649032870578e+00 3.755791004881187e+00 4.556203388424327e+00 9.268225434918069e+03 + 89100 9.586426065516375e-01 -6.063110484670775e+00 -5.979654487937639e+00 3.353486150142232e+00 4.832703398157656e+00 9.154696177705442e+03 + 89120 9.323669825072488e-01 -6.049659178510559e+00 -6.003835970819046e+00 3.386207037094189e+00 4.649330986777330e+00 9.228837280353562e+03 + 89140 9.779359966358703e-01 -6.136857211154803e+00 -5.975069069333118e+00 2.957217006622544e+00 4.886229553596692e+00 9.140693406407850e+03 + 89160 9.070375871776774e-01 -6.044605421481983e+00 -5.993373706498935e+00 3.456784572660287e+00 4.750965008175220e+00 9.196715597235569e+03 + 89180 9.040369073203212e-01 -6.045325342399186e+00 -5.967265482580721e+00 3.413606363085883e+00 4.861838157887775e+00 9.116824913395136e+03 + 89200 9.046321178408135e-01 -6.042126665631038e+00 -5.983273059720310e+00 3.479956052002634e+00 4.817902564708113e+00 9.165745058922925e+03 + 89220 9.363914560012292e-01 -6.076054424723391e+00 -5.979589099655591e+00 3.250763184902861e+00 4.804682009402974e+00 9.154513107776416e+03 + 89240 9.501873216059669e-01 -6.072636565014899e+00 -5.964335804879910e+00 3.278396380907554e+00 4.900276105091125e+00 9.107887968984407e+03 + 89260 9.353052210131921e-01 -6.016189342186157e+00 -5.973941237577979e+00 3.621352720999603e+00 4.863947875532823e+00 9.137225692580265e+03 + 89280 1.043136735133966e+00 -6.131244084949285e+00 -5.972528649804417e+00 2.996561478428053e+00 4.907930068164092e+00 9.132922285489305e+03 + 89300 1.026117704221436e+00 -6.058978793775714e+00 -5.998701344035079e+00 3.362232305567566e+00 4.708354749883493e+00 9.213080908998983e+03 + 89320 1.000640639700927e+00 -5.983694340095309e+00 -6.031027340878283e+00 3.711730660933211e+00 4.439937245679179e+00 9.312552353756560e+03 + 89340 1.048895374045542e+00 -6.030180469916131e+00 -5.988191969683041e+00 3.550310255466541e+00 4.791414721504355e+00 9.180836980985254e+03 + 89360 1.082788746659865e+00 -6.066426774002735e+00 -5.977692054829641e+00 3.365729174899637e+00 4.875257664044950e+00 9.148699706537462e+03 + 89380 9.329928299188820e-01 -5.837461935383454e+00 -6.058745866687050e+00 4.549209634328773e+00 4.278563057205829e+00 9.398258686147925e+03 + 89400 1.031893225816197e+00 -5.982383545865353e+00 -6.016977745442300e+00 3.737770196597678e+00 4.539124949191768e+00 9.269244341092806e+03 + 89420 1.032687114280286e+00 -5.984860194135133e+00 -5.989616202633520e+00 3.750626563198680e+00 4.723316826411008e+00 9.185180463630579e+03 + 89440 9.422909917061277e-01 -5.853690288415820e+00 -6.016945381209421e+00 4.459980587752131e+00 4.522544581287307e+00 9.269113660898307e+03 + 89460 9.431167723206733e-01 -5.858695205018088e+00 -5.999445646274077e+00 4.470761556942512e+00 4.662550742190231e+00 9.215246701455131e+03 + 89480 1.025074646030021e+00 -5.982365408674911e+00 -5.990247771059710e+00 3.804283848083211e+00 4.759022103478058e+00 9.187107972393191e+03 + 89500 1.092961955488760e+00 -6.085600850558023e+00 -6.013283679967551e+00 3.248071790455250e+00 4.663328175031723e+00 9.257869810447197e+03 + 89520 1.005155828348626e+00 -5.964470622237902e+00 -6.019026099872705e+00 3.975265860382148e+00 4.661999865370234e+00 9.275540114348518e+03 + 89540 1.048817420977191e+00 -6.044144117777384e+00 -5.997305265807888e+00 3.465511696764498e+00 4.734467633062259e+00 9.208781872523890e+03 + 89560 9.534510072109293e-01 -5.919603076839124e+00 -6.014181753994586e+00 4.156760449652657e+00 4.613675049423009e+00 9.260615906519390e+03 + 89580 9.513120116736070e-01 -5.933491857578895e+00 -5.985760781948285e+00 4.097696726057238e+00 4.797560473738298e+00 9.173373651032851e+03 + 89600 9.917902819743665e-01 -6.011376550784409e+00 -5.991207983842441e+00 3.637667335024309e+00 4.753478367480735e+00 9.190055212645148e+03 + 89620 9.496585266755952e-01 -5.964940294286245e+00 -6.010330013475879e+00 3.850823646868842e+00 4.590188855245618e+00 9.248778494363796e+03 + 89640 9.719356698005875e-01 -6.014945778701155e+00 -6.005932378190620e+00 3.611548686523224e+00 4.663305027073942e+00 9.235249572994906e+03 + 89660 8.988098423345408e-01 -5.924660415781875e+00 -6.037937799971939e+00 4.086612031577254e+00 4.436155761939356e+00 9.333833971661461e+03 + 89680 1.003717607496102e+00 -6.099177532643650e+00 -5.979413680700002e+00 3.155558781508242e+00 4.843261352764859e+00 9.153945551001132e+03 + 89700 8.995636940872132e-01 -5.960851664092569e+00 -6.000731733233051e+00 3.932075326529547e+00 4.703077798104146e+00 9.219289722748530e+03 + 89720 9.086597555823709e-01 -5.989336516067295e+00 -6.006565640788387e+00 3.709639092029354e+00 4.610706791682411e+00 9.237209021194656e+03 + 89740 9.490173640937255e-01 -6.062223223695243e+00 -5.993328260279084e+00 3.357879413654802e+00 4.753484955051518e+00 9.196597122762994e+03 + 89760 9.971813729213872e-01 -6.144392207718965e+00 -6.004702386102547e+00 2.882662823916294e+00 4.684783396567795e+00 9.231505601116962e+03 + 89780 9.191921395916522e-01 -6.037685177238625e+00 -5.997979936989212e+00 3.542592715892396e+00 4.770586349770596e+00 9.210852702758455e+03 + 89800 9.165309842597930e-01 -6.039851819487186e+00 -6.002447992625497e+00 3.515197233253136e+00 4.729975795316459e+00 9.224565118732260e+03 + 89820 9.256969499510513e-01 -6.053798956146555e+00 -6.001230266130225e+00 3.438426970953917e+00 4.740284524006173e+00 9.220811882724460e+03 + 89840 9.308674471916136e-01 -6.054546422890816e+00 -5.991240627519842e+00 3.408165536278739e+00 4.771677209839046e+00 9.190175167448826e+03 + 89860 9.615269171723647e-01 -6.083549061590590e+00 -5.969740512018785e+00 3.274154072123113e+00 4.927660375580548e+00 9.124375201929375e+03 + 89880 9.551653022277738e-01 -6.045874585781847e+00 -5.978139864506148e+00 3.456983513985499e+00 4.845926765464801e+00 9.150050099248981e+03 + 89900 9.961949579757611e-01 -6.068824456674899e+00 -5.967507194025314e+00 3.292564855290098e+00 4.874344256219734e+00 9.117570583351575e+03 + 89920 9.497438451701601e-01 -5.956790062993470e+00 -6.000862618905698e+00 3.899693907953644e+00 4.646622471699647e+00 9.219684332534054e+03 + 89940 1.043074237688136e+00 -6.055406879998739e+00 -5.987113534589753e+00 3.383780924912854e+00 4.775931882612300e+00 9.177528452870951e+03 + 89960 1.006024217703055e+00 -5.966909629127543e+00 -5.999169016905221e+00 3.879682620192498e+00 4.694444223448945e+00 9.214484416014820e+03 + 89980 9.532048251225204e-01 -5.861673261168003e+00 -6.021763228364946e+00 4.428346630573344e+00 4.509085265086140e+00 9.283966887190381e+03 + 90000 1.015525214675431e+00 -5.933120449331093e+00 -6.022097833437072e+00 4.058635981456383e+00 4.547714072714164e+00 9.284986996214904e+03 + 90020 1.065506994964185e+00 -5.990571560554081e+00 -6.001474453679120e+00 3.780553572110544e+00 4.717947472569316e+00 9.221563422898023e+03 + 90040 1.077246056511955e+00 -5.999827819564325e+00 -6.004678402799932e+00 3.670325876304934e+00 4.642473076740748e+00 9.231404672661036e+03 + 90060 1.022795043666366e+00 -5.917415348876180e+00 -6.021668165241481e+00 4.119190210727448e+00 4.520554406086693e+00 9.283668375711304e+03 + 90080 9.890657067829292e-01 -5.871081991110764e+00 -5.977892282333162e+00 4.414359929144009e+00 4.801038708105854e+00 9.149293187725247e+03 + 90100 1.052280115763825e+00 -5.969734178206576e+00 -5.974393800944616e+00 3.860680194038443e+00 4.833923919202328e+00 9.138597977496993e+03 + 90120 1.001146413408308e+00 -5.902939164348861e+00 -5.971464452095062e+00 4.181787116772119e+00 4.788304310279426e+00 9.129630168462905e+03 + 90140 1.076741436769008e+00 -6.025883012607737e+00 -5.975004412858010e+00 3.544704506095365e+00 4.836857299296160e+00 9.140479167432331e+03 + 90160 1.061229413842794e+00 -6.020742653745723e+00 -6.027526626784756e+00 3.564118653306600e+00 4.525164030300035e+00 9.301753035980490e+03 + 90180 1.014652803214469e+00 -5.978641210677645e+00 -6.018759540962622e+00 3.826851894267096e+00 4.596486233479214e+00 9.274725704479402e+03 + 90200 1.014465856226911e+00 -6.010476439228469e+00 -5.996850408073815e+00 3.682641238215042e+00 4.760884017726572e+00 9.207388880616554e+03 + 90220 9.847153561573705e-01 -6.001700058483343e+00 -6.023762317137913e+00 3.689374621899657e+00 4.562689718581625e+00 9.290149970927794e+03 + 90240 9.920237226796763e-01 -6.050936581156005e+00 -5.979330003931285e+00 3.437721098230750e+00 4.848897145737109e+00 9.153717408745284e+03 + 90260 9.595273559686467e-01 -6.036776639741477e+00 -5.986613812209792e+00 3.512216511030744e+00 4.800259229390153e+00 9.175998860271007e+03 + 90280 8.736860192904680e-01 -5.932951181949848e+00 -6.025646073141882e+00 4.115158454309164e+00 4.582890044596455e+00 9.295939578286481e+03 + 90300 9.857882816538537e-01 -6.114542380219270e+00 -5.975393116728304e+00 3.110230745977143e+00 4.909247350221200e+00 9.141675121913306e+03 + 90320 9.527922218669030e-01 -6.074197900286209e+00 -5.958728272275986e+00 3.337892814566385e+00 5.000937287468272e+00 9.090776964117773e+03 + 90340 9.579817859577995e-01 -6.082283183887720e+00 -5.965824770239896e+00 3.279931255302519e+00 4.948653488349592e+00 9.112410045834142e+03 + 90360 9.585416473781758e-01 -6.077505596686079e+00 -5.981548726862692e+00 3.307412947970064e+00 4.858412143773566e+00 9.160488923283152e+03 + 90380 9.308329610826589e-01 -6.026698221125326e+00 -5.997222421438376e+00 3.540085736868388e+00 4.709340340036114e+00 9.208519428186451e+03 + 90400 1.026443585458951e+00 -6.156223514409019e+00 -5.964560298605078e+00 2.835650205969555e+00 4.936210050902576e+00 9.108577234351773e+03 + 90420 9.611710647378977e-01 -6.046657432469367e+00 -5.952195549456406e+00 3.513843417658106e+00 5.056258167847679e+00 9.070891888661970e+03 + 90440 9.392971724258149e-01 -6.001278958318267e+00 -6.012386908571036e+00 3.675138586512166e+00 4.611355017211015e+00 9.255124360920188e+03 + 90460 1.020014014673853e+00 -6.107166297958133e+00 -5.971189126596940e+00 3.119972736260773e+00 4.900774696616006e+00 9.128826649782726e+03 + 90480 9.430966403029909e-01 -5.980626855315546e+00 -6.024272945130757e+00 3.821521617479445e+00 4.570899015549937e+00 9.291703172447786e+03 + 90500 1.028772738547751e+00 -6.095762519767596e+00 -5.996115313834304e+00 3.137679316413835e+00 4.709868993238081e+00 9.205135031789638e+03 + 90520 9.179205546981368e-01 -5.920137216813536e+00 -6.037783241313399e+00 4.131048959484556e+00 4.455507281142893e+00 9.333385143967314e+03 + 90540 1.049310058879352e+00 -6.102547513615965e+00 -5.943568151166408e+00 3.190151085431167e+00 5.103035186593352e+00 9.044623684787695e+03 + 90560 9.946021899499028e-01 -6.009466288715161e+00 -5.993896115821315e+00 3.694111071237408e+00 4.783517413470339e+00 9.198257794363941e+03 + 90580 9.983051052917969e-01 -6.003098543643557e+00 -5.988019990086439e+00 3.659468697634746e+00 4.746052085558343e+00 9.180310415899106e+03 + 90600 9.981079140423113e-01 -5.990424798692567e+00 -5.997668767441670e+00 3.771690923429568e+00 4.730094933871677e+00 9.209886879363441e+03 + 90620 9.941806559074878e-01 -5.971896903703829e+00 -5.997072143644015e+00 3.858643994282564e+00 4.714083870690225e+00 9.208072583911415e+03 + 90640 1.042657326220928e+00 -6.031071174677218e+00 -5.974204390049662e+00 3.546052014768722e+00 4.872589892206632e+00 9.138045156781183e+03 + 90660 9.709387721744742e-01 -5.913898313215785e+00 -5.996336582019689e+00 4.176554130257375e+00 4.703180833504493e+00 9.205810171692761e+03 + 90680 1.071583179835870e+00 -6.053381367463934e+00 -6.000121800021109e+00 3.390153904181969e+00 4.695978582330097e+00 9.217427775567701e+03 + 90700 9.597901276255719e-01 -5.879345899677598e+00 -6.037270343008111e+00 4.333592216873237e+00 4.426765624540807e+00 9.331790064520241e+03 + 90720 1.044456446144139e+00 -5.997086941036258e+00 -6.000366387005961e+00 3.699006308222609e+00 4.680175221971952e+00 9.218151614315479e+03 + 90740 9.998699175354113e-01 -5.925483352472693e+00 -6.022221744422813e+00 4.068853194744369e+00 4.513366377949006e+00 9.285378044484742e+03 + 90760 9.420959057549776e-01 -5.838141108244647e+00 -6.049475036987692e+00 4.552538121126080e+00 4.339025998463740e+00 9.369526246489157e+03 + 90780 1.007727699188709e+00 -5.934001077838484e+00 -6.042943582518939e+00 3.972537545747542e+00 4.346972825074255e+00 9.349311779552567e+03 + 90800 1.000798645476324e+00 -5.922346605074116e+00 -6.019969358775882e+00 4.099850201925008e+00 4.539285243097160e+00 9.278443805490278e+03 + 90820 9.993253559859417e-01 -5.923466449028192e+00 -6.020865821947615e+00 4.117587633545843e+00 4.558305361738269e+00 9.281208432204452e+03 + 90840 1.007200505664126e+00 -5.945067424257755e+00 -6.026064790190077e+00 3.988253686976418e+00 4.523154277491159e+00 9.297215353960037e+03 + 90860 9.914780448311771e-01 -5.938252796520446e+00 -5.986946129918909e+00 4.003601279588083e+00 4.723996623945117e+00 9.176995334684994e+03 + 90880 9.524931485558684e-01 -5.898748145579706e+00 -6.004750420466019e+00 4.247683031373628e+00 4.639001565177392e+00 9.231612850745720e+03 + 90900 1.013252730892950e+00 -6.008994089787417e+00 -6.009903302911170e+00 3.580265241408291e+00 4.575044398951423e+00 9.247497388515614e+03 + 90920 9.946399199078487e-01 -6.004955218884769e+00 -6.019148096522600e+00 3.635980892143488e+00 4.554483192406343e+00 9.275932949618173e+03 + 90940 9.751633928386126e-01 -6.001217571173766e+00 -5.999305626861283e+00 3.716706328712937e+00 4.727685008827640e+00 9.214917461244038e+03 + 90960 1.051289063961637e+00 -6.139728299919894e+00 -5.956617889276140e+00 2.944622398381418e+00 4.996070712542322e+00 9.084374399774599e+03 + 90980 9.341984508912023e-01 -5.986612100912313e+00 -6.007118911760227e+00 3.752997031375246e+00 4.635243750067806e+00 9.238925635922211e+03 + 91000 9.988888908410025e-01 -6.101424707898858e+00 -5.980281463988439e+00 3.195635407807942e+00 4.891258661197978e+00 9.156617577492556e+03 + 91020 9.040673077035576e-01 -5.976308028414016e+00 -5.975089568045691e+00 3.840074504716747e+00 4.847071092707806e+00 9.140732897506612e+03 + 91040 9.652329394414887e-01 -6.075087871501165e+00 -5.965774702519901e+00 3.302392650726312e+00 4.930085783174956e+00 9.112274042501864e+03 + 91060 9.245722523508927e-01 -6.015947207051626e+00 -5.990750481265810e+00 3.595574607634791e+00 4.740258106277660e+00 9.188660983147169e+03 + 91080 9.639004152992124e-01 -6.070300947819990e+00 -5.979028840193379e+00 3.380527266217551e+00 4.904625832522557e+00 9.152773533411388e+03 + 91100 9.901266641483418e-01 -6.098203766266397e+00 -5.979042302446231e+00 3.180793619443620e+00 4.865037184875943e+00 9.152804232932287e+03 + 91120 9.833430338384906e-01 -6.073216142871380e+00 -5.925634144184750e+00 3.336869185737465e+00 5.184307860436584e+00 8.990164595324690e+03 + 91140 9.033595814883488e-01 -5.930964014915924e+00 -5.973926112824348e+00 4.126542237452760e+00 4.879847222899426e+00 9.137138491514721e+03 + 91160 1.027466038629875e+00 -6.079207285101411e+00 -6.007545332584083e+00 3.231138947887750e+00 4.642632968893556e+00 9.240232093133918e+03 + 91180 9.836530472190592e-01 -5.972534155322508e+00 -6.022821069606733e+00 3.894929365775412e+00 4.606174122080557e+00 9.287244598370815e+03 + 91200 1.034288791734034e+00 -6.011257377083134e+00 -6.010948610649745e+00 3.651577485582313e+00 4.653350470224285e+00 9.250693265141179e+03 + 91220 1.068314274333455e+00 -6.029424317300419e+00 -6.012139820362630e+00 3.608267473016916e+00 4.707517729200960e+00 9.254356046370867e+03 + 91240 1.071033302424923e+00 -6.012603916949923e+00 -5.986126189845902e+00 3.662250771808017e+00 4.814289978254335e+00 9.174509985550818e+03 + 91260 1.031050439297823e+00 -5.940115781522131e+00 -6.015028584332229e+00 3.984610392423695e+00 4.554449485969345e+00 9.263262817257830e+03 + 91280 1.040219872663347e+00 -5.945830660984037e+00 -6.025795036416900e+00 3.992577362354788e+00 4.533409544172184e+00 9.296398596148074e+03 + 91300 1.076369215611291e+00 -5.997051519302405e+00 -5.992566785282205e+00 3.729814863648519e+00 4.755566900402860e+00 9.194254731191864e+03 + 91320 1.057736271696878e+00 -5.973159478260164e+00 -6.068772041323474e+00 3.737676666705704e+00 4.188654533599864e+00 9.429396672016062e+03 + 91340 1.045195912275040e+00 -5.965754081404414e+00 -6.029113985775551e+00 3.856907300472836e+00 4.493084924660256e+00 9.306626585720447e+03 + 91360 9.455357909955038e-01 -5.832110073105351e+00 -6.035774723343862e+00 4.570808761384921e+00 4.401334822712625e+00 9.327174595983230e+03 + 91380 1.020412938546745e+00 -5.956838913800142e+00 -6.034061450335118e+00 3.973845651357209e+00 4.530421896424469e+00 9.321894445039961e+03 + 91400 1.029686078599941e+00 -5.986564161876955e+00 -6.041977184982188e+00 3.742981619589984e+00 4.424791465782124e+00 9.346360338217564e+03 + 91420 9.465624464099498e-01 -5.879473478092417e+00 -6.030081609808972e+00 4.364177914043715e+00 4.499362715194195e+00 9.309599073084468e+03 + 91440 1.059917132916434e+00 -6.061831399008779e+00 -5.944912016461762e+00 3.370389069893799e+00 5.041758257694742e+00 9.048716227758126e+03 + 91460 9.870916646128796e-01 -5.964946856903919e+00 -5.977647597650968e+00 3.882158680276892e+00 4.809229061474054e+00 9.148554506217266e+03 + 91480 1.038402835410739e+00 -6.050207558887988e+00 -6.013842365699590e+00 3.360941664275159e+00 4.569756231058400e+00 9.259580737225218e+03 + 91500 9.554853951441951e-01 -5.935219766991504e+00 -6.067204140165945e+00 3.989754105902203e+00 4.231879410618827e+00 9.424466922437308e+03 + 91520 9.515881094689967e-01 -5.938322911089619e+00 -6.029692446322017e+00 4.014402820305257e+00 4.489744809610951e+00 9.308393894938501e+03 + 91540 9.608428847090277e-01 -5.958781742091363e+00 -5.995957151342961e+00 3.882609018970457e+00 4.669142066171788e+00 9.204598234061119e+03 + 91560 9.972993699317566e-01 -6.013930632949211e+00 -5.974905991261720e+00 3.574285050666326e+00 4.798370582279690e+00 9.140164837365375e+03 + 91580 1.026630686158436e+00 -6.056971238495659e+00 -6.011202823707333e+00 3.391624242362649e+00 4.654433562716511e+00 9.251487030139155e+03 + 91600 9.964634501445047e-01 -6.013020642160168e+00 -6.001032177444396e+00 3.614981885676685e+00 4.683821505283568e+00 9.220235000348785e+03 + 91620 9.423942319649549e-01 -5.933875652776468e+00 -6.046491525690345e+00 3.990226653071538e+00 4.343568883550043e+00 9.360309423217339e+03 + 91640 1.023432725669494e+00 -6.053948776099207e+00 -6.009721836470018e+00 3.389567275299719e+00 4.643525206747317e+00 9.246925886947929e+03 + 91660 9.646856809463791e-01 -5.966503739638371e+00 -6.019736898408741e+00 3.910846536994430e+00 4.605173501530268e+00 9.277740923076328e+03 + 91680 9.653432939404197e-01 -5.968257585369055e+00 -6.019067960131906e+00 3.794670777571624e+00 4.502909742803253e+00 9.275683122122551e+03 + 91700 1.000849178190713e+00 -6.019965202001417e+00 -5.969556077419325e+00 3.576035065000227e+00 4.865492059137421e+00 9.123815632879801e+03 + 91720 1.005731068781705e+00 -6.023517715814787e+00 -5.977079410727914e+00 3.536005487407260e+00 4.802661421520571e+00 9.146816636846450e+03 + 91740 1.002929402526722e+00 -6.016503567640603e+00 -5.947312202648198e+00 3.641823210678309e+00 5.039130735793828e+00 9.056007226934067e+03 + 91760 1.032662447582763e+00 -6.057228252354748e+00 -5.944895456115659e+00 3.431813840423112e+00 5.076846139871998e+00 9.048635123796757e+03 + 91780 9.919792147486702e-01 -5.991036227335263e+00 -5.992058098899449e+00 3.756199554248204e+00 4.750331809592537e+00 9.192656908820063e+03 + 91800 9.953215556737985e-01 -5.989040665034300e+00 -5.981891604049508e+00 3.788823065848969e+00 4.829874080337255e+00 9.161527806065895e+03 + 91820 9.952214618048111e-01 -5.981479731895280e+00 -5.996008707895268e+00 3.791787704549599e+00 4.708360076005902e+00 9.204811339276703e+03 + 91840 1.017839905376232e+00 -6.008517932693572e+00 -6.028735187746029e+00 3.633587440498918e+00 4.517496833377605e+00 9.305471264839402e+03 + 91860 1.003121240471240e+00 -5.982126754990892e+00 -6.032765157520940e+00 3.735679644476415e+00 4.444906100881415e+00 9.317908207917404e+03 + 91880 9.905822744190905e-01 -5.960004364236238e+00 -6.041516072379213e+00 3.839880706214705e+00 4.371827864161677e+00 9.344951927765665e+03 + 91900 9.843627291208699e-01 -5.949567682769651e+00 -6.024125283664455e+00 3.952583554486667e+00 4.524462272397251e+00 9.291240240686842e+03 + 91920 1.030237255426225e+00 -6.016581009149775e+00 -6.024967027097318e+00 3.596609855368648e+00 4.548456042581769e+00 9.293872854634992e+03 + 91940 9.899447253774338e-01 -5.957466035577689e+00 -6.033042290327494e+00 3.927799248354059e+00 4.493828698193060e+00 9.318776036235200e+03 + 91960 9.822926769538427e-01 -5.950124247734498e+00 -6.037007291998162e+00 3.924197203294980e+00 4.425301318025372e+00 9.331011816813696e+03 + 91980 1.006100411387033e+00 -5.994133615713660e+00 -6.049248446324792e+00 3.673910862519874e+00 4.357432976158285e+00 9.368857983203421e+03 + 92000 1.010900588960694e+00 -6.018224344495864e+00 -6.030389514662566e+00 3.553213806441698e+00 4.483359516790494e+00 9.310595421462909e+03 + 92020 9.890027675174210e-01 -6.009139371886627e+00 -5.996361692573205e+00 3.616862010963902e+00 4.690233422921050e+00 9.205885886408954e+03 + 92040 9.688819061044173e-01 -6.002362814238278e+00 -5.999908162812299e+00 3.677172437094205e+00 4.691267425438259e+00 9.216755560957523e+03 + 92060 9.610154434892753e-01 -6.012699842872334e+00 -6.044621746847262e+00 3.606250149992277e+00 4.422949637469567e+00 9.354558255715190e+03 + 92080 9.718109457199213e-01 -6.052735707574848e+00 -6.051701580629252e+00 3.386296006141179e+00 4.392234123093421e+00 9.376448891260490e+03 + 92100 9.520023869840795e-01 -6.046044245681657e+00 -5.989406824574102e+00 3.466765780288617e+00 4.791986616900786e+00 9.184562060961507e+03 + 92120 9.573153541350301e-01 -6.070026933501809e+00 -5.973186995233010e+00 3.328303675179439e+00 4.884373586650896e+00 9.134909045490715e+03 + 92140 9.758073411255317e-01 -6.107010282088451e+00 -5.948589750730035e+00 3.165039951936228e+00 5.074715158494252e+00 9.059909259509808e+03 + 92160 9.504224733908879e-01 -6.072855794682445e+00 -5.965364914217933e+00 3.292794460802797e+00 4.910023730590015e+00 9.111035680602665e+03 + 92180 9.520359810120744e-01 -6.071733785232041e+00 -5.951391871856043e+00 3.339017313247474e+00 5.030039202703362e+00 9.068438010719930e+03 + 92200 9.799392833876657e-01 -6.102227090418967e+00 -5.972641969321316e+00 3.170563407884349e+00 4.914661226459740e+00 9.133262485147472e+03 + 92220 9.842771089681361e-01 -6.092740100275113e+00 -5.974745322916188e+00 3.177091302943135e+00 4.854635574170866e+00 9.139699500680616e+03 + 92240 9.148052632309247e-01 -5.966810246945827e+00 -6.008003268608390e+00 3.933110084695734e+00 4.696573379709797e+00 9.241607385710033e+03 + 92260 1.010786893824097e+00 -6.080650545839234e+00 -5.980462347050146e+00 3.259774119842492e+00 4.835070261363089e+00 9.157174517260582e+03 + 92280 1.023707442867941e+00 -6.064741193049048e+00 -5.992728181286305e+00 3.364650904029827e+00 4.778160761549057e+00 9.194768581798111e+03 + 92300 1.005345829524636e+00 -6.006289757664199e+00 -5.993021874852108e+00 3.665539683457507e+00 4.741725919762763e+00 9.195641220426953e+03 + 92320 9.583461671662269e-01 -5.908432870441562e+00 -6.020362430099569e+00 4.177261616304031e+00 4.534544763704379e+00 9.279661574232032e+03 + 92340 1.068998676091077e+00 -6.046008870878883e+00 -5.989239625254302e+00 3.530141016721070e+00 4.856118810109785e+00 9.184033910560105e+03 + 92360 9.973643390921406e-01 -5.919515726814877e+00 -6.022654269303411e+00 4.126547166869917e+00 4.534309695262889e+00 9.286722242793785e+03 + 92380 1.052305443809838e+00 -5.987844775441395e+00 -5.952254214240100e+00 3.763245480899226e+00 4.967611990938611e+00 9.071059577377260e+03 + 92400 1.009554259056044e+00 -5.913943252087926e+00 -5.964031273672455e+00 4.174518648092534e+00 4.886905477057883e+00 9.106933236623652e+03 + 92420 1.072316633828783e+00 -5.998169937071998e+00 -5.967237905791027e+00 3.688905075094072e+00 4.866521585425774e+00 9.116724645219794e+03 + 92440 1.016409688817053e+00 -5.908841146490147e+00 -6.020991448484965e+00 4.184217408592140e+00 4.540233019334753e+00 9.281581443574525e+03 + 92460 1.049466995741277e+00 -5.956877632736725e+00 -6.022528570356407e+00 3.898134496676197e+00 4.521156653414223e+00 9.286332057409900e+03 + 92480 1.052174318688774e+00 -5.967548639670395e+00 -5.951178702797510e+00 3.851925381788181e+00 4.945924092551834e+00 9.067792886191935e+03 + 92500 1.028430033580563e+00 -5.942234958478628e+00 -5.974972858379205e+00 4.020975696838104e+00 4.832989609435354e+00 9.140365849262849e+03 + 92520 1.072841383558196e+00 -6.021887373217473e+00 -5.982977625964514e+00 3.519833743494744e+00 4.743259533485166e+00 9.164861064747853e+03 + 92540 1.009601918244036e+00 -5.949667480674852e+00 -6.026963241611281e+00 3.943552455004142e+00 4.499708234226815e+00 9.300004974416839e+03 + 92560 1.044910280083122e+00 -6.035539046237331e+00 -5.988501398110229e+00 3.519668431188584e+00 4.789765885786929e+00 9.181798599340558e+03 + 92580 9.806986044500791e-01 -5.985327702000668e+00 -6.050120667516158e+00 3.751488611406585e+00 4.379437376737633e+00 9.371566453109961e+03 + 92600 9.603164027696457e-01 -6.009700548409076e+00 -5.999442070614180e+00 3.644248317867358e+00 4.703154084859959e+00 9.215315244256237e+03 + 92620 9.123608443701907e-01 -5.986033838486925e+00 -5.987058268081388e+00 3.750627731614772e+00 4.744745298353397e+00 9.177349567127952e+03 + 92640 9.693737853768104e-01 -6.104923093038237e+00 -5.954006969068850e+00 3.100337675932058e+00 4.966921413958984e+00 9.076397484315825e+03 + 92660 9.685733721309905e-01 -6.120755932019788e+00 -5.958926505074204e+00 3.060858785842734e+00 4.990108398387167e+00 9.091386793527914e+03 + 92680 9.168913925057434e-01 -6.049984448193428e+00 -6.003098866739107e+00 3.433086989901467e+00 4.702311254132459e+00 9.226568824073742e+03 + 92700 9.372976710721153e-01 -6.080608498443852e+00 -5.995308418909813e+00 3.253266412780978e+00 4.743072669610077e+00 9.202642913534812e+03 + 92720 9.072516097524811e-01 -6.030281472072612e+00 -5.929577406726683e+00 3.532494556298832e+00 5.110752883418902e+00 9.002124000460153e+03 + 92740 9.381256385296273e-01 -6.061906010950734e+00 -5.914725048175066e+00 3.414853921375832e+00 5.259989785814101e+00 8.957112857892402e+03 + 92760 9.238923198867027e-01 -6.021063018691799e+00 -5.994690460673923e+00 3.546011481083911e+00 4.697446790362720e+00 9.200735396330121e+03 + 92780 9.314699270002779e-01 -6.008395597851394e+00 -6.013263293721306e+00 3.631656831397357e+00 4.603705768438823e+00 9.257807142774758e+03 + 92800 1.008599814700428e+00 -6.098809421086679e+00 -5.983243633860296e+00 3.163064862429596e+00 4.826661496431264e+00 9.165694223477316e+03 + 92820 9.436635092028784e-01 -5.977646317949976e+00 -6.021620148734943e+00 3.868400333499715e+00 4.615895792204111e+00 9.283536794473232e+03 + 92840 1.000285077489808e+00 -6.041525929150849e+00 -5.989496545543767e+00 3.406887033774043e+00 4.705647805966997e+00 9.184837871043990e+03 + 92860 9.746140936571742e-01 -5.981735513601664e+00 -5.986848975936510e+00 3.855208482189755e+00 4.825846190157325e+00 9.176719852085424e+03 + 92880 1.001370884465483e+00 -6.000470996872350e+00 -6.025359712217724e+00 3.647185182512474e+00 4.504270327483084e+00 9.295087193826890e+03 + 92900 1.003485485692020e+00 -5.986836750706074e+00 -5.984698139946032e+00 3.786550883896313e+00 4.798831117829424e+00 9.170146129710563e+03 + 92920 1.100011876580059e+00 -6.115727212014576e+00 -5.981732437981941e+00 3.027720184964660e+00 4.797138913084321e+00 9.161073780535517e+03 + 92940 9.572167015410662e-01 -5.893077594681028e+00 -6.040659467748990e+00 4.235536667688436e+00 4.388098714311148e+00 9.342280155333743e+03 + 92960 1.009789899522207e+00 -5.962257477355764e+00 -5.975097131733445e+00 3.982698575299220e+00 4.908971292932479e+00 9.140727692865221e+03 + 92980 1.067642709659546e+00 -6.040837569272728e+00 -5.969667790297125e+00 3.493338430183918e+00 4.902006314549533e+00 9.124151521951764e+03 + 93000 1.028558921899013e+00 -5.978399690839425e+00 -5.982777368743179e+00 3.809598886926332e+00 4.784461582959517e+00 9.164245998684999e+03 + 93020 9.531461529812316e-01 -5.863809187631457e+00 -6.029085262768795e+00 4.382165639256477e+00 4.433124839427912e+00 9.306509102703963e+03 + 93040 1.056890816966651e+00 -6.016462201036746e+00 -5.975154447001737e+00 3.601958929666540e+00 4.839154445689841e+00 9.140937712267722e+03 + 93060 1.005532235416631e+00 -5.941182225295004e+00 -5.972289563444016e+00 4.016455491331429e+00 4.837832341834784e+00 9.132085971952896e+03 + 93080 1.036904757287008e+00 -5.988282518319290e+00 -5.971329906085779e+00 3.822962222915282e+00 4.920306745768372e+00 9.129225853771639e+03 + 93100 1.051015708453725e+00 -6.012767658914488e+00 -5.994719695523393e+00 3.605468237889761e+00 4.709102436594730e+00 9.200845660885005e+03 + 93120 9.337346019269741e-01 -5.848728498635131e+00 -6.060579883014610e+00 4.454543473766731e+00 4.238060040763981e+00 9.403937637403025e+03 + 93140 1.030030902016519e+00 -6.010644994107730e+00 -5.993233923643608e+00 3.620595809453794e+00 4.720572870413229e+00 9.196288424481945e+03 + 93160 1.057837725331392e+00 -6.080219448148757e+00 -5.998663051280260e+00 3.233777672444303e+00 4.702087124074840e+00 9.212960392522851e+03 + 93180 9.376903018963904e-01 -5.941592480450124e+00 -5.996080217189768e+00 4.028088364012851e+00 4.715211347703803e+00 9.205029995547176e+03 + 93200 9.427026289467044e-01 -5.990054823693479e+00 -6.040505709325814e+00 3.724540576251935e+00 4.434843783701755e+00 9.341814705987832e+03 + 93220 1.013233046792462e+00 -6.133190750576562e+00 -5.971300642720000e+00 2.964980511163235e+00 4.894578562888836e+00 9.129165200766976e+03 + 93240 8.934490975349725e-01 -5.985786090220083e+00 -6.029604947259248e+00 3.765765537065746e+00 4.514150879000653e+00 9.308151959767356e+03 + 93260 9.800436514323376e-01 -6.136235032295470e+00 -6.004949668780902e+00 2.946644260122939e+00 4.700505133767937e+00 9.232260046399693e+03 + 93280 9.646697139876947e-01 -6.129735948842610e+00 -5.956938129346762e+00 3.016267168055702e+00 5.008498987977010e+00 9.085344639190527e+03 + 93300 8.874427893340724e-01 -6.021860141531219e+00 -5.969011571954354e+00 3.627305435147085e+00 4.930770099947155e+00 9.122160849220310e+03 + 93320 9.325243612217277e-01 -6.084675755497639e+00 -6.005691156449628e+00 3.178595141044794e+00 4.632136931605668e+00 9.234529004805938e+03 + 93340 9.009092587411992e-01 -6.026556292229439e+00 -6.041442668648252e+00 3.502043067869769e+00 4.416563190813639e+00 9.344711435964631e+03 + 93360 9.841350127735562e-01 -6.132304821524253e+00 -6.021371526099509e+00 2.928113986312415e+00 4.565110135513278e+00 9.282798665816825e+03 + 93380 9.385807246643262e-01 -6.040846738837826e+00 -6.017771740622493e+00 3.440614660971338e+00 4.573114871568214e+00 9.271706770429551e+03 + 93400 8.807208265174612e-01 -5.928660370465323e+00 -6.042809229633868e+00 3.998913786280840e+00 4.343453372456189e+00 9.348938736197631e+03 + 93420 9.896361620414179e-01 -6.055415162761354e+00 -6.023641022959520e+00 3.385651690664246e+00 4.568103718438620e+00 9.289765016505211e+03 + 93440 9.631922047584699e-01 -5.980722577785181e+00 -6.037539971319533e+00 3.771627440855607e+00 4.445373174718121e+00 9.332662714589154e+03 + 93460 1.025763091642005e+00 -6.042275368587633e+00 -6.001923174483368e+00 3.440317578158959e+00 4.672026121187507e+00 9.222950259173882e+03 + 93480 1.033381868659976e+00 -6.029629026776412e+00 -5.972505670976630e+00 3.551988084206076e+00 4.879999233019168e+00 9.132837819902230e+03 + 93500 1.033254172985017e+00 -6.011962924292745e+00 -5.955937589458908e+00 3.642224120604169e+00 4.963930263112609e+00 9.082278032132499e+03 + 93520 9.883646116751856e-01 -5.931981829539673e+00 -5.995598784253384e+00 4.048996119244813e+00 4.683697720586760e+00 9.203524313342221e+03 + 93540 9.784616802303986e-01 -5.907513140549610e+00 -5.974670121582267e+00 4.167534549694230e+00 4.781908772095488e+00 9.139450776037895e+03 + 93560 1.059612153165929e+00 -6.020639695095587e+00 -5.975316585587861e+00 3.569780337745006e+00 4.830032646266899e+00 9.141423591328725e+03 + 93580 1.007376275376154e+00 -5.939974093164111e+00 -6.011284091225516e+00 3.970039643113140e+00 4.560566599058016e+00 9.251729141788226e+03 + 93600 1.000643871863482e+00 -5.930206226105319e+00 -5.995144827990976e+00 4.099197943223079e+00 4.726310441979473e+00 9.202162687384256e+03 + 93620 9.953493980126841e-01 -5.925033375617418e+00 -6.025524359174819e+00 4.080345152288544e+00 4.503310373772504e+00 9.295569534157989e+03 + 93640 1.064913549723367e+00 -6.033609184741526e+00 -5.988718946350775e+00 3.521044207624584e+00 4.778810903206217e+00 9.182442000113155e+03 + 93660 1.032362135473018e+00 -5.992270130790513e+00 -6.005280834051839e+00 3.776962007398535e+00 4.702252535872177e+00 9.233265093100666e+03 + 93680 1.035197740094568e+00 -6.007013599225484e+00 -5.994543831208215e+00 3.645473538910315e+00 4.717076876555839e+00 9.200310070257183e+03 + 93700 1.041214636537405e+00 -6.028716247025527e+00 -5.962467320652049e+00 3.580515858649267e+00 4.960927445874001e+00 9.102174559412397e+03 + 93720 1.016390428986946e+00 -6.005648104028441e+00 -6.015939275518408e+00 3.642109204093400e+00 4.583015704844366e+00 9.266032362528114e+03 + 93740 1.014749278266371e+00 -6.018133577011636e+00 -6.010553929890744e+00 3.546358747120229e+00 4.589882253834997e+00 9.249472384182725e+03 + 93760 1.028734728324503e+00 -6.055495656574205e+00 -5.974276307048829e+00 3.433539964694126e+00 4.899914038322555e+00 9.138262372436948e+03 + 93780 9.957474282021727e-01 -6.023761910627298e+00 -6.011055666967334e+00 3.587377919064549e+00 4.660339136444920e+00 9.251016635038286e+03 + 93800 9.858205063858017e-01 -6.031570827340636e+00 -6.032672336632356e+00 3.536090656421268e+00 4.529765619610206e+00 9.317617167852070e+03 + 93820 9.199329037089282e-01 -5.960695716703579e+00 -6.005406834739899e+00 3.890634452975001e+00 4.633896294187298e+00 9.233667054380230e+03 + 93840 9.644976390140015e-01 -6.057658701609730e+00 -6.009589028063054e+00 3.389296193797505e+00 4.665319698060463e+00 9.246509309950654e+03 + 93860 9.829653713372970e-01 -6.123873470327216e+00 -5.954486821918110e+00 3.084889006408699e+00 5.057533354072914e+00 9.077875470424107e+03 + 93880 9.439727856330419e-01 -6.107292039536254e+00 -5.950507094739788e+00 3.173976287786973e+00 5.074259703200077e+00 9.065756179654887e+03 + 93900 9.255990130050203e-01 -6.120004952747221e+00 -5.966366293613188e+00 3.115038436565535e+00 4.997255392818818e+00 9.114096726750182e+03 + 93920 8.427387754489267e-01 -6.030439350078264e+00 -6.006720922838523e+00 3.517544574739641e+00 4.653739454364988e+00 9.237682555406534e+03 + 93940 9.333399106880507e-01 -6.187177361176544e+00 -5.962807315707908e+00 2.695233188623299e+00 4.983600710856528e+00 9.103251421573483e+03 + 93960 8.352140068879473e-01 -6.053140747454613e+00 -5.994813895620208e+00 3.388712219549476e+00 4.723634028833779e+00 9.201150059149833e+03 + 93980 9.101130088736247e-01 -6.162723313519563e+00 -5.965041074708683e+00 2.856739015593896e+00 4.991861022073561e+00 9.110059835482014e+03 + 94000 9.219878977377274e-01 -6.167262630705228e+00 -5.985524230942518e+00 2.790932690477775e+00 4.834502705841724e+00 9.172676511843023e+03 + 94020 8.565663573115526e-01 -6.047142603868017e+00 -6.005135275976323e+00 3.415494087583965e+00 4.656706664951058e+00 9.232812281880641e+03 + 94040 8.598031356150282e-01 -6.014900012509350e+00 -5.953512326487363e+00 3.626933174413893e+00 4.979430767265848e+00 9.074872313916998e+03 + 94060 9.172644569259599e-01 -6.049049172464232e+00 -6.018633752899497e+00 3.413391824378816e+00 4.588041870290493e+00 9.274331553324901e+03 + 94080 9.603271487720929e-01 -6.063272423156502e+00 -6.026859884214838e+00 3.282939583966269e+00 4.492026017391496e+00 9.299708106562335e+03 + 94100 9.430354987819062e-01 -6.007613077843463e+00 -5.985049150114367e+00 3.654911415896582e+00 4.784476980673579e+00 9.171216064505685e+03 + 94120 9.023835793791308e-01 -5.928068614315489e+00 -5.977805156996920e+00 4.122451954596821e+00 4.836857029814937e+00 9.149048851608704e+03 + 94140 9.903826310028637e-01 -6.041691525536578e+00 -6.034633784495830e+00 3.455083799584075e+00 4.495610440821943e+00 9.323690798623775e+03 + 94160 1.037161583404263e+00 -6.097431691523498e+00 -5.996628794389118e+00 3.237636005108668e+00 4.816461839652193e+00 9.206706980156685e+03 + 94180 9.087868051326436e-01 -5.896479847965462e+00 -6.023124796535016e+00 4.239300154282507e+00 4.512085261353675e+00 9.288170362481120e+03 + 94200 9.812685541587761e-01 -5.991425009643056e+00 -5.996501736995487e+00 3.757128887157152e+00 4.727977533078471e+00 9.206290926002494e+03 + 94220 1.046056204846449e+00 -6.072557312486155e+00 -5.966891005791136e+00 3.304329247869947e+00 4.911081532720861e+00 9.115710373932909e+03 + 94240 1.004982817913677e+00 -5.998294909633646e+00 -6.017509449407452e+00 3.684418894192112e+00 4.574086033370497e+00 9.270862650844600e+03 + 94260 1.014388137485901e+00 -5.996720059006901e+00 -6.010974171384073e+00 3.735037108105575e+00 4.653187789019088e+00 9.250766561353445e+03 + 94280 9.768766593952090e-01 -5.924821712462682e+00 -6.071394423056050e+00 4.032153890739501e+00 4.190510704458720e+00 9.437542281484111e+03 + 94300 1.004143252054956e+00 -5.953855390674719e+00 -6.021302334683414e+00 3.914808501384805e+00 4.527517711506029e+00 9.282570917618468e+03 + 94320 1.000550485074426e+00 -5.938594079016808e+00 -6.020499970528772e+00 3.999140916524417e+00 4.528824612566972e+00 9.280081895976049e+03 + 94340 9.592776640604833e-01 -5.869441056124731e+00 -6.008271547376529e+00 4.364101334244232e+00 4.566915169527320e+00 9.242454586238318e+03 + 94360 1.052893441674532e+00 -6.000969049581993e+00 -5.999817537971719e+00 3.659625600278341e+00 4.666237758140385e+00 9.216475080989228e+03 + 94380 1.024829670564327e+00 -5.953804232535115e+00 -6.011826201391147e+00 3.959026202118567e+00 4.625855078076572e+00 9.253384792886536e+03 + 94400 9.920089842000683e-01 -5.900482816454371e+00 -6.032655444711682e+00 4.279834100127156e+00 4.520878415025558e+00 9.317540344688270e+03 + 94420 1.075654972856715e+00 -6.023679138029183e+00 -6.003467567373416e+00 3.581027523855521e+00 4.697085490291387e+00 9.227700565645491e+03 + 94440 1.028778702351383e+00 -5.960652373320967e+00 -6.001461723376734e+00 3.960992100231613e+00 4.726658496984892e+00 9.221518987812582e+03 + 94460 9.929047660666727e-01 -5.919286553192048e+00 -6.042428276340521e+00 4.078592764715665e+00 4.371493934277065e+00 9.347749097793805e+03 + 94480 1.028594018147993e+00 -5.987768144992869e+00 -6.027802168121504e+00 3.803440951534185e+00 4.573559395484509e+00 9.302592782553376e+03 + 94500 1.025743264731821e+00 -6.006457850783084e+00 -6.010732886393869e+00 3.622093039316844e+00 4.597545123280090e+00 9.250052503505840e+03 + 94520 1.029117393396721e+00 -6.039029105277233e+00 -5.987878407503574e+00 3.490737379837413e+00 4.784452601998665e+00 9.179892558249367e+03 + 94540 9.956185557872157e-01 -6.021378459419370e+00 -6.001063782689154e+00 3.629009175074239e+00 4.745659192545202e+00 9.220324889085827e+03 + 94560 1.038862249820165e+00 -6.119522493183204e+00 -6.001506653971469e+00 3.029934304911610e+00 4.707599516557485e+00 9.221691509625185e+03 + 94580 9.799803280389342e-01 -6.065682244446433e+00 -5.991550894063900e+00 3.367111209370673e+00 4.792784895056569e+00 9.191137641431686e+03 + 94600 8.553292249563450e-01 -5.907024690378362e+00 -6.007771304408273e+00 4.233373065091190e+00 4.654870416843307e+00 9.240898896911791e+03 + 94620 9.737030447344890e-01 -6.100442138544905e+00 -6.023613068605949e+00 3.102745433790073e+00 4.543909842639705e+00 9.289672349176348e+03 + 94640 8.830153988127762e-01 -5.978155213946994e+00 -6.040000821161965e+00 3.807323062244560e+00 4.452196015039407e+00 9.340230683672073e+03 + 94660 9.449169102578151e-01 -6.075460405635059e+00 -5.984669013959854e+00 3.261397388750873e+00 4.782735609672350e+00 9.170070670252057e+03 + 94680 9.769776749157604e-01 -6.121545164846050e+00 -5.974925776658918e+00 3.032676949172019e+00 4.874588165419521e+00 9.140251701021791e+03 + 94700 1.020593881751412e+00 -6.179367541083741e+00 -5.959195963305854e+00 2.758809793936601e+00 5.023069064978773e+00 9.092216920775505e+03 + 94720 9.016373699568452e-01 -5.990038590541530e+00 -6.019008512707730e+00 3.772879824149218e+00 4.606530047989926e+00 9.275479512731046e+03 + 94740 9.911982309132864e-01 -6.102634324396875e+00 -5.990180255977284e+00 3.096953208541824e+00 4.742681871617962e+00 9.186925833370498e+03 + 94760 9.391611655436257e-01 -5.997609801841262e+00 -6.000905137147389e+00 3.760662687139738e+00 4.741740361860462e+00 9.219798494691498e+03 + 94780 1.006109515289531e+00 -6.061500133477270e+00 -5.993461692488776e+00 3.364894499626489e+00 4.755581756697136e+00 9.196986067295953e+03 + 94800 9.806220635953549e-01 -5.984286339786313e+00 -5.973961980171657e+00 3.819397714940515e+00 4.878681785537355e+00 9.137286528433091e+03 + 94820 1.009010188142077e+00 -5.986198299572623e+00 -6.010054451452831e+00 3.802784913637598e+00 4.665799197813867e+00 9.247937182393478e+03 + 94840 1.000346563317788e+00 -5.939097925279751e+00 -6.078003850935052e+00 3.956635270105404e+00 4.159015949370138e+00 9.458068202104883e+03 + 94860 1.037295835669813e+00 -5.974793191453345e+00 -6.010999412910149e+00 3.799254167964006e+00 4.591352441464374e+00 9.250851373565962e+03 + 94880 9.976901085157588e-01 -5.907635665001663e+00 -5.976410450749055e+00 4.178524510897162e+00 4.783609048271933e+00 9.144761753177954e+03 + 94900 9.658175943341680e-01 -5.856044626617686e+00 -5.997065233459568e+00 4.426403967678579e+00 4.616641820324108e+00 9.208045140861503e+03 + 94920 1.017302293185459e+00 -5.931822031227415e+00 -6.042837423141791e+00 4.000953158984965e+00 4.363485599036239e+00 9.349003727203481e+03 + 94940 9.698714727173007e-01 -5.864796531580102e+00 -5.999574293216920e+00 4.437937778134579e+00 4.664023014024764e+00 9.215708367882666e+03 + 94960 1.031119647727532e+00 -5.957468654519881e+00 -5.993078079493547e+00 3.945434652420791e+00 4.740959823681290e+00 9.195785345969052e+03 + 94980 1.008167231964538e+00 -5.928844640327234e+00 -6.034945139944816e+00 4.024505947699401e+00 4.415260459895991e+00 9.324644358123605e+03 + 95000 1.026281809141785e+00 -5.966481919660632e+00 -6.011358895815677e+00 3.854361673504163e+00 4.596671131732280e+00 9.251939846085541e+03 + 95020 9.976630096264398e-01 -5.938526898105757e+00 -5.989972848305277e+00 3.952535585383399e+00 4.657124978102689e+00 9.186323897037637e+03 + 95040 9.903369133529597e-01 -5.943430702737667e+00 -6.011488437257345e+00 3.990800758110267e+00 4.600002714597900e+00 9.252345682824460e+03 + 95060 9.796229377826041e-01 -5.944633734729479e+00 -5.975062532742219e+00 3.982511733488347e+00 4.807784866457920e+00 9.140640857971084e+03 + 95080 1.009045107114247e+00 -6.002984097214718e+00 -5.976443552897360e+00 3.692352739004185e+00 4.844752651610413e+00 9.144883745399362e+03 + 95100 9.935190020486889e-01 -5.995594690980003e+00 -6.077930916697068e+00 3.748467419161414e+00 4.275680069604276e+00 9.457815554912739e+03 + 95120 9.914586622388470e-01 -6.013691383888232e+00 -6.041945818688934e+00 3.588487887946941e+00 4.426246550961658e+00 9.346290245612150e+03 + 95140 9.504231928433325e-01 -5.976270979896865e+00 -6.046552728813741e+00 3.835971506391897e+00 4.432402828045698e+00 9.360498968595060e+03 + 95160 9.804492291455735e-01 -6.041003109393825e+00 -6.011789595042327e+00 3.534996981273852e+00 4.702745501456890e+00 9.253283539784681e+03 + 95180 9.749837239196405e-01 -6.052245292189327e+00 -6.025783206396939e+00 3.392734732058423e+00 4.544684123672854e+00 9.296379721246536e+03 + 95200 9.670109719503991e-01 -6.058039462528069e+00 -6.036465676304895e+00 3.397754260083931e+00 4.521634279110021e+00 9.329341441569139e+03 + 95220 9.624333702289875e-01 -6.069003909504825e+00 -6.049215472039305e+00 3.320805483646473e+00 4.434433753824290e+00 9.368745484397343e+03 + 95240 9.532401056259716e-01 -6.072451209124635e+00 -5.997266352643951e+00 3.306856717970496e+00 4.738579798701519e+00 9.208671955712132e+03 + 95260 9.845016636459654e-01 -6.131391103549574e+00 -5.991735594113335e+00 2.964074731297003e+00 4.765998278100129e+00 9.191711052536000e+03 + 95280 9.060309976500294e-01 -6.025604763648489e+00 -5.980035659241802e+00 3.619174818174552e+00 4.880839667473865e+00 9.155869665853383e+03 + 95300 9.184498066890725e-01 -6.049567906711621e+00 -5.990413903533570e+00 3.455572540954434e+00 4.795243981255208e+00 9.187631802180606e+03 + 95320 9.439745183578174e-01 -6.084785233708757e+00 -5.978830288754804e+00 3.286486891979812e+00 4.894896582380150e+00 9.152178860398391e+03 + 95340 9.736913886241206e-01 -6.114622006594506e+00 -5.949805022255585e+00 3.105697070235057e+00 5.052101699655037e+00 9.063594777855404e+03 + 95360 9.327140110297205e-01 -6.025579816040525e+00 -5.997259096405820e+00 3.569665236158490e+00 4.732287190918169e+00 9.208645450750419e+03 + 95380 9.819898849375112e-01 -6.054560699943782e+00 -6.006133374367264e+00 3.386234199165888e+00 4.664311396730667e+00 9.235903878039448e+03 + 95400 9.910255764459250e-01 -6.018414553026550e+00 -5.990665491505911e+00 3.638492032831150e+00 4.797831438236054e+00 9.188373918597279e+03 + 95420 9.617581531967009e-01 -5.925639279040673e+00 -6.035454875281984e+00 4.085585563049582e+00 4.455007415523375e+00 9.326194637046043e+03 + 95440 1.006226747223286e+00 -5.950396060784550e+00 -6.012316333554942e+00 4.024804565713380e+00 4.669248777334547e+00 9.254897645864330e+03 + 95460 1.030358658649033e+00 -5.956879695268370e+00 -6.026836124467660e+00 3.911538510230798e+00 4.509837868046043e+00 9.299609526484026e+03 + 95480 1.090220490240386e+00 -6.025577030717097e+00 -6.028857324445020e+00 3.546960878949121e+00 4.528124924739571e+00 9.305876621309128e+03 + 95500 1.109192396057043e+00 -6.045395197216797e+00 -6.018795217650608e+00 3.425391213113024e+00 4.578132412115619e+00 9.274859813492150e+03 + 95520 9.928999664002216e-01 -5.873524571906970e+00 -6.023663274108280e+00 4.360446256517251e+00 4.498326594588250e+00 9.289805936482902e+03 + 95540 9.772746411792442e-01 -5.853372364353572e+00 -6.012393094488770e+00 4.538342622374205e+00 4.625220981559445e+00 9.255087647248356e+03 + 95560 1.037652760840065e+00 -5.948507915133175e+00 -5.993255568250525e+00 3.965878046165973e+00 4.708930097289206e+00 9.196267853506561e+03 + 95580 1.002539444629045e+00 -5.904553286470214e+00 -5.997346827205158e+00 4.195967562271685e+00 4.663132691617615e+00 9.208887895525228e+03 + 95600 1.037817796391123e+00 -5.969439863681574e+00 -5.985727672866933e+00 3.870532530728908e+00 4.777005409856254e+00 9.173286770940877e+03 + 95620 9.795420005610300e-01 -5.899849297552656e+00 -6.019774121803854e+00 4.173149100099962e+00 4.484522200943009e+00 9.277864054505111e+03 + 95640 1.048596226270975e+00 -6.024533302159186e+00 -6.007262049212427e+00 3.551202795151471e+00 4.650377002289516e+00 9.239336437401354e+03 + 95660 9.883789046665934e-01 -5.959820705208630e+00 -6.022017355413285e+00 3.860247306125108e+00 4.503104515749471e+00 9.284748387472686e+03 + 95680 1.009438176942720e+00 -6.019519322395571e+00 -5.954823076345161e+00 3.609083993448194e+00 4.980579849981371e+00 9.078865697442307e+03 + 95700 9.648995799909704e-01 -5.979673357366833e+00 -5.964438699092693e+00 3.773944673088690e+00 4.861424438454553e+00 9.108179893096296e+03 + 95720 1.024605163207389e+00 -6.091979333754413e+00 -5.989328556123897e+00 3.189730857850850e+00 4.779167508161772e+00 9.184318720046165e+03 + 95740 8.784424563297207e-01 -5.897543305038710e+00 -6.015444635487267e+00 4.256641266164163e+00 4.579633581556628e+00 9.264521701197833e+03 + 95760 9.143045390577533e-01 -5.968362849737898e+00 -6.010046189614317e+00 3.790975719845538e+00 4.551623531799140e+00 9.247944621003673e+03 + 95780 9.845429105904092e-01 -6.085550277675749e+00 -6.035931054304919e+00 3.230766793167618e+00 4.515688052312917e+00 9.327694022641901e+03 + 95800 9.937207734011191e-01 -6.112012802236822e+00 -5.967429930856783e+00 3.134538933845319e+00 4.964756155436540e+00 9.117344811003271e+03 + 95820 9.435483920180487e-01 -6.047227149090185e+00 -5.984856605591721e+00 3.410719319806712e+00 4.768860632385305e+00 9.170641458952761e+03 + 95840 9.777634868068209e-01 -6.103295440741928e+00 -5.974901378184962e+00 3.181136134293052e+00 4.918394710412120e+00 9.140172245744503e+03 + 95860 8.989120290937723e-01 -5.986949456712046e+00 -6.020063585582036e+00 3.776137270200059e+00 4.585990817833697e+00 9.278740249780389e+03 + 95880 9.216401269819307e-01 -6.015085362737524e+00 -6.027070173197583e+00 3.578924659994488e+00 4.510106023689408e+00 9.300339241951917e+03 + 95900 9.794363088435865e-01 -6.082758463359166e+00 -6.005881063033618e+00 3.239859492638620e+00 4.681301422047168e+00 9.235112007415240e+03 + 95920 9.686400403768717e-01 -6.032955919164269e+00 -6.007553200805039e+00 3.547248867929405e+00 4.693115207806061e+00 9.240264941849331e+03 + 95940 1.027247532129516e+00 -6.073705795616404e+00 -5.999199130446444e+00 3.288243242471132e+00 4.716072043746219e+00 9.214599135256754e+03 + 95960 9.794509031816385e-01 -5.950952689417671e+00 -6.016317760106690e+00 3.989338599997680e+00 4.614002248889332e+00 9.267202159840424e+03 + 95980 1.075930991705041e+00 -6.048247290170844e+00 -5.986767180896875e+00 3.472000988239155e+00 4.825029289706452e+00 9.176482643722396e+03 + 96000 9.782102174421234e-01 -5.867932548088808e+00 -6.067162706839676e+00 4.428237380874463e+00 4.284226978559547e+00 9.424374916441146e+03 + 96020 9.898558604591594e-01 -5.861222214302768e+00 -6.040514115306667e+00 4.419402641284387e+00 4.389880800387986e+00 9.341826562052440e+03 + 96040 1.015395099424125e+00 -5.883911845574032e+00 -5.999223565930539e+00 4.328578390663519e+00 4.666440647945403e+00 9.214651808067498e+03 + 96060 1.046001534240224e+00 -5.919862784751841e+00 -5.986433272547225e+00 4.179822741181201e+00 4.797564698510420e+00 9.175428402704185e+03 + 96080 1.049847677785737e+00 -5.920802446958024e+00 -6.013267025695900e+00 4.100900377140960e+00 4.569954457180761e+00 9.257810063267023e+03 + 96100 1.079204320652980e+00 -5.964165404076594e+00 -6.003779598880807e+00 3.894224041212488e+00 4.666753204369863e+00 9.228642572730489e+03 + 96120 1.068232668514922e+00 -5.956779257561318e+00 -6.032197957562008e+00 3.882234977467997e+00 4.449169131057928e+00 9.316168948695842e+03 + 96140 1.028401940710397e+00 -5.914841821752476e+00 -6.026186419986133e+00 4.188001697932197e+00 4.548643784353647e+00 9.297604586163785e+03 + 96160 1.012301036257794e+00 -5.915251194813584e+00 -6.064600221142466e+00 4.146416093849590e+00 4.288830872982018e+00 9.416430384492265e+03 + 96180 1.040766357610498e+00 -5.990274938888741e+00 -6.026250357103574e+00 3.688941768102832e+00 4.482365349535286e+00 9.297809935780180e+03 + 96200 1.010040172563128e+00 -5.977917893067936e+00 -6.014193743690896e+00 3.780708848334309e+00 4.572407300387527e+00 9.260677542039102e+03 + 96220 9.808320863978355e-01 -5.970148335695297e+00 -6.042251289555839e+00 3.770581092599445e+00 4.356554773636164e+00 9.347212581596996e+03 + 96240 9.305644506224656e-01 -5.927686420207044e+00 -5.976591156734094e+00 4.114829534379347e+00 4.834010969257505e+00 9.145316626682190e+03 + 96260 9.779458583257721e-01 -6.019348837028149e+00 -5.956107315339368e+00 3.557631372951578e+00 4.920773977082412e+00 9.082805591382292e+03 + 96280 9.904350115244523e-01 -6.052647998068558e+00 -5.973897109278077e+00 3.408223428454515e+00 4.860423218550109e+00 9.137091635122370e+03 + 96300 9.061963907376336e-01 -5.936994304888803e+00 -6.022184979575575e+00 4.017967085145298e+00 4.528789047879554e+00 9.285261441457153e+03 + 96320 1.026378895663077e+00 -6.119130067916058e+00 -5.958926351171058e+00 3.046916061830948e+00 4.966830594825778e+00 9.091412141599763e+03 + 96340 9.349912673619580e-01 -5.984056428802109e+00 -6.037651774967523e+00 3.702659373002223e+00 4.394906601467399e+00 9.333007398350066e+03 + 96360 9.796074430731135e-01 -6.049350503235654e+00 -6.015495952100532e+00 3.387720646266563e+00 4.582118717859291e+00 9.264699155245737e+03 + 96380 9.191893129130537e-01 -5.955800893106983e+00 -6.043984528465451e+00 3.916985533991129e+00 4.410621453389338e+00 9.352561406627157e+03 + 96400 9.575730111432178e-01 -6.006038037310796e+00 -5.985777894241363e+00 3.670259340051515e+00 4.786596216803204e+00 9.173446264305772e+03 + 96420 9.776551206045434e-01 -6.025959675715023e+00 -5.993060360306980e+00 3.548082728438794e+00 4.736995688664385e+00 9.195763714108836e+03 + 96440 9.629890897848359e-01 -5.991389528804721e+00 -6.020242317845025e+00 3.739432554802946e+00 4.573755375178850e+00 9.279299728795033e+03 + 96460 9.859374962593189e-01 -6.013060487439079e+00 -5.998276085294908e+00 3.659395790131505e+00 4.744290115122176e+00 9.211755235588287e+03 + 96480 1.024832450077476e+00 -6.057016505233285e+00 -6.026733209427803e+00 3.389051057285843e+00 4.562942428125803e+00 9.299283519239252e+03 + 96500 1.038184253802000e+00 -6.062423073081374e+00 -6.000977877393126e+00 3.357881289648440e+00 4.710709111903661e+00 9.220071888668113e+03 + 96520 1.000239030262752e+00 -5.991106816055823e+00 -6.071051151247307e+00 3.763450779883189e+00 4.304398035867800e+00 9.436453138672317e+03 + 96540 1.024306725317957e+00 -6.013409103837817e+00 -6.028105739733802e+00 3.625244485293641e+00 4.540854127681839e+00 9.303545633380123e+03 + 96560 1.081190828245497e+00 -6.089234989482030e+00 -5.987312138321705e+00 3.245065448765537e+00 4.830322232638366e+00 9.178154186556243e+03 + 96580 1.001965598109065e+00 -5.962530408124425e+00 -6.015313387672569e+00 3.875607062505841e+00 4.572519025800712e+00 9.264140796522373e+03 + 96600 1.056461673834690e+00 -6.034601897315613e+00 -5.988048937002086e+00 3.571582849092704e+00 4.838897151260305e+00 9.180392238048547e+03 + 96620 1.033590145894872e+00 -5.989249374218269e+00 -5.990489087491635e+00 3.732010873578715e+00 4.724892248118040e+00 9.187872078932269e+03 + 96640 9.954887757250682e-01 -5.912756043191632e+00 -5.998425194342862e+00 4.195248228130655e+00 4.703322704961995e+00 9.212194075577394e+03 + 96660 9.856715404617307e-01 -5.865346157334296e+00 -5.998011245083950e+00 4.387220453426883e+00 4.625436989712387e+00 9.210930874749927e+03 + 96680 1.071410035857962e+00 -5.950049388314482e+00 -6.023872834962559e+00 3.949157513348507e+00 4.525251858553802e+00 9.290463034685121e+03 + 96700 1.059035062760754e+00 -5.891393963739584e+00 -6.027771242187386e+00 4.287298511877939e+00 4.504199074715030e+00 9.302500035698960e+03 + 96720 1.082846042599960e+00 -5.895073875414120e+00 -6.044201574824681e+00 4.163620886408799e+00 4.307306558956455e+00 9.353257908962103e+03 + 96740 1.121230195260634e+00 -5.932288509924627e+00 -6.040899378555701e+00 4.023863340263500e+00 4.400202925106272e+00 9.343041060892130e+03 + 96760 1.070346857394463e+00 -5.849683432529357e+00 -6.048404429933732e+00 4.508896310281326e+00 4.367809591210442e+00 9.366237112852627e+03 + 96780 1.102352346258210e+00 -5.903379286086159e+00 -6.035396448207109e+00 4.192583150257438e+00 4.434520175769128e+00 9.325997502514410e+03 + 96800 1.115486174034992e+00 -5.940114461423031e+00 -5.994923447008214e+00 3.998449410339222e+00 4.683727733445992e+00 9.201473968002478e+03 + 96820 1.098304269992147e+00 -5.943684032118396e+00 -6.042337070644308e+00 3.953004744933044e+00 4.386523731208884e+00 9.347481915571343e+03 + 96840 1.072473166323507e+00 -5.945380976591960e+00 -6.006609382962785e+00 3.987583721712886e+00 4.636000737266345e+00 9.237348822832508e+03 + 96860 1.067434157703514e+00 -5.983355766038104e+00 -6.007832761222678e+00 3.769127516169860e+00 4.628576822017269e+00 9.241106798467234e+03 + 96880 1.049772030855263e+00 -5.999607399855426e+00 -5.978209254737830e+00 3.701627673777467e+00 4.824499134394961e+00 9.150290504180217e+03 + 96900 1.011285196760997e+00 -5.980739364573425e+00 -5.977966441105847e+00 3.782209964489039e+00 4.798132520148392e+00 9.149524744298771e+03 + 96920 9.788670986155742e-01 -5.960444370028313e+00 -5.980868243056859e+00 3.943648702970092e+00 4.826371663456039e+00 9.158395714525464e+03 + 96940 1.031552351952172e+00 -6.059330418817584e+00 -5.964836143035809e+00 3.401730789105440e+00 4.944331543586315e+00 9.109431341233359e+03 + 96960 9.734820600316595e-01 -5.990701922455864e+00 -6.002407998815282e+00 3.734592331952483e+00 4.667374229987243e+00 9.224430347819660e+03 + 96980 1.018752333068075e+00 -6.072425857247036e+00 -5.946296674499523e+00 3.336643858836761e+00 5.060897144600927e+00 9.052924790604755e+03 + 97000 9.012727234692852e-01 -5.908987703121392e+00 -5.989089599405458e+00 4.189454433879547e+00 4.729496949688050e+00 9.183561423806304e+03 + 97020 9.892722264648188e-01 -6.043755558580065e+00 -5.967806276271409e+00 3.451349472872462e+00 4.887462005002218e+00 9.118480263758116e+03 + 97040 1.017899293452533e+00 -6.087319559259154e+00 -5.968513512123562e+00 3.270384239220085e+00 4.952586947049031e+00 9.120641496545803e+03 + 97060 9.651246324392031e-01 -6.008319405545039e+00 -5.956930498421503e+00 3.710059397127934e+00 5.005142454238950e+00 9.085281154607854e+03 + 97080 9.736263386275996e-01 -6.016881201493080e+00 -5.929512078253887e+00 3.620490064303216e+00 5.122177090270785e+00 9.001925701758397e+03 + 97100 9.693747566584656e-01 -5.999511371516800e+00 -6.019933481646365e+00 3.732403587873361e+00 4.615136671198074e+00 9.278314271624742e+03 + 97120 9.506363678876203e-01 -5.958548920397047e+00 -6.022644969318065e+00 3.927137440801193e+00 4.559088009065194e+00 9.286693873433840e+03 + 97140 1.002550918984612e+00 -6.019162423972995e+00 -5.988037729696235e+00 3.601548901139066e+00 4.780271712207095e+00 9.180369513158998e+03 + 97160 9.936297308768781e-01 -5.983830899467006e+00 -5.966318118702315e+00 3.831159469459880e+00 4.931720566704801e+00 9.113932161552508e+03 + 97180 1.033904601222158e+00 -6.014458483862352e+00 -6.019759821321122e+00 3.645967045122098e+00 4.615525945054521e+00 9.277787435713240e+03 + 97200 9.866632951878325e-01 -5.912823122369054e+00 -6.090250588211653e+00 4.122388216337010e+00 4.103572250657204e+00 9.496175130241936e+03 + 97220 1.066534366803594e+00 -6.002186255902025e+00 -5.990523654992304e+00 3.731450786241079e+00 4.798419245446360e+00 9.187974205315491e+03 + 97240 9.932357688996131e-01 -5.863443686440395e+00 -6.012640312628903e+00 4.423517340000805e+00 4.566807224323114e+00 9.255866643687274e+03 + 97260 1.099056267910019e+00 -5.990642957554204e+00 -5.993139264454959e+00 3.799166787616824e+00 4.784832607090451e+00 9.195987263248628e+03 + 97280 1.034916394059455e+00 -5.870036261389747e+00 -5.992792568783102e+00 4.395363905635372e+00 4.690478192105549e+00 9.194936991393350e+03 + 97300 1.151310719523483e+00 -6.022905396441576e+00 -6.018166368838057e+00 3.617839670425753e+00 4.645051900287313e+00 9.272880954517443e+03 + 97320 9.967403886471896e-01 -5.781774382565998e+00 -6.095848613460610e+00 4.842390202478471e+00 4.038927365851460e+00 9.513606917020783e+03 + 97340 1.138498546532178e+00 -5.990883737241616e+00 -6.002383819022256e+00 3.722492222056077e+00 4.656456972839735e+00 9.224371462119618e+03 + 97360 1.108466744141072e+00 -5.954835220093056e+00 -6.029126545009205e+00 3.953422842399278e+00 4.526830558185378e+00 9.306674598484891e+03 + 97380 1.066165938469033e+00 -5.918466830374133e+00 -6.019518931416155e+00 4.148930261932064e+00 4.568673459986676e+00 9.277055739782383e+03 + 97400 1.028269905920360e+00 -5.910384079432938e+00 -5.999114613152256e+00 4.235594066093884e+00 4.726089610471845e+00 9.214292495458798e+03 + 97420 1.020910885745876e+00 -5.960985520492295e+00 -6.010843551936127e+00 3.904743354462764e+00 4.618450822406855e+00 9.250358330502588e+03 + 97440 1.003219674570014e+00 -5.998774580850043e+00 -6.025500723762576e+00 3.761502742423359e+00 4.608037093962344e+00 9.295492738205687e+03 + 97460 1.019695765119460e+00 -6.071493083307756e+00 -5.986283394895963e+00 3.357985859802994e+00 4.847273076820176e+00 9.174987434752429e+03 + 97480 9.968901620457375e-01 -6.067366133343240e+00 -5.978507703942025e+00 3.346697159038586e+00 4.856936011457870e+00 9.151164403017727e+03 + 97500 9.515616245085153e-01 -6.017025050408511e+00 -5.977458173508964e+00 3.597195161492405e+00 4.824394291604013e+00 9.147926567595849e+03 + 97520 9.536629250504800e-01 -6.026660850754853e+00 -5.977844005573809e+00 3.499175276566767e+00 4.779489155978698e+00 9.149148769954760e+03 + 97540 9.508420558835518e-01 -6.022486805333151e+00 -5.966792501666234e+00 3.570400736103321e+00 4.890206046424396e+00 9.115382352800085e+03 + 97560 9.771466718457020e-01 -6.056378516066914e+00 -5.982914987229796e+00 3.423503472409176e+00 4.845342423436256e+00 9.164669746784562e+03 + 97580 9.739626463895094e-01 -6.043765123066057e+00 -6.001681667974627e+00 3.458723006372638e+00 4.700372717901257e+00 9.222213269587475e+03 + 97600 9.596766770006505e-01 -6.011793745335624e+00 -6.012201991731238e+00 3.608721760774409e+00 4.606377546794870e+00 9.254545985419149e+03 + 97620 9.711141543929402e-01 -6.015579360946731e+00 -6.014845834938097e+00 3.551981712227445e+00 4.556193732081809e+00 9.262685916693255e+03 + 97640 9.723177367828872e-01 -5.999128269248606e+00 -6.028176634288247e+00 3.629747453601560e+00 4.462947246323980e+00 9.303746644996760e+03 + 97660 1.041240777692210e+00 -6.079721497695693e+00 -6.032433632942888e+00 3.217011857066135e+00 4.488546094250161e+00 9.316879611433764e+03 + 97680 1.050795699171073e+00 -6.074752574352083e+00 -5.965028444530246e+00 3.339392562745019e+00 4.969445495936228e+00 9.110017342581821e+03 + 97700 1.018476819105022e+00 -6.007803104733897e+00 -5.968052451361999e+00 3.643071963280672e+00 4.871326366335838e+00 9.119236365439572e+03 + 97720 1.090912960088806e+00 -6.094330032326338e+00 -5.924363755190130e+00 3.226153227385514e+00 5.202125892898007e+00 8.986319063273862e+03 + 97740 1.030634658597051e+00 -5.981410695390556e+00 -6.003115958438837e+00 3.793123168321940e+00 4.668488189020110e+00 9.226618477018312e+03 + 97760 1.068440179991526e+00 -6.015824731637972e+00 -6.013890139115846e+00 3.625948871064862e+00 4.637057600704132e+00 9.259717470447526e+03 + 97780 1.070785448612070e+00 -6.004099716239545e+00 -5.969302670582555e+00 3.678737721731255e+00 4.878547742719106e+00 9.123050552965768e+03 + 97800 1.064153862480760e+00 -5.979455453922583e+00 -6.003953758577199e+00 3.860788312932967e+00 4.720115256505768e+00 9.229170534316339e+03 + 97820 1.046536518760774e+00 -5.939831587757830e+00 -6.030352915852538e+00 4.019573230637285e+00 4.499785756587221e+00 9.310470001233716e+03 + 97840 1.062856216168492e+00 -5.959650810743873e+00 -6.008750081440034e+00 3.948914026752421e+00 4.666978416327478e+00 9.243868438341202e+03 + 97860 1.009417922243893e+00 -5.880899336583753e+00 -6.028082876680978e+00 4.373045512325685e+00 4.527894848508205e+00 9.303403595750395e+03 + 97880 1.066410623416811e+00 -5.972472773516566e+00 -5.997495266774521e+00 3.845995281001156e+00 4.702312252495658e+00 9.209361839199140e+03 + 97900 1.073040471259626e+00 -5.998107036149563e+00 -6.012313651080237e+00 3.720579197352112e+00 4.639002615953627e+00 9.254888776103387e+03 + 97920 1.016002708924734e+00 -5.944221851262356e+00 -6.012549489644128e+00 3.989679106537038e+00 4.597331233281040e+00 9.255605665877896e+03 + 97940 9.890779385127970e-01 -5.947685043919394e+00 -5.986434899376484e+00 4.020906637592893e+00 4.798398971037531e+00 9.175447579280246e+03 + 97960 9.637488911032882e-01 -5.961245500618162e+00 -5.994857249652021e+00 3.887715157412335e+00 4.694711293058564e+00 9.201257985309605e+03 + 97980 1.018190281979560e+00 -6.088691931634571e+00 -6.008744708785245e+00 3.208316158038675e+00 4.667385483432260e+00 9.243922189998202e+03 + 98000 9.456061505170157e-01 -6.020005544842085e+00 -5.991594422428325e+00 3.556842208651664e+00 4.719983270158452e+00 9.191258113724403e+03 + 98020 9.790583381926249e-01 -6.093260098169450e+00 -5.929314523822483e+00 3.185908246591074e+00 5.127309104986995e+00 9.001327143729490e+03 + 98040 9.653126093580920e-01 -6.087384404687521e+00 -5.967038275232672e+00 3.266095715536868e+00 4.957141814369958e+00 9.116120242440582e+03 + 98060 9.186625878998076e-01 -6.025167757709228e+00 -5.940833441577778e+00 3.564083137267088e+00 5.048343831187117e+00 9.036307150671750e+03 + 98080 9.592318898723974e-01 -6.083001923021514e+00 -5.952457659442945e+00 3.266792604748299e+00 5.016397967875942e+00 9.071658471441275e+03 + 98100 9.653510114086814e-01 -6.082299740633631e+00 -5.960271038234644e+00 3.256783760393797e+00 4.957491453449443e+00 9.095444269836924e+03 + 98120 9.367539629053514e-01 -6.024769313257536e+00 -5.966907520997850e+00 3.557324626663110e+00 4.889575991901641e+00 9.115728540799360e+03 + 98140 8.977329547394215e-01 -5.944715462727112e+00 -6.009532230413763e+00 4.009896047914615e+00 4.637708137495486e+00 9.246342671897331e+03 + 98160 9.575158876715945e-01 -6.007685756473959e+00 -6.018474479242944e+00 3.693177012208797e+00 4.631226496519833e+00 9.273843891590319e+03 + 98180 9.537792234066046e-01 -5.975675584475098e+00 -5.976126994029470e+00 3.861561414021498e+00 4.858969350504887e+00 9.143905739021960e+03 + 98200 1.006110715332192e+00 -6.024997238131742e+00 -5.985112042572241e+00 3.612903636559713e+00 4.841930601676431e+00 9.171388678993835e+03 + 98220 9.859110574751722e-01 -5.969796029794251e+00 -6.013954627995331e+00 3.876661724781145e+00 4.623096220389558e+00 9.259929484462600e+03 + 98240 1.020795827949005e+00 -5.999557862555808e+00 -6.011956560979626e+00 3.685037236101359e+00 4.613841991059419e+00 9.253810651589736e+03 + 98260 1.006767280453908e+00 -5.961218888088555e+00 -6.038984230971925e+00 3.875690644667386e+00 4.429150011683161e+00 9.337120255786482e+03 + 98280 9.961676491791430e-01 -5.935183582131528e+00 -5.998173628103480e+00 4.028462695144126e+00 4.666764103495071e+00 9.211452450807967e+03 + 98300 1.068594830815186e+00 -6.034559721172622e+00 -6.014429179932758e+00 3.487384410910086e+00 4.602977093900569e+00 9.261404996734393e+03 + 98320 1.045344550333632e+00 -5.997580510692358e+00 -6.028953251025173e+00 3.684306059659174e+00 4.504158929752276e+00 9.306159372303751e+03 + 98340 9.253874430854880e-01 -5.824048214950957e+00 -5.995653790796213e+00 4.581083826190456e+00 4.595698053809959e+00 9.203673373988742e+03 + 98360 9.518322540029426e-01 -5.864053980410961e+00 -5.970379139036634e+00 4.427397015172627e+00 4.816861500578888e+00 9.126299016687624e+03 + 98380 1.074418334177479e+00 -6.044981836656286e+00 -5.969723998397030e+00 3.451963228152273e+00 4.884105381549757e+00 9.124352034831898e+03 + 98400 1.016397118215661e+00 -5.961527654022233e+00 -6.051351625338919e+00 3.866246160075988e+00 4.350463016560941e+00 9.375366826727386e+03 + 98420 9.526157379839175e-01 -5.874482682924340e+00 -6.045231273769962e+00 4.367830957353481e+00 4.387366125458885e+00 9.356394633768092e+03 + 98440 1.013358051546990e+00 -5.972015401921674e+00 -5.980061527359134e+00 3.839167215811080e+00 4.792965118415300e+00 9.155938402310388e+03 + 98460 1.079081938964172e+00 -6.076827294555764e+00 -5.963431072462558e+00 3.301847065618189e+00 4.952985720886032e+00 9.105123412529585e+03 + 98480 1.000445652577293e+00 -5.968420419845759e+00 -5.963513817824699e+00 3.885448836222538e+00 4.913623304321669e+00 9.105360282322383e+03 + 98500 1.055991460458535e+00 -6.057883744648123e+00 -5.959264676613879e+00 3.348198749239141e+00 4.914484699143230e+00 9.092420856367102e+03 + 98520 1.007265813766592e+00 -5.992286517175636e+00 -6.007291735530336e+00 3.730278337168364e+00 4.644116051325639e+00 9.239313755772726e+03 + 98540 9.823571272701844e-01 -5.960458258253268e+00 -5.987548101892298e+00 3.862293103094006e+00 4.706739028778944e+00 9.178848039440347e+03 + 98560 9.682857415376852e-01 -5.942567309962636e+00 -6.010570211848000e+00 3.982339507049791e+00 4.591856321008974e+00 9.249498438088993e+03 + 98580 1.020978183956529e+00 -6.022745421039753e+00 -5.978059346561902e+00 3.576219760970429e+00 4.832814115769928e+00 9.149826422143668e+03 + 98600 9.365492806621833e-01 -5.899469137095376e+00 -6.037524266805685e+00 4.217140741339115e+00 4.424406822580247e+00 9.332589271380435e+03 + 98620 1.019565462554853e+00 -6.024265938861051e+00 -6.001736797850881e+00 3.518276458685270e+00 4.647642272738970e+00 9.222381048570824e+03 + 98640 9.618078078923936e-01 -5.940162798699045e+00 -5.997479217718062e+00 3.992719299090200e+00 4.663599551395821e+00 9.209308335290219e+03 + 98660 9.292765957557093e-01 -5.891452592375990e+00 -6.026780621509671e+00 4.246469091389678e+00 4.469394606159256e+00 9.299427862893612e+03 + 98680 9.959691451590806e-01 -5.989550573480208e+00 -5.971019480103821e+00 3.796293223953200e+00 4.902701629797845e+00 9.128296243595130e+03 + 98700 1.032463195418915e+00 -6.041903706218962e+00 -5.991568924680539e+00 3.495977121027370e+00 4.785007225903263e+00 9.191201367531934e+03 + 98720 9.696848431376902e-01 -5.949202099096667e+00 -6.011541528472108e+00 3.947096864492964e+00 4.589134214023664e+00 9.252514824363159e+03 + 98740 1.041345011397321e+00 -6.056753824341979e+00 -5.971489591326963e+00 3.390678850800432e+00 4.880279271370076e+00 9.129736824908408e+03 + 98760 9.875248843169359e-01 -5.976829202612000e+00 -6.034942756310860e+00 3.797988318763041e+00 4.464291300380815e+00 9.324603954745005e+03 + 98780 1.040029377061699e+00 -6.055735417809715e+00 -5.975714599360746e+00 3.424237018932851e+00 4.883728941648466e+00 9.142647154935707e+03 + 98800 9.978785727952371e-01 -5.993344285794173e+00 -5.989836508111287e+00 3.747915632792079e+00 4.768057835074051e+00 9.185881833372807e+03 + 98820 1.059227390345708e+00 -6.084329779056633e+00 -5.993439608931741e+00 3.236858480949510e+00 4.758763903015007e+00 9.196938927594572e+03 + 98840 9.760358544525087e-01 -5.962388131838336e+00 -6.059484166738013e+00 3.881049497616675e+00 4.323509039659891e+00 9.400552777440855e+03 + 98860 1.036528845541447e+00 -6.057726505900732e+00 -5.999413435183365e+00 3.363076934777406e+00 4.697919610755050e+00 9.215231574967545e+03 + 98880 1.009682081245163e+00 -6.022110368367223e+00 -5.982315601558843e+00 3.577616355575064e+00 4.806124064809050e+00 9.162834399190393e+03 + 98900 9.246569659140856e-01 -5.901339138123910e+00 -6.017039800709948e+00 4.198148698422790e+00 4.533777589234092e+00 9.269422591653618e+03 + 98920 9.742243185300661e-01 -5.979922047154438e+00 -6.004896883356059e+00 3.860733207100340e+00 4.717323832787219e+00 9.232051074567265e+03 + 98940 1.032654649582665e+00 -6.070992759923433e+00 -5.995053483782224e+00 3.314270556742737e+00 4.750325631910563e+00 9.201857217923640e+03 + 98960 9.929390720461628e-01 -6.016695884128415e+00 -6.018987324771190e+00 3.552097297672073e+00 4.538939490901967e+00 9.275434473066340e+03 + 98980 9.709092529389053e-01 -5.990961669551081e+00 -5.998130589203472e+00 3.774045680360024e+00 4.732880634329266e+00 9.211326914225698e+03 + 99000 9.365500910194682e-01 -5.950478384528167e+00 -6.034420556297377e+00 3.955126344495008e+00 4.473117404187107e+00 9.323008778537187e+03 + 99020 9.459222852644640e-01 -5.976440394723326e+00 -5.997531043196726e+00 3.849415558121755e+00 4.728309790820193e+00 9.209451664787430e+03 + 99040 9.803909251860337e-01 -6.037105982810894e+00 -5.970798131049840e+00 3.523436514670867e+00 4.904186460589742e+00 9.127621570254016e+03 + 99060 9.809531492270223e-01 -6.045901666502336e+00 -5.974250273436386e+00 3.508414190997686e+00 4.919847577999612e+00 9.138177119009462e+03 + 99080 1.013332227530993e+00 -6.100638011066140e+00 -5.955606291509411e+00 3.198156688226805e+00 5.030951265507611e+00 9.081272181402701e+03 + 99100 9.827982767602627e-01 -6.057907945769045e+00 -5.996359784278547e+00 3.415111728666065e+00 4.768530796491713e+00 9.205864836324616e+03 + 99120 9.518794766546720e-01 -6.013082182970832e+00 -5.973323500447864e+00 3.662719176077185e+00 4.891019683760305e+00 9.135319430321017e+03 + 99140 9.256701233990275e-01 -5.971087422481658e+00 -6.015355093890022e+00 3.810731818740582e+00 4.556539999113751e+00 9.264230509932298e+03 + 99160 1.000469415581789e+00 -6.072916411105292e+00 -5.976433699395782e+00 3.345835814091693e+00 4.899854475379081e+00 9.144849207927373e+03 + 99180 9.645694367827347e-01 -6.005763857184898e+00 -5.992103527061799e+00 3.662502716728523e+00 4.740942446224617e+00 9.192826106575139e+03 + 99200 1.008839558163677e+00 -6.051677555622939e+00 -5.995964218484494e+00 3.387896227878562e+00 4.707810831338572e+00 9.204678286010712e+03 + 99220 1.016656036707396e+00 -6.040469973893788e+00 -5.970824551796322e+00 3.492398872258671e+00 4.892313663536556e+00 9.127705814897497e+03 + 99240 1.027609493237614e+00 -6.031742527370802e+00 -5.963970560683904e+00 3.539221240266667e+00 4.928378360660780e+00 9.106783206470776e+03 + 99260 1.030761522860958e+00 -6.010211126193219e+00 -5.962948233586419e+00 3.676647449494065e+00 4.948038292751305e+00 9.103646846351850e+03 + 99280 1.003800942537356e+00 -5.943964767236245e+00 -5.991111735125897e+00 4.079400519550433e+00 4.808675333958346e+00 9.189738704214476e+03 + 99300 1.017278598363005e+00 -5.939412221164731e+00 -5.991942665144542e+00 3.975688958661057e+00 4.674051020269050e+00 9.192321169780622e+03 + 99320 1.071672435669186e+00 -5.994839663925203e+00 -6.010121982937882e+00 3.709289090181319e+00 4.621535649479286e+00 9.248133282940318e+03 + 99340 1.021781321655529e+00 -5.903686412389189e+00 -5.981118140015836e+00 4.223965665893259e+00 4.779340703339926e+00 9.159162028616201e+03 + 99360 1.014877149644284e+00 -5.880987928594554e+00 -5.993435868354492e+00 4.291947996303518e+00 4.646254524939518e+00 9.196876630587949e+03 + 99380 1.108875138200988e+00 -6.010802387484850e+00 -5.995333946871572e+00 3.593744565926189e+00 4.682566745661083e+00 9.202743501468720e+03 + 99400 1.049942118830350e+00 -5.921021700364034e+00 -6.068694484745020e+00 4.064056651039168e+00 4.216096670834020e+00 9.429137220876717e+03 + 99420 1.077339463585007e+00 -5.969946474623904e+00 -6.013222846713504e+00 3.834677238935047e+00 4.586177613399625e+00 9.257690906878563e+03 + 99440 1.002725670266326e+00 -5.875544093100286e+00 -5.989095307679391e+00 4.376200667399265e+00 4.724172021292380e+00 9.183578404872043e+03 + 99460 1.029516988667473e+00 -5.942020990370630e+00 -5.971686150637525e+00 3.960147444928258e+00 4.789805504007034e+00 9.130296312127672e+03 + 99480 9.679070365275639e-01 -5.882227550341687e+00 -5.979031163153371e+00 4.336255237630254e+00 4.780393912554900e+00 9.152766707296667e+03 + 99500 1.065941767094467e+00 -6.071266198834588e+00 -5.957766628277525e+00 3.357032401563716e+00 5.008764499704149e+00 9.087844845210326e+03 + 99520 1.022811256488946e+00 -6.058380185994737e+00 -5.976271655693859e+00 3.391877690072056e+00 4.863357577313694e+00 9.144359315136237e+03 + 99540 1.058794123017727e+00 -6.159636361861791e+00 -5.981296502980628e+00 2.874425799984172e+00 4.898480867683776e+00 9.159722506619599e+03 + 99560 9.822253284577154e-01 -6.085470398965114e+00 -5.994745342824838e+00 3.228796032211246e+00 4.749753344225775e+00 9.200940203816426e+03 + 99580 9.509492960713234e-01 -6.063082083590608e+00 -5.996327075789321e+00 3.351883183645151e+00 4.735200768744209e+00 9.205772327681318e+03 + 99600 9.225550646667746e-01 -6.032053639471701e+00 -6.011262540082271e+00 3.469860741386978e+00 4.589246451493315e+00 9.251654844020924e+03 + 99620 9.555262564836323e-01 -6.083343758170188e+00 -6.011785462304154e+00 3.250803003095390e+00 4.661701811568657e+00 9.253285879405550e+03 + 99640 8.747339933189782e-01 -5.960029034051134e+00 -6.035060266652488e+00 3.910279677916371e+00 4.479438729273676e+00 9.324999535487863e+03 + 99660 9.140978552864858e-01 -6.011553560159665e+00 -5.986796094725240e+00 3.663509170421389e+00 4.805670368151249e+00 9.176558240515365e+03 + 99680 9.451952833962797e-01 -6.045293498920298e+00 -5.963886067517295e+00 3.470759787612819e+00 4.938213856488158e+00 9.106522991413745e+03 + 99700 8.951558676135717e-01 -5.952641539953055e+00 -6.005778189682211e+00 3.925127348924073e+00 4.620008483309289e+00 9.234782768611209e+03 + 99720 1.018993897734596e+00 -6.116250312379456e+00 -5.962311217516648e+00 3.087636405157611e+00 4.971578509857796e+00 9.101715282390742e+03 + 99740 9.996216697365274e-01 -6.063360504359143e+00 -5.988605391729380e+00 3.352144517893611e+00 4.781399942930001e+00 9.182094096269750e+03 + 99760 9.607605003200517e-01 -5.981921229750936e+00 -5.956452959633287e+00 3.823627993309679e+00 4.969870741527285e+00 9.083838626519924e+03 + 99780 1.010376746870079e+00 -6.031253406050175e+00 -5.975283572151315e+00 3.524421227577470e+00 4.845808675128531e+00 9.141304820451775e+03 + 99800 9.803598248244347e-01 -5.963105616323153e+00 -6.007870934334797e+00 3.870292048076623e+00 4.613242664643193e+00 9.241217147433468e+03 + 99820 9.689118593309668e-01 -5.924117294360082e+00 -6.018012706591394e+00 4.137776924066238e+00 4.598614936765959e+00 9.272392822750337e+03 + 99840 1.026286565318514e+00 -5.991681472423668e+00 -5.980241637296657e+00 3.741017693518206e+00 4.806706997126271e+00 9.156463966561420e+03 + 99860 9.851550759894512e-01 -5.914199180180428e+00 -5.991047780453469e+00 4.178069447166468e+00 4.736792892116210e+00 9.189580859456793e+03 + 99880 1.046499096001062e+00 -5.992393817584341e+00 -6.024136688015793e+00 3.728347748705048e+00 4.546075274494324e+00 9.291298937488946e+03 + 99900 1.068954806511512e+00 -6.018981448854779e+00 -6.028681349010178e+00 3.533137895437664e+00 4.477439567690666e+00 9.305317209912950e+03 + 99920 1.094336014170752e+00 -6.056651201203143e+00 -6.012614343397243e+00 3.336385369392854e+00 4.589251821596051e+00 9.255815818356592e+03 + 99940 9.956681335670017e-01 -5.914800942870066e+00 -6.003531095855219e+00 4.164067363147243e+00 4.654565093759699e+00 9.227896199353645e+03 + 99960 1.003083438737440e+00 -5.930992612643508e+00 -6.070495390739425e+00 4.037344646770880e+00 4.236298106958984e+00 9.434707749602467e+03 + 99980 1.012934465883673e+00 -5.954959992992038e+00 -6.047095663015638e+00 3.924023946415882e+00 4.394966671191520e+00 9.362216377839693e+03 + 100000 1.062972901652005e+00 -6.044390689604734e+00 -5.996657400225641e+00 3.490339401527035e+00 4.764431335844447e+00 9.206787131907888e+03 + 100020 9.780183035487618e-01 -5.935605934935336e+00 -6.032377839627401e+00 4.026339373668633e+00 4.470660121522944e+00 9.316708197645956e+03 + 100040 1.034997992414912e+00 -6.040277127697238e+00 -6.024645020695599e+00 3.431678744360573e+00 4.521440721824728e+00 9.292874662229531e+03 + 100060 1.010365873372486e+00 -6.027716979883165e+00 -6.013081772465735e+00 3.535952067903067e+00 4.619989693684977e+00 9.257263845448655e+03 + 100080 9.492473111768482e-01 -5.965014880085065e+00 -5.990030472170651e+00 3.894482250357007e+00 4.750838849451208e+00 9.186458651363813e+03 + 100100 1.019481043984073e+00 -6.098361323460715e+00 -5.964602926717816e+00 3.162333129848807e+00 4.930394542991534e+00 9.108720997503182e+03 + 100120 9.641101838560518e-01 -6.047695682394565e+00 -6.000150319293153e+00 3.432187001095770e+00 4.705199833645237e+00 9.217536992816005e+03 + 100140 9.806102378523326e-01 -6.112919263920397e+00 -5.996944740338340e+00 3.086537297478054e+00 4.752480958885748e+00 9.207686688025133e+03 + 100160 9.255156940489184e-01 -6.078872407825847e+00 -5.986473118121066e+00 3.257918160499668e+00 4.788489180728395e+00 9.175574592481331e+03 + 100180 8.767278334528232e-01 -6.054073487966105e+00 -6.019906817187721e+00 3.393977756194249e+00 4.590168067078949e+00 9.278262253206571e+03 + 100200 9.442305151794494e-01 -6.199495193704019e+00 -5.964179017143159e+00 2.679077508852492e+00 5.030299409725586e+00 9.107430128307667e+03 + 100220 8.572874875612883e-01 -6.101960972229872e+00 -5.969728726180640e+00 3.182037763367895e+00 4.941335783056526e+00 9.124369594949940e+03 + 100240 8.833285435977111e-01 -6.154377213967479e+00 -5.955329994330199e+00 2.902429677238932e+00 5.045389614853877e+00 9.080434526404186e+03 + 100260 8.532637575387513e-01 -6.107982359714260e+00 -6.020202565859297e+00 3.140012347506718e+00 4.644057507701113e+00 9.279178989210624e+03 + 100280 8.593242923469000e-01 -6.106486250678866e+00 -6.030366878195771e+00 3.110991183301837e+00 4.548080399534595e+00 9.310509240679545e+03 + 100300 8.660085698553831e-01 -6.100373630161558e+00 -5.994550636387740e+00 3.186121646811874e+00 4.793773653116498e+00 9.200333232884090e+03 + 100320 9.069261671425608e-01 -6.140838465205085e+00 -5.989875799562621e+00 2.929218513359653e+00 4.796069500875689e+00 9.186011009382817e+03 + 100340 9.393740320344086e-01 -6.168036928163246e+00 -5.994440320434852e+00 2.815969390177889e+00 4.812787975742550e+00 9.200003785749032e+03 + 100360 9.060580313734133e-01 -6.097772706163690e+00 -5.972869546733383e+00 3.204539782447073e+00 4.921753052597351e+00 9.133970940818375e+03 + 100380 9.377925985262099e-01 -6.120868320687856e+00 -5.954298022639589e+00 3.122445119340713e+00 5.078917547404179e+00 9.077287330549330e+03 + 100400 9.047871351241796e-01 -6.042531150221211e+00 -6.022185711653732e+00 3.456266132801576e+00 4.573092789502486e+00 9.285262171819095e+03 + 100420 9.533624670846478e-01 -6.084174405660979e+00 -6.021888717856658e+00 3.181178394983661e+00 4.538832453035113e+00 9.284375573143105e+03 + 100440 9.789284036689726e-01 -6.090519191535884e+00 -5.993369294251552e+00 3.252356550101631e+00 4.810206294206278e+00 9.196716513911831e+03 + 100460 1.015163842256240e+00 -6.112483658720968e+00 -5.981638299240600e+00 3.110914720033351e+00 4.862249022423564e+00 9.160789803461006e+03 + 100480 9.137136936695620e-01 -5.934028729419394e+00 -6.016839632222270e+00 4.055240436173072e+00 4.579727417333164e+00 9.268801913402584e+03 + 100500 9.984968666909527e-01 -6.032985466422749e+00 -6.002698409689364e+00 3.556257106040528e+00 4.730170072710509e+00 9.225321724169677e+03 + 100520 9.774127467092016e-01 -5.973843070416264e+00 -5.986647613550137e+00 3.837536583709315e+00 4.764010915537969e+00 9.176104014627150e+03 + 100540 9.602483478850309e-01 -5.924929722496405e+00 -6.018961063831163e+00 4.067970473907312e+00 4.528027960660086e+00 9.275331356651404e+03 + 100560 1.049784168371287e+00 -6.034166685358835e+00 -6.025867035968425e+00 3.492710352196414e+00 4.540368223362742e+00 9.296653040245232e+03 + 100580 9.868640247497810e-01 -5.921728186512888e+00 -6.069287058763448e+00 4.115040745624032e+00 4.267734866499628e+00 9.430962482544479e+03 + 100600 1.035881680106078e+00 -5.982818410307177e+00 -6.012639016238605e+00 3.772036075934060e+00 4.600801541951944e+00 9.255887620920523e+03 + 100620 1.015377042959121e+00 -5.943194898282735e+00 -5.976030029100277e+00 4.005427929241881e+00 4.816883526867480e+00 9.143623098295284e+03 + 100640 1.087151555760555e+00 -6.043649554964161e+00 -5.953475612120508e+00 3.509200044145582e+00 5.026992778326393e+00 9.074768238159428e+03 + 100660 9.638277359349815e-01 -5.856825200435729e+00 -6.040086277234727e+00 4.426740967251023e+00 4.374427504711195e+00 9.340492166701464e+03 + 100680 1.006675899751647e+00 -5.918879723934095e+00 -6.031883488116287e+00 4.104550627091498e+00 4.455665525881368e+00 9.315180002178417e+03 + 100700 1.017813001005820e+00 -5.936562656025433e+00 -6.051335375085548e+00 4.012628410105408e+00 4.353585696241354e+00 9.375305535650477e+03 + 100720 1.060193858176878e+00 -6.005479800804906e+00 -5.985352192009938e+00 3.651251330826768e+00 4.766827175264866e+00 9.172145240523674e+03 + 100740 1.055671757827548e+00 -6.013221657023240e+00 -5.995837637289329e+00 3.605689575628191e+00 4.705511307108671e+00 9.204272887399851e+03 + 100760 1.019310288572452e+00 -5.981817723218516e+00 -5.998984582013918e+00 3.783560591378623e+00 4.684985831612606e+00 9.213921836147894e+03 + 100780 9.631077538416098e-01 -5.927197838046984e+00 -5.992615981466082e+00 4.047839303520298e+00 4.672198200582866e+00 9.194368661634262e+03 + 100800 9.857933378945777e-01 -5.991397319528757e+00 -5.973398745472402e+00 3.730535461793361e+00 4.833886059295287e+00 9.135549284454331e+03 + 100820 1.036655997236422e+00 -6.100653719614871e+00 -5.985275835310269e+00 3.190540234238702e+00 4.853057900585622e+00 9.171916299375427e+03 + 100840 9.750349435615300e-01 -6.047714877556496e+00 -6.039618699574707e+00 3.382906902951635e+00 4.429396409802560e+00 9.339093552358841e+03 + 100860 8.839410117889959e-01 -5.949838549771998e+00 -6.048137019762769e+00 3.921831303387532e+00 4.357386277061457e+00 9.365427602448244e+03 + 100880 9.937362187952904e-01 -6.142192353142942e+00 -5.971703613445995e+00 2.933154025055857e+00 4.912126751442930e+00 9.130407200453566e+03 + 100900 9.226994266063544e-01 -6.056721915512626e+00 -5.974467643858817e+00 3.373274291431223e+00 4.845591048074799e+00 9.138843800849829e+03 + 100920 9.093961564665842e-01 -6.046309015530457e+00 -5.953849754721837e+00 3.482541244636556e+00 5.013456628224022e+00 9.075902538380918e+03 + 100940 9.572969621982892e-01 -6.116066491803966e+00 -5.981968076353875e+00 3.043971463168673e+00 4.813985316345826e+00 9.161802198627049e+03 + 100960 9.353459686906812e-01 -6.076186430988813e+00 -6.011161264279182e+00 3.264534682702675e+00 4.637919252561407e+00 9.251362290671912e+03 + 100980 8.945625098448653e-01 -6.002891590562407e+00 -6.040151393749893e+00 3.672352833672827e+00 4.458401277834374e+00 9.340720771391449e+03 + 101000 1.007097240898692e+00 -6.152357210632755e+00 -6.012726023836732e+00 2.865806356562070e+00 4.667590239001153e+00 9.256180843405014e+03 + 101020 9.682424783515066e-01 -6.077427670344536e+00 -6.018653996995497e+00 3.287808420723439e+00 4.625295948290173e+00 9.274421727432837e+03 + 101040 9.109863786029121e-01 -5.975653725391035e+00 -5.999773142860222e+00 3.832656028165771e+00 4.694158600589907e+00 9.216328671461768e+03 + 101060 9.899715085524814e-01 -6.074204104603679e+00 -5.914470629549521e+00 3.326602188468748e+00 5.243816520905099e+00 8.956316983048988e+03 + 101080 9.578817069469188e-01 -6.006899361952392e+00 -5.952292892643311e+00 3.638223517738996e+00 4.951782314835554e+00 9.071157296019177e+03 + 101100 9.816775007827090e-01 -6.023616786181672e+00 -5.936282999614134e+00 3.596558663148980e+00 5.098042780479576e+00 9.022465328503416e+03 + 101120 1.001682557954440e+00 -6.037188853853555e+00 -5.948704492932523e+00 3.549611297527648e+00 5.057702190846816e+00 9.060231266656479e+03 + 101140 1.020975968148115e+00 -6.052483583097100e+00 -5.982212052644795e+00 3.392462880628071e+00 4.795972882969400e+00 9.162522168841808e+03 + 101160 1.036021145125109e+00 -6.065440190988513e+00 -5.967099598892997e+00 3.356176021890783e+00 4.920862919860683e+00 9.116326563810067e+03 + 101180 9.843811456170581e-01 -5.980425150559148e+00 -6.002946509380022e+00 3.762970013326112e+00 4.633648885807637e+00 9.226083492841661e+03 + 101200 1.029258256681424e+00 -6.039303126750229e+00 -5.972034157629869e+00 3.526360417488218e+00 4.912629248016654e+00 9.131398619461372e+03 + 101220 9.774984046485601e-01 -5.955089344204183e+00 -6.045448527475577e+00 3.882181905740665e+00 4.363325492357903e+00 9.357097848228639e+03 + 101240 1.038793997328380e+00 -6.041919734214170e+00 -5.999217687659444e+00 3.489469498378042e+00 4.734671257815627e+00 9.214645990126655e+03 + 101260 1.007121655932749e+00 -5.990703629041919e+00 -6.001748647182947e+00 3.744801907686079e+00 4.681379704309261e+00 9.222398329655942e+03 + 101280 9.891871087673209e-01 -5.961471812782212e+00 -6.004799128948194e+00 3.909244774832827e+00 4.660452620527250e+00 9.231784050477716e+03 + 101300 9.883338423665716e-01 -5.956024934790515e+00 -6.033916880429415e+00 3.884018820873763e+00 4.436751215275569e+00 9.321477534182899e+03 + 101320 9.659041863583564e-01 -5.923058214239525e+00 -6.048243109143741e+00 4.105724543028662e+00 4.386893504188776e+00 9.365734108144170e+03 + 101340 1.029394385414468e+00 -6.017859229235836e+00 -6.011421091882060e+00 3.590142313315520e+00 4.627111094299442e+00 9.252117930160901e+03 + 101360 1.028960242331709e+00 -6.019277947742731e+00 -5.974780977654635e+00 3.587697631218004e+00 4.843206119347720e+00 9.139787842762191e+03 + 101380 9.366773310655057e-01 -5.884536170075807e+00 -6.007117824025785e+00 4.337566156951249e+00 4.633683330520838e+00 9.238902274039394e+03 + 101400 1.057640004402490e+00 -6.067140100820897e+00 -5.997592968108460e+00 3.328631095328262e+00 4.727981493747075e+00 9.209667606592535e+03 + 101420 1.013317151952374e+00 -6.008842044897172e+00 -6.013934024710197e+00 3.677700148198430e+00 4.648461212130706e+00 9.259877071005771e+03 + 101440 9.914279234521434e-01 -5.988450627275144e+00 -5.995839084296926e+00 3.735315486652009e+00 4.692889823072907e+00 9.204262401129097e+03 + 101460 9.604415831123704e-01 -5.956414237933885e+00 -5.981959153946685e+00 3.951436075798327e+00 4.804753214989846e+00 9.161735523205531e+03 + 101480 9.826549488757179e-01 -6.006111446344230e+00 -5.986821967309617e+00 3.686041491640268e+00 4.796804665294244e+00 9.176625794224279e+03 + 101500 9.185605066259660e-01 -5.929891768503246e+00 -6.015573726971649e+00 4.051194913295744e+00 4.559195848529958e+00 9.264917275112177e+03 + 101520 1.007474660754397e+00 -6.082216961590505e+00 -5.968559742223727e+00 3.269491393831699e+00 4.922128735833590e+00 9.120783914220039e+03 + 101540 9.739264263153941e-01 -6.053071761563012e+00 -5.998876716461096e+00 3.369984525086207e+00 4.681180860717532e+00 9.213588547091762e+03 + 101560 9.739561689759898e-01 -6.071857068057283e+00 -5.957182262464443e+00 3.329813896350699e+00 4.988294375933596e+00 9.086044997147723e+03 + 101580 9.082922123164494e-01 -5.988186510096731e+00 -5.975300973175617e+00 3.808612947054959e+00 4.882603694086386e+00 9.141375894465195e+03 + 101600 1.008716079166220e+00 -6.147424834500163e+00 -5.961916549689809e+00 2.918363597304027e+00 4.983580875999381e+00 9.100510643689204e+03 + 101620 9.027510530867555e-01 -5.995214330999248e+00 -6.001572382789266e+00 3.721053530977616e+00 4.684544613694005e+00 9.221867232898334e+03 + 101640 8.990105207723826e-01 -5.988797140061149e+00 -6.001308770140353e+00 3.761231773630077e+00 4.689388057546790e+00 9.221033933816976e+03 + 101660 9.837287594899669e-01 -6.106075708217997e+00 -5.942320551825516e+00 3.140328864400252e+00 5.080636313434434e+00 9.040829735355292e+03 + 101680 9.839964472507730e-01 -6.088501002137917e+00 -5.978564562061680e+00 3.257934814138749e+00 4.889206865665622e+00 9.151346079718078e+03 + 101700 8.998725954594972e-01 -5.937203787927618e+00 -5.991430673143959e+00 4.069256987677687e+00 4.757877821182096e+00 9.190734870959377e+03 + 101720 9.584507620791305e-01 -5.990080991235868e+00 -5.954570580544472e+00 3.776006365622526e+00 4.979912639030818e+00 9.078117233613768e+03 + 101740 1.074195628820944e+00 -6.118345332345856e+00 -5.996834634356460e+00 3.078714597090752e+00 4.776447828665612e+00 9.207346875714929e+03 + 101760 9.975630632982665e-01 -5.964452416696236e+00 -6.040247372924095e+00 3.890156926147666e+00 4.454930558255731e+00 9.341017239616556e+03 + 101780 1.030779053460655e+00 -5.983791771601370e+00 -5.986858405210491e+00 3.768457490131156e+00 4.750848405387567e+00 9.176747171420024e+03 + 101800 9.499203968184334e-01 -5.841046272572973e+00 -5.985796161677404e+00 4.538395155571345e+00 4.707218892360758e+00 9.173453767339599e+03 + 101820 1.022631625010143e+00 -5.930656606035607e+00 -5.956416697547983e+00 4.062287453239673e+00 4.914369021414336e+00 9.083713340291331e+03 + 101840 1.016083768945952e+00 -5.906994849259053e+00 -5.981610031344508e+00 4.164973608576418e+00 4.736521686379625e+00 9.160673332576644e+03 + 101860 1.006727395718670e+00 -5.883027716143106e+00 -6.004768953988706e+00 4.296854180447539e+00 4.597797153342432e+00 9.231657783925808e+03 + 101880 1.030957003240001e+00 -5.913847051863245e+00 -5.994618573319919e+00 4.138600944540732e+00 4.674798368983963e+00 9.200531139687391e+03 + 101900 1.032740515454383e+00 -5.918454485631105e+00 -6.001661671066220e+00 4.120488024336893e+00 4.642699489298129e+00 9.222150836129229e+03 + 101920 1.070990550168926e+00 -5.983130721955577e+00 -5.968813583460571e+00 3.850182094833615e+00 4.932393319641958e+00 9.121539066131550e+03 + 101940 1.082146564324805e+00 -6.010317052770758e+00 -5.995130148973187e+00 3.608595300407372e+00 4.695800852178793e+00 9.202091897591106e+03 + 101960 1.062019055313294e+00 -5.996622225244831e+00 -5.991270737274126e+00 3.672174562862318e+00 4.702903634930191e+00 9.190264297615813e+03 + 101980 1.037675104204773e+00 -5.980894194486095e+00 -5.943421403371779e+00 3.827790640461529e+00 5.042965205935616e+00 9.044171900144223e+03 + 102000 9.290465237472584e-01 -5.840053512714679e+00 -6.006616359799027e+00 4.551564860316942e+00 4.595135216841331e+00 9.237320467764912e+03 + 102020 1.061753800471555e+00 -6.055055527977044e+00 -5.971465632145693e+00 3.385717672055663e+00 4.865703789413850e+00 9.129660443336941e+03 + 102040 1.064687641763740e+00 -6.079261024351871e+00 -6.009796142891894e+00 3.248945291623373e+00 4.647823390622229e+00 9.247159486149183e+03 + 102060 1.003203182573880e+00 -6.008926689862084e+00 -6.014648360948494e+00 3.649211903838844e+00 4.616357183034942e+00 9.262040791635132e+03 + 102080 9.996257237518327e-01 -6.023527863795289e+00 -5.964532853051525e+00 3.627654313613738e+00 4.966412794752839e+00 9.108489154505236e+03 + 102100 9.798604551400375e-01 -6.011074436363378e+00 -5.989878483371088e+00 3.640379767508316e+00 4.762090209653170e+00 9.185996408221976e+03 + 102120 9.522672018460635e-01 -5.981360165408058e+00 -5.986843593093832e+00 3.791993250987612e+00 4.760506560658209e+00 9.176696139788115e+03 + 102140 9.717607147436272e-01 -6.016337879934411e+00 -5.972566483849876e+00 3.624907765051212e+00 4.876249894970261e+00 9.133024192733050e+03 + 102160 1.009680504449233e+00 -6.074812756287566e+00 -5.993002506875195e+00 3.252656963659511e+00 4.722424075880525e+00 9.195572883242698e+03 + 102180 1.002481113852266e+00 -6.065281686392694e+00 -5.954228754074725e+00 3.417386625643457e+00 5.055069748398971e+00 9.077057563568209e+03 + 102200 9.215813065338511e-01 -5.943575197912219e+00 -5.956254010024201e+00 4.029109106870445e+00 4.956305405683612e+00 9.083209035456430e+03 + 102220 9.771102168096590e-01 -6.020247367307710e+00 -5.958946963352268e+00 3.629440653641275e+00 4.981437059360276e+00 9.091424298496071e+03 + 102240 1.020747119838501e+00 -6.076541652954631e+00 -5.939134455750528e+00 3.307561947812924e+00 5.096575337853927e+00 9.031131220798519e+03 + 102260 9.846756968227426e-01 -6.013323537235996e+00 -5.969373371562321e+00 3.637400420244760e+00 4.889769072809155e+00 9.123256252973501e+03 + 102280 9.990269408611224e-01 -6.026534326048061e+00 -5.972729408143976e+00 3.565078151615403e+00 4.874034316504799e+00 9.133518342576930e+03 + 102300 1.036570020436729e+00 -6.073955133974354e+00 -6.012501877448903e+00 3.306316572650746e+00 4.659190681480597e+00 9.255454872840704e+03 + 102320 9.839686789133919e-01 -5.989027157010910e+00 -5.992793681877092e+00 3.742050558858453e+00 4.720422590208995e+00 9.194930273272295e+03 + 102340 9.680634481434230e-01 -5.956919895848667e+00 -6.004657540120808e+00 3.932279630783515e+00 4.658162689996304e+00 9.231358099451512e+03 + 102360 1.088366658990135e+00 -6.124841926596485e+00 -5.998506216919423e+00 3.053616244581426e+00 4.779055439935005e+00 9.212481357386307e+03 + 102380 1.032908287042935e+00 -6.035966268490765e+00 -6.045412888173992e+00 3.454515144187926e+00 4.400271192107166e+00 9.356978666131694e+03 + 102400 9.357164865696359e-01 -5.889202293764789e+00 -6.029845515814766e+00 4.300788055600375e+00 4.493192910121133e+00 9.308872703824496e+03 + 102420 1.023028764472847e+00 -6.014704542647066e+00 -5.956662339171401e+00 3.634723300352436e+00 4.968010614711664e+00 9.084473324300878e+03 + 102440 1.003945452372866e+00 -5.980831755584470e+00 -5.967796581104124e+00 3.856295710452611e+00 4.931145699505488e+00 9.118419724486017e+03 + 102460 1.024351873119819e+00 -6.005668068815700e+00 -5.934463089363012e+00 3.677315445322082e+00 5.086185456274375e+00 9.016924560118925e+03 + 102480 9.140269968461661e-01 -5.833281277050589e+00 -6.004867220162892e+00 4.667580899795203e+00 4.682307861605478e+00 9.231918801334199e+03 + 102500 1.054633486766537e+00 -6.028348643083262e+00 -5.909972155804767e+00 3.613602460233535e+00 5.293338568888855e+00 8.942658855595282e+03 + 102520 9.997339246463391e-01 -5.929253337825822e+00 -6.018585371036846e+00 4.095603998962992e+00 4.582645640177833e+00 9.274166998420587e+03 + 102540 1.097775429290218e+00 -6.055046339492148e+00 -5.960019441773714e+00 3.403347413231200e+00 4.949006565295349e+00 9.094742168597224e+03 + 102560 1.112741281684360e+00 -6.057800960619240e+00 -5.996198015093923e+00 3.393864035957239e+00 4.747597682188616e+00 9.205398330823287e+03 + 102580 1.061709555505745e+00 -5.965108843228836e+00 -6.036267839658858e+00 3.883302704302224e+00 4.474696734981928e+00 9.328721849516653e+03 + 102600 1.098873507068703e+00 -6.005556161104908e+00 -6.036726730587064e+00 3.626812214895079e+00 4.447825981298500e+00 9.330151093638462e+03 + 102620 9.920530420448126e-01 -5.839126066855249e+00 -6.047485832598425e+00 4.558412653959206e+00 4.361978635492346e+00 9.363401680979960e+03 + 102640 9.920273238403482e-01 -5.838073771808532e+00 -6.047597583023024e+00 4.556190885904817e+00 4.353072738206211e+00 9.363708618374740e+03 + 102660 1.018103693611234e+00 -5.880475544292482e+00 -6.004506602709692e+00 4.396015912981693e+00 4.683810381805816e+00 9.230899753263024e+03 + 102680 1.071902468627157e+00 -5.972062061971813e+00 -6.009699895224006e+00 3.830912895717311e+00 4.614790632747346e+00 9.246854180699143e+03 + 102700 1.026794913080226e+00 -5.927015568132211e+00 -6.017950692152267e+00 4.046206279096079e+00 4.524042724807956e+00 9.272227021387875e+03 + 102720 1.011763397166067e+00 -5.934299284154073e+00 -5.998767614455263e+00 4.036934364990429e+00 4.666747235959129e+00 9.213264734411996e+03 + 102740 9.824350501614538e-01 -5.926702612441244e+00 -6.026873056087711e+00 4.110714196794412e+00 4.535520008050344e+00 9.299738722098053e+03 + 102760 9.992873195294190e-01 -5.992536483632530e+00 -6.012667477233349e+00 3.764080629475511e+00 4.648485348958416e+00 9.255982399960631e+03 + 102780 9.819857026703240e-01 -6.004942688058772e+00 -5.985806777702638e+00 3.610113150657936e+00 4.719994509195416e+00 9.173541408721398e+03 + 102800 9.610345361265519e-01 -6.004742328254198e+00 -5.991380376126287e+00 3.674106363585933e+00 4.750832760459810e+00 9.190615366420170e+03 + 102820 9.492874336404654e-01 -6.011611293058272e+00 -5.996050062279035e+00 3.614022299033722e+00 4.703377294260784e+00 9.204934649494277e+03 + 102840 1.002617810658044e+00 -6.106949753631569e+00 -5.974084159706696e+00 3.069057364849980e+00 4.831992166050810e+00 9.137647777169968e+03 + 102860 9.355561186247258e-01 -6.016331266662639e+00 -5.961420089293017e+00 3.633734624933144e+00 4.949043102866746e+00 9.098988838351468e+03 + 102880 1.019758508338917e+00 -6.144669201944036e+00 -5.953745452553227e+00 2.906034753782976e+00 5.002348468139740e+00 9.075611174980882e+03 + 102900 9.108753363314325e-01 -5.981387965494305e+00 -5.942423633110744e+00 3.831800104745987e+00 5.055539331003342e+00 9.041148199279072e+03 + 102920 9.663728422997060e-01 -6.056113851731299e+00 -5.969149638461072e+00 3.405498377183684e+00 4.904860347449833e+00 9.122575083509802e+03 + 102940 9.906237393309343e-01 -6.078362554061020e+00 -5.952531407531639e+00 3.284831254999765e+00 5.007373170678461e+00 9.071895677210907e+03 + 102960 9.945157925458596e-01 -6.065990029626469e+00 -5.981725649415072e+00 3.374635102858494e+00 4.858494213903035e+00 9.161030999877923e+03 + 102980 1.026295831117905e+00 -6.090697291440361e+00 -5.956490743246134e+00 3.241204810944265e+00 5.011839579071735e+00 9.083973775283817e+03 + 103000 9.725499152414500e-01 -5.984571290341727e+00 -6.000072045497295e+00 3.798827103030711e+00 4.709819368193330e+00 9.217256920221454e+03 + 103020 9.719212474724186e-01 -5.955362041961366e+00 -6.033178792224249e+00 3.930545409531466e+00 4.483709587418804e+00 9.319191346672596e+03 + 103040 9.823254318652012e-01 -5.943111402582956e+00 -6.042397053406411e+00 3.991347660433152e+00 4.421234089000065e+00 9.347670937405186e+03 + 103060 1.028346330348965e+00 -5.986690504644678e+00 -6.021985133002151e+00 3.791562792748299e+00 4.588895574893602e+00 9.284664449102378e+03 + 103080 1.023895676385180e+00 -5.960652852573555e+00 -6.002837967186784e+00 3.892799824791755e+00 4.650566368557206e+00 9.225748041606814e+03 + 103100 1.032950664640704e+00 -5.957487946195279e+00 -6.017415591859657e+00 3.872238852464943e+00 4.528125037286890e+00 9.270588533747103e+03 + 103120 1.057721738926984e+00 -5.983731068070418e+00 -6.030700483420237e+00 3.783781742718155e+00 4.514076091285967e+00 9.311525636412061e+03 + 103140 1.028835362629499e+00 -5.936049527757817e+00 -6.008334418033138e+00 4.030634950178421e+00 4.615563924166904e+00 9.242634405186103e+03 + 103160 1.015900552152952e+00 -5.917170938706128e+00 -6.016197680186153e+00 4.105376437943431e+00 4.536749564026407e+00 9.266832514596956e+03 + 103180 9.926504085547385e-01 -5.886041832053923e+00 -6.022261712095927e+00 4.287804280238852e+00 4.505608649079358e+00 9.285534431033706e+03 + 103200 1.008630634025778e+00 -5.918023717264153e+00 -6.026750631333611e+00 4.106793770366767e+00 4.482467004344366e+00 9.299346909653610e+03 + 103220 1.066139281982735e+00 -6.011450254420664e+00 -5.977744912898782e+00 3.630112043417558e+00 4.823653330320951e+00 9.148851754807185e+03 + 103240 9.475554945175878e-01 -5.843118910069766e+00 -6.043158200007391e+00 4.495338456896492e+00 4.346681898094578e+00 9.349937008769350e+03 + 103260 1.014397881365901e+00 -5.947075958592428e+00 -5.990174001472512e+00 3.965204020399889e+00 4.717728388781864e+00 9.186878307713774e+03 + 103280 1.070296927975811e+00 -6.035518493287461e+00 -6.004142027099994e+00 3.515923163619697e+00 4.696091687960584e+00 9.229775031015499e+03 + 103300 1.001717353482652e+00 -5.943041829863142e+00 -6.049862702278404e+00 3.923702867323523e+00 4.310320887438506e+00 9.370763899424686e+03 + 103320 1.098273865990784e+00 -6.098777517768338e+00 -5.986135696074906e+00 3.141952993217807e+00 4.788759764647062e+00 9.174547356471514e+03 + 103340 9.447081691414296e-01 -5.882965400830144e+00 -5.975136925306215e+00 4.397336454963920e+00 4.868073297925008e+00 9.140862902680097e+03 + 103360 1.047841255098890e+00 -6.046568138596911e+00 -5.947440092976795e+00 3.462287352244073e+00 5.031495930210267e+00 9.056396107553719e+03 + 103380 1.023279324565084e+00 -6.020213145244178e+00 -5.934366911459962e+00 3.618633105185036e+00 5.111575464235741e+00 9.016659690898405e+03 + 103400 1.033517203842246e+00 -6.045646142398348e+00 -5.960558960312877e+00 3.464099683471211e+00 4.952683450204860e+00 9.096370496193813e+03 + 103420 9.864800333888757e-01 -5.987108977497422e+00 -6.008095184726175e+00 3.723205348878352e+00 4.602699299365778e+00 9.241900035838566e+03 + 103440 1.005477626004460e+00 -6.025827944013725e+00 -5.936774306163747e+00 3.593034989007278e+00 5.104394758547765e+00 9.023986357976610e+03 + 103460 9.700948607261248e-01 -5.980931548076952e+00 -6.009309666127127e+00 3.754392132193483e+00 4.591440586849806e+00 9.245632445383948e+03 + 103480 9.390563229819970e-01 -5.942461304128074e+00 -5.998000560522383e+00 3.971638764560991e+00 4.652723759672718e+00 9.210909704898704e+03 + 103500 1.013645385668224e+00 -6.060594408548798e+00 -5.976823242092190e+00 3.381153166630103e+00 4.862180167970058e+00 9.146041684533249e+03 + 103520 9.622424202860576e-01 -5.988684777611582e+00 -5.996734085477766e+00 3.750470848226372e+00 4.704250476832377e+00 9.207037231916005e+03 + 103540 9.693710217533541e-01 -6.002952804425790e+00 -6.023650780979890e+00 3.725780156545635e+00 4.606929172170471e+00 9.289788854227263e+03 + 103560 9.862142378748613e-01 -6.030790389171772e+00 -6.037934067100665e+00 3.506099275651178e+00 4.465079171502884e+00 9.333867406358258e+03 + 103580 9.750981345309618e-01 -6.015123344578337e+00 -6.013971334577112e+00 3.614599307248624e+00 4.621214326948630e+00 9.259994408531435e+03 + 103600 9.152849680456570e-01 -5.925379240326100e+00 -6.050650458178660e+00 4.085739528624049e+00 4.366412810056334e+00 9.373212787978413e+03 + 103620 9.633755419430937e-01 -5.997136064695538e+00 -6.006226979673117e+00 3.646732359830492e+00 4.594530919214690e+00 9.236212689404643e+03 + 103640 9.758691552968004e-01 -6.011604520741629e+00 -6.031801865404769e+00 3.570830495480875e+00 4.454854216896138e+00 9.314938601228791e+03 + 103660 9.624439714864539e-01 -5.983379267622171e+00 -6.007822256252192e+00 3.801911042670776e+00 4.661555619416928e+00 9.241075504622131e+03 + 103680 9.636246517979022e-01 -5.974179335409521e+00 -6.008562175633960e+00 3.882749739126072e+00 4.685318149830014e+00 9.243334530132095e+03 + 103700 1.082703717230432e+00 -6.135421518856424e+00 -5.954547093877345e+00 2.993018058568651e+00 5.031626997025326e+00 9.078058459809345e+03 + 103720 9.986899297910585e-01 -5.991822195755709e+00 -6.004331179177130e+00 3.757642283887143e+00 4.685813765322422e+00 9.230357452216220e+03 + 103740 1.041909064262124e+00 -6.034906623045894e+00 -5.987157107300193e+00 3.523395671513477e+00 4.797580780138976e+00 9.177670397223088e+03 + 103760 1.021254534752863e+00 -5.981693531352284e+00 -6.007341864281217e+00 3.754020372675727e+00 4.606743675931103e+00 9.239610973320312e+03 + 103780 1.037759304288606e+00 -5.983002775060128e+00 -6.029859116286691e+00 3.795252080701149e+00 4.526195718382855e+00 9.308939090163671e+03 + 103800 9.920143327540843e-01 -5.897717420232488e+00 -6.042513738984375e+00 4.236674454513137e+00 4.405231585081894e+00 9.348013086083402e+03 + 103820 1.030242372413415e+00 -5.938828834899090e+00 -6.032478920542021e+00 3.998589159147353e+00 4.460835875081733e+00 9.317018424776499e+03 + 103840 1.065639152735993e+00 -5.978327799657965e+00 -6.029824142124843e+00 3.825753320092641e+00 4.530053352614585e+00 9.308829763211987e+03 + 103860 1.065005816092460e+00 -5.971950904828680e+00 -5.997144889356831e+00 3.871706566042491e+00 4.727038808125343e+00 9.208280081579698e+03 + 103880 1.033747478372948e+00 -5.925460133378209e+00 -5.979278398810651e+00 4.113801420433663e+00 4.804768611970920e+00 9.153535157415545e+03 + 103900 1.031937850017791e+00 -5.927566912243503e+00 -5.986257423509677e+00 4.102170966068723e+00 4.765160968051084e+00 9.174876345096254e+03 + 103920 1.028953700003142e+00 -5.931670458948601e+00 -5.994536615399046e+00 4.047164988054305e+00 4.686177789209587e+00 9.200265498185414e+03 + 103940 9.822986061799203e-01 -5.875976325296216e+00 -6.044438232755414e+00 4.372059817196708e+00 4.404725475170063e+00 9.353943972485660e+03 + 103960 1.035013368919372e+00 -5.978680874094852e+00 -5.971532390620062e+00 3.839712239238970e+00 4.880759937575455e+00 9.129851971538166e+03 + 103980 1.000963240260506e+00 -5.960151381703207e+00 -5.991896613358709e+00 3.927845980289018e+00 4.745559947564405e+00 9.192171703084543e+03 + 104000 9.693198711987306e-01 -5.950982262641352e+00 -5.984112209555482e+00 3.954786347698112e+00 4.764549065674465e+00 9.168320658761953e+03 + 104020 9.910175466393640e-01 -6.022406185207772e+00 -5.982658269784457e+00 3.543854783082647e+00 4.772093464413354e+00 9.163904124747945e+03 + 104040 9.321241205351800e-01 -5.972894144082296e+00 -5.998900533178224e+00 3.790865967187886e+00 4.641533256523354e+00 9.213677166199643e+03 + 104060 9.835610255200857e-01 -6.076352638188885e+00 -5.963514737160571e+00 3.249721848383441e+00 4.897654537696774e+00 9.105362065212330e+03 + 104080 9.925166611541496e-01 -6.107614473469750e+00 -5.954581864699094e+00 3.121881070865594e+00 5.000617992146368e+00 9.078151849817394e+03 + 104100 9.655376638433285e-01 -6.079750662511536e+00 -5.954386137839942e+00 3.273301568128511e+00 4.993164068890298e+00 9.077561846506536e+03 + 104120 9.775975905544849e-01 -6.104111539236563e+00 -5.996124499991829e+00 3.094194036918030e+00 4.714272327201609e+00 9.205165471719885e+03 + 104140 9.353675310957967e-01 -6.042014549653300e+00 -5.998522078520279e+00 3.462225770691547e+00 4.711966270375512e+00 9.212507784069674e+03 + 104160 9.397603708757832e-01 -6.044109070382286e+00 -5.974586286802007e+00 3.425715175659484e+00 4.824925757593443e+00 9.139193186313223e+03 + 104180 9.586209805341478e-01 -6.060251136347024e+00 -5.989522995243556e+00 3.352610299709581e+00 4.758742231070160e+00 9.184925412295386e+03 + 104200 9.739897311753875e-01 -6.066040355596651e+00 -6.011849750547012e+00 3.315864667116921e+00 4.627035507280979e+00 9.253476116742144e+03 + 104220 9.807369395464633e-01 -6.056762606875711e+00 -6.021534490084642e+00 3.385007838978316e+00 4.587293137126094e+00 9.283276205606597e+03 + 104240 9.528147464393546e-01 -5.995087068814679e+00 -5.989802205383183e+00 3.720391855401656e+00 4.750738359055280e+00 9.185773172905450e+03 + 104260 9.926872168068060e-01 -6.031462019326611e+00 -5.977620601401347e+00 3.547411542283834e+00 4.856577295943195e+00 9.148478551738992e+03 + 104280 9.502287802096923e-01 -5.945336580724386e+00 -6.020380720619205e+00 3.932970831956793e+00 4.502055767637624e+00 9.279714728057412e+03 + 104300 9.751181068548407e-01 -5.961368585220277e+00 -5.991105909065865e+00 3.919080281764181e+00 4.748323966406820e+00 9.189747617922332e+03 + 104320 9.700454384546505e-01 -5.935057747931977e+00 -6.041112518160244e+00 4.042138667610700e+00 4.433155765037340e+00 9.343661398794542e+03 + 104340 1.003565493837550e+00 -5.971584185300197e+00 -6.012068389937415e+00 3.903561036581533e+00 4.671094468644205e+00 9.254132507489194e+03 + 104360 1.074798503256915e+00 -6.068876104094773e+00 -6.016719673467660e+00 3.322097436165564e+00 4.621587732008004e+00 9.268465952540371e+03 + 104380 9.868414236524773e-01 -5.937339008212841e+00 -6.062303937679824e+00 4.029029408833599e+00 4.311461445573845e+00 9.409306844069464e+03 + 104400 9.701227785632360e-01 -5.913966938762283e+00 -6.051862433404376e+00 4.147025951324292e+00 4.355208681830563e+00 9.376938087555123e+03 + 104420 9.852356516239719e-01 -5.938479950930378e+00 -6.032991740192526e+00 4.032851537148400e+00 4.490150217553029e+00 9.318597267496085e+03 + 104440 1.022252128369149e+00 -5.996899164854052e+00 -5.995451895774616e+00 3.702413021382420e+00 4.710723464400709e+00 9.203079411255898e+03 + 104460 1.029970841244083e+00 -6.012166747149455e+00 -6.019080811819874e+00 3.650401681822279e+00 4.610700052536682e+00 9.275725133893726e+03 + 104480 9.792568353452149e-01 -5.941983240225955e+00 -6.039784583030621e+00 4.043954126050126e+00 4.482363680956849e+00 9.339598107751079e+03 + 104500 1.044383215718332e+00 -6.046719403018159e+00 -6.018773820008676e+00 3.472631048440344e+00 4.633098910645788e+00 9.274767933591618e+03 + 104520 1.021392963953418e+00 -6.021841761341529e+00 -5.994875047574334e+00 3.596567435284445e+00 4.751414478821145e+00 9.201314042456797e+03 + 104540 1.046963928914459e+00 -6.070779587491327e+00 -5.974819993290101e+00 3.313057933597916e+00 4.864072773200562e+00 9.139897198949706e+03 + 104560 9.810945088870343e-01 -5.983760568970198e+00 -5.975577363999019e+00 3.806332712232163e+00 4.853321941523553e+00 9.142211067034239e+03 + 104580 9.616990179464294e-01 -5.965195429351770e+00 -6.006645616170596e+00 3.881843180941408e+00 4.643829793832026e+00 9.237442188400602e+03 + 104600 9.287748760778872e-01 -5.924991392757611e+00 -5.998063643355083e+00 4.178939850842912e+00 4.759347680017994e+00 9.211065207535758e+03 + 104620 9.789373109759779e-01 -6.006535266999374e+00 -6.018429282573143e+00 3.669293089543033e+00 4.600995811525493e+00 9.273725463128090e+03 + 104640 1.010322707866113e+00 -6.058883678364797e+00 -6.019364909226527e+00 3.371556066501091e+00 4.598478954402795e+00 9.276621679061651e+03 + 104660 1.021445768601109e+00 -6.084308979931423e+00 -6.000664628420290e+00 3.190592472257823e+00 4.670891282556314e+00 9.219105555142201e+03 + 104680 1.009091388732120e+00 -6.076980267951046e+00 -5.977936222200965e+00 3.303658535264448e+00 4.872384772977961e+00 9.149438589705616e+03 + 104700 9.499821414513164e-01 -6.000054038113481e+00 -5.950679107842310e+00 3.724302331017220e+00 5.007820821380051e+00 9.066250709186786e+03 + 104720 1.015792497429706e+00 -6.107058968434573e+00 -5.957842087700971e+00 3.090546029598101e+00 4.947372450008109e+00 9.088065485474552e+03 + 104740 9.534742693742431e-01 -6.022535116642287e+00 -5.973343282075408e+00 3.579737042030009e+00 4.862204168524826e+00 9.135361605355185e+03 + 104760 9.403061086538437e-01 -6.007544252203084e+00 -5.949504125120118e+00 3.624511773785113e+00 4.957787165176142e+00 9.062679624505292e+03 + 104780 9.997703511078769e-01 -6.094227485846776e+00 -5.960223082786667e+00 3.191513460777719e+00 4.960987480263219e+00 9.095340590338199e+03 + 104800 9.774692895726741e-01 -6.054946893238378e+00 -5.968868436637535e+00 3.367923564462575e+00 4.862199382862723e+00 9.121722879751947e+03 + 104820 9.438642503826055e-01 -5.992456948273869e+00 -5.980839395923763e+00 3.722046664468513e+00 4.788756447873242e+00 9.158320689525617e+03 + 104840 9.748431818374612e-01 -6.018767334445926e+00 -5.987373945687875e+00 3.672994640577422e+00 4.853260336937362e+00 9.178311974642762e+03 + 104860 1.044363293265304e+00 -6.093615132708488e+00 -5.997202303523409e+00 3.227520393225000e+00 4.781137778242824e+00 9.208463570763561e+03 + 104880 9.929823325170609e-01 -5.987277011486412e+00 -6.024831198219063e+00 3.745810642640010e+00 4.530168690929514e+00 9.293413977018743e+03 + 104900 9.797354792566706e-01 -5.938803602371681e+00 -6.006301036939892e+00 3.982438370393865e+00 4.594857655908957e+00 9.236402750864243e+03 + 104920 1.033044261832993e+00 -5.987904822764600e+00 -6.013294064004409e+00 3.736149124686946e+00 4.590360172515579e+00 9.257899278789913e+03 + 104940 1.044012340447547e+00 -5.976772735838678e+00 -6.027686498918094e+00 3.797092935666332e+00 4.504738229184949e+00 9.302204756283736e+03 + 104960 1.063859420530066e+00 -5.985261836863711e+00 -6.005240846665505e+00 3.771004015686898e+00 4.656281449663227e+00 9.233161781239660e+03 + 104980 1.011704070335151e+00 -5.893897281527964e+00 -6.018614186156508e+00 4.273350479209363e+00 4.557206712953641e+00 9.274267327624992e+03 + 105000 1.048864245622462e+00 -5.938589756453023e+00 -5.983078022421250e+00 3.984686454081249e+00 4.729227946354786e+00 9.165156372352545e+03 + 105020 1.110834173150663e+00 -6.025349093990920e+00 -5.964059634812256e+00 3.537108458262051e+00 4.889042017379098e+00 9.107016357845210e+03 + 105040 1.013165563575753e+00 -5.882555774735239e+00 -5.951256662829303e+00 4.362472737710746e+00 4.967981606846559e+00 9.067999090968746e+03 + 105060 9.836340351433762e-01 -5.842393340791964e+00 -6.027493250587754e+00 4.517207561159660e+00 4.454335234993766e+00 9.301625449274330e+03 + 105080 1.042859748114607e+00 -5.940055705352175e+00 -6.014840545785788e+00 3.988919490678016e+00 4.559493363991554e+00 9.262667100236680e+03 + 105100 1.019831075485643e+00 -5.924553203105154e+00 -6.028440196383031e+00 4.086626658500611e+00 4.490091466638789e+00 9.304540793458014e+03 + 105120 1.059670839523809e+00 -6.013465568542323e+00 -6.005086981298824e+00 3.606968843586419e+00 4.655079988120772e+00 9.232657438489121e+03 + 105140 1.065108617023550e+00 -6.061205855048824e+00 -5.930432326378098e+00 3.455162657974877e+00 5.206084496740347e+00 9.004710771129410e+03 + 105160 9.298066427172599e-01 -5.907562714077069e+00 -5.982992402961173e+00 4.206039306538768e+00 4.772910360259615e+00 9.164857494382257e+03 + 105180 1.019973943121698e+00 -6.085539896170922e+00 -5.943616287648943e+00 3.220874957796443e+00 5.035822280537086e+00 9.044754963536017e+03 + 105200 9.297530551113830e-01 -5.986133310350633e+00 -6.010556010431372e+00 3.752870939814227e+00 4.612632016550003e+00 9.249459464964324e+03 + 105220 9.074132389185702e-01 -5.978322811136857e+00 -5.995599622369889e+00 3.848876093816709e+00 4.749669970138740e+00 9.203526077648481e+03 + 105240 9.799376879572891e-01 -6.100206338110950e+00 -6.010841983405768e+00 3.145417676357328e+00 4.658561630163682e+00 9.250365155175568e+03 + 105260 9.669544943933586e-01 -6.087662715416231e+00 -6.006798931534360e+00 3.234070373398036e+00 4.698402734077852e+00 9.237940421005482e+03 + 105280 9.192073204966349e-01 -6.017596084653801e+00 -6.007220122773769e+00 3.559977937171517e+00 4.619558315961577e+00 9.239236640171917e+03 + 105300 9.742851275868439e-01 -6.095962759954296e+00 -5.980056796140831e+00 3.156571954011118e+00 4.822121934617964e+00 9.155937182330983e+03 + 105320 9.680140484531573e-01 -6.079502827669478e+00 -5.972484914720174e+00 3.281882478721355e+00 4.896395895844764e+00 9.132778722283108e+03 + 105340 9.474206314584649e-01 -6.036293239285905e+00 -5.979657348196294e+00 3.532546634205842e+00 4.857758685218210e+00 9.154720149597306e+03 + 105360 1.010364918527897e+00 -6.113401981456605e+00 -5.966293677400221e+00 3.069155959515674e+00 4.913874606343917e+00 9.113880369302085e+03 + 105380 1.005409619074669e+00 -6.089605375690125e+00 -5.965232546426056e+00 3.301365029800016e+00 5.015533062067428e+00 9.110615594720002e+03 + 105400 9.798278291006770e-01 -6.033734164737925e+00 -5.991441703664841e+00 3.489910756798639e+00 4.732760613017486e+00 9.190805774669545e+03 + 105420 9.617753053257266e-01 -5.989303438813139e+00 -6.031948175571883e+00 3.695710007943805e+00 4.450837330223414e+00 9.315381362144270e+03 + 105440 1.015367725963964e+00 -6.051910221943773e+00 -5.983574025375860e+00 3.400383910891057e+00 4.792780926576251e+00 9.166686221829063e+03 + 105460 1.013602011966773e+00 -6.031717760017447e+00 -5.972681321920987e+00 3.523906139509683e+00 4.862902502918824e+00 9.133373233477387e+03 + 105480 9.520242536433576e-01 -5.923288954276589e+00 -6.073950220808323e+00 4.105446290799744e+00 4.240325983618884e+00 9.445419073435698e+03 + 105500 1.011368636392722e+00 -5.998732276607039e+00 -5.995376515138705e+00 3.698418257216666e+00 4.717687558870249e+00 9.202874897463817e+03 + 105520 1.032363337633741e+00 -6.020459914809817e+00 -5.986850092740839e+00 3.644559512514301e+00 4.837552311937525e+00 9.176729921849239e+03 + 105540 9.736436639915813e-01 -5.926356906650140e+00 -6.026858902453435e+00 4.070250787810322e+00 4.493152775274218e+00 9.299700056959968e+03 + 105560 1.019057514650747e+00 -5.989236094512425e+00 -5.971799251368347e+00 3.725923552176927e+00 4.826048603852979e+00 9.130686160594167e+03 + 105580 9.528947996771479e-01 -5.887293628413572e+00 -6.031752914281413e+00 4.261668706357848e+00 4.432161131902460e+00 9.314752035596786e+03 + 105600 1.041573286604988e+00 -6.015013161384133e+00 -6.005545817022140e+00 3.586824915786775e+00 4.641187872180148e+00 9.234077158035436e+03 + 105620 1.004243397638627e+00 -5.960076232231530e+00 -5.967285994915208e+00 3.947560306160929e+00 4.906160733124082e+00 9.116868366802941e+03 + 105640 1.022506427492142e+00 -5.987636310353323e+00 -5.959792503187007e+00 3.760760680751677e+00 4.920644130315898e+00 9.094009340848997e+03 + 105660 1.029789620121534e+00 -5.998764874033219e+00 -5.970988418962532e+00 3.736787993959781e+00 4.896284697368198e+00 9.128181052485172e+03 + 105680 1.053961725100563e+00 -6.036332877933464e+00 -5.984582756555044e+00 3.504980285539741e+00 4.802137490800030e+00 9.169769832299187e+03 + 105700 1.040685560194637e+00 -6.020739159812908e+00 -6.020400030508256e+00 3.528986061426465e+00 4.530933394373866e+00 9.279772174723888e+03 + 105720 1.022784278373889e+00 -5.999159861589860e+00 -6.032170578400263e+00 3.654431440642054e+00 4.464878796324804e+00 9.316058601885063e+03 + 105740 1.028099779390137e+00 -6.013069780452668e+00 -5.978046398999295e+00 3.643356242157934e+00 4.844465918313966e+00 9.149787863657071e+03 + 105760 9.930703030581690e-01 -5.966160360102219e+00 -5.975788395725336e+00 3.914741022184485e+00 4.859455351702849e+00 9.142876714259646e+03 + 105780 1.053364405619904e+00 -6.058721948758882e+00 -6.010105177678916e+00 3.420135336653936e+00 4.699300359616115e+00 9.248091705910028e+03 + 105800 1.031157656200048e+00 -6.030254643660642e+00 -5.992269885084324e+00 3.577761107061305e+00 4.795875468928918e+00 9.193345141334792e+03 + 105820 1.025626297817375e+00 -6.027665537154200e+00 -5.946009790443187e+00 3.556289426650671e+00 5.025169360451276e+00 9.052022467228582e+03 + 105840 1.023304092883361e+00 -6.025188389317370e+00 -5.962708671899954e+00 3.582976281055838e+00 4.941744487171666e+00 9.102913035612937e+03 + 105860 9.574569616592294e-01 -5.927546851528268e+00 -6.031751263841569e+00 4.115183228322439e+00 4.516825367238773e+00 9.314769091639721e+03 + 105880 1.081952132407776e+00 -6.113561619425293e+00 -5.966749946150235e+00 3.089884511913907e+00 4.932899858892307e+00 9.115281244404265e+03 + 105900 9.768611111532405e-01 -5.959228170911796e+00 -6.012257628730955e+00 3.886217000957104e+00 4.581713647877415e+00 9.254724219544254e+03 + 105920 9.618311540205203e-01 -5.938525812157089e+00 -6.034686816553030e+00 4.026143333926502e+00 4.473971965817667e+00 9.323841805252732e+03 + 105940 1.005256509796268e+00 -6.004771366631494e+00 -6.019425523985012e+00 3.656821798436134e+00 4.572675359188713e+00 9.276784511354979e+03 + 105960 1.051081755164710e+00 -6.075565015369823e+00 -5.953190345340344e+00 3.290048222010037e+00 4.992742514738286e+00 9.073897104723092e+03 + 105980 9.814223398954012e-01 -5.973715040369110e+00 -5.973577324931123e+00 3.811988676928520e+00 4.812779460284839e+00 9.136090233345500e+03 + 106000 9.517403558871805e-01 -5.930215202094815e+00 -6.012074225185203e+00 4.072174067246714e+00 4.602126889018824e+00 9.254147385920167e+03 + 106020 1.036470204866981e+00 -6.055888512823547e+00 -5.953032807909951e+00 3.420022608240283e+00 5.010635982723047e+00 9.073421533368173e+03 + 106040 9.876027144470996e-01 -5.982553759755107e+00 -5.978835585089493e+00 3.797775195741898e+00 4.819125530057525e+00 9.152177449540031e+03 + 106060 1.006627757877112e+00 -6.007602740015203e+00 -6.053254756479192e+00 3.598247305163668e+00 4.336106362000728e+00 9.381197354408683e+03 + 106080 1.014595036208636e+00 -6.015969021415833e+00 -5.968177289904363e+00 3.668455483743803e+00 4.942883001829212e+00 9.119620843721950e+03 + 106100 9.579312377507713e-01 -5.929914078467802e+00 -6.002342488423781e+00 4.023850821317997e+00 4.607955683090549e+00 9.224219886672861e+03 + 106120 9.747630544213577e-01 -5.950493512794709e+00 -5.973425996623621e+00 3.984388825519509e+00 4.852706954583492e+00 9.135648659997283e+03 + 106140 1.034836408158587e+00 -6.028923969260328e+00 -6.018579496811221e+00 3.532515787698647e+00 4.591915349303362e+00 9.274169441533359e+03 + 106160 1.056747373239916e+00 -6.049497760317792e+00 -6.008918461179066e+00 3.416071584252408e+00 4.649084199533220e+00 9.244455084515588e+03 + 106180 9.886513653691075e-01 -5.937770140760671e+00 -6.038664530076505e+00 4.007068974819852e+00 4.427717778012047e+00 9.336132458129940e+03 + 106200 9.805340525909000e-01 -5.914543900655577e+00 -6.009989267012552e+00 4.162686454606213e+00 4.614624390861758e+00 9.247739323264321e+03 + 106220 1.000973508509644e+00 -5.932482165695836e+00 -6.011485134197835e+00 4.061947033389238e+00 4.608299762580892e+00 9.252350543164030e+03 + 106240 1.099477804216275e+00 -6.068344720563396e+00 -5.991392340996491e+00 3.347705589596008e+00 4.789578061411429e+00 9.190653140477709e+03 + 106260 9.817309425238466e-01 -5.886709534572112e+00 -6.010764956554358e+00 4.407729832308563e+00 4.695384401771996e+00 9.250081283683603e+03 + 106280 1.080399480922048e+00 -6.028375517662067e+00 -5.949095556801142e+00 3.578830357159455e+00 5.034068160957180e+00 9.061422531360038e+03 + 106300 1.004495752406809e+00 -5.912349338804317e+00 -5.981316562546132e+00 4.177994123627386e+00 4.781973652258502e+00 9.159740920965627e+03 + 106320 9.574213200212893e-01 -5.841242196946911e+00 -6.012159648823311e+00 4.503141442578856e+00 4.521706984514366e+00 9.254370966423083e+03 + 106340 1.017003814298037e+00 -5.929556249530058e+00 -5.996851214287775e+00 4.045130902045099e+00 4.658712800544150e+00 9.207331225173639e+03 + 106360 1.000323491489600e+00 -5.908035978058246e+00 -6.027880613780974e+00 4.168167066239224e+00 4.480000622021882e+00 9.302830647739671e+03 + 106380 1.099692558107775e+00 -6.064504847833308e+00 -5.995719646847336e+00 3.360620737001310e+00 4.755596005538216e+00 9.203921001261197e+03 + 106400 1.018741810708129e+00 -5.960982782847296e+00 -6.013786411028732e+00 3.903909380340809e+00 4.600702775987948e+00 9.259430955694646e+03 + 106420 9.960929918803061e-01 -5.950914067813625e+00 -6.000998144026840e+00 3.991378023248719e+00 4.703787507146691e+00 9.220086539635999e+03 + 106440 9.951776503857219e-01 -5.976266187861974e+00 -6.004216954543550e+00 3.798745290460036e+00 4.638247662807263e+00 9.229985477600831e+03 + 106460 1.014168006604222e+00 -6.033711733975982e+00 -5.966472571015309e+00 3.500038341202592e+00 4.886136020149615e+00 9.114400641217915e+03 + 106480 9.219378388600086e-01 -5.925156666687804e+00 -6.011488971190176e+00 4.097525919950419e+00 4.601792467616856e+00 9.252319590841102e+03 + 106500 9.315582535002030e-01 -5.964075144604301e+00 -5.962719726808801e+00 3.908816105554686e+00 4.916599124286676e+00 9.102963734672707e+03 + 106520 9.197455744389260e-01 -5.965877622604387e+00 -6.032731833403562e+00 3.906212693366754e+00 4.522325469302208e+00 9.317794242136057e+03 + 106540 9.328777874255200e-01 -6.002134968512064e+00 -6.049540799054512e+00 3.699215549030641e+00 4.427003934027339e+00 9.369756461810823e+03 + 106560 9.816279550814646e-01 -6.089162334927154e+00 -6.019996855209783e+00 3.193440358211693e+00 4.590599246072228e+00 9.278567858523042e+03 + 106580 9.362034553502320e-01 -6.033394628574899e+00 -6.000162951443884e+00 3.542104282948767e+00 4.732925715620471e+00 9.217568579773471e+03 + 106600 9.531663688312749e-01 -6.066506105723457e+00 -5.987454258532392e+00 3.344638904377249e+00 4.798566844182163e+00 9.178583732351199e+03 + 106620 9.085484805453523e-01 -6.001575943053993e+00 -5.974513134056619e+00 3.716007840363719e+00 4.871406677582797e+00 9.138966906179581e+03 + 106640 9.965917805155191e-01 -6.124717185660998e+00 -5.959962687766232e+00 3.020579958356647e+00 4.966625780944543e+00 9.094552638896163e+03 + 106660 9.745666292338361e-01 -6.075727449155544e+00 -5.968355851361495e+00 3.347743966669550e+00 4.964288296904041e+00 9.120164656728615e+03 + 106680 1.005602826952666e+00 -6.093073800298061e+00 -5.982576040883171e+00 3.159489085215513e+00 4.793984319248818e+00 9.163636057383923e+03 + 106700 9.419305913742143e-01 -5.957666432617559e+00 -5.972641662802367e+00 3.921453091918120e+00 4.835463002787572e+00 9.133240316871985e+03 + 106720 9.411250027764670e-01 -5.900519770763479e+00 -5.994196624843613e+00 4.239192450140639e+00 4.701285457566190e+00 9.199251461260015e+03 + 106740 1.017251155313295e+00 -5.956261248836221e+00 -5.997455371046279e+00 3.902653424003169e+00 4.666110399503207e+00 9.209223112377151e+03 + 106760 1.027999396199909e+00 -5.928888995783600e+00 -5.994895914455084e+00 4.074108966804059e+00 4.695087025254746e+00 9.201363900920001e+03 + 106780 1.023671017428234e+00 -5.895389635436733e+00 -5.983821601722628e+00 4.278067941387405e+00 4.770277906171239e+00 9.167389214974275e+03 + 106800 1.063370518251372e+00 -5.938825043595225e+00 -6.040278749157486e+00 3.972831204060830e+00 4.390268326812130e+00 9.341101942116768e+03 + 106820 9.933091850089931e-01 -5.829277294172231e+00 -6.023198833214610e+00 4.674508834132249e+00 4.560981347689729e+00 9.288341931922771e+03 + 106840 1.068695331542206e+00 -5.943643439051375e+00 -6.002213778075681e+00 3.989144409407911e+00 4.652824458999677e+00 9.223810861222531e+03 + 106860 1.080201377918969e+00 -5.966966170665622e+00 -5.999897563112439e+00 3.845396223991817e+00 4.656299072445684e+00 9.216732157873832e+03 + 106880 1.081211612856492e+00 -5.981462397936142e+00 -6.042856418341460e+00 3.796636348544040e+00 4.444102382682753e+00 9.349096640293292e+03 + 106900 1.036519717739681e+00 -5.937700126651976e+00 -6.062592442682446e+00 4.002609824302688e+00 4.285458818632282e+00 9.410187139904428e+03 + 106920 1.063632070211790e+00 -6.005868794207068e+00 -5.998800526891152e+00 3.662995489394131e+00 4.703582574132952e+00 9.213360681057718e+03 + 106940 1.070216467612981e+00 -6.047270722087692e+00 -6.019756986915811e+00 3.390157901351967e+00 4.548146026445662e+00 9.277799402708328e+03 + 106960 9.973279213432032e-01 -5.971636611404179e+00 -5.987792708905163e+00 3.880620965097727e+00 4.787850153099067e+00 9.179607477186981e+03 + 106980 9.960897270013463e-01 -5.996518235592978e+00 -5.990139618307969e+00 3.728431701155718e+00 4.765058708694074e+00 9.186780903054567e+03 + 107000 1.091480078112921e+00 -6.162083420700586e+00 -5.956960727145157e+00 2.875067054914906e+00 5.052913303944422e+00 9.085413326716496e+03 + 107020 9.334176182282091e-01 -5.945262140286588e+00 -6.012381344710564e+00 4.027148112660582e+00 4.641739254194801e+00 9.255090639686185e+03 + 107040 9.893706451769266e-01 -6.041593407988587e+00 -6.030125271801602e+00 3.423369171377276e+00 4.489220984051286e+00 9.309768960803487e+03 + 107060 8.956921923816729e-01 -5.913512302806556e+00 -6.048360564440324e+00 4.115791119793720e+00 4.341471533791571e+00 9.366120273994551e+03 + 107080 1.014568518492241e+00 -6.097222958764431e+00 -5.979854029142997e+00 3.168499691858472e+00 4.842450248527906e+00 9.155313596886732e+03 + 107100 1.035141127832272e+00 -6.131896671699758e+00 -5.965389545165465e+00 2.972565390432282e+00 4.928675077886751e+00 9.111124368627907e+03 + 107120 9.589152452895245e-01 -6.020490507470245e+00 -5.954341039750212e+00 3.597254740272414e+00 4.977095220517889e+00 9.077405064062938e+03 + 107140 9.747869551062297e-01 -6.040281800103179e+00 -5.976856561146040e+00 3.426948047506857e+00 4.791145584622765e+00 9.146131142547514e+03 + 107160 1.022532204744173e+00 -6.102907087728408e+00 -5.944467338938619e+00 3.116679819919016e+00 5.026465375941870e+00 9.047381198894020e+03 + 107180 9.537027249169767e-01 -5.988059938624118e+00 -5.984920694161377e+00 3.748241098497489e+00 4.766267125999058e+00 9.170816522573945e+03 + 107200 9.818286328918161e-01 -6.013145581348835e+00 -5.988471321569333e+00 3.606528282519704e+00 4.748211700502971e+00 9.181662881766486e+03 + 107220 9.638649777582777e-01 -5.963817448158141e+00 -6.025670553031548e+00 3.808551938322428e+00 4.453381838402275e+00 9.296017940819487e+03 + 107240 1.013150429575588e+00 -6.010016926538483e+00 -6.013931742915700e+00 3.595547323006672e+00 4.573067841552815e+00 9.259873057419500e+03 + 107260 9.786341437994822e-01 -5.927788019293728e+00 -6.016337260394074e+00 4.091676025955620e+00 4.583212580606660e+00 9.267247381447047e+03 + 107280 1.003774047609609e+00 -5.924746945056934e+00 -6.026002682326444e+00 4.043936170079983e+00 4.462510057403756e+00 9.297058224356018e+03 + 107300 9.935596803415440e-01 -5.862941368662274e+00 -6.065661293515388e+00 4.335638014455830e+00 4.171588835142269e+00 9.419714195341272e+03 + 107320 1.076936398191485e+00 -5.938185717253442e+00 -6.020544900406197e+00 4.036403039010020e+00 4.563483864304502e+00 9.280205162727721e+03 + 107340 1.060868298485076e+00 -5.866815063145264e+00 -6.016526083599312e+00 4.440844220062749e+00 4.581180372910065e+00 9.267833316892373e+03 + 107360 1.166685637846369e+00 -5.992032980247102e+00 -6.016956968966996e+00 3.741702484481671e+00 4.598585084277255e+00 9.269193262704744e+03 + 107380 1.156070270995346e+00 -5.960463364025639e+00 -6.021807144112628e+00 3.885893229649185e+00 4.533647751470403e+00 9.284143381081256e+03 + 107400 1.120264906308816e+00 -5.910876971573249e+00 -5.975619959055015e+00 4.182429485904760e+00 4.810665232839530e+00 9.142342768991168e+03 + 107420 1.034653795029537e+00 -5.793687247060754e+00 -5.966073427879692e+00 4.800338837396922e+00 4.810470710459315e+00 9.113150843554979e+03 + 107440 1.068404714285877e+00 -5.856486757580247e+00 -6.025649962592572e+00 4.408115919988164e+00 4.436754618886019e+00 9.295925302328633e+03 + 107460 1.083486976078189e+00 -5.896262753495077e+00 -6.028044129831173e+00 4.169189118036603e+00 4.412480062012659e+00 9.303346970973949e+03 + 107480 1.021888401692707e+00 -5.824316013354433e+00 -6.026162880615948e+00 4.620839038332319e+00 4.461803090814946e+00 9.297530265019874e+03 + 107500 1.100250809195455e+00 -5.959937216163540e+00 -6.006227946956358e+00 3.912753394379323e+00 4.646944854699529e+00 9.236175365965028e+03 + 107520 1.083191392924486e+00 -5.956160049319586e+00 -6.074264804668620e+00 3.935188133076827e+00 4.257012351210856e+00 9.446422918603446e+03 + 107540 1.041043070099352e+00 -5.922918507413494e+00 -6.065572923265792e+00 4.056423530159119e+00 4.237279798635718e+00 9.419445632413290e+03 + 107560 9.883915065059991e-01 -5.873877341970246e+00 -6.027240516354921e+00 4.376646542048743e+00 4.496011461857409e+00 9.300857450502635e+03 + 107580 1.094827329378895e+00 -6.059750682019232e+00 -5.989444511014343e+00 3.354783159269712e+00 4.758492073024583e+00 9.184678214461461e+03 + 107600 1.049431088619426e+00 -6.022946953545170e+00 -5.990431556241718e+00 3.555270637405665e+00 4.741979080463560e+00 9.187695727713277e+03 + 107620 1.010406469704170e+00 -5.990631503106416e+00 -5.992126473260774e+00 3.728306325982232e+00 4.719721976010019e+00 9.192892406938281e+03 + 107640 9.646644875437898e-01 -5.946832348674482e+00 -6.014233115661220e+00 3.999784326280516e+00 4.612758692007682e+00 9.260774492159677e+03 + 107660 1.012891262175276e+00 -6.039105592043181e+00 -5.994815045421126e+00 3.465151505747127e+00 4.719474678390903e+00 9.201125923778925e+03 + 107680 9.920191782473126e-01 -6.026392576951298e+00 -5.976879112395320e+00 3.560891559584689e+00 4.845205535248991e+00 9.146204358698034e+03 + 107700 9.629302818179348e-01 -5.998033168646276e+00 -5.960017588711475e+00 3.755612958579468e+00 4.973904301457079e+00 9.094707931627696e+03 + 107720 9.743256926755899e-01 -6.025744743556214e+00 -6.013118838713573e+00 3.531475517022991e+00 4.603975416481900e+00 9.257333676349095e+03 + 107740 9.843536300052306e-01 -6.048045630490732e+00 -6.011877970576766e+00 3.399589115514061e+00 4.607269415667339e+00 9.253558380128936e+03 + 107760 9.870103607214662e-01 -6.058132264531766e+00 -5.979003552872307e+00 3.386105696271062e+00 4.840475003748232e+00 9.152712514640298e+03 + 107780 9.880727976511489e-01 -6.061902980302930e+00 -5.940489865546859e+00 3.474968395945530e+00 5.172141289493676e+00 9.035268490074210e+03 + 107800 9.934363380380949e-01 -6.066221439977816e+00 -5.988436137493715e+00 3.307911193865003e+00 4.754566437965371e+00 9.181592390874392e+03 + 107820 9.941222238259179e-01 -6.061157274982905e+00 -6.005740319051945e+00 3.387191829149858e+00 4.705404565851641e+00 9.234669880036236e+03 + 107840 9.802711755186846e-01 -6.031962661242682e+00 -5.972197194710828e+00 3.528039066123626e+00 4.871221623625584e+00 9.131903074737453e+03 + 107860 9.737836998087152e-01 -6.006532366041084e+00 -5.989109268957429e+00 3.677119096276647e+00 4.777165215946555e+00 9.183645934083359e+03 + 107880 9.990776872213606e-01 -6.021171733993945e+00 -5.972021231595545e+00 3.606952324883891e+00 4.889182115671163e+00 9.131360454948132e+03 + 107900 9.621491648172464e-01 -5.936971328752231e+00 -5.949348013003055e+00 4.038356892697905e+00 4.967288056443978e+00 9.062199076408415e+03 + 107920 1.015021487249577e+00 -5.972331211826770e+00 -5.959059745545060e+00 3.901221194300628e+00 4.977428007442975e+00 9.091787121374791e+03 + 107940 1.084780237755569e+00 -6.024691205974166e+00 -6.010794881635205e+00 3.517763169042444e+00 4.597558013845994e+00 9.250237775283598e+03 + 107960 1.054203414846473e+00 -5.936365887669200e+00 -6.035347090494796e+00 4.010637691369978e+00 4.442272307453769e+00 9.325880074572389e+03 + 107980 1.053521546659673e+00 -5.909954976591237e+00 -5.998799133369886e+00 4.221508023905686e+00 4.711351127093857e+00 9.213320405882903e+03 + 108000 1.039572208917378e+00 -5.871860370726271e+00 -6.023429481683597e+00 4.407605606512296e+00 4.537272316151213e+00 9.289080853752117e+03 + 108020 1.074137242603411e+00 -5.915719881252234e+00 -5.992090244400467e+00 4.182847822553282e+00 4.744317379080624e+00 9.192777612740869e+03 + 108040 1.062737816324989e+00 -5.899433269969242e+00 -6.007586830290133e+00 4.205741372022769e+00 4.584706891950842e+00 9.240325482529890e+03 + 108060 1.075041951887930e+00 -5.925107194838648e+00 -6.002757562852939e+00 4.093953287006163e+00 4.648072857512488e+00 9.225499950036372e+03 + 108080 1.088380250092350e+00 -5.959242808274414e+00 -6.034170674578027e+00 3.999187682688607e+00 4.568940279323428e+00 9.322243954859903e+03 + 108100 1.113715042597850e+00 -6.022971543491155e+00 -6.032311133386394e+00 3.588166938298107e+00 4.534537567822781e+00 9.316507178080856e+03 + 108120 1.023537800871556e+00 -5.920319455141232e+00 -5.993233261800748e+00 4.110506379261539e+00 4.691824018047488e+00 9.196258875854641e+03 + 108140 9.980410773184784e-01 -5.909817993069390e+00 -5.949564029902841e+00 4.209126426803954e+00 4.980898532626957e+00 9.062821895626783e+03 + 108160 1.015613200229184e+00 -5.957734116411175e+00 -5.942365421137865e+00 3.896006588878882e+00 4.984256015436136e+00 9.040936387462518e+03 + 108180 1.012196642450348e+00 -5.967608887570485e+00 -5.978755456825464e+00 3.858217647821433e+00 4.794212322233322e+00 9.151912704568538e+03 + 108200 9.741769502196318e-01 -5.925526691123276e+00 -6.005749391432316e+00 4.044388511053363e+00 4.583737351456106e+00 9.234691966481303e+03 + 108220 9.687114128244643e-01 -5.928724985779531e+00 -5.955326182847923e+00 4.087564662161350e+00 4.934816472072698e+00 9.080395360601287e+03 + 108240 1.005166577086568e+00 -5.990235717786807e+00 -5.986930693100444e+00 3.731780417406966e+00 4.750758380606985e+00 9.176934997796623e+03 + 108260 1.010016370502997e+00 -6.002224998525467e+00 -5.950490652744848e+00 3.757186535442605e+00 5.054253154779056e+00 9.065681509965854e+03 + 108280 1.004404093359719e+00 -5.998232262909251e+00 -6.025325482260378e+00 3.704748655158797e+00 4.549175196982484e+00 9.294920823874812e+03 + 108300 9.915783221759463e-01 -5.983909713209440e+00 -5.981713437636225e+00 3.764436182207665e+00 4.777047536421610e+00 9.160977118090765e+03 + 108320 9.577143021635933e-01 -5.936558417704182e+00 -5.993366096541505e+00 4.055546824183006e+00 4.729348341339207e+00 9.196672309316877e+03 + 108340 9.873057496685874e-01 -5.981530567227935e+00 -5.980196830726648e+00 3.841769016392532e+00 4.849427537777983e+00 9.156309616924682e+03 + 108360 9.820677538233421e-01 -5.971071943175634e+00 -6.041223494110471e+00 3.867204885490600e+00 4.464383824105342e+00 9.344036215726748e+03 + 108380 1.020466553004970e+00 -6.026487393392054e+00 -6.083794476410086e+00 3.506608508790643e+00 4.177542369858671e+00 9.476088023334511e+03 + 108400 9.218425656843257e-01 -5.884336754468325e+00 -6.012802347728387e+00 4.363506307371148e+00 4.625836990885568e+00 9.256384620686618e+03 + 108420 1.019868274710582e+00 -6.035226735395079e+00 -5.961791355007750e+00 3.491491166690344e+00 4.913168484962775e+00 9.100125696866366e+03 + 108440 1.020746629340604e+00 -6.037938765544196e+00 -5.982261369592243e+00 3.480162556982721e+00 4.799870780588009e+00 9.162668931352207e+03 + 108460 9.648008454713850e-01 -5.954432499808748e+00 -6.052043376599707e+00 3.900787227195333e+00 4.340290467427280e+00 9.377491986999563e+03 + 108480 1.012825676977712e+00 -6.026486918168974e+00 -6.017756959880090e+00 3.586680666986021e+00 4.636809438437467e+00 9.271638219440774e+03 + 108500 1.071298070913189e+00 -6.113973966161216e+00 -5.981727338553323e+00 3.139346616554546e+00 4.898727217378555e+00 9.161037725997532e+03 + 108520 9.995398540864457e-01 -6.010742216332344e+00 -5.947270110706411e+00 3.689366296198835e+00 5.053832948979541e+00 9.055878528059937e+03 + 108540 1.014014069238396e+00 -6.034917107261979e+00 -5.966716737985542e+00 3.528944353298466e+00 4.920561427656803e+00 9.115160611939304e+03 + 108560 9.706622251815615e-01 -5.972630998059905e+00 -6.004653953747580e+00 3.801162390696355e+00 4.617281623601352e+00 9.231343927526259e+03 + 108580 9.781396761780351e-01 -5.984972613202496e+00 -6.033337765997054e+00 3.757113997335720e+00 4.479393805506165e+00 9.319647570064051e+03 + 108600 9.810013935294777e-01 -5.989267209276985e+00 -6.030921475823246e+00 3.778244937494896e+00 4.539059693009349e+00 9.312234084753991e+03 + 108620 1.002855736973533e+00 -6.023335464328249e+00 -6.023203149035391e+00 3.549377153009078e+00 4.550136927896395e+00 9.288434224418064e+03 + 108640 9.990366732869943e-01 -6.018726915652055e+00 -6.006344009917990e+00 3.586730299701548e+00 4.657834860675013e+00 9.236552383283415e+03 + 108660 1.026451071462047e+00 -6.059646397951886e+00 -6.002346625028880e+00 3.378859304413723e+00 4.707883467648820e+00 9.224258923522311e+03 + 108680 1.001074936334381e+00 -6.023430415030750e+00 -6.011235416778378e+00 3.602897833062329e+00 4.672923400197327e+00 9.251553194441129e+03 + 108700 9.580907785112820e-01 -5.961588777494660e+00 -5.975053601237232e+00 3.914403615744963e+00 4.837086514140369e+00 9.140603494491470e+03 + 108720 1.035506263936890e+00 -6.073315663746171e+00 -5.952660770082201e+00 3.302388415442210e+00 4.995207486145179e+00 9.072300041338567e+03 + 108740 9.854562550349116e-01 -5.991926143752989e+00 -6.009704792776455e+00 3.793399606537483e+00 4.691311852607696e+00 9.246869274965558e+03 + 108760 1.004531630700905e+00 -6.012857172403439e+00 -6.038390542484620e+00 3.584570280416954e+00 4.437953718134562e+00 9.335312780198099e+03 + 108780 1.052626868421286e+00 -6.080585705118037e+00 -5.971054779385264e+00 3.260442078516939e+00 4.889385603930501e+00 9.128422729464799e+03 + 108800 9.698915026857554e-01 -5.952400338423944e+00 -6.027353940799638e+00 3.933236462440590e+00 4.502841278566873e+00 9.301198058515394e+03 + 108820 1.020770136999852e+00 -6.020657019922772e+00 -6.003899666163582e+00 3.540945124311440e+00 4.637168442788825e+00 9.229024145049407e+03 + 108840 9.829787790242049e-01 -5.956593348644343e+00 -5.999233486724071e+00 3.957575947621837e+00 4.712729676227990e+00 9.214685944414696e+03 + 108860 1.037003982250690e+00 -6.026083889798857e+00 -6.015075292743703e+00 3.551550406269117e+00 4.614763474134696e+00 9.263372575520842e+03 + 108880 9.855407204743436e-01 -5.941130524919171e+00 -6.018564249978476e+00 3.973332656220415e+00 4.528696224099664e+00 9.274125139475673e+03 + 108900 1.040610497486178e+00 -6.014791222215638e+00 -5.973922552138872e+00 3.650996453198965e+00 4.885670681186006e+00 9.137152023481056e+03 + 108920 1.010746571020814e+00 -5.961381718837112e+00 -5.990652967532657e+00 3.848918042167713e+00 4.680838002446795e+00 9.188390678286707e+03 + 108940 9.758234313041554e-01 -5.899670693065586e+00 -6.039865139454703e+00 4.167864100064081e+00 4.362845893877307e+00 9.339844197490111e+03 + 108960 1.025693016310956e+00 -5.963408993778376e+00 -6.017185314277204e+00 3.907753836017132e+00 4.598961881854164e+00 9.269877029171623e+03 + 108980 1.073478006563008e+00 -6.025745906913911e+00 -6.031132448017474e+00 3.510887909824355e+00 4.479957557243154e+00 9.312876685180361e+03 + 109000 1.094042784350798e+00 -6.051414417241750e+00 -6.019309392802377e+00 3.394913413045250e+00 4.579265431612605e+00 9.276425973408888e+03 + 109020 1.067410045668167e+00 -6.013164161234901e+00 -5.999062055389572e+00 3.679624572747204e+00 4.760601046804909e+00 9.214162649406788e+03 + 109040 1.032131989915082e+00 -5.967722225318855e+00 -6.027877485928482e+00 3.890420382456902e+00 4.544999567039929e+00 9.302806872854382e+03 + 109060 1.053278460218680e+00 -6.011306642486284e+00 -6.011138911408402e+00 3.637471914552072e+00 4.638435052357575e+00 9.251268198576317e+03 + 109080 1.002315948589589e+00 -5.954199384352671e+00 -6.005768141362122e+00 3.898643684305822e+00 4.602527901318196e+00 9.234778875689419e+03 + 109100 1.047434391335358e+00 -6.046068223478323e+00 -5.980569840217163e+00 3.484834329135774e+00 4.860936181663405e+00 9.157507983948248e+03 + 109120 1.010799278984670e+00 -6.023459422120209e+00 -6.002643957730511e+00 3.548314728394327e+00 4.667840346102680e+00 9.225111062823362e+03 + 109140 9.805715256154648e-01 -6.012226654669088e+00 -5.991507227372066e+00 3.617714221701695e+00 4.736688379562208e+00 9.190967535203141e+03 + 109160 9.875922910271535e-01 -6.052291155898865e+00 -5.972232210622071e+00 3.490183291096962e+00 4.949894143958057e+00 9.132003573817899e+03 + 109180 1.053384674590968e+00 -6.177809197021253e+00 -6.004534700036508e+00 2.730878974123281e+00 4.725847949951437e+00 9.230992253130638e+03 + 109200 9.594850952680400e-01 -6.063251633257293e+00 -5.985606018303364e+00 3.406150655209129e+00 4.852003791894672e+00 9.172909592258051e+03 + 109220 9.462080787733916e-01 -6.062056116043646e+00 -5.947742680446437e+00 3.427184299767921e+00 5.083589736914085e+00 9.057324271325253e+03 + 109240 8.983851810711755e-01 -6.001502108684121e+00 -5.965501018049855e+00 3.749654956959702e+00 4.956378790532431e+00 9.111411842264019e+03 + 109260 9.887329666025924e-01 -6.136057787683523e+00 -5.961544229656384e+00 2.952766647335732e+00 4.954850503413391e+00 9.099373850484015e+03 + 109280 9.545839564806871e-01 -6.080590225330678e+00 -5.997087634723282e+00 3.258382310457273e+00 4.737867107709075e+00 9.208099018656241e+03 + 109300 9.497865636814274e-01 -6.064317741328719e+00 -5.941156713317082e+00 3.326376470578297e+00 5.033586152528606e+00 9.037291468523226e+03 + 109320 9.242128979765879e-01 -6.007329807587109e+00 -5.966504595207354e+00 3.682670129677166e+00 4.917094816842913e+00 9.114513531278337e+03 + 109340 9.560905510207155e-01 -6.023994489326089e+00 -6.011646464336136e+00 3.550991137135337e+00 4.621895407478339e+00 9.252859154133272e+03 + 109360 9.453624125603036e-01 -5.971995439210477e+00 -6.017399660843208e+00 3.839719793170644e+00 4.579001726274914e+00 9.270535534674005e+03 + 109380 9.921265982129118e-01 -6.001276584062145e+00 -6.013157630058791e+00 3.692343575938161e+00 4.624120771239491e+00 9.257475770663152e+03 + 109400 9.855920953321784e-01 -5.955355158831755e+00 -5.992472306171823e+00 3.907728165879531e+00 4.694595761992874e+00 9.193940908898418e+03 + 109420 1.006969176944831e+00 -5.954240446351060e+00 -5.980729774751390e+00 3.981305994710346e+00 4.829200171825327e+00 9.157981798141069e+03 + 109440 1.090609972369272e+00 -6.055263903709355e+00 -5.982438425814895e+00 3.365229833305907e+00 4.783404997082178e+00 9.163213274275438e+03 + 109460 1.045888505020370e+00 -5.976706491805553e+00 -6.065665267853577e+00 3.746302256822128e+00 4.235487198428276e+00 9.419746065321016e+03 + 109480 1.043687966727833e+00 -5.971868505276107e+00 -6.005442599275773e+00 3.861177013532939e+00 4.668389370212606e+00 9.233744134288718e+03 + 109500 1.005182548833443e+00 -5.917061849015028e+00 -5.972686343594315e+00 4.149105291498605e+00 4.829700835761622e+00 9.133370725142826e+03 + 109520 1.058151051715412e+00 -5.999765998552968e+00 -5.936486920183147e+00 3.720152608150502e+00 5.083510868555745e+00 9.023058845459847e+03 + 109540 1.023670810048727e+00 -5.951868090375650e+00 -5.943152087454159e+00 4.010521711223944e+00 5.060570348796238e+00 9.043328437982134e+03 + 109560 1.026289148690923e+00 -5.959919913487415e+00 -5.997970128487184e+00 3.893643568992297e+00 4.675153346211880e+00 9.210799383746875e+03 + 109580 1.021706887436896e+00 -5.959990971486249e+00 -6.021373046768340e+00 3.890243926731836e+00 4.537778551616618e+00 9.282763987196964e+03 + 109600 1.005062039983134e+00 -5.943651662215859e+00 -6.028956982408861e+00 4.017863396093531e+00 4.528027046589678e+00 9.306128973448767e+03 + 109620 1.051311904639596e+00 -6.024998417287838e+00 -6.022270007133868e+00 3.624432046037923e+00 4.640098999362126e+00 9.285545776747427e+03 + 109640 1.076610182754893e+00 -6.082164605854845e+00 -5.973735919328480e+00 3.293633959735433e+00 4.916248257054836e+00 9.136606002531638e+03 + 109660 9.425324479560375e-01 -5.903888588086559e+00 -6.009153481145221e+00 4.207276130248198e+00 4.602828824615806e+00 9.245157559553678e+03 + 109680 9.744119016378936e-01 -5.972017557252527e+00 -6.021800865689528e+00 3.801527414798057e+00 4.515663953810714e+00 9.284082009987362e+03 + 109700 9.636896458029039e-01 -5.974790334990272e+00 -6.006607206900667e+00 3.856164244583022e+00 4.673466842428519e+00 9.237320253525853e+03 + 109720 1.047523426136800e+00 -6.117518842611685e+00 -5.951418817672415e+00 3.122315203702985e+00 5.076087250800058e+00 9.068523008979058e+03 + 109740 9.529605246415017e-01 -5.994352364456859e+00 -6.042581256069575e+00 3.751051463787598e+00 4.474113704750534e+00 9.348232432907851e+03 + 109760 9.694198998467379e-01 -6.037268639465704e+00 -6.017825698572676e+00 3.552101546049369e+00 4.663745921442512e+00 9.271852996978670e+03 + 109780 1.008503040709809e+00 -6.111797103606383e+00 -6.001612300529800e+00 3.101615147933606e+00 4.734313338242515e+00 9.221999921783801e+03 + 109800 9.234817085578430e-01 -6.002010663599777e+00 -6.021667949230995e+00 3.708473530017098e+00 4.595598353967523e+00 9.283691880754999e+03 + 109820 9.898506289323936e-01 -6.116372974742874e+00 -5.951906603888724e+00 3.113859828214673e+00 5.058251180747837e+00 9.070021367908645e+03 + 109840 9.216813200064577e-01 -6.026820603827560e+00 -6.026751968063200e+00 3.608589486396424e+00 4.608983603576732e+00 9.299346769578786e+03 + 109860 9.683275848286996e-01 -6.108359047928173e+00 -6.001829727779143e+00 3.117727212012201e+00 4.729435053666943e+00 9.222677274755089e+03 + 109880 9.367424382017991e-01 -6.071785973205475e+00 -5.997068543699930e+00 3.274857157402724e+00 4.703896200108409e+00 9.208062457674054e+03 + 109900 8.973868999383569e-01 -6.019377602880527e+00 -6.016016277401363e+00 3.609627186915418e+00 4.628928437980219e+00 9.266282680458475e+03 + 109920 9.390230776667619e-01 -6.082756457915149e+00 -5.984324690630572e+00 3.290308839787277e+00 4.855519279802073e+00 9.168992365183849e+03 + 109940 9.460682861839445e-01 -6.087098144211586e+00 -5.982820916982378e+00 3.249119933426698e+00 4.847895909025569e+00 9.164343363692175e+03 + 109960 9.534160335316748e-01 -6.080411172313257e+00 -5.998459578499917e+00 3.274168402529377e+00 4.744747136173729e+00 9.212309290434358e+03 + 109980 9.561788934174436e-01 -6.056698918893106e+00 -5.992226457542107e+00 3.424260950272141e+00 4.794471800430731e+00 9.193223214912250e+03 + 110000 9.286228454560304e-01 -5.982868574483808e+00 -5.992054166938184e+00 3.824330295094624e+00 4.771585201755761e+00 9.192661058492396e+03 + 110020 9.322600495554356e-01 -5.947871015472542e+00 -6.032271125889105e+00 3.906910716234783e+00 4.422272221348004e+00 9.316389343825336e+03 + 110040 1.051327875793133e+00 -6.083116288863671e+00 -6.000528909917403e+00 3.241680769009303e+00 4.715910279274365e+00 9.218692797862925e+03 + 110060 1.082265875826372e+00 -6.094920791514028e+00 -5.969191874713209e+00 3.142925841119350e+00 4.864880737876646e+00 9.122716612234366e+03 + 110080 9.663780031418719e-01 -5.899122018087247e+00 -5.996054623314863e+00 4.203293158647594e+00 4.646691139158441e+00 9.204909362427068e+03 + 110100 9.835200157609779e-01 -5.902355548099267e+00 -6.000348869649619e+00 4.240806488402336e+00 4.678113671642718e+00 9.218098169790581e+03 + 110120 1.022656946713998e+00 -5.941496786037618e+00 -6.003985564644452e+00 4.057399661709102e+00 4.698579424841423e+00 9.229265719018886e+03 + 110140 1.039873747108141e+00 -5.951128343276463e+00 -6.004630771421411e+00 3.970663874928885e+00 4.663444653046595e+00 9.231255401452736e+03 + 110160 1.018745863519354e+00 -5.909579058191441e+00 -6.037880857949373e+00 4.166770980642767e+00 4.430042191793373e+00 9.333687659382565e+03 + 110180 1.049243293294678e+00 -5.950878442676631e+00 -6.008768075574378e+00 4.029754061019126e+00 4.697342830528524e+00 9.243984340849825e+03 + 110200 1.029631986180195e+00 -5.923064053169250e+00 -6.010838150259236e+00 4.156322943622634e+00 4.652310495134310e+00 9.250339358117104e+03 + 110220 1.033153602173843e+00 -5.934835409290177e+00 -6.031952810793861e+00 4.045539682951310e+00 4.487876534647841e+00 9.315393423306779e+03 + 110240 1.056069413482368e+00 -5.982593501681246e+00 -6.010070693080213e+00 3.759763120745616e+00 4.601984835651120e+00 9.248013958698835e+03 + 110260 1.070226161415560e+00 -6.022733772374420e+00 -6.019580513617202e+00 3.570605503924027e+00 4.588712003673194e+00 9.277244352823955e+03 + 110280 9.779256112615989e-01 -5.913520038861624e+00 -6.023532391387066e+00 4.173184838351547e+00 4.541476885793925e+00 9.289434063652681e+03 + 110300 1.052494966785776e+00 -6.057853140517452e+00 -5.985822661934281e+00 3.438436177178112e+00 4.852046331883218e+00 9.173595293013988e+03 + 110320 1.011529149249278e+00 -6.035933050556491e+00 -6.003930528676086e+00 3.482519192173048e+00 4.666282625184588e+00 9.229137022084225e+03 + 110340 9.708646058262266e-01 -6.010454070040975e+00 -6.004324896129530e+00 3.626798702835793e+00 4.661993367921904e+00 9.230333937859687e+03 + 110360 9.359848173099466e-01 -5.988566648946828e+00 -6.023844906360605e+00 3.755682671183464e+00 4.553109457820868e+00 9.290396756951262e+03 + 110380 9.811049548622823e-01 -6.079921267765222e+00 -5.984130994268012e+00 3.320966150547508e+00 4.871008724465403e+00 9.168407592035644e+03 + 110400 9.212425011848773e-01 -6.006329760718172e+00 -5.998592779699349e+00 3.709766413636288e+00 4.754193355940314e+00 9.212730532387617e+03 + 110420 9.804643084144998e-01 -6.100510625044591e+00 -5.989308772179535e+00 3.131322709596815e+00 4.769860957179084e+00 9.184272782955193e+03 + 110440 9.996785355283355e-01 -6.129438083081175e+00 -5.996362655814160e+00 2.989472003843865e+00 4.753611700566882e+00 9.205904218233467e+03 + 110460 9.875315664849790e-01 -6.108961279276206e+00 -6.010224187743059e+00 3.130711515299299e+00 4.697675174398157e+00 9.248479835216387e+03 + 110480 9.921601085555617e-01 -6.111018579800302e+00 -6.004417747577416e+00 3.097223452041951e+00 4.709341927091238e+00 9.230628253333118e+03 + 110500 9.481593009655233e-01 -6.037550208075061e+00 -5.989511582762105e+00 3.531631314938295e+00 4.807476535438525e+00 9.184894747712648e+03 + 110520 9.300941896809759e-01 -6.000228224003878e+00 -6.031965419298801e+00 3.649506611481406e+00 4.467266724782859e+00 9.315441042377706e+03 + 110540 9.934444835877562e-01 -6.082515418038583e+00 -5.987869629531684e+00 3.228326190341762e+00 4.771796954336819e+00 9.179853757144438e+03 + 110560 9.425088416099272e-01 -5.994087337490480e+00 -5.985640773273747e+00 3.745569360457019e+00 4.794070839291083e+00 9.173012697336795e+03 + 110580 9.474086280856785e-01 -5.987529883502685e+00 -5.994302483408548e+00 3.755411088685092e+00 4.716521771969177e+00 9.199552841547560e+03 + 110600 1.082175460248784e+00 -6.171160756571253e+00 -5.951793723694032e+00 2.779141480616332e+00 5.038780930335964e+00 9.069674820805674e+03 + 110620 1.010730194554325e+00 -6.052143856533896e+00 -6.016529788390564e+00 3.450134600907703e+00 4.654636091445952e+00 9.267869291956948e+03 + 110640 1.031805215598244e+00 -6.073702042617732e+00 -6.014303868935618e+00 3.279095580236304e+00 4.620169085356672e+00 9.261028325589306e+03 + 110660 9.508062475787832e-01 -5.945552094020330e+00 -6.012869623445438e+00 3.992504598386562e+00 4.605956927073581e+00 9.256570918327147e+03 + 110680 9.595026159332820e-01 -5.950488365425490e+00 -5.982368671350679e+00 3.974250735768617e+00 4.791189085684785e+00 9.162982887976223e+03 + 110700 1.001453199827921e+00 -6.003431680378736e+00 -5.977911206622367e+00 3.696113456639870e+00 4.842655966229489e+00 9.149332271111291e+03 + 110720 9.658870745627729e-01 -5.938841010483362e+00 -6.017821883471862e+00 3.970364672112552e+00 4.516844277161992e+00 9.271822413006292e+03 + 110740 1.026436461109748e+00 -6.017586257216919e+00 -5.978952614825177e+00 3.637809720528817e+00 4.859650073679033e+00 9.152540188395787e+03 + 110760 1.017556018721842e+00 -5.996406452838357e+00 -5.981039069259174e+00 3.711546654974805e+00 4.799788549581397e+00 9.158934445275740e+03 + 110780 1.010858827641146e+00 -5.980683619751089e+00 -6.004179946252954e+00 3.759197088463409e+00 4.624277545644926e+00 9.229892446835385e+03 + 110800 9.689372337704188e-01 -5.914200582566381e+00 -5.996430240768480e+00 4.120687660804618e+00 4.648512238409686e+00 9.206088330180100e+03 + 110820 9.771077488855594e-01 -5.922371536386454e+00 -5.973703922731883e+00 4.106522232920517e+00 4.811763726863944e+00 9.136477062482161e+03 + 110840 1.029057318277087e+00 -5.993233153975304e+00 -5.988387808900963e+00 3.683122830784319e+00 4.710945552015909e+00 9.181426665871040e+03 + 110860 1.052856637779002e+00 -6.023680132429977e+00 -5.954420101826750e+00 3.573419414659027e+00 4.971121228337855e+00 9.077629907030780e+03 + 110880 9.935032302785025e-01 -5.932071185884737e+00 -5.977116655254434e+00 4.034640766151276e+00 4.775982710266622e+00 9.146903785714010e+03 + 110900 9.682863018089735e-01 -5.890509370320800e+00 -5.985262086731094e+00 4.319184537153581e+00 4.775099776590200e+00 9.171821508278499e+03 + 110920 1.069878140287784e+00 -6.034404830613564e+00 -5.954406882439587e+00 3.487369180509094e+00 4.946729778566541e+00 9.077608990553976e+03 + 110940 1.049541721033236e+00 -5.994416771630478e+00 -6.012098365047850e+00 3.741638591622209e+00 4.640108146001921e+00 9.254214131886341e+03 + 110960 1.027501671195375e+00 -5.951873905931321e+00 -6.037344404540329e+00 3.933101412312666e+00 4.442316582782825e+00 9.332039106082710e+03 + 110980 1.030918474025120e+00 -5.949436853321159e+00 -5.978218377951757e+00 4.029921225087845e+00 4.864653256732410e+00 9.150296896796699e+03 + 111000 1.045665672962105e+00 -5.963196290822335e+00 -5.983461380501097e+00 3.887093623675416e+00 4.770728342727475e+00 9.166344934087050e+03 + 111020 1.010436152146698e+00 -5.905420479303333e+00 -6.022489283787945e+00 4.173740539306135e+00 4.501513347616547e+00 9.286197488941209e+03 + 111040 1.037631681104065e+00 -5.944642672066583e+00 -6.035530229015361e+00 3.939236095514004e+00 4.417345678710140e+00 9.326445574624624e+03 + 111060 1.009670064137955e+00 -5.908762201580893e+00 -6.031940133792171e+00 4.156371834436221e+00 4.449065085955656e+00 9.315366298207058e+03 + 111080 1.048800838140544e+00 -5.977284388178622e+00 -5.993652855485705e+00 3.820101850431631e+00 4.726111578142228e+00 9.197551724132283e+03 + 111100 1.031191935986498e+00 -5.966493753947737e+00 -6.021743574359066e+00 3.838147327272266e+00 4.520894308588336e+00 9.283895453959811e+03 + 111120 1.004103555314783e+00 -5.945673672358472e+00 -5.998884435648916e+00 4.009127662067989e+00 4.703583224915254e+00 9.213610812065273e+03 + 111140 1.066473776201106e+00 -6.060432615401361e+00 -5.978320714394387e+00 3.373378724253937e+00 4.844877966611593e+00 9.150612090525488e+03 + 111160 9.602690636643264e-01 -5.928424659794904e+00 -6.022453774104839e+00 4.055340083913604e+00 4.515410358587544e+00 9.286091684490717e+03 + 111180 1.016177119751200e+00 -6.036325914314632e+00 -5.985354149752393e+00 3.454128570943415e+00 4.746816330914863e+00 9.172147763521998e+03 + 111200 9.783156488197153e-01 -6.005567932259768e+00 -6.006479107549392e+00 3.666738782607635e+00 4.661506673090692e+00 9.236940913713159e+03 + 111220 9.181222845285862e-01 -5.938101585128927e+00 -5.992923384833532e+00 4.027513437199206e+00 4.712718179649278e+00 9.195342093144875e+03 + 111240 1.055189226094499e+00 -6.160434440854589e+00 -5.938973797666539e+00 2.860750230163276e+00 5.132411514272833e+00 9.030665290268356e+03 + 111260 9.939873840837822e-01 -6.085397504881648e+00 -5.989006037103252e+00 3.198727797964836e+00 4.752222522479816e+00 9.183336323775602e+03 + 111280 9.922302180708334e-01 -6.093578990058133e+00 -5.970659345371847e+00 3.196572662644885e+00 4.902396284187081e+00 9.127215704886079e+03 + 111300 9.975016575991168e-01 -6.110003702093761e+00 -5.997694583738388e+00 3.107178286027738e+00 4.752074623404186e+00 9.209968203572816e+03 + 111320 9.858404488471383e-01 -6.097399325853936e+00 -5.967008522660524e+00 3.172077300258467e+00 4.920801470106625e+00 9.116057831092041e+03 + 111340 8.937047523539449e-01 -5.960955633179434e+00 -5.976103394022425e+00 3.973044841375450e+00 4.886064054506583e+00 9.143841157089402e+03 + 111360 9.345930370709843e-01 -6.014846398485147e+00 -5.993273033293162e+00 3.607468002693266e+00 4.731345604093116e+00 9.196406853469070e+03 + 111380 9.521015634277409e-01 -6.027317244914769e+00 -6.009915940983170e+00 3.526811936776090e+00 4.626732916794415e+00 9.247497130018810e+03 + 111400 9.444295435439848e-01 -5.992360209202766e+00 -6.000844458964826e+00 3.713257459930913e+00 4.664539584863757e+00 9.219664146890742e+03 + 111420 9.643482513485202e-01 -5.988915210575982e+00 -6.023522878623160e+00 3.739510589914594e+00 4.540788004468376e+00 9.289415881345927e+03 + 111440 1.039504716686269e+00 -6.058618273162059e+00 -6.008343730949672e+00 3.371075052139666e+00 4.659759253483458e+00 9.242683781657561e+03 + 111460 1.047896619849942e+00 -6.026840106503495e+00 -5.985610583256140e+00 3.541385660226431e+00 4.778131962960845e+00 9.172944351384149e+03 + 111480 9.701543287210241e-01 -5.872532859233743e+00 -6.006632318932620e+00 4.382733270682891e+00 4.612713421267623e+00 9.237400225784750e+03 + 111500 1.061083407054791e+00 -5.975134273675539e+00 -5.939173958108073e+00 3.872146387863249e+00 5.078636084692489e+00 9.031241801945966e+03 + 111520 1.039485777219276e+00 -5.918606712648376e+00 -6.004185565999315e+00 4.108690990387281e+00 4.617283971161438e+00 9.229894287400131e+03 + 111540 1.107517426780466e+00 -6.005395457177568e+00 -6.006153635084738e+00 3.726917361565975e+00 4.722563786695354e+00 9.235949725726510e+03 + 111560 1.101627473574728e+00 -5.992690650609672e+00 -6.028964406101128e+00 3.720078255896747e+00 4.511788738519282e+00 9.306178288973704e+03 + 111580 9.857659765130373e-01 -5.826106772232249e+00 -6.033497805900936e+00 4.665435346269978e+00 4.474563937285642e+00 9.320169667796639e+03 + 111600 1.111285494103226e+00 -6.020646909397804e+00 -6.030585305953753e+00 3.545150437071742e+00 4.488082626085586e+00 9.311186504551011e+03 + 111620 1.058771636532120e+00 -5.959142631049523e+00 -6.020674490123155e+00 3.935391892792472e+00 4.582066435967256e+00 9.280638493041863e+03 + 111640 1.043434973045050e+00 -5.956501479154894e+00 -5.990665095297387e+00 3.940518058077556e+00 4.744345287384851e+00 9.188429806491069e+03 + 111660 9.984394584470870e-01 -5.909608704296278e+00 -5.996116991726510e+00 4.217111904268965e+00 4.720367930730356e+00 9.205121390904345e+03 + 111680 1.049876049036680e+00 -6.005772721718293e+00 -5.983630090876565e+00 3.706467827976851e+00 4.833614240831100e+00 9.166843227957525e+03 + 111700 9.806974178439940e-01 -5.919821212285073e+00 -5.975595958443669e+00 4.206761238923346e+00 4.886494015366616e+00 9.142260976349111e+03 + 111720 9.813604101523604e-01 -5.933462982325751e+00 -6.006642808129040e+00 4.069848783962958e+00 4.649638899659030e+00 9.237447113889462e+03 + 111740 1.073805007676233e+00 -6.082661015580848e+00 -6.024920013212152e+00 3.174601220463178e+00 4.506158991455472e+00 9.293728383696200e+03 + 111760 9.482265325865137e-01 -5.910512277042267e+00 -6.037083566278443e+00 4.174210310311450e+00 4.447418380673622e+00 9.331248486415872e+03 + 111780 1.023679590095926e+00 -6.036594546643461e+00 -6.002961212197041e+00 3.489621149234639e+00 4.682748960367668e+00 9.226137770676005e+03 + 111800 9.841086484805363e-01 -5.989603784701198e+00 -5.991835231666723e+00 3.736600567026359e+00 4.723787253235010e+00 9.191994836874475e+03 + 111820 9.734878626708389e-01 -5.982285661913116e+00 -5.994231888242911e+00 3.763389458101385e+00 4.694792377843147e+00 9.199337437610056e+03 + 111840 9.770625753244400e-01 -5.992041971495479e+00 -6.012777186406056e+00 3.686582482247180e+00 4.567517669466510e+00 9.256298126508629e+03 + 111860 1.004596017401001e+00 -6.035938785135500e+00 -6.007851569537477e+00 3.458308655396451e+00 4.619589793842865e+00 9.241170037027769e+03 + 111880 9.313120053160255e-01 -5.929876485774042e+00 -6.019447140597779e+00 4.063103671624955e+00 4.548775110613019e+00 9.276866041846290e+03 + 111900 1.017806396240722e+00 -6.058964406949322e+00 -5.982245130403562e+00 3.390398642528663e+00 4.830932600724090e+00 9.162635031916396e+03 + 111920 9.460214591981132e-01 -5.951483996798249e+00 -6.023243205895675e+00 3.897844565494837e+00 4.485792082155703e+00 9.288556302344510e+03 + 111940 1.026796276654055e+00 -6.070120339547088e+00 -5.990444252630297e+00 3.322666753001584e+00 4.780179173912401e+00 9.187739841325780e+03 + 111960 1.019824781738202e+00 -6.057163413659826e+00 -5.975738360776909e+00 3.417599978496777e+00 4.885155232636697e+00 9.142716070591070e+03 + 111980 9.893405509936312e-01 -6.006747445465161e+00 -5.998897254121099e+00 3.640915067087164e+00 4.685992080597957e+00 9.213674527775023e+03 + 112000 1.029801462068605e+00 -6.061093497559658e+00 -6.015887862945173e+00 3.382825426985163e+00 4.642403176490883e+00 9.265882795447988e+03 + 112020 1.013891882605652e+00 -6.031724954082367e+00 -5.987893065030248e+00 3.556809122500562e+00 4.808498612400735e+00 9.179925012016374e+03 + 112040 9.441295887970530e-01 -5.919166393749313e+00 -6.021275230192233e+00 4.133768835502072e+00 4.547444095355455e+00 9.282466717806450e+03 + 112060 9.782307499912646e-01 -5.953573848412131e+00 -5.990341986020471e+00 3.897388923562600e+00 4.686260587564609e+00 9.187405018771748e+03 + 112080 1.021895570391615e+00 -5.988985007037840e+00 -5.955934037736656e+00 3.719641313409356e+00 4.909425093757726e+00 9.082268945251126e+03 + 112100 9.726628506030949e-01 -5.868137315120887e+00 -6.050162744633055e+00 4.376340363230061e+00 4.331122178627012e+00 9.371641703939247e+03 + 112120 1.039983761963153e+00 -5.916553935808989e+00 -6.008074272884080e+00 4.221542218271228e+00 4.696018280059661e+00 9.241797779237866e+03 + 112140 1.093970690365973e+00 -5.950351419042191e+00 -5.992127252901698e+00 4.015033529771657e+00 4.775150226960967e+00 9.192876585663680e+03 + 112160 1.117233274510646e+00 -5.951918136847778e+00 -6.003026156084546e+00 3.927002023609317e+00 4.633531868211378e+00 9.226329642928677e+03 + 112180 1.142221890582489e+00 -5.968804373149219e+00 -6.031058203100200e+00 3.840362138154210e+00 4.482891012826629e+00 9.312638135246281e+03 + 112200 1.012323696306997e+00 -5.771619776094927e+00 -6.017996031419013e+00 4.924452856219661e+00 4.509722271546467e+00 9.272367211949888e+03 + 112220 1.114858153951045e+00 -5.931804759785768e+00 -5.939876290796046e+00 4.096092062384701e+00 5.049744082258299e+00 9.033369823765770e+03 + 112240 1.063264101129018e+00 -5.868562712121157e+00 -5.954957656903862e+00 4.382275459309321e+00 4.886182316792529e+00 9.079272850531905e+03 + 112260 1.072255703587938e+00 -5.902364608679283e+00 -6.016869291164967e+00 4.225234248692203e+00 4.567730642317057e+00 9.268867501101500e+03 + 112280 1.032427631215861e+00 -5.873933553140099e+00 -6.030548519736200e+00 4.342850609960531e+00 4.443543235677963e+00 9.311061316137582e+03 + 112300 1.056795404824008e+00 -5.947507293202518e+00 -6.013471156274208e+00 4.023193881658536e+00 4.644419172026075e+00 9.258443153267175e+03 + 112320 1.047209040150620e+00 -5.975751400031753e+00 -6.016668285107681e+00 3.827873675055265e+00 4.592922589081788e+00 9.268288653349489e+03 + 112340 1.001260321361975e+00 -5.947078366924009e+00 -6.044742148893015e+00 3.945870648550144e+00 4.385070099062698e+00 9.354903095537165e+03 + 112360 9.544192412749180e-01 -5.911314017682950e+00 -6.017588959512472e+00 4.153382069776783e+00 4.543134907797570e+00 9.271121278065202e+03 + 112380 1.032777884651742e+00 -6.051378469205162e+00 -5.978393410059456e+00 3.449191470216566e+00 4.868282974232612e+00 9.150836207474431e+03 + 112400 9.738356801680723e-01 -5.983476856030845e+00 -6.025204058708162e+00 3.760786340528559e+00 4.521182285491656e+00 9.294577660645440e+03 + 112420 9.028365843422189e-01 -5.891615774347817e+00 -6.051507190046572e+00 4.264103848047638e+00 4.345982595988771e+00 9.375840159828111e+03 + 112440 1.022262327714030e+00 -6.078301438381282e+00 -6.022091961421074e+00 3.254489506418229e+00 4.577253021512193e+00 9.285024106604636e+03 + 112460 9.570519654278702e-01 -5.991525568739491e+00 -6.007907464694703e+00 3.732394653439310e+00 4.638327271774273e+00 9.241351728217667e+03 + 112480 9.728793577360111e-01 -6.021165919431777e+00 -5.964217160941988e+00 3.619697788273157e+00 4.946706372313415e+00 9.107500697588519e+03 + 112500 9.472610752983668e-01 -5.983055858056479e+00 -6.011871375680914e+00 3.766298959726162e+00 4.600835798339717e+00 9.253515253510195e+03 + 112520 9.683680695839346e-01 -6.012078326354022e+00 -6.031057450717303e+00 3.608581020153336e+00 4.499599951049372e+00 9.312643181611564e+03 + 112540 9.286410803126433e-01 -5.949956065693167e+00 -6.016884042632134e+00 3.981028016207337e+00 4.596717215552833e+00 9.268906746195840e+03 + 112560 9.880114599969321e-01 -6.031045229374580e+00 -6.004247482297878e+00 3.529544332998773e+00 4.683421143651152e+00 9.230071120742916e+03 + 112580 1.033566902913825e+00 -6.088407727935910e+00 -5.956830823595413e+00 3.241836669694032e+00 4.997371615877306e+00 9.085000863855206e+03 + 112600 1.026499153719529e+00 -6.062625777883843e+00 -5.989264561641019e+00 3.381429494027660e+00 4.802680950305485e+00 9.184135402990934e+03 + 112620 9.787822126333490e-01 -5.972108597185451e+00 -6.033555700576012e+00 3.828184700893133e+00 4.475345924316010e+00 9.320368607133381e+03 + 112640 1.010365009387511e+00 -5.995069760483652e+00 -6.002490933088361e+00 3.706583774803454e+00 4.663970253284464e+00 9.224714699784223e+03 + 112660 1.035760779966444e+00 -6.002250379137616e+00 -5.979033865765347e+00 3.726646934808283e+00 4.859959747335681e+00 9.152797152690471e+03 + 112680 1.060715195483406e+00 -6.003945310973230e+00 -6.008690448792052e+00 3.634917633965542e+00 4.607670318302161e+00 9.243754089977700e+03 + 112700 9.841917910101614e-01 -5.852184329555497e+00 -6.033786659675354e+00 4.467308339587380e+00 4.424519657169401e+00 9.321051771123113e+03 + 112720 1.104639564783796e+00 -5.991269594685749e+00 -6.018015873874688e+00 3.735273613528165e+00 4.581692339451948e+00 9.272435752443089e+03 + 112740 1.039991506425092e+00 -5.863744358161580e+00 -6.063085872271873e+00 4.419863744563146e+00 4.275213922542231e+00 9.411699943425419e+03 + 112760 1.096825801494530e+00 -5.923129536680826e+00 -6.050920629883802e+00 4.138623525554966e+00 4.404827292775722e+00 9.374012398218158e+03 + 112780 1.101991631569371e+00 -5.917355392845526e+00 -6.033706716956830e+00 4.157702282965710e+00 4.489594974609392e+00 9.320784516298112e+03 + 112800 1.073605973412022e+00 -5.874368400455048e+00 -6.009999607655142e+00 4.302588398894682e+00 4.523773018290265e+00 9.247754377911269e+03 + 112820 1.021494132956437e+00 -5.805427312556081e+00 -5.992989607764832e+00 4.766420209984341e+00 4.689408485724316e+00 9.195518420894983e+03 + 112840 1.086270501776049e+00 -5.918723823934997e+00 -5.970107864302296e+00 4.144759026316798e+00 4.849703914873215e+00 9.125507338767253e+03 + 112860 1.102694435851142e+00 -5.972893292202882e+00 -6.017925467336310e+00 3.764997980216253e+00 4.506416261893532e+00 9.272143254730523e+03 + 112880 1.036232309405085e+00 -5.922596337429281e+00 -6.021375478045726e+00 4.145438918103546e+00 4.578233806661314e+00 9.282776690737612e+03 + 112900 1.023503582434142e+00 -5.966807125155170e+00 -6.034573335786801e+00 3.904974035438164e+00 4.515849967204138e+00 9.323483931288612e+03 + 112920 1.011186990960679e+00 -6.011044671223917e+00 -6.006752911633685e+00 3.625282771954137e+00 4.649926719668900e+00 9.237806395953048e+03 + 112940 1.001289053044683e+00 -6.037731418891625e+00 -6.000495492667651e+00 3.462255195442999e+00 4.676069646062018e+00 9.218594676722127e+03 + 112960 1.008775356213988e+00 -6.071726304753554e+00 -5.990345243550217e+00 3.296260999429061e+00 4.763563646537142e+00 9.187442953608745e+03 + 112980 9.526629348352041e-01 -5.998557720422706e+00 -5.997967681879594e+00 3.691455655024016e+00 4.694843747646738e+00 9.210811211060080e+03 + 113000 9.554828700084781e-01 -6.007309760084733e+00 -5.991770217609819e+00 3.675483466219661e+00 4.764713923847049e+00 9.191816672704685e+03 + 113020 9.797326210612155e-01 -6.043784957044888e+00 -5.995665141972500e+00 3.480835332444785e+00 4.757146757107755e+00 9.203761768012422e+03 + 113040 9.520094179280255e-01 -6.000775349012436e+00 -6.056143694416001e+00 3.667632472893179e+00 4.349698865362146e+00 9.390212029247985e+03 + 113060 1.030924653086844e+00 -6.114912249686742e+00 -5.982633037174955e+00 3.084816800435485e+00 4.844384508820145e+00 9.163829477925674e+03 + 113080 9.092384190293057e-01 -5.929686176614419e+00 -6.001626336376643e+00 4.077125215643143e+00 4.664033685584713e+00 9.222028381919681e+03 + 113100 9.662443448407803e-01 -6.006029271160831e+00 -6.004899222190875e+00 3.604461287413153e+00 4.610950203473147e+00 9.232077653661605e+03 + 113120 1.033164169265315e+00 -6.091095419794104e+00 -5.977082070017034e+00 3.211030038660478e+00 4.865712336589267e+00 9.146835676731971e+03 + 113140 9.131351899904186e-01 -5.897298950860867e+00 -6.013893381773849e+00 4.237310525608184e+00 4.567807260375967e+00 9.259751920694109e+03 + 113160 1.013375361729576e+00 -6.029093799889345e+00 -6.004926951447247e+00 3.527146795917496e+00 4.665916579479733e+00 9.232170232674449e+03 + 113180 1.030704204832548e+00 -6.035286287984006e+00 -5.972676845093771e+00 3.506526422305494e+00 4.866039532161200e+00 9.133350279996721e+03 + 113200 9.875932130617632e-01 -5.949753366996313e+00 -5.970101753158358e+00 3.964169563726837e+00 4.847325981481792e+00 9.125454959479053e+03 + 113220 9.510169905781202e-01 -5.871570792428457e+00 -6.019402628725497e+00 4.366759279132028e+00 4.517885998211693e+00 9.276704909503804e+03 + 113240 1.077476891150832e+00 -6.034883298138407e+00 -5.982987886882397e+00 3.525048183102412e+00 4.823039665323355e+00 9.164910266137058e+03 + 113260 1.027897530824558e+00 -5.940250023781255e+00 -5.993106859960003e+00 4.006870058391183e+00 4.703357925483852e+00 9.195922781189589e+03 + 113280 1.076262370081546e+00 -5.994895708950537e+00 -6.000897749981492e+00 3.676421212907137e+00 4.641956564494544e+00 9.219822326479885e+03 + 113300 9.701373657215846e-01 -5.825652122738456e+00 -6.028793601422917e+00 4.650481159842307e+00 4.484011353193900e+00 9.305624317524333e+03 + 113320 1.054669056995143e+00 -5.942618294056290e+00 -6.020552121898811e+00 3.957082457596592e+00 4.509574357903950e+00 9.280224627942498e+03 + 113340 1.016782563212612e+00 -5.882035593971959e+00 -6.000343693030219e+00 4.302713270510464e+00 4.623369857598774e+00 9.218085605935799e+03 + 113360 1.078824021448599e+00 -5.974874840094940e+00 -5.990771558958288e+00 3.855144651496955e+00 4.763863231774318e+00 9.188727764965499e+03 + 113380 1.033719208847871e+00 -5.914977638474406e+00 -6.052290668171545e+00 4.110204723353224e+00 4.321732057709582e+00 9.378265747337004e+03 + 113400 1.045094516395950e+00 -5.950313142057055e+00 -6.009480354958228e+00 3.964492944592078e+00 4.624745652016933e+00 9.246173678746440e+03 + 113420 1.077459782396304e+00 -6.031124883337768e+00 -6.016096399977622e+00 3.504560422417837e+00 4.590856299522082e+00 9.266517289748233e+03 + 113440 1.014573734781699e+00 -5.986643936120537e+00 -5.988716017665541e+00 3.791124906424821e+00 4.779226693539822e+00 9.182449793893447e+03 + 113460 9.699543594450900e-01 -5.972677358844041e+00 -5.967225303644832e+00 3.875052409097890e+00 4.906358953754564e+00 9.116702899989559e+03 + 113480 1.007995918393916e+00 -6.074510348345209e+00 -5.977228052368504e+00 3.321417898756263e+00 4.880027896641145e+00 9.147272906595867e+03 + 113500 9.465936560258704e-01 -6.018046368565143e+00 -5.999683225642820e+00 3.587715546625480e+00 4.693159554972642e+00 9.216072989680511e+03 + 113520 9.765161548561365e-01 -6.083408604135547e+00 -5.969022009393258e+00 3.222409194546709e+00 4.879234722825258e+00 9.122191299702190e+03 + 113540 9.550632445626812e-01 -6.062469186559603e+00 -5.971897173359440e+00 3.383392880745893e+00 4.903471396514970e+00 9.130974209036232e+03 + 113560 9.580071778564068e-01 -6.071084510136440e+00 -5.971197661314061e+00 3.357357348336250e+00 4.930923091714245e+00 9.128843541282820e+03 + 113580 9.585002691973682e-01 -6.070862372648827e+00 -5.968978229651892e+00 3.338004867571080e+00 4.923039383179654e+00 9.122047974077705e+03 + 113600 9.428661625332835e-01 -6.040425483797128e+00 -5.983053672782269e+00 3.516068546360648e+00 4.845506363467027e+00 9.165108545142863e+03 + 113620 9.733918922064689e-01 -6.072677020419745e+00 -5.992175778771664e+00 3.357858280309440e+00 4.820108867379604e+00 9.193033241767318e+03 + 113640 9.732593649783844e-01 -6.057148647421263e+00 -5.987460685311481e+00 3.366971130950846e+00 4.767130193562497e+00 9.178596713166997e+03 + 113660 9.593182499716776e-01 -6.016261732715918e+00 -5.968824471763391e+00 3.602473225265421e+00 4.874865318547243e+00 9.121614053576681e+03 + 113680 9.565719129233565e-01 -5.986905981890414e+00 -5.997695104696803e+00 3.757040475575460e+00 4.695087662809813e+00 9.209963229043891e+03 + 113700 9.974237650737166e-01 -6.020806454879279e+00 -5.985036018362759e+00 3.576888931044472e+00 4.782288312979492e+00 9.171185938372961e+03 + 113720 1.032111779857968e+00 -6.045832960442330e+00 -6.007841131455322e+00 3.374538036229640e+00 4.592692997489573e+00 9.241135564216249e+03 + 113740 9.370960152366516e-01 -5.881807388137046e+00 -6.003767009137555e+00 4.318257517615905e+00 4.617946500640626e+00 9.228636759513505e+03 + 113760 9.987285852893487e-01 -5.952030189254684e+00 -5.991043032303238e+00 3.959702631462265e+00 4.735684849459516e+00 9.189588225068594e+03 + 113780 1.034851077895147e+00 -5.987793492752577e+00 -6.018466162408034e+00 3.759168756987673e+00 4.583041541245755e+00 9.273853988620740e+03 + 113800 1.031402255129489e+00 -5.970781351669201e+00 -6.027566879450599e+00 3.812824822440794e+00 4.486753534387985e+00 9.301888227314988e+03 + 113820 9.912195830760997e-01 -5.907685476749060e+00 -5.990690118964459e+00 4.215173462619264e+00 4.738547962091570e+00 9.188481314124841e+03 + 113840 9.895887901706492e-01 -5.903434694432494e+00 -6.005479618149522e+00 4.260868319500625e+00 4.674910576116546e+00 9.233875152328470e+03 + 113860 1.048966657230630e+00 -5.990749914934770e+00 -6.032066354551847e+00 3.796463011992338e+00 4.559217622012713e+00 9.315745028844925e+03 + 113880 1.062813217444219e+00 -6.016250267686625e+00 -6.013531085179030e+00 3.624901237923049e+00 4.640515204673799e+00 9.258642322234353e+03 + 113900 1.064297881995743e+00 -6.027402136134818e+00 -5.994982802194350e+00 3.564899433865659e+00 4.751056266227535e+00 9.201644420571547e+03 + 113920 9.761201307631696e-01 -5.907371845776227e+00 -5.986126829497518e+00 4.212961810534922e+00 4.760738506712925e+00 9.174492515017480e+03 + 113940 1.039544062081106e+00 -6.009140901023782e+00 -5.942429233748474e+00 3.637408045404457e+00 5.020476762496428e+00 9.041143964566912e+03 + 113960 9.484686145912248e-01 -5.878978124037797e+00 -5.991558331540006e+00 4.336901459456993e+00 4.690448486248504e+00 9.191104857731812e+03 + 113980 1.029676243336075e+00 -6.002540007402444e+00 -5.988748661124262e+00 3.698245865745814e+00 4.777437910279071e+00 9.182548691917405e+03 + 114000 1.066307883086707e+00 -6.061825222391717e+00 -5.998154762467087e+00 3.429188673200099e+00 4.794794307059157e+00 9.211384432175719e+03 + 114020 1.012170639523084e+00 -5.987630761835677e+00 -6.006718790502893e+00 3.785567560416475e+00 4.675961145946433e+00 9.237670007925622e+03 + 114040 1.012237078285955e+00 -5.994303093949665e+00 -5.983109754365438e+00 3.746055180284045e+00 4.810329068340382e+00 9.165258430533475e+03 + 114060 9.350144896449656e-01 -5.886060327460289e+00 -5.977441102339642e+00 4.278759599296638e+00 4.754037048810178e+00 9.147911617177664e+03 + 114080 9.719676908691326e-01 -5.944628647863579e+00 -6.019507937752971e+00 3.979791900302450e+00 4.549823430224899e+00 9.277008756236615e+03 + 114100 1.013583477229469e+00 -6.008344761341019e+00 -6.048638400126632e+00 3.613311324749450e+00 4.381939015422009e+00 9.366962074901199e+03 + 114120 9.901444731932068e-01 -5.977666291252664e+00 -6.016113971587893e+00 3.832718189986429e+00 4.611945659742240e+00 9.266589798265566e+03 + 114140 1.032235740658200e+00 -6.046020510097127e+00 -5.991301816891938e+00 3.428112534107370e+00 4.742315738181970e+00 9.190362936041553e+03 + 114160 9.948893748952021e-01 -5.995203567197650e+00 -6.001309732131205e+00 3.680069525422533e+00 4.645006981448095e+00 9.221067897810097e+03 + 114180 1.019823091815238e+00 -6.037055497355435e+00 -6.003675659067570e+00 3.493200989618420e+00 4.684873186580623e+00 9.228354277821763e+03 + 114200 9.927523472731969e-01 -6.001886555768004e+00 -6.000871301956449e+00 3.699601495269073e+00 4.705431239765042e+00 9.219714799005984e+03 + 114220 9.881518014720707e-01 -5.999105537834663e+00 -6.014353490289971e+00 3.755373017441222e+00 4.667816914829828e+00 9.261144848628839e+03 + 114240 1.016040647686079e+00 -6.046078688703781e+00 -6.008284648340958e+00 3.484530939291102e+00 4.701550167663281e+00 9.242502889609605e+03 + 114260 9.751781568006535e-01 -5.993839546920234e+00 -6.034718446173386e+00 3.723275215074354e+00 4.488542249573539e+00 9.323945008990200e+03 + 114280 9.876600887134892e-01 -6.024058286045167e+00 -5.977606912714770e+00 3.591292811880153e+00 4.858023785870085e+00 9.148434469057462e+03 + 114300 9.279943874681172e-01 -5.949338161157915e+00 -6.033965396574587e+00 3.928322246600904e+00 4.442379564816020e+00 9.321594125027259e+03 + 114320 9.734212108341603e-01 -6.035755212052912e+00 -6.006358676607336e+00 3.479917681203690e+00 4.648717136831348e+00 9.236592121378399e+03 + 114340 9.361629312182546e-01 -6.005357420508593e+00 -6.016701253394597e+00 3.689740859460033e+00 4.624602815576132e+00 9.268381435668309e+03 + 114360 9.984797514065338e-01 -6.127002908136752e+00 -5.967393734568075e+00 3.021427430113635e+00 4.937928004184760e+00 9.117228372103360e+03 + 114380 9.241082874120187e-01 -6.041427376074948e+00 -6.001426924993354e+00 3.478574403426562e+00 4.708263183586870e+00 9.221445869778096e+03 + 114400 9.166734349945528e-01 -6.050490302696779e+00 -6.034686669706339e+00 3.425736104776600e+00 4.516483011012005e+00 9.323852760134369e+03 + 114420 9.540753625386068e-01 -6.121269248603554e+00 -6.024926797350015e+00 3.038316389226277e+00 4.591529653270244e+00 9.293748780272050e+03 + 114440 9.275624211784377e-01 -6.092232810000117e+00 -6.026063710235309e+00 3.190692915351534e+00 4.570646125836160e+00 9.297254529045198e+03 + 114460 9.089872402155654e-01 -6.069989882224721e+00 -6.026233653209098e+00 3.300682754539985e+00 4.551937792802253e+00 9.297745867675678e+03 + 114480 8.986883009650131e-01 -6.053128694530239e+00 -5.976536028998446e+00 3.438382181513641e+00 4.878189119673883e+00 9.145157543924655e+03 + 114500 9.208940798698924e-01 -6.072316822626412e+00 -5.973278380182093e+00 3.327350133968140e+00 4.896044196632853e+00 9.135197785179555e+03 + 114520 8.966062093835646e-01 -6.011746921298261e+00 -6.014028565573266e+00 3.627664831660042e+00 4.614563277149652e+00 9.260167896828483e+03 + 114540 9.608892047363230e-01 -6.074252966389166e+00 -5.964157827691939e+00 3.280149357758829e+00 4.912332681325958e+00 9.107351316924469e+03 + 114560 9.502408319328034e-01 -6.019586317047469e+00 -5.981799294730994e+00 3.571566052818150e+00 4.788544982482157e+00 9.161271532158804e+03 + 114580 9.455923257909551e-01 -5.972871550717184e+00 -6.001773832772233e+00 3.784723636583835e+00 4.618762260410051e+00 9.222476638644670e+03 + 114600 9.563933309029268e-01 -5.954140615221743e+00 -5.963092404350133e+00 3.935051155489298e+00 4.883648597029187e+00 9.104071673938362e+03 + 114620 1.017672937587490e+00 -6.013948626769524e+00 -5.946937230028477e+00 3.593030502860635e+00 4.977820312927859e+00 9.054869654368993e+03 + 114640 1.020235026499452e+00 -5.991650175413183e+00 -5.968294192919729e+00 3.733348544285944e+00 4.867462210089965e+00 9.119963191635075e+03 + 114660 1.053808936372456e+00 -6.022246529393220e+00 -5.983637615854693e+00 3.545676205649335e+00 4.767374561897613e+00 9.166877814024618e+03 + 114680 1.015713838451005e+00 -5.953462432481670e+00 -6.014695285795971e+00 3.876994835515561e+00 4.525386316031418e+00 9.262214763477059e+03 + 114700 1.030059648388689e+00 -5.968048713459213e+00 -5.973874180755219e+00 3.857110172618556e+00 4.823659437916739e+00 9.137015870492929e+03 + 114720 9.793141107051818e-01 -5.887369780889277e+00 -5.985430306145205e+00 4.313098656409311e+00 4.750019945572535e+00 9.172343807741343e+03 + 114740 1.108499395985057e+00 -6.075114843697733e+00 -6.000093925244825e+00 3.241162047854659e+00 4.671943771060866e+00 9.217346836853631e+03 + 114760 1.016146324555306e+00 -5.941145857503872e+00 -5.996700443007210e+00 4.028234058808827e+00 4.709231031804336e+00 9.206909578845509e+03 + 114780 9.826309191595709e-01 -5.896904889810783e+00 -5.986800985240579e+00 4.250689870221032e+00 4.734492578887337e+00 9.176543234676079e+03 + 114800 1.048980383213334e+00 -6.002343103405348e+00 -5.971510380634568e+00 3.656315587054283e+00 4.833361852552533e+00 9.129787268068190e+03 + 114820 1.038078191314808e+00 -5.995695368089716e+00 -5.973904551433509e+00 3.755913319357080e+00 4.881039560715004e+00 9.137103612939394e+03 + 114840 9.527878269645629e-01 -5.883972673083365e+00 -6.061480518915112e+00 4.304650666189980e+00 4.285373146173723e+00 9.406732078788484e+03 + 114860 9.960626330410667e-01 -5.967178513457945e+00 -6.011921673176140e+00 3.896209909328360e+00 4.639287762244897e+00 9.253670673006614e+03 + 114880 1.081120659509301e+00 -6.117591968362975e+00 -6.005213271947661e+00 3.032217089614806e+00 4.677512954978603e+00 9.233065521601533e+03 + 114900 9.787758914184822e-01 -5.997655224115322e+00 -5.980676598491577e+00 3.691303212385530e+00 4.788797108150893e+00 9.157836634988545e+03 + 114920 9.283767101323317e-01 -5.955261289235311e+00 -6.016348124292989e+00 3.918761611169657e+00 4.567991551111302e+00 9.267295803962159e+03 + 114940 1.026345801929841e+00 -6.135135516809947e+00 -5.972802142744204e+00 2.946834584639856e+00 4.878977939533806e+00 9.133763103588177e+03 + 114960 9.400767821929477e-01 -6.040557753068327e+00 -5.997109876116139e+00 3.497528286514969e+00 4.747012719511666e+00 9.208174389404181e+03 + 114980 9.885010925280846e-01 -6.141749569187684e+00 -5.958227129747263e+00 2.988387556371792e+00 5.042201803644407e+00 9.089263192756645e+03 + 115000 8.834215323562676e-01 -6.006872864851879e+00 -6.005780643701705e+00 3.715614382371887e+00 4.721886085236863e+00 9.234809068378914e+03 + 115020 9.549549783641625e-01 -6.127537038855931e+00 -5.982618982135310e+00 2.994285912555485e+00 4.826427820242092e+00 9.163784564085996e+03 + 115040 8.592618916115573e-01 -5.991862065445921e+00 -5.995848805626343e+00 3.793482348338149e+00 4.770589869276118e+00 9.204302220281879e+03 + 115060 9.320080535905721e-01 -6.095908460763058e+00 -6.001881851657872e+00 3.172232490280393e+00 4.712147830333098e+00 9.222841070180863e+03 + 115080 9.567206984977937e-01 -6.120077684817631e+00 -5.957980262893769e+00 3.085914238070239e+00 5.016702719252031e+00 9.088511216839581e+03 + 115100 9.471872311000249e-01 -6.085016008971603e+00 -5.953698216399283e+00 3.297917516958683e+00 5.051964603271676e+00 9.075461551603878e+03 + 115120 9.482362598984952e-01 -6.052592713485577e+00 -5.992649242470472e+00 3.409724154409125e+00 4.753928841200019e+00 9.194495313695998e+03 + 115140 9.743372325427673e-01 -6.043686264906296e+00 -5.983352708417082e+00 3.469170878217244e+00 4.815615496166003e+00 9.166018229652835e+03 + 115160 9.583947730061112e-01 -5.961692337913502e+00 -6.037234255746737e+00 3.918898432801710e+00 4.485125050529268e+00 9.331685233030992e+03 + 115180 1.064147524816131e+00 -6.071077005043684e+00 -5.996073644946865e+00 3.326504991298957e+00 4.757185891707352e+00 9.205021238707595e+03 + 115200 1.014640459285939e+00 -5.969012410925837e+00 -6.055921823832534e+00 3.858692366973360e+00 4.359645068874919e+00 9.389523599801134e+03 + 115220 1.047107614766458e+00 -6.007391141822769e+00 -6.004867718296127e+00 3.642953627330929e+00 4.657443515719432e+00 9.232012587299621e+03 + 115240 9.857833348907560e-01 -5.912062633728815e+00 -6.039547021018042e+00 4.146567079692435e+00 4.414531999732517e+00 9.338830670771045e+03 + 115260 9.591776272920423e-01 -5.870192902755024e+00 -6.056994734140273e+00 4.363384560334058e+00 4.290739537029980e+00 9.392800240077355e+03 + 115280 1.021707102147088e+00 -5.963514348278387e+00 -6.034667604770119e+00 3.914971939090261e+00 4.506398929383883e+00 9.323760258369812e+03 + 115300 1.037676506747221e+00 -5.992867576270299e+00 -5.984848299384214e+00 3.680310804249008e+00 4.726358733107992e+00 9.170580429817463e+03 + 115320 9.438804585287131e-01 -5.860159340862808e+00 -6.010139820088994e+00 4.457289598588893e+00 4.596078477467983e+00 9.248148779375824e+03 + 115340 1.050431760987665e+00 -6.025257773167056e+00 -5.987941719070170e+00 3.553958695176375e+00 4.768233252441403e+00 9.180054852839552e+03 + 115360 1.008541291486394e+00 -5.971656023748833e+00 -5.987165607302178e+00 3.870278953164454e+00 4.781220524300849e+00 9.177697531446167e+03 + 115380 1.015738559087593e+00 -5.993322767808143e+00 -6.022625843679510e+00 3.713344778081967e+00 4.545081981792244e+00 9.286644337549245e+03 + 115400 1.015246062446513e+00 -6.007329937363013e+00 -5.990639000783538e+00 3.695789259446718e+00 4.791631200200152e+00 9.188314129706625e+03 + 115420 9.841562442887188e-01 -5.976137400752878e+00 -5.984919251867787e+00 3.750829832183318e+00 4.700403084094444e+00 9.170801773195339e+03 + 115440 9.880231411850198e-01 -5.996630605481924e+00 -5.976635420343206e+00 3.673838711002735e+00 4.788654158314150e+00 9.145466849722154e+03 + 115460 9.752524880071806e-01 -5.993058197850645e+00 -6.010190639472415e+00 3.738381426797157e+00 4.640004295768178e+00 9.248351295833612e+03 + 115480 9.436185103465057e-01 -5.962555171852312e+00 -6.016121708828805e+00 3.840893553730930e+00 4.533306209017103e+00 9.266604602444208e+03 + 115500 9.804783019172608e-01 -6.031567085509149e+00 -5.956503363857028e+00 3.491328736146496e+00 4.922356241946362e+00 9.084000041968580e+03 + 115520 9.530795407708276e-01 -6.000702609419029e+00 -5.987602615052773e+00 3.672332783482519e+00 4.747554978351141e+00 9.179019315910158e+03 + 115540 9.540717821534227e-01 -6.010568525848295e+00 -5.965844467687583e+00 3.670920331787683e+00 4.927732794772123e+00 9.112465492530175e+03 + 115560 9.949636579114209e-01 -6.075100980480340e+00 -5.940154363781765e+00 3.325671634574419e+00 5.100555990579073e+00 9.034244913495635e+03 + 115580 9.297839995398247e-01 -5.978027671462576e+00 -6.007196339566519e+00 3.792812273463076e+00 4.625321267373435e+00 9.239142776757682e+03 + 115600 9.639335458411719e-01 -6.023247159630619e+00 -5.984988450917092e+00 3.649683618375769e+00 4.869371044324883e+00 9.171008814161987e+03 + 115620 9.480967712461127e-01 -5.988543217298493e+00 -6.022464986277821e+00 3.708166852017379e+00 4.513382805161293e+00 9.286123919874937e+03 + 115640 1.042438018655239e+00 -6.109874242786559e+00 -5.991821774739281e+00 3.144994398002097e+00 4.822869938089960e+00 9.191960403872252e+03 + 115660 1.018887999443309e+00 -6.050610105719376e+00 -5.967598656566055e+00 3.453854449535156e+00 4.930519036553761e+00 9.117823109267441e+03 + 115680 9.487654957513630e-01 -5.917013053151931e+00 -6.007032329143553e+00 4.164626401546617e+00 4.647721788364783e+00 9.238628725889652e+03 + 115700 1.040901516783207e+00 -6.016174830560059e+00 -6.001227972569668e+00 3.655180409127131e+00 4.741007580726753e+00 9.220814342989204e+03 + 115720 9.606821142364232e-01 -5.855274460834777e+00 -6.044010338293592e+00 4.446254864560195e+00 4.362504249409036e+00 9.352634635265116e+03 + 115740 1.029437107508960e+00 -5.925006379131222e+00 -5.987520424766698e+00 4.146357103235551e+00 4.787391779179353e+00 9.178731503562047e+03 + 115760 1.014149354863711e+00 -5.874227885726721e+00 -6.009785167258727e+00 4.366167358575662e+00 4.587776470597362e+00 9.247045896079777e+03 + 115780 1.017116764201322e+00 -5.856876060510993e+00 -6.007404757166368e+00 4.419007075188560e+00 4.554648004752872e+00 9.239777791416844e+03 + 115800 1.012735111060968e+00 -5.835870580121798e+00 -6.012399074623852e+00 4.535660097907845e+00 4.522006164780817e+00 9.255133692615505e+03 + 115820 1.170518950811654e+00 -6.064140041024768e+00 -5.983058672898705e+00 3.378763620691427e+00 4.844345383772446e+00 9.165096517481221e+03 + 115840 1.034656926129742e+00 -5.864922979611455e+00 -6.070061330043547e+00 4.372211779724497e+00 4.194275626486290e+00 9.433375545928182e+03 + 115860 1.095003936590017e+00 -5.969061918365272e+00 -6.030963749230336e+00 3.865432657867212e+00 4.509982765762647e+00 9.312341018041341e+03 + 115880 1.078070748096137e+00 -5.967023903467777e+00 -6.008720893669721e+00 3.866926565920028e+00 4.627495995592089e+00 9.243827286178506e+03 + 115900 1.011272421882629e+00 -5.894759840516242e+00 -6.044648988686859e+00 4.248145875205964e+00 4.387459191139569e+00 9.354632598468424e+03 + 115920 1.043937370141305e+00 -5.974455494652282e+00 -6.004310164289635e+00 3.873747378903924e+00 4.702317245851049e+00 9.230301892447762e+03 + 115940 1.067011174816118e+00 -6.041320566213418e+00 -5.999701838839933e+00 3.458441320306593e+00 4.697422493362390e+00 9.216142520064024e+03 + 115960 9.643450360660034e-01 -5.917743413688360e+00 -6.029097557743211e+00 4.115985746488250e+00 4.476573019327193e+00 9.306582907655260e+03 + 115980 1.088064829723041e+00 -6.123466501493525e+00 -5.991126345086427e+00 3.034643513922958e+00 4.794561171585528e+00 9.189844968956248e+03 + 116000 1.033387675375136e+00 -6.059786536920257e+00 -5.994549048114811e+00 3.328204709877401e+00 4.702808466067040e+00 9.200341580300283e+03 + 116020 9.785946186880802e-01 -5.989097244366237e+00 -5.976450910693567e+00 3.814164029902732e+00 4.886781234865019e+00 9.144887726618370e+03 + 116040 9.514850458164700e-01 -5.953463954575531e+00 -5.976331008370617e+00 4.000089061374666e+00 4.868782899818141e+00 9.144523579477236e+03 + 116060 1.039764590501407e+00 -6.085239567253772e+00 -5.975966672743402e+00 3.239007489959272e+00 4.866469360163590e+00 9.143415497383236e+03 + 116080 9.960802880312504e-01 -6.020254613423849e+00 -5.982006594211126e+00 3.606220298940502e+00 4.825846344121803e+00 9.161896507628362e+03 + 116100 9.714445294071716e-01 -5.982960629040862e+00 -6.018037095958313e+00 3.764085936746340e+00 4.562671435640628e+00 9.272478633490437e+03 + 116120 1.009492528157944e+00 -6.038352479995139e+00 -5.988820358988263e+00 3.523304505141495e+00 4.807725609033933e+00 9.182742282289497e+03 + 116140 9.676618566306859e-01 -5.973027191594312e+00 -6.006269204677215e+00 3.889496322863025e+00 4.698615539556093e+00 9.236290220950219e+03 + 116160 1.008695896085540e+00 -6.029795834669740e+00 -6.040308472037577e+00 3.492444963619524e+00 4.432079773028031e+00 9.341190307462442e+03 + 116180 9.517834145329869e-01 -5.942363835215330e+00 -6.006813196306891e+00 3.986368747846018e+00 4.616290542951878e+00 9.237989739064065e+03 + 116200 1.017708202102336e+00 -6.036094392343434e+00 -5.980887343483572e+00 3.508817440041750e+00 4.825824857858273e+00 9.158447362315630e+03 + 116220 1.028367491090283e+00 -6.043791639845765e+00 -5.970683941349794e+00 3.479553343285197e+00 4.899349061428843e+00 9.127262665324412e+03 + 116240 1.043722768071879e+00 -6.056331016278384e+00 -6.025564856140670e+00 3.365019678567140e+00 4.541683731125787e+00 9.295703571246560e+03 + 116260 1.012807112838662e+00 -6.003091514198823e+00 -5.978276695835172e+00 3.747321122738541e+00 4.889811649863353e+00 9.150460588867063e+03 + 116280 9.942655052574523e-01 -5.967694490598584e+00 -5.989176997226503e+00 3.834617936570754e+00 4.711262059106088e+00 9.183828177359288e+03 + 116300 1.031924077008616e+00 -6.012643917196432e+00 -5.965322626480939e+00 3.655530726104838e+00 4.927256900339271e+00 9.110875830043617e+03 + 116320 1.008041245142796e+00 -5.961067517537677e+00 -5.986786804728370e+00 3.853502691148699e+00 4.705818564052913e+00 9.176523956134368e+03 + 116340 9.409537124398405e-01 -5.841789678070485e+00 -6.006412624391139e+00 4.538914107145677e+00 4.593623674053873e+00 9.236719549013169e+03 + 116360 1.072476661301755e+00 -6.010719768889916e+00 -5.988281293954523e+00 3.605005539921596e+00 4.733850735343401e+00 9.181072713690097e+03 + 116380 1.044022024029085e+00 -5.940270506448853e+00 -6.041101195005786e+00 4.003063979782132e+00 4.424078562589602e+00 9.343629202915774e+03 + 116400 1.049265217517751e+00 -5.921917352007418e+00 -6.039049243625064e+00 4.132116731780901e+00 4.459527284010733e+00 9.337304196021254e+03 + 116420 1.073192888191340e+00 -5.936214248138818e+00 -6.003412514717658e+00 4.038918661175243e+00 4.653055815581404e+00 9.227510205491260e+03 + 116440 1.019625005980592e+00 -5.839386146790162e+00 -6.006789052219171e+00 4.556159924264040e+00 4.594906535774784e+00 9.237890506867518e+03 + 116460 1.103386191196567e+00 -5.950861143794795e+00 -5.982606380164641e+00 3.919127152267765e+00 4.736841092472662e+00 9.163716221106220e+03 + 116480 1.072060002622780e+00 -5.899754782717357e+00 -6.017077005636457e+00 4.188389815437967e+00 4.514707455881173e+00 9.269524702456865e+03 + 116500 1.045461037023100e+00 -5.865693579045712e+00 -5.997981784582144e+00 4.362778816712489e+00 4.603159468988648e+00 9.210850823800354e+03 + 116520 1.053469254254188e+00 -5.892053156929113e+00 -6.043468726457377e+00 4.240671971794660e+00 4.371220340079712e+00 9.350942831996854e+03 + 116540 1.053728489177857e+00 -5.922057817436824e+00 -6.034457593784229e+00 4.012197383312949e+00 4.366780473716976e+00 9.323142037918074e+03 + 116560 1.032456421984583e+00 -5.931264470763884e+00 -5.994003877829137e+00 4.113892781999703e+00 4.753633397739157e+00 9.198637555699508e+03 + 116580 1.039541768468787e+00 -5.988975660631413e+00 -6.001078883795102e+00 3.730651353645138e+00 4.661152773271503e+00 9.220374363680794e+03 + 116600 9.873156677098063e-01 -5.960662256739040e+00 -6.025647405518265e+00 3.958257733925044e+00 4.585102953215459e+00 9.295949957579354e+03 + 116620 9.657077365528421e-01 -5.970051732053412e+00 -6.022912402982556e+00 3.822717793143451e+00 4.519183640505923e+00 9.287532836591818e+03 + 116640 9.933835587044351e-01 -6.040054547296645e+00 -5.956861346036595e+00 3.470432025287518e+00 4.948140261029015e+00 9.085096767830335e+03 + 116660 9.761389564745441e-01 -6.031789821300817e+00 -5.964131132956225e+00 3.526495909376592e+00 4.915002567999422e+00 9.107262551670538e+03 + 116680 9.572114461779270e-01 -6.012079808945248e+00 -5.975894482414008e+00 3.645067506182837e+00 4.852849250786399e+00 9.143201584551931e+03 + 116700 9.944324333378241e-01 -6.070948890846939e+00 -5.968703456808879e+00 3.277534693158460e+00 4.864643797834782e+00 9.121230306062438e+03 + 116720 9.995939724219163e-01 -6.079566992873889e+00 -5.975785148917851e+00 3.254294732511103e+00 4.850226140695121e+00 9.142862943271792e+03 + 116740 8.897255409531052e-01 -5.913516551247483e+00 -5.992532654803013e+00 4.172935632087674e+00 4.719212937769313e+00 9.194131787429304e+03 + 116760 9.972398235502927e-01 -6.066703627336899e+00 -5.967969125921997e+00 3.320589703803895e+00 4.887538490042978e+00 9.118976419451099e+03 + 116780 9.926142643944144e-01 -6.048877030190331e+00 -5.949253770330269e+00 3.473045286096995e+00 5.045097460863105e+00 9.061892486319231e+03 + 116800 9.810225745183545e-01 -6.015669608224197e+00 -5.938028205725429e+00 3.652496752053394e+00 5.098325700169529e+00 9.027737930149335e+03 + 116820 9.987788759341455e-01 -6.020928360764763e+00 -5.951962282530255e+00 3.575056235103392e+00 4.971070128792050e+00 9.070123967211910e+03 + 116840 1.017132390619726e+00 -6.022944509761514e+00 -5.980529269197053e+00 3.579493423145672e+00 4.823048298204074e+00 9.157389247902756e+03 + 116860 1.019093091182523e+00 -6.000061576498825e+00 -6.017640683168911e+00 3.725501839385647e+00 4.624559888528049e+00 9.271290929026731e+03 + 116880 1.040255247646033e+00 -6.009315323031635e+00 -5.992611256473393e+00 3.634449041917962e+00 4.730366377041334e+00 9.194392827096890e+03 + 116900 9.966962228056524e-01 -5.923598459634197e+00 -6.027835830085975e+00 4.129273227301198e+00 4.530726115486141e+00 9.302692716551694e+03 + 116920 1.048492985579146e+00 -5.981457433527139e+00 -6.026763010649043e+00 3.759413446389986e+00 4.499261811540610e+00 9.299406260659001e+03 + 116940 1.060771373283035e+00 -5.984673722303466e+00 -6.027610086071554e+00 3.797513063021247e+00 4.550965817884061e+00 9.302006012155904e+03 + 116960 1.046453271770854e+00 -5.952496011435958e+00 -6.031370198622566e+00 3.922561525182890e+00 4.469653736616363e+00 9.313612025122464e+03 + 116980 9.437828899778862e-01 -5.794223206093804e+00 -6.081873845677235e+00 4.758476319167107e+00 4.106741832886434e+00 9.470076965038646e+03 + 117000 1.064323711925915e+00 -5.971468638942650e+00 -6.006503079820772e+00 3.886332647672225e+00 4.685159466587844e+00 9.237018870591975e+03 + 117020 1.048440641917193e+00 -5.952869544003237e+00 -5.963512550723605e+00 3.992544186514411e+00 4.931430394926092e+00 9.105363386071334e+03 + 117040 1.037307114113973e+00 -5.950139792788513e+00 -5.961962114944413e+00 4.002137849545965e+00 4.934252246228346e+00 9.100626497206735e+03 + 117060 1.075589953794093e+00 -6.031835480687388e+00 -5.975442931186504e+00 3.514171837915462e+00 4.837986583868368e+00 9.141781909330641e+03 + 117080 1.032723977845200e+00 -6.010302590798491e+00 -5.976475099132177e+00 3.639766542094327e+00 4.834009234029722e+00 9.144958778617451e+03 + 117100 1.034516294208371e+00 -6.064843640002308e+00 -5.951161771162434e+00 3.333325957024317e+00 4.986104840115218e+00 9.067734814175739e+03 + 117120 9.389449826201208e-01 -5.970916782393086e+00 -5.950240400431293e+00 3.846638358098454e+00 4.965365342982836e+00 9.064913765668685e+03 + 117140 9.252591261914351e-01 -5.982741604506430e+00 -6.000075621963742e+00 3.798946936802576e+00 4.699412326132157e+00 9.217269213525144e+03 + 117160 9.783289335963294e-01 -6.087680099740122e+00 -6.035780094834145e+00 3.236166318026546e+00 4.534184177696467e+00 9.327230626498222e+03 + 117180 1.006024876656017e+00 -6.149647124956381e+00 -5.989587252934861e+00 2.910120561063373e+00 4.829209115396090e+00 9.185130484999625e+03 + 117200 9.510072191629886e-01 -6.083551184042386e+00 -5.968680047924352e+00 3.286142423982519e+00 4.945750263823132e+00 9.121165927475135e+03 + 117220 9.231876776640099e-01 -6.048800666127390e+00 -5.992309863223957e+00 3.432285947302958e+00 4.756664879497967e+00 9.193455877459695e+03 + 117240 9.306826347135327e-01 -6.059353123097426e+00 -5.963016724789786e+00 3.399058673484963e+00 4.952237180576891e+00 9.103843181156324e+03 + 117260 9.317587411377446e-01 -6.051682800861915e+00 -6.002380698259870e+00 3.392130099304423e+00 4.675230401921088e+00 9.224357902873744e+03 + 117280 9.716585658561268e-01 -6.093542693728925e+00 -6.005205099713335e+00 3.194746344887100e+00 4.701994479923110e+00 9.233043402584408e+03 + 117300 9.386762536310346e-01 -6.022973055408730e+00 -6.018619286218368e+00 3.541843331951211e+00 4.566843348385877e+00 9.274287318385477e+03 + 117320 9.452315975015501e-01 -6.006239178941293e+00 -6.020770465533737e+00 3.685746936664436e+00 4.602306040341293e+00 9.280901784527985e+03 + 117340 1.024442064970245e+00 -6.091657846651398e+00 -6.017060202034472e+00 3.159823407967154e+00 4.588174627305739e+00 9.269513655303006e+03 + 117360 1.016964144511234e+00 -6.047732546082608e+00 -6.004847528206733e+00 3.415386057379463e+00 4.661638466457806e+00 9.231967363334776e+03 + 117380 9.398945371167075e-01 -5.904617860472987e+00 -6.073826141337795e+00 4.174099117258984e+00 4.202478983636420e+00 9.445074916063286e+03 + 117400 1.016754500209377e+00 -5.994719983483062e+00 -5.997076731501375e+00 3.744706726765082e+00 4.731173914938353e+00 9.208086269475451e+03 + 117420 1.018526404776933e+00 -5.978651156659331e+00 -5.972969655283704e+00 3.854130344721075e+00 4.886754404829420e+00 9.134212261129929e+03 + 117440 9.777422815375661e-01 -5.901617076967483e+00 -5.977013528594640e+00 4.234629738442059e+00 4.801691645635746e+00 9.146590919615559e+03 + 117460 1.062373462573286e+00 -6.011946939451743e+00 -5.984909226120572e+00 3.671922619137598e+00 4.827177353157796e+00 9.170748572651444e+03 + 117480 1.028045525452645e+00 -5.952607979437065e+00 -6.036181860466220e+00 3.937572714511551e+00 4.457678556625855e+00 9.328477696994143e+03 + 117500 1.046946236957465e+00 -5.978830262183782e+00 -6.007608523747901e+00 3.774524351042687e+00 4.609275119719928e+00 9.240433098433372e+03 + 117520 1.081616552028150e+00 -6.033559666345199e+00 -5.988393843304515e+00 3.504501441680991e+00 4.763850586969125e+00 9.181450749771073e+03 + 117540 1.023708216985228e+00 -5.954455911899202e+00 -6.008638354901791e+00 3.962900514502889e+00 4.651776542076063e+00 9.243580287689605e+03 + 117560 9.817004510367817e-01 -5.900033705991992e+00 -6.022835605630370e+00 4.223762434397046e+00 4.518614923140926e+00 9.287276762095184e+03 + 117580 1.030530025756691e+00 -5.982368292555132e+00 -6.024442365794817e+00 3.793726953011785e+00 4.552131113527722e+00 9.292225608177207e+03 + 117600 1.021521196859552e+00 -5.980761381499108e+00 -5.953884259549032e+00 3.795842913070880e+00 4.950175506529400e+00 9.076021143810143e+03 + 117620 1.008182969678753e+00 -5.970735068951048e+00 -6.033773024222120e+00 3.820683848396321e+00 4.458710154137771e+00 9.320990385984995e+03 + 117640 1.023934992188604e+00 -6.004661560747802e+00 -6.045549848029722e+00 3.632697947143834e+00 4.397911074129039e+00 9.357415417429695e+03 + 117660 9.906564477966516e-01 -5.967191575835892e+00 -6.025929667172853e+00 3.846294334557137e+00 4.509011124410054e+00 9.296823636274286e+03 + 117680 1.016313157343738e+00 -6.014422600071851e+00 -5.998861282768441e+00 3.659292646319325e+00 4.748648138381570e+00 9.213545904880622e+03 + 117700 1.004825514032385e+00 -6.005360586164500e+00 -6.017813307054229e+00 3.664274783253284e+00 4.592769332852125e+00 9.271847414452574e+03 + 117720 9.848351487743031e-01 -5.984369224012574e+00 -6.015102455928935e+00 3.811956500841412e+00 4.635481527225397e+00 9.263473756097141e+03 + 117740 1.009824820968522e+00 -6.028107975927067e+00 -5.976571283766972e+00 3.550739939129321e+00 4.846671600789921e+00 9.145267668154174e+03 + 117760 9.770503092455800e-01 -5.982573411563711e+00 -5.944771886714035e+00 3.744526744753105e+00 4.961588950207013e+00 9.048293094906574e+03 + 117780 1.022674488990937e+00 -6.050832085431693e+00 -5.981365382693046e+00 3.416860950728271e+00 4.815749507791086e+00 9.159922976172418e+03 + 117800 9.605882420328691e-01 -5.957637749050926e+00 -5.979320860381005e+00 3.954198538658612e+00 4.829690757950667e+00 9.153679054153059e+03 + 117820 9.905880406339654e-01 -6.000154443202830e+00 -5.982308235724791e+00 3.679470821404652e+00 4.781946506435231e+00 9.162812116796073e+03 + 117840 1.023903637669987e+00 -6.045591941369020e+00 -6.025575427372086e+00 3.449435745588645e+00 4.564373666504570e+00 9.295742103776434e+03 + 117860 1.063399245010372e+00 -6.103496711821144e+00 -5.988922211480329e+00 3.161751138354283e+00 4.819655649657872e+00 9.183086599769513e+03 + 117880 9.700071611769269e-01 -5.965011227788874e+00 -6.066753187116138e+00 3.823525542987692e+00 4.239307468013219e+00 9.423107221767648e+03 + 117900 9.891980383558744e-01 -5.994297152182673e+00 -6.043311024116164e+00 3.696339942346094e+00 4.414894704831818e+00 9.350495899902320e+03 + 117920 9.973663288291963e-01 -6.008580709612805e+00 -5.997414744684149e+00 3.718706904855870e+00 4.782823603403701e+00 9.209113906287968e+03 + 117940 1.069098733835710e+00 -6.116149043951585e+00 -5.958959637332848e+00 3.067878792682626e+00 4.970484690469473e+00 9.091499092324408e+03 + 117960 9.946673407547539e-01 -6.005886811375037e+00 -5.990249309115637e+00 3.688001162547017e+00 4.777794120416145e+00 9.187152720206697e+03 + 117980 1.005801962017413e+00 -6.022445290705143e+00 -5.998737730783256e+00 3.618609329902131e+00 4.754741807706642e+00 9.213165806416162e+03 + 118000 9.644869017462095e-01 -5.961993208338587e+00 -6.004837475538467e+00 3.903680560474244e+00 4.657662148083615e+00 9.231877029215009e+03 + 118020 1.053881009480344e+00 -6.092679350248816e+00 -5.962278383260800e+00 3.212584763985268e+00 4.961367295914876e+00 9.101602551952741e+03 + 118040 1.005852498057892e+00 -6.018676798494393e+00 -5.956065678634719e+00 3.582466795855784e+00 4.941989535129517e+00 9.082679794803493e+03 + 118060 9.751281235783067e-01 -5.967767205572165e+00 -5.989321303566666e+00 3.846958153375676e+00 4.723191187205364e+00 9.184271293336313e+03 + 118080 9.974309641935319e-01 -5.990644469980932e+00 -5.973583634292758e+00 3.777706222121703e+00 4.875672180798989e+00 9.136134759009492e+03 + 118100 1.090947504128428e+00 -6.110873337958210e+00 -5.962983735383422e+00 3.130797434489181e+00 4.980002418315646e+00 9.103776634812151e+03 + 118120 9.785537472955326e-01 -5.916149544140516e+00 -6.026480701012447e+00 4.160847733201043e+00 4.527309156751063e+00 9.298524341281332e+03 + 118140 1.043335798399435e+00 -5.974961412902997e+00 -6.011816604206745e+00 3.839614781149243e+00 4.627986569360697e+00 9.253369962259601e+03 + 118160 1.021372262003668e+00 -5.901431797961940e+00 -6.039725734082755e+00 4.157121457636136e+00 4.363016275512964e+00 9.339400139918887e+03 + 118180 1.084980600560377e+00 -5.954112370256652e+00 -6.024837402483422e+00 3.946646835121381e+00 4.540532755411899e+00 9.293445045875289e+03 + 118200 1.053339239431311e+00 -5.874638062457914e+00 -6.023543355459802e+00 4.354923760806028e+00 4.499886525369571e+00 9.289428060904611e+03 + 118220 1.038059513186960e+00 -5.827582260573252e+00 -6.045953188414441e+00 4.634437723044173e+00 4.380518062588197e+00 9.358619119869134e+03 + 118240 1.077868981135081e+00 -5.872531120676185e+00 -6.010202795009147e+00 4.359289471476361e+00 4.568757412833743e+00 9.248383145830470e+03 + 118260 1.082258392370619e+00 -5.876333103027513e+00 -6.027436030939117e+00 4.352149003949836e+00 4.484492608778884e+00 9.301443237223250e+03 + 118280 1.093984639201599e+00 -5.902300365247637e+00 -6.048988156136660e+00 4.199744376029367e+00 4.357440380882321e+00 9.368033513403001e+03 + 118300 1.119420010381261e+00 -5.961197110514972e+00 -6.046084068171831e+00 3.887326543704382e+00 4.399892496624450e+00 9.359065307264975e+03 + 118320 1.035577054050773e+00 -5.872796825887748e+00 -6.029017660401832e+00 4.336859630819101e+00 4.439815423943219e+00 9.306338217944796e+03 + 118340 1.070370816184554e+00 -5.966587115711421e+00 -5.997520761844828e+00 3.840999602950135e+00 4.663373819885845e+00 9.209445644793284e+03 + 118360 1.063043451433431e+00 -5.998952553479958e+00 -5.990675729710825e+00 3.759450553158497e+00 4.806977356075203e+00 9.188435609378637e+03 + 118380 1.082782818579330e+00 -6.066952214046174e+00 -5.971346132868490e+00 3.391836538467955e+00 4.940821451583464e+00 9.129305760935295e+03 + 118400 1.019721695188557e+00 -6.005589098364631e+00 -6.015713678046762e+00 3.637107013308367e+00 4.578970109999929e+00 9.265343824615929e+03 + 118420 9.612278062434214e-01 -5.942906881488238e+00 -5.975698543208297e+00 4.027594541187806e+00 4.839299745097978e+00 9.142564907459300e+03 + 118440 9.500334787377748e-01 -5.939597084485795e+00 -5.960916705114828e+00 4.019560210343140e+00 4.897139649490605e+00 9.097415930998406e+03 + 118460 9.598236961028992e-01 -5.960587487794002e+00 -5.999564925716527e+00 3.895789700073314e+00 4.671975219783153e+00 9.215691713397713e+03 + 118480 9.821689481661605e-01 -5.997146122014480e+00 -6.032593655378914e+00 3.685372518201096e+00 4.481827296134459e+00 9.317372490287435e+03 + 118500 1.017659075833954e+00 -6.053073511285338e+00 -5.974795958249002e+00 3.429495182077789e+00 4.878977005024615e+00 9.139819300789299e+03 + 118520 9.789319162224951e-01 -5.997662107465493e+00 -6.002288997906848e+00 3.676920852716196e+00 4.650352531792956e+00 9.224074075815050e+03 + 118540 9.441252543553389e-01 -5.946898429481081e+00 -6.002763887471695e+00 3.948953551291559e+00 4.628165446357769e+00 9.225546383423358e+03 + 118560 9.444197941896267e-01 -5.946423776776107e+00 -5.998974571402130e+00 3.969351943415451e+00 4.667597148463639e+00 9.213903616156613e+03 + 118580 9.230215215408252e-01 -5.910757139503366e+00 -6.039794504462388e+00 4.120091482064391e+00 4.379138964001992e+00 9.339580513349309e+03 + 118600 9.766415970172142e-01 -5.983461592674682e+00 -6.028858892394627e+00 3.747835802683749e+00 4.487157482482397e+00 9.305843856232210e+03 + 118620 9.618630342645450e-01 -5.953927971748611e+00 -5.996246835478627e+00 3.940855434154698e+00 4.697853969793949e+00 9.205531662701836e+03 + 118640 1.061055517528551e+00 -6.090344130780484e+00 -5.953599499650275e+00 3.205345973524770e+00 4.990554806637707e+00 9.075159765913408e+03 + 118660 9.813143517955251e-01 -5.957609041930416e+00 -6.009066575762202e+00 3.900080340047009e+00 4.604603217757270e+00 9.244890716647775e+03 + 118680 9.774807857140498e-01 -5.933154525523556e+00 -6.056552226957201e+00 4.016989407770036e+00 4.308420710405463e+00 9.391470818362141e+03 + 118700 1.012181975804859e+00 -5.963966904261444e+00 -6.016698532986031e+00 3.928272819949670e+00 4.625479647619916e+00 9.268382255066042e+03 + 118720 1.048467644196004e+00 -5.994792144485714e+00 -5.963919295339781e+00 3.755575098479476e+00 4.932851775833387e+00 9.106607296851336e+03 + 118740 9.621601254253962e-01 -5.838861466673560e+00 -6.054171021996164e+00 4.490167316957418e+00 4.253826531249022e+00 9.384076259229963e+03 + 118760 1.022663345686638e+00 -5.896445365466867e+00 -6.005596897378934e+00 4.219882252454172e+00 4.593117265070108e+00 9.234245405908194e+03 + 118780 1.091905294434476e+00 -5.967450714184237e+00 -5.995667399133255e+00 3.851120005614004e+00 4.689095434118858e+00 9.203753511436422e+03 + 118800 1.105894341726343e+00 -5.960400050441329e+00 -5.973169685580629e+00 3.907455244593421e+00 4.834130023528912e+00 9.134871253778794e+03 + 118820 1.033995382787784e+00 -5.830496278708402e+00 -5.978438603059751e+00 4.624427496552306e+00 4.774919776126156e+00 9.150948894231547e+03 + 118840 1.029531929933350e+00 -5.808015894148141e+00 -5.999381901622986e+00 4.720284037788677e+00 4.621430809074166e+00 9.215057353470878e+03 + 118860 1.022627998416774e+00 -5.787503977981503e+00 -6.034077989898704e+00 4.807406336348601e+00 4.391540202715006e+00 9.321913526674654e+03 + 118880 1.067706350577648e+00 -5.852887367700749e+00 -6.018746855234044e+00 4.474999475595049e+00 4.522608631506126e+00 9.274671329961711e+03 + 118900 1.094482487644117e+00 -5.901829217858737e+00 -6.015619349722012e+00 4.201674656199865e+00 4.548274110074948e+00 9.265063356841934e+03 + 118920 1.046215537030257e+00 -5.855847717068345e+00 -6.057716748548330e+00 4.397715121131274e+00 4.238551903241536e+00 9.395056461226939e+03 + 118940 1.051801485549865e+00 -5.904649308924698e+00 -6.011287973707836e+00 4.270415774627068e+00 4.658080059162250e+00 9.251702457469401e+03 + 118960 1.051537164666735e+00 -5.963079011361590e+00 -6.042911089334742e+00 3.905250347711958e+00 4.446842202015985e+00 9.349236598436273e+03 + 118980 1.101372786360149e+00 -6.099418561863858e+00 -5.993866325046751e+00 3.172384101537966e+00 4.778481379497653e+00 9.198228404359643e+03 + 119000 9.787017947532939e-01 -5.965887984527672e+00 -5.990482330256977e+00 3.890341952053427e+00 4.749117412913054e+00 9.187833930393792e+03 + 119020 9.718739350630375e-01 -5.982878895035639e+00 -5.979455873459942e+00 3.800222155344980e+00 4.819877674943506e+00 9.154094072148553e+03 + 119040 9.959476988947367e-01 -6.035818943180775e+00 -6.015451037576483e+00 3.459914015820754e+00 4.576869681723808e+00 9.264540403101189e+03 + 119060 9.441735486967399e-01 -5.971306339032348e+00 -6.025378192094603e+00 3.867915987191986e+00 4.557427039316297e+00 9.295106667670014e+03 + 119080 9.646111681234880e-01 -6.009348330778705e+00 -5.987410726850596e+00 3.634781436179135e+00 4.760750552767571e+00 9.178429129691185e+03 + 119100 9.687033226158710e-01 -6.018206608228263e+00 -5.986877981631500e+00 3.603441031344647e+00 4.783334853352552e+00 9.176812410284261e+03 + 119120 9.913277437143768e-01 -6.051223456661309e+00 -6.007927435200540e+00 3.381200081635337e+00 4.629812536900740e+00 9.241406151544445e+03 + 119140 9.744375273015720e-01 -6.022566518401194e+00 -5.995028335741658e+00 3.598477582279503e+00 4.756606088630554e+00 9.201787067141842e+03 + 119160 9.672882875773989e-01 -6.004713542761245e+00 -6.069061620250451e+00 3.595588970766932e+00 4.226092351991110e+00 9.430289291387066e+03 + 119180 9.640402228800465e-01 -5.994653019978194e+00 -6.020054534787910e+00 3.743353924420115e+00 4.597494495511011e+00 9.278727963303209e+03 + 119200 9.701028690226848e-01 -5.996103944082622e+00 -5.989743771242654e+00 3.687337672677878e+00 4.723858769358532e+00 9.185604427267479e+03 + 119220 9.071425906576737e-01 -5.889851523297735e+00 -6.011005911236879e+00 4.325688906067585e+00 4.630001661940081e+00 9.250834757771538e+03 + 119240 1.022591914700804e+00 -6.043133774327776e+00 -6.001301171734392e+00 3.503763959907413e+00 4.743973237572956e+00 9.221045736920498e+03 + 119260 1.032606150698166e+00 -6.036364900963767e+00 -6.006401776625513e+00 3.500290232551062e+00 4.672343129279827e+00 9.236707469055640e+03 + 119280 9.653283936596306e-01 -5.916661696388465e+00 -5.979892800663007e+00 4.139057313569285e+00 4.775974527843100e+00 9.155427021797033e+03 + 119300 1.079395425118725e+00 -6.062511429907402e+00 -5.989268986263320e+00 3.355340468590154e+00 4.775909914225998e+00 9.184118259596942e+03 + 119320 9.872464355997044e-01 -5.900069166567526e+00 -6.015759911123266e+00 4.259667613541680e+00 4.595353455217766e+00 9.265493146463197e+03 + 119340 1.084171954331391e+00 -6.017969263118533e+00 -6.024623044167509e+00 3.543096398197562e+00 4.504889357745052e+00 9.292788388176126e+03 + 119360 1.063759262406174e+00 -5.965665670442225e+00 -6.052372244564682e+00 3.881331379319267e+00 4.383448812909137e+00 9.378529729092466e+03 + 119380 1.116788057069645e+00 -6.029946478481005e+00 -6.011552909362325e+00 3.543838389896971e+00 4.649457110172053e+00 9.252560654948011e+03 + 119400 1.037643777673767e+00 -5.906314693853555e+00 -6.003901649512922e+00 4.245359039142414e+00 4.684999638213750e+00 9.228996621882899e+03 + 119420 1.080847764843264e+00 -5.971028339871708e+00 -5.941195269439361e+00 3.858917321078762e+00 5.030223428154029e+00 9.037374208539630e+03 + 119440 9.870118822056915e-01 -5.835357450642802e+00 -6.040259392016525e+00 4.526363709569697e+00 4.349785053728830e+00 9.340962311206427e+03 + 119460 1.042786889570578e+00 -5.927649884700450e+00 -5.953191819831469e+00 4.078196120856106e+00 4.931530376732107e+00 9.073866012150969e+03 + 119480 1.026599424468261e+00 -5.921569780302893e+00 -5.966352484880490e+00 4.091868122139671e+00 4.834718902353975e+00 9.113999893755850e+03 + 119500 9.569837240377982e-01 -5.845010669075805e+00 -5.997797050821444e+00 4.532154286485468e+00 4.654831238885843e+00 9.210260379999998e+03 + 119520 1.071707400843175e+00 -6.055550780890086e+00 -5.971560553930040e+00 3.399392453762259e+00 4.881677334412460e+00 9.129950415869476e+03 + 119540 1.034603326382984e+00 -6.049291676778807e+00 -5.987059917557144e+00 3.426659156265187e+00 4.784003548049594e+00 9.177367625970008e+03 + 119560 1.039435587849333e+00 -6.106904154921867e+00 -5.960764400737176e+00 3.126964338796666e+00 4.966121422379029e+00 9.097010269778570e+03 + 119580 9.186834907786946e-01 -5.966240927256661e+00 -5.971852973273962e+00 3.876351982458772e+00 4.844126745766115e+00 9.130827615999240e+03 + 119600 9.516214678031822e-01 -6.038279226429039e+00 -5.997130331492022e+00 3.454014088978249e+00 4.690297411477514e+00 9.208244337541095e+03 + 119620 9.533282442780864e-01 -6.057677872737974e+00 -5.960033985688069e+00 3.390940233854670e+00 4.951626543637915e+00 9.094773029220714e+03 + 119640 9.340604119670763e-01 -6.037243888588662e+00 -5.972422399122156e+00 3.499364143441820e+00 4.871579167051578e+00 9.132565825170957e+03 + 119660 9.332383659666506e-01 -6.035667349856229e+00 -5.987463463198733e+00 3.450711742121357e+00 4.727505918836049e+00 9.178599435867916e+03 + 119680 9.722574476386580e-01 -6.086674113362768e+00 -5.980255162163377e+00 3.264743921056758e+00 4.875818007123137e+00 9.156527158298239e+03 + 119700 9.644946817263906e-01 -6.065124913494199e+00 -5.976071784950615e+00 3.376708226888579e+00 4.888065071912947e+00 9.143735165190466e+03 + 119720 9.452947300092963e-01 -6.021598185744242e+00 -5.982693143142795e+00 3.653789107845278e+00 4.877187882998673e+00 9.164000847960475e+03 + 119740 9.286865210447891e-01 -5.976130817060755e+00 -5.996158088828032e+00 3.853719109261211e+00 4.738719415563210e+00 9.205259361903290e+03 + 119760 1.026750338458988e+00 -6.094277749377155e+00 -5.991310676564066e+00 3.165593166233076e+00 4.756846032428856e+00 9.190409662160573e+03 + 119780 9.433319473421097e-01 -5.942237948267610e+00 -6.041647633223969e+00 4.002719193368208e+00 4.431893398749760e+00 9.345349016804083e+03 + 119800 1.029553916338080e+00 -6.041010300583704e+00 -5.983886552195558e+00 3.546880524946843e+00 4.874893928063070e+00 9.167655830289208e+03 + 119820 9.998449298000777e-01 -5.973157289684110e+00 -5.988521958518264e+00 3.885599913891675e+00 4.797373607771147e+00 9.181817474249739e+03 + 119840 1.028425037961815e+00 -5.993324172039302e+00 -5.977768631821403e+00 3.729943732554985e+00 4.819266051698227e+00 9.148929023892417e+03 + 119860 1.019681955737980e+00 -5.961956924624882e+00 -6.002070410819171e+00 3.912728599639219e+00 4.682390754369683e+00 9.223402347840543e+03 + 119880 1.019620097589512e+00 -5.946931272631250e+00 -6.072351170601808e+00 3.892132790292442e+00 4.171952327479014e+00 9.440487073573415e+03 + 119900 1.080867481641072e+00 -6.029775973139915e+00 -6.002583958418650e+00 3.506689688077596e+00 4.662830444557780e+00 9.224992495596378e+03 + 119920 1.011930788777754e+00 -5.925552627926635e+00 -6.004644371845103e+00 4.108672806593836e+00 4.654515773606179e+00 9.231290406620314e+03 + 119940 1.010394797919729e+00 -5.924611184613004e+00 -6.013618201254626e+00 4.128742249231935e+00 4.617650185884432e+00 9.258910548292684e+03 + 119960 1.016752479360705e+00 -5.937674379768598e+00 -6.026702602414995e+00 4.044887600454279e+00 4.533673768945743e+00 9.299201963982663e+03 + 119980 1.056418618246733e+00 -6.003380113598146e+00 -6.054733355273852e+00 3.637403057068112e+00 4.342524796477742e+00 9.385836446920352e+03 + 120000 1.061145894286282e+00 -6.021211892256906e+00 -6.027635012716027e+00 3.585706120868671e+00 4.548823569217719e+00 9.302077590636698e+03 + 120020 9.718393941288797e-01 -5.902017132672810e+00 -6.043451100732105e+00 4.233014922892757e+00 4.420879191460470e+00 9.350900271771692e+03 + 120040 1.036681820644818e+00 -6.007624605744282e+00 -5.990226116227096e+00 3.700331506169276e+00 4.800236325384507e+00 9.187078927992241e+03 + 120060 1.032339290511590e+00 -6.012109291993151e+00 -5.986143488851176e+00 3.640292308030857e+00 4.789391967867129e+00 9.174549055176401e+03 + 120080 1.036132689615751e+00 -6.026374651726817e+00 -5.987722085588594e+00 3.596222510037728e+00 4.818171526268689e+00 9.179359358262443e+03 + 120100 9.869082146382139e-01 -5.960130265148583e+00 -5.990832837534317e+00 3.982196673244721e+00 4.805897751398120e+00 9.188925292057307e+03 + 120120 1.054594877165521e+00 -6.064997046378637e+00 -5.996377399131909e+00 3.340638761472694e+00 4.734663394819502e+00 9.205941601275590e+03 + 120140 9.939705249284559e-01 -5.978739269097393e+00 -6.045496233000370e+00 3.764267925670636e+00 4.380939108332967e+00 9.357248629518725e+03 + 120160 1.051619280866423e+00 -6.071165561484470e+00 -5.985613484735180e+00 3.317247612588286e+00 4.808500876423802e+00 9.172937188141990e+03 + 120180 1.022785297569426e+00 -6.034614532986149e+00 -5.989639092064422e+00 3.538784369929821e+00 4.797040311629363e+00 9.185249504432721e+03 + 120200 1.026046010597426e+00 -6.045252186066615e+00 -5.961212658808037e+00 3.451357729693519e+00 4.933925700287087e+00 9.098361917122489e+03 + 120220 1.033142047429315e+00 -6.061417933922354e+00 -5.959271090579731e+00 3.422484172692685e+00 5.009027154338952e+00 9.092439324147072e+03 + 120240 9.907394914430907e-01 -6.003127731790135e+00 -5.946094548031420e+00 3.716982716505523e+00 5.044476083504730e+00 9.052296121669917e+03 + 120260 1.005086672343924e+00 -6.025588326476243e+00 -5.961920006434356e+00 3.543597998848259e+00 4.909191345169461e+00 9.100482086266802e+03 + 120280 1.005916266017044e+00 -6.024530261176513e+00 -5.987684665334061e+00 3.558622969527266e+00 4.770196082692157e+00 9.179265336293727e+03 + 120300 1.032925326401713e+00 -6.062731391629439e+00 -5.967209840283362e+00 3.395176866606157e+00 4.943676396347628e+00 9.116656533851705e+03 + 120320 1.045329971439544e+00 -6.077405176738569e+00 -5.994037571923845e+00 3.312627978546439e+00 4.791337666487740e+00 9.198767268472993e+03 + 120340 1.008724619077021e+00 -6.019273026278289e+00 -5.977101078825129e+00 3.620506355617850e+00 4.862664203981670e+00 9.146892436467066e+03 + 120360 1.040577743219039e+00 -6.061184516084039e+00 -5.988870767815207e+00 3.365539760884878e+00 4.780776493960885e+00 9.182904565377781e+03 + 120380 9.514837188159329e-01 -5.920839628552655e+00 -6.045191872968318e+00 4.114103617693081e+00 4.400053786810714e+00 9.356277683302562e+03 + 120400 1.033629076715754e+00 -6.029704590006063e+00 -6.006301804977585e+00 3.553924035582949e+00 4.688306448785751e+00 9.236401618260170e+03 + 120420 1.023744151782429e+00 -5.998600194098437e+00 -6.019897239415956e+00 3.696743809648427e+00 4.574452879728125e+00 9.278248753999895e+03 + 120440 9.594683760693846e-01 -5.886448313536311e+00 -6.032094100634072e+00 4.294838547829102e+00 4.458517899701048e+00 9.315739227226753e+03 + 120460 9.998187776516587e-01 -5.926600438910474e+00 -5.995722129580439e+00 4.133980178930925e+00 4.737072734556918e+00 9.203903685241985e+03 + 120480 1.037693081960927e+00 -5.959831358402443e+00 -5.992579741750708e+00 3.907660960960592e+00 4.719614675978908e+00 9.194266581095508e+03 + 120500 1.081917433218320e+00 -6.003321572033852e+00 -5.993388153805121e+00 3.667334590002668e+00 4.724373814663544e+00 9.196738583836395e+03 + 120520 1.051614000328919e+00 -5.939662748055732e+00 -6.009430231181861e+00 4.051606812961471e+00 4.650991128368120e+00 9.246004767999859e+03 + 120540 1.105116883185558e+00 -6.004476261017515e+00 -5.997024527843392e+00 3.713193214444964e+00 4.755982219482758e+00 9.207916944080895e+03 + 120560 1.077358422984455e+00 -5.956110987285872e+00 -5.991821206662424e+00 3.983727622302391e+00 4.778674016503640e+00 9.191975663686253e+03 + 120580 1.115459215511916e+00 -6.013783485291789e+00 -6.028457232882693e+00 3.627303601730307e+00 4.543044672308236e+00 9.304625940223772e+03 + 120600 1.010211918349410e+00 -5.868250329081106e+00 -6.038009132607670e+00 4.501798952437506e+00 4.527017632498030e+00 9.334086080443292e+03 + 120620 1.007730303791919e+00 -5.883652510936998e+00 -6.039349599161183e+00 4.327214549127589e+00 4.433177774497789e+00 9.338254099057845e+03 + 120640 1.130012261954703e+00 -6.091511685438985e+00 -5.994148139829725e+00 3.182044610856576e+00 4.741121156704938e+00 9.199111939184178e+03 + 120660 1.019422469496537e+00 -5.967649386822658e+00 -6.018571653925105e+00 3.838230417596816e+00 4.545826879699201e+00 9.274129240625181e+03 + 120680 9.354144984946680e-01 -5.881746230977337e+00 -5.998216467777072e+00 4.297200943836724e+00 4.628410820421752e+00 9.211547528814319e+03 + 120700 9.763545721244279e-01 -5.974598364794389e+00 -6.028424922528604e+00 3.788790452159040e+00 4.479710028016285e+00 9.304517910499917e+03 + 120720 9.423000717290816e-01 -5.952875187263401e+00 -6.031858344754938e+00 3.892567827108499e+00 4.439034314187973e+00 9.315123321282956e+03 + 120740 9.543731635473370e-01 -5.992309196456991e+00 -5.988663131068482e+00 3.776239509446321e+00 4.797175781133934e+00 9.182282695848484e+03 + 120760 8.946358465997292e-01 -5.917471931920558e+00 -6.004546741283720e+00 4.151308620681904e+00 4.651311590535431e+00 9.231001794073816e+03 + 120780 9.900648205824396e-01 -6.067035709972298e+00 -5.992338058013967e+00 3.290315656485183e+00 4.719241133454207e+00 9.193539979184394e+03 + 120800 9.659633638280964e-01 -6.036339442155185e+00 -5.996312604398667e+00 3.516235732668915e+00 4.746076029199968e+00 9.205746949615253e+03 + 120820 9.389255175658887e-01 -5.998654009757570e+00 -6.014177559433469e+00 3.671458695339337e+00 4.582320070838779e+00 9.260649248736241e+03 + 120840 9.632002975658992e-01 -6.033113301793421e+00 -5.990767861190847e+00 3.488593751966532e+00 4.731747824842265e+00 9.188725272604835e+03 + 120860 9.433735494342107e-01 -5.995268878860853e+00 -5.973324718572456e+00 3.694217770093614e+00 4.820224534317422e+00 9.135346034443975e+03 + 120880 1.025533051391349e+00 -6.104954114932750e+00 -5.978976682536636e+00 3.140265930654051e+00 4.863647842417191e+00 9.152646817331228e+03 + 120900 9.547440436534869e-01 -5.986811593762392e+00 -6.053349693473651e+00 3.717925308382485e+00 4.335853243102784e+00 9.381567623065604e+03 + 120920 9.916155010189877e-01 -6.026156822650287e+00 -6.003710847209986e+00 3.537673646083995e+00 4.666561910565676e+00 9.228458836023932e+03 + 120940 9.951828388598919e-01 -6.013567192986904e+00 -5.994371418713266e+00 3.632071027721412e+00 4.742296134137109e+00 9.199779995537183e+03 + 120960 9.564688431380814e-01 -5.935768144825196e+00 -5.993669858661309e+00 4.039829523434801e+00 4.707348922326582e+00 9.197624726804530e+03 + 120980 9.763209551619872e-01 -5.942069414290973e+00 -5.979923844054045e+00 4.036879761891212e+00 4.819513768237581e+00 9.155498440038944e+03 + 121000 1.068843487258577e+00 -6.050278042246346e+00 -5.987688564135468e+00 3.388650347437494e+00 4.748048816440594e+00 9.179299716560481e+03 + 121020 9.978038644293263e-01 -5.913431209358587e+00 -6.006418091451395e+00 4.156666885984088e+00 4.622721819333690e+00 9.236760651239076e+03 + 121040 1.075905436365311e+00 -5.990737806260648e+00 -6.009030916036770e+00 3.764131085558872e+00 4.659089218374790e+00 9.244792689008551e+03 + 121060 1.031789097045825e+00 -5.878690742752047e+00 -6.039830840888150e+00 4.349500641153036e+00 4.424209261305937e+00 9.339713769421787e+03 + 121080 1.056549264160637e+00 -5.865815747851979e+00 -6.031058841740066e+00 4.488919345483805e+00 4.540067929092275e+00 9.312590192290299e+03 + 121100 1.099446348721314e+00 -5.883105670771874e+00 -6.046710455928039e+00 4.325067026593067e+00 4.385623032467689e+00 9.360994838123948e+03 + 121120 1.125176352100889e+00 -5.883579114690234e+00 -6.071853605824058e+00 4.340610619480435e+00 4.259509356006677e+00 9.438929497251514e+03 + 121140 1.150399661885583e+00 -5.899614274545621e+00 -6.036501329376753e+00 4.254894478399377e+00 4.468867826355740e+00 9.329431358692162e+03 + 121160 1.094627502379573e+00 -5.812241793530719e+00 -6.079797683002661e+00 4.678032341184537e+00 4.141685019696560e+00 9.463636421741105e+03 + 121180 1.120493695869488e+00 -5.863369746691971e+00 -6.024683802873893e+00 4.422825966331979e+00 4.496535692465864e+00 9.292965864321717e+03 + 121200 1.078932537300321e+00 -5.829248242008878e+00 -6.029406868750112e+00 4.590237946534479e+00 4.440896137338929e+00 9.307535372475157e+03 + 121220 1.053671150165725e+00 -5.842773504629686e+00 -6.024354195187978e+00 4.564628979805457e+00 4.521964555098689e+00 9.291971292470245e+03 + 121240 1.095780007297987e+00 -5.978556261228650e+00 -6.059116429027206e+00 3.770321451161590e+00 4.307732501016609e+00 9.399424328148361e+03 + 121260 1.064836475815794e+00 -6.003567599247364e+00 -6.027574861584730e+00 3.617605873670985e+00 4.479752458217991e+00 9.301891627366504e+03 + 121280 1.025693199413907e+00 -5.986485537529640e+00 -6.014954981804349e+00 3.788127158041800e+00 4.624651203384158e+00 9.263031489927744e+03 + 121300 1.019127093315375e+00 -5.998177929796270e+00 -6.012769489826296e+00 3.690017024242262e+00 4.606230028513239e+00 9.256304300129823e+03 + 121320 1.041561857094738e+00 -6.046712582364448e+00 -5.988106134759940e+00 3.451229391845482e+00 4.787756683309022e+00 9.180573257910042e+03 + 121340 1.007740438144754e+00 -6.009102092921800e+00 -6.009455447277591e+00 3.675352804253930e+00 4.673323788861565e+00 9.246056790814362e+03 + 121360 9.672171850045752e-01 -5.958135591822367e+00 -5.973946750658824e+00 3.981299286539332e+00 4.890509165731475e+00 9.137244101095916e+03 + 121380 9.935177709587653e-01 -6.003625719893237e+00 -6.007558385870614e+00 3.693922173090204e+00 4.671340196470013e+00 9.240269400726540e+03 + 121400 1.019796810355305e+00 -6.049255658387051e+00 -5.991286319100182e+00 3.457134077138714e+00 4.790002994050177e+00 9.190306073336487e+03 + 121420 1.010719710280107e+00 -6.044395961250208e+00 -5.982601983854225e+00 3.437948609262025e+00 4.792779190056856e+00 9.163750732211613e+03 + 121440 9.888899483569709e-01 -6.020673513261531e+00 -5.994064921985097e+00 3.581278650288157e+00 4.734069299063636e+00 9.198833719768227e+03 + 121460 9.154661088232632e-01 -5.918402366111876e+00 -6.023119914485376e+00 4.118315315924913e+00 4.517010948176037e+00 9.288150566293960e+03 + 121480 9.123147074912249e-01 -5.916755726781715e+00 -6.040932361652200e+00 4.126386194383956e+00 4.413344740685489e+00 9.343091863419644e+03 + 121500 1.025324364226233e+00 -6.084892040294999e+00 -5.983354393085188e+00 3.165314542013964e+00 4.748359425192823e+00 9.166009130292590e+03 + 121520 9.479900331084421e-01 -5.965735647533178e+00 -6.006159181765631e+00 3.880816216158846e+00 4.648698027074393e+00 9.235944666792700e+03 + 121540 9.642270620373837e-01 -5.984513247835343e+00 -6.009960121897665e+00 3.724558795887160e+00 4.578438907130277e+00 9.247632749412625e+03 + 121560 9.820204202450386e-01 -6.002170726972052e+00 -6.025783914741895e+00 3.655022179950450e+00 4.519431601647012e+00 9.296383051797875e+03 + 121580 1.012099742657681e+00 -6.038133519976705e+00 -6.011800472347093e+00 3.533699381453941e+00 4.684907815969126e+00 9.253297203436814e+03 + 121600 9.459961816394682e-01 -5.928506148538029e+00 -6.045892284160914e+00 4.106239609308198e+00 4.432190253115814e+00 9.358455193763601e+03 + 121620 1.011254042159579e+00 -6.011608094643019e+00 -6.014927006704755e+00 3.642821580795439e+00 4.623763874136972e+00 9.262918253044209e+03 + 121640 1.049417125476201e+00 -6.056109084950049e+00 -5.985500283258091e+00 3.406609953425119e+00 4.812056619417095e+00 9.172589099373849e+03 + 121660 9.821493577901522e-01 -5.943743716471760e+00 -5.993081542944143e+00 4.009376265223694e+00 4.726070830615297e+00 9.195802739559394e+03 + 121680 9.092949856173714e-01 -5.820289727640036e+00 -6.067336614048265e+00 4.614269988904027e+00 4.195688536765863e+00 9.424897281504815e+03 + 121700 1.088223544097771e+00 -6.069738517062521e+00 -6.001422410947127e+00 3.277455207086930e+00 4.669736860284781e+00 9.221426182835046e+03 + 121720 1.095232098584737e+00 -6.067775397688449e+00 -5.954997923077664e+00 3.411399348659769e+00 5.058985060132693e+00 9.079415127506092e+03 + 121740 1.088171557917545e+00 -6.048039462062470e+00 -6.009812604712321e+00 3.408046152572408e+00 4.627550683064022e+00 9.247181967418643e+03 + 121760 9.890665961287527e-01 -5.894349279083472e+00 -6.006963770162155e+00 4.209670873089593e+00 4.563021038279619e+00 9.238412279495251e+03 + 121780 1.043499077747611e+00 -5.969481090027255e+00 -6.006002280219752e+00 3.863242026778372e+00 4.653531701057140e+00 9.235455910008011e+03 + 121800 1.076867129777996e+00 -6.016414672052348e+00 -5.959280820558289e+00 3.668270260489963e+00 4.996341677203798e+00 9.092468566783786e+03 + 121820 1.057474341165644e+00 -5.988948125808213e+00 -5.992431544420544e+00 3.731891202173869e+00 4.711888873444578e+00 9.193834295962906e+03 + 121840 1.027915309576489e+00 -5.953514989118382e+00 -5.993266194485868e+00 3.930801891326165e+00 4.702544318626913e+00 9.196340446902817e+03 + 121860 1.009875854874057e+00 -5.938759770501213e+00 -6.004490812529411e+00 4.025813163333832e+00 4.648375348162042e+00 9.230738884117127e+03 + 121880 1.016497426899852e+00 -5.966234422217219e+00 -5.963751885955925e+00 3.917117459695402e+00 4.931372567078994e+00 9.106078178863789e+03 + 121900 1.000589942274414e+00 -5.965506233785544e+00 -5.969112358384749e+00 3.871443422207337e+00 4.850736496712724e+00 9.122485667990690e+03 + 121920 9.535938444465633e-01 -5.925420445477659e+00 -6.035811674618802e+00 4.118881610870888e+00 4.484998090154940e+00 9.327288982876733e+03 + 121940 9.322463967338616e-01 -5.925629085949499e+00 -6.039934065784456e+00 4.054372359528232e+00 4.398015476677448e+00 9.340071961015135e+03 + 121960 1.022388781918760e+00 -6.092936230838693e+00 -5.979221509943984e+00 3.191715986592782e+00 4.844683511266389e+00 9.153385272214708e+03 + 121980 9.885529639368891e-01 -6.074779341790144e+00 -5.971385685169479e+00 3.327317176909301e+00 4.921019553341812e+00 9.129424595716457e+03 + 122000 8.789865750614481e-01 -5.936644668064941e+00 -6.025850421625547e+00 4.064822357709361e+00 4.552589116218614e+00 9.296559074547540e+03 + 122020 9.993187655645374e-01 -6.134858044955732e+00 -5.993246839711056e+00 2.948360358506144e+00 4.761513813284258e+00 9.196342816422035e+03 + 122040 9.285714604828201e-01 -6.044076330868791e+00 -5.986458608790151e+00 3.467205473053854e+00 4.798055349543082e+00 9.175532469238226e+03 + 122060 9.563675928716706e-01 -6.090916806960377e+00 -5.980893888715716e+00 3.236174547420667e+00 4.867943169973081e+00 9.158495255304686e+03 + 122080 9.369846916005025e-01 -6.060008008835741e+00 -6.034665236588676e+00 3.378319800602559e+00 4.523841920626538e+00 9.323774912910743e+03 + 122100 9.477967050858879e-01 -6.070790284130617e+00 -5.992852181595550e+00 3.392537832270329e+00 4.840070477909071e+00 9.195100295555801e+03 + 122120 9.257296775423668e-01 -6.025185159025574e+00 -5.983419544069068e+00 3.568878534279345e+00 4.808703158567631e+00 9.166244662536175e+03 + 122140 9.760501296476184e-01 -6.078009334127781e+00 -5.991592212837741e+00 3.289237763724441e+00 4.785458247178151e+00 9.191278687877682e+03 + 122160 9.567872459337702e-01 -6.020539676678470e+00 -5.996136299000518e+00 3.607133970537719e+00 4.747261941575006e+00 9.205182912274407e+03 + 122180 9.864474940147704e-01 -6.026341704525295e+00 -5.948338285065007e+00 3.614120742287385e+00 5.062028447818511e+00 9.059134334877437e+03 + 122200 1.050021449410696e+00 -6.073426728782909e+00 -5.964971005498520e+00 3.320578272603646e+00 4.943347819171544e+00 9.109833620338715e+03 + 122220 1.046146528182950e+00 -6.020673386594951e+00 -5.987700579004970e+00 3.590861718421248e+00 4.780196682128398e+00 9.179323918134212e+03 + 122240 1.064902876111197e+00 -6.014489230060621e+00 -5.994304293036757e+00 3.607580687830394e+00 4.723485719830331e+00 9.199572666637889e+03 + 122260 1.006412101348283e+00 -5.906369802016615e+00 -6.018335012137827e+00 4.219961900134256e+00 4.577040337057983e+00 9.273421467649914e+03 + 122280 1.072796086810875e+00 -5.995384852291707e+00 -6.009055069129228e+00 3.676983630625643e+00 4.598487130085382e+00 9.244870446363942e+03 + 122300 1.013834400797831e+00 -5.906089866546187e+00 -6.073648307609880e+00 4.158999054909924e+00 4.196852556737242e+00 9.444511600255852e+03 + 122320 1.041107328374048e+00 -5.949731773645686e+00 -6.056821347616345e+00 3.904037180158016e+00 4.289112274360480e+00 9.392330936806820e+03 + 122340 1.065236311669154e+00 -5.996167759441147e+00 -6.010957490231847e+00 3.694041349232836e+00 4.609116426329193e+00 9.250731824508028e+03 + 122360 1.020057341712105e+00 -5.942100012675675e+00 -6.019724939484485e+00 3.969672216491367e+00 4.523937874336578e+00 9.277687804276624e+03 + 122380 1.057449148248190e+00 -6.012512163218804e+00 -5.999920316031853e+00 3.580861605661933e+00 4.653165940791465e+00 9.216801945131599e+03 + 122400 9.640159292561817e-01 -5.890811945568827e+00 -6.049281803302288e+00 4.272849351299104e+00 4.362890905062342e+00 9.368938775786703e+03 + 122420 1.047228523064277e+00 -6.031796336508355e+00 -6.001375727079881e+00 3.508409319993527e+00 4.683089166905921e+00 9.221282731379111e+03 + 122440 9.292806614484829e-01 -5.876548400324518e+00 -6.011423731817072e+00 4.351979606742520e+00 4.577504581422182e+00 9.252157838353352e+03 + 122460 1.030641181438959e+00 -6.045566294908516e+00 -5.994638409740646e+00 3.397598331204608e+00 4.690034128903280e+00 9.200611320380918e+03 + 122480 1.043062705449388e+00 -6.083240835903879e+00 -5.995461186677291e+00 3.271545953001358e+00 4.775590282717238e+00 9.203110728562424e+03 + 122500 9.386936019802217e-01 -5.947894230486130e+00 -6.017160404551564e+00 3.937974113113099e+00 4.540237022723576e+00 9.269822327936567e+03 + 122520 9.938455745909147e-01 -6.045659610206654e+00 -6.012847505573569e+00 3.408464270286371e+00 4.596876452746328e+00 9.256536251314366e+03 + 122540 1.002999121451895e+00 -6.073553655873885e+00 -5.967527520141510e+00 3.339154272316373e+00 4.947972751183146e+00 9.117650774064847e+03 + 122560 1.003447323409266e+00 -6.087766886488987e+00 -5.969923127471836e+00 3.208902422416540e+00 4.885579522955794e+00 9.124946753478966e+03 + 122580 9.416234901122646e-01 -6.008087265455671e+00 -5.984826099902172e+00 3.694697776840285e+00 4.828266989102210e+00 9.170510978068820e+03 + 122600 9.438183265091453e-01 -6.018642472855062e+00 -5.986894841186514e+00 3.617841450915397e+00 4.800141264886329e+00 9.176819798775516e+03 + 122620 9.693643153718524e-01 -6.059404770238755e+00 -5.953936391867413e+00 3.412370506465099e+00 5.017986256252154e+00 9.076179606519388e+03 + 122640 9.623822968381476e-01 -6.046144363167623e+00 -5.996185053453386e+00 3.431317738222189e+00 4.718191825779531e+00 9.205357833475548e+03 + 122660 9.707998563378933e-01 -6.047467129671227e+00 -6.039524471364833e+00 3.455196824431110e+00 4.500804797548827e+00 9.338801813066129e+03 + 122680 9.239780172564870e-01 -5.959171537151987e+00 -6.070983852815636e+00 3.915138580658934e+00 4.273094961218334e+00 9.436245005317005e+03 + 122700 9.709776181501767e-01 -6.002378080635148e+00 -5.996533704498964e+00 3.703867992712310e+00 4.737427304900561e+00 9.206421595513213e+03 + 122720 9.637878965941783e-01 -5.950352699839319e+00 -6.034781994243518e+00 3.987032568024854e+00 4.502226494164859e+00 9.324125651128046e+03 + 122740 1.010815038669133e+00 -5.974854618923963e+00 -6.001809257264895e+00 3.889205416111694e+00 4.734427711541263e+00 9.222583176498343e+03 + 122760 9.811674752021313e-01 -5.885569933318791e+00 -5.999907734011133e+00 4.311805526089220e+00 4.655260180796323e+00 9.216735241809996e+03 + 122780 1.028923565545511e+00 -5.917545752877508e+00 -5.962513254589275e+00 4.218804043908222e+00 4.960593690380851e+00 9.102317117631832e+03 + 122800 1.124335882902598e+00 -6.028333263711251e+00 -5.989460223684716e+00 3.564223088275525e+00 4.787438099691389e+00 9.184722319449800e+03 + 122820 1.062678376278233e+00 -5.920439492733944e+00 -6.005506839431118e+00 4.092288659609190e+00 4.603818790744662e+00 9.233955358010326e+03 + 122840 1.011664316556222e+00 -5.837057124097495e+00 -6.040685362917541e+00 4.571111103293043e+00 4.401846244620217e+00 9.342352864493725e+03 + 122860 1.100272720862411e+00 -5.967639203569795e+00 -5.999069602364922e+00 3.871470200547264e+00 4.690991986827151e+00 9.214193121300263e+03 + 122880 1.037310974871203e+00 -5.884477610944193e+00 -6.025700134142681e+00 4.266424447304944e+00 4.455502864984383e+00 9.296097014997742e+03 + 122900 1.043453196462220e+00 -5.909257329549933e+00 -6.004112736779348e+00 4.189931112426043e+00 4.645256685287914e+00 9.229648557115983e+03 + 122920 1.072511666442063e+00 -5.972924969515268e+00 -5.998693874919379e+00 3.772937404783986e+00 4.624968362228358e+00 9.213033696499117e+03 + 122940 1.041578250255228e+00 -5.953442716446868e+00 -6.007826232290856e+00 3.933337787121249e+00 4.621059223323188e+00 9.241079367586261e+03 + 122960 1.033297963531500e+00 -5.973421855162428e+00 -6.006560463248404e+00 3.844363661290658e+00 4.654076645477955e+00 9.237182633035432e+03 + 122980 9.613929666220137e-01 -5.900179904231156e+00 -6.057847580457410e+00 4.157476883741304e+00 4.252124687856115e+00 9.395474587677409e+03 + 123000 9.847080599178164e-01 -5.966862856084152e+00 -5.992470811934850e+00 3.883768796887022e+00 4.736723951573953e+00 9.193947241787975e+03 + 123020 9.776356536799536e-01 -5.982789663159479e+00 -6.003257517788345e+00 3.739159031673632e+00 4.621629443004416e+00 9.227068805674024e+03 + 123040 9.785738714083889e-01 -6.003878077193728e+00 -6.008864121376529e+00 3.667423610779903e+00 4.638792973494413e+00 9.244262730768147e+03 + 123060 1.017907258637640e+00 -6.075573705076893e+00 -5.959358196499521e+00 3.298000786753659e+00 4.965328221296756e+00 9.092711401310215e+03 + 123080 1.036456515447104e+00 -6.111445778731325e+00 -5.972382433223887e+00 3.051516523692862e+00 4.850039773579736e+00 9.132479679381748e+03 + 123100 9.928683104676677e-01 -6.052443438557395e+00 -5.990079099758160e+00 3.464908937463645e+00 4.823014621699094e+00 9.186616732318967e+03 + 123120 1.001798524840767e+00 -6.068660545413881e+00 -5.982560654056172e+00 3.376023226049152e+00 4.870422126140239e+00 9.163584841375789e+03 + 123140 9.729840391654312e-01 -6.024743067186481e+00 -5.967956238078693e+00 3.590137905676422e+00 4.916216666146748e+00 9.118947649108120e+03 + 123160 9.699555158520093e-01 -6.015830125467891e+00 -6.002255110129755e+00 3.599428443314428e+00 4.677378282112842e+00 9.223969801019390e+03 + 123180 1.038155164871066e+00 -6.111709240193035e+00 -5.996327793623625e+00 3.066139572462734e+00 4.728677693885441e+00 9.205794011301048e+03 + 123200 9.760012579923073e-01 -6.013558558444949e+00 -6.011299979553652e+00 3.631218131134414e+00 4.644187240642193e+00 9.251762776618350e+03 + 123220 9.207028267581148e-01 -5.924249131614145e+00 -6.035112873503418e+00 4.095602992064832e+00 4.459006230028018e+00 9.325138409705105e+03 + 123240 1.030627009676178e+00 -6.078430762639743e+00 -5.945121619683016e+00 3.280833195075152e+00 5.046314923455881e+00 9.049333574872235e+03 + 123260 9.210372379414149e-01 -5.905646078787322e+00 -6.019512090575311e+00 4.222736184421782e+00 4.568899924026774e+00 9.277015761603043e+03 + 123280 9.656366045512024e-01 -5.957355365792517e+00 -6.019626746789593e+00 3.979117214969910e+00 4.621545308819638e+00 9.277384787563704e+03 + 123300 1.035584687366873e+00 -6.047466257792698e+00 -6.000621920078137e+00 3.481184291839897e+00 4.750171728134744e+00 9.218961990807999e+03 + 123320 9.667947220105408e-01 -5.932338305941492e+00 -6.039721934103854e+00 4.046973110914749e+00 4.430359700443717e+00 9.339375723125404e+03 + 123340 1.053474143741022e+00 -6.047524152541055e+00 -5.997338121356494e+00 3.454590746610780e+00 4.742766703935754e+00 9.208863929721190e+03 + 123360 1.032755141387830e+00 -6.003055470922941e+00 -5.996188601741617e+00 3.646696546111243e+00 4.686127171594984e+00 9.205366431411119e+03 + 123380 9.850916802674634e-01 -5.919771410691591e+00 -5.993803015551622e+00 4.118869151947790e+00 4.693768220487663e+00 9.198014975932096e+03 + 123400 1.061505519769170e+00 -6.016784094982769e+00 -5.988375026182153e+00 3.597313723833707e+00 4.760442993176031e+00 9.181400225790967e+03 + 123420 1.053713748020837e+00 -5.981692518932657e+00 -6.010856263866240e+00 3.818096499315776e+00 4.650633762832195e+00 9.250411748314104e+03 + 123440 1.105108042184527e+00 -6.024691613170656e+00 -6.002889930695853e+00 3.583310461453789e+00 4.708499096023569e+00 9.225906116550468e+03 + 123460 1.115359843444440e+00 -5.995300146185701e+00 -5.970179150414416e+00 3.781445029556090e+00 4.925693674736341e+00 9.125739506695949e+03 + 123480 1.083141712636847e+00 -5.900491064085047e+00 -5.997631622844692e+00 4.274078055388006e+00 4.716281934537245e+00 9.209782585400939e+03 + 123500 1.062635314310250e+00 -5.828833597038188e+00 -6.039491816074184e+00 4.602936130105607e+00 4.393304037146877e+00 9.338650392730502e+03 + 123520 1.058350718724940e+00 -5.792240854992991e+00 -6.037893402219527e+00 4.769707583312682e+00 4.359132642529084e+00 9.333730961456478e+03 + 123540 1.074662333811224e+00 -5.797759435643455e+00 -6.040007419031478e+00 4.806112886763899e+00 4.415087478395597e+00 9.340261792830985e+03 + 123560 1.167763510594975e+00 -5.930959759070772e+00 -6.022892428979931e+00 4.089154451717158e+00 4.561262834564073e+00 9.287447590322658e+03 + 123580 1.060144576412683e+00 -5.783664646296696e+00 -6.099110910831912e+00 4.836613656532942e+00 4.025272390420059e+00 9.523783628772289e+03 + 123600 1.115760526321844e+00 -5.896118405742393e+00 -6.041918712270576e+00 4.236605717017573e+00 4.399397794408229e+00 9.346178471965290e+03 + 123620 1.054928746952519e+00 -5.850497076758369e+00 -6.018223233833195e+00 4.550076941549805e+00 4.586967392087234e+00 9.273060480954480e+03 + 123640 1.021969048970661e+00 -5.850105876879089e+00 -6.038021772143650e+00 4.472886454363865e+00 4.393844303863944e+00 9.334119589245322e+03 + 123660 1.137074751487440e+00 -6.066386818101090e+00 -5.945300774525718e+00 3.316300491961921e+00 5.011595292176397e+00 9.049889662178355e+03 + 123680 1.009418480570350e+00 -5.912765165452886e+00 -6.019371465436952e+00 4.104819147731722e+00 4.492669275951612e+00 9.276574698606424e+03 + 123700 1.028215867901988e+00 -5.970773325245623e+00 -5.965563961779009e+00 3.895583721515486e+00 4.925496692687172e+00 9.111631882553560e+03 + 123720 1.046017048533841e+00 -6.020182913405061e+00 -5.950881358160806e+00 3.685103588739236e+00 5.083043843332765e+00 9.066854792936376e+03 + 123740 1.031407942754202e+00 -6.015259962719412e+00 -5.946621394495140e+00 3.661099723150422e+00 5.055233003678297e+00 9.053907587476668e+03 + 123760 9.738106105827206e-01 -5.943652001181007e+00 -6.010957544655556e+00 4.023908261453795e+00 4.637429415323747e+00 9.250705289284273e+03 + 123780 1.039645761215241e+00 -6.053111340940633e+00 -5.991755877196627e+00 3.373893606968829e+00 4.726206174514245e+00 9.191774278954585e+03 + 123800 9.816838821731989e-01 -5.978971074475639e+00 -6.029724840234711e+00 3.828542079668765e+00 4.537106102560306e+00 9.308527470388675e+03 + 123820 1.012446531389368e+00 -6.037003909087220e+00 -6.021445326087385e+00 3.489914935997509e+00 4.579254727265504e+00 9.283008172302119e+03 + 123840 1.000031098220121e+00 -6.030965653205588e+00 -6.038290410758296e+00 3.542550441907426e+00 4.500490550537211e+00 9.334958474964991e+03 + 123860 9.379179404186142e-01 -5.950933035640495e+00 -6.039767481735309e+00 3.959816975622285e+00 4.449715839059758e+00 9.339542177201964e+03 + 123880 9.446563453234521e-01 -5.973134061946038e+00 -6.047473237696754e+00 3.822852925878514e+00 4.395985874767637e+00 9.363374635720598e+03 + 123900 1.041321043596115e+00 -6.127734549216084e+00 -5.987225109953616e+00 2.959166791889249e+00 4.765993735899794e+00 9.177912720709210e+03 + 123920 9.262293368216908e-01 -5.967747952414613e+00 -6.047347910750719e+00 3.837871088300012e+00 4.380795809480350e+00 9.362967010373804e+03 + 123940 9.169329682796719e-01 -5.962653621862809e+00 -5.983689311195718e+00 3.962880713278981e+00 4.842090529867013e+00 9.167038555136227e+03 + 123960 9.889745510432812e-01 -6.073556581322491e+00 -6.011927320838195e+00 3.250653504552226e+00 4.604538255350296e+00 9.253703759454023e+03 + 123980 9.945246789880008e-01 -6.081617711331124e+00 -6.013871674076999e+00 3.285527174586911e+00 4.674535404165481e+00 9.259701423569832e+03 + 124000 9.562471296764359e-01 -6.022954129220868e+00 -6.041099852328090e+00 3.573778611560566e+00 4.469583061437325e+00 9.343678612434031e+03 + 124020 9.716100708362748e-01 -6.042669569400140e+00 -5.977428677352216e+00 3.506953575328114e+00 4.881576873462712e+00 9.147882389895876e+03 + 124040 9.626552110757149e-01 -6.020040653818582e+00 -5.988617326366091e+00 3.540875339647946e+00 4.721312948624357e+00 9.182127896805297e+03 + 124060 9.624521304262400e-01 -6.001194655268712e+00 -5.982934180016793e+00 3.678509351127529e+00 4.783363825823464e+00 9.164725898088418e+03 + 124080 9.500288359511254e-01 -5.955728351379023e+00 -5.997030072407077e+00 3.956991463216989e+00 4.719830589653229e+00 9.207909695073033e+03 + 124100 9.772983013478915e-01 -5.959231590635858e+00 -5.991724278903491e+00 3.918007539342801e+00 4.731429495082795e+00 9.191646373899197e+03 + 124120 1.032863926705671e+00 -6.000035641469773e+00 -6.004665078474539e+00 3.683704984612385e+00 4.657122040927957e+00 9.231339573759096e+03 + 124140 1.053564804590002e+00 -5.990240620582084e+00 -5.993284436603942e+00 3.734686912152797e+00 4.717208849526287e+00 9.196434479635313e+03 + 124160 1.057504395976131e+00 -5.963220734117355e+00 -6.023945591845781e+00 3.950383536026821e+00 4.601692005808838e+00 9.290689663788537e+03 + 124180 1.022085240778716e+00 -5.886984954428578e+00 -6.080072845553905e+00 4.290355491627478e+00 4.181614940531268e+00 9.464493819783940e+03 + 124200 1.076548076516832e+00 -5.955016245757723e+00 -6.053679966415271e+00 3.900082403330526e+00 4.333540051153458e+00 9.382575378427337e+03 + 124220 1.029370404617580e+00 -5.881913828216268e+00 -6.050565781086606e+00 4.350482863069715e+00 4.382057250882879e+00 9.372912553971943e+03 + 124240 1.039013022950192e+00 -5.900541833373640e+00 -6.056967635502517e+00 4.164037900108069e+00 4.265816737469414e+00 9.392753732165689e+03 + 124260 1.102918822015277e+00 -6.009153364812903e+00 -6.022239956276213e+00 3.648813948115818e+00 4.573668714790006e+00 9.285458958440779e+03 + 124280 9.864000050800108e-01 -5.857387699509981e+00 -6.047825150514474e+00 4.430047593679594e+00 4.336526279911493e+00 9.364437405585946e+03 + 124300 9.928670327457007e-01 -5.891777398416153e+00 -6.063893653435580e+00 4.229356225201593e+00 4.241038053975657e+00 9.414214334216662e+03 + 124320 1.019276511129890e+00 -5.959569040717325e+00 -6.030267432267020e+00 3.912225252446661e+00 4.506264147627577e+00 9.310204481655626e+03 + 124340 9.849010707917484e-01 -5.941382740049206e+00 -6.056358684486967e+00 4.020645876009462e+00 4.360436210577942e+00 9.390824761677011e+03 + 124360 9.936119554714553e-01 -5.984295297562930e+00 -5.974644468225821e+00 3.784822409889345e+00 4.840238965404036e+00 9.139366108646251e+03 + 124380 9.521810481744990e-01 -5.948306362913390e+00 -6.004076505764259e+00 3.996279809153776e+00 4.676039018502367e+00 9.229557815562634e+03 + 124400 1.021256627557130e+00 -6.068190661188632e+00 -5.976614672496319e+00 3.323000650880716e+00 4.848844149290434e+00 9.145408802067057e+03 + 124420 9.805285482686998e-01 -6.020497681049144e+00 -5.970286489232691e+00 3.599689504897944e+00 4.888009938464839e+00 9.126068961576357e+03 + 124440 9.953273512825224e-01 -6.049852233740272e+00 -6.001019530504298e+00 3.428155243253404e+00 4.708560182070774e+00 9.220180474962612e+03 + 124460 9.688095877344318e-01 -6.015644063151668e+00 -6.015316986396023e+00 3.541725156329762e+00 4.543603281675638e+00 9.264121302044176e+03 + 124480 9.438574556083021e-01 -5.978675833919882e+00 -5.981737324252702e+00 3.803910988265295e+00 4.786331437010142e+00 9.161076209700852e+03 + 124500 9.934280085304421e-01 -6.048198808280079e+00 -5.968350049268471e+00 3.460971979931236e+00 4.919475910731406e+00 9.120171018833062e+03 + 124520 9.976307312659172e-01 -6.048811378439297e+00 -6.038506186305963e+00 3.461110370082799e+00 4.520284378035738e+00 9.335643067102361e+03 + 124540 9.788165967783727e-01 -6.017343813998051e+00 -6.034900560525130e+00 3.612219161567187e+00 4.511405606110955e+00 9.324501398418859e+03 + 124560 1.010638723084755e+00 -6.059654450993423e+00 -5.996860639041419e+00 3.425964106642052e+00 4.786535892181458e+00 9.207414293517286e+03 + 124580 9.634870621920757e-01 -5.984455212899630e+00 -6.027549985349109e+00 3.750210810603378e+00 4.502753958303988e+00 9.301813936010663e+03 + 124600 9.538691115313704e-01 -5.964246069903154e+00 -5.997330651905732e+00 3.894419943252285e+00 4.704443153570963e+00 9.208848835671608e+03 + 124620 1.026818788854478e+00 -6.063019579441131e+00 -6.004953337282126e+00 3.351038782364345e+00 4.684464130563283e+00 9.232272478052682e+03 + 124640 1.096095045361376e+00 -6.158207896467936e+00 -5.961255987896131e+00 2.819401374502304e+00 4.950329711730960e+00 9.098522202853364e+03 + 124660 1.008056314503567e+00 -6.021767831902137e+00 -5.962881447980240e+00 3.580127673125622e+00 4.918262402243615e+00 9.103446730582746e+03 + 124680 9.487275653392980e-01 -5.925594326924035e+00 -5.990706823366391e+00 4.087331857069260e+00 4.713445826370990e+00 9.188538187575297e+03 + 124700 9.951428767363758e-01 -5.983252157872843e+00 -5.997183576266233e+00 3.729640456209375e+00 4.649644095914504e+00 9.208388306210205e+03 + 124720 9.784908592813066e-01 -5.944913135414964e+00 -5.997383347103162e+00 3.953852466414040e+00 4.652560391161391e+00 9.209029510042026e+03 + 124740 1.029675926912981e+00 -6.005507643623237e+00 -5.971631063871685e+00 3.638911839833348e+00 4.833436403150534e+00 9.130144233065144e+03 + 124760 9.367334679591502e-01 -5.848671581895034e+00 -5.987318856063932e+00 4.525579524670642e+00 4.729445420796495e+00 9.178139656534366e+03 + 124780 1.041453475774045e+00 -5.975885062787889e+00 -5.998669173173054e+00 3.841429287501372e+00 4.710599399840063e+00 9.212944639466390e+03 + 124800 1.080023554068696e+00 -5.989950269649686e+00 -6.009166307011530e+00 3.756326159010453e+00 4.645984698806571e+00 9.245220160558532e+03 + 124820 1.093444291565670e+00 -5.963842640750606e+00 -6.005372343852482e+00 3.915477074972804e+00 4.677007093061050e+00 9.233561864365103e+03 + 124840 1.144222986784974e+00 -5.993090615490336e+00 -6.032008777508986e+00 3.726648653020365e+00 4.503174544143164e+00 9.315590924696884e+03 + 124860 1.086054648260782e+00 -5.871309281117801e+00 -6.051752144148576e+00 4.390728184777807e+00 4.354597341812286e+00 9.376585223465005e+03 + 124880 1.111063630345325e+00 -5.890117472014937e+00 -6.048129808236895e+00 4.210454539681720e+00 4.303123252765234e+00 9.365378271595657e+03 + 124900 1.086259190782446e+00 -5.848091862383444e+00 -6.060743882408267e+00 4.494285342529531e+00 4.273204535753250e+00 9.404333141292780e+03 + 124920 1.040744787486285e+00 -5.786455135856859e+00 -6.030671493801297e+00 4.786369359045255e+00 4.384041239369044e+00 9.311375497384399e+03 + 124940 1.119058657002233e+00 -5.919984455923280e+00 -5.940634054722505e+00 4.166028442968594e+00 5.047455251148356e+00 9.035618821458007e+03 + 124960 1.030004898505803e+00 -5.813848891812586e+00 -6.003171716737191e+00 4.674471294185738e+00 4.587350335856187e+00 9.226779404407313e+03 + 124980 1.096771767746705e+00 -5.955177650824586e+00 -6.045538747509625e+00 3.895855355726771e+00 4.376987955226755e+00 9.357384297104527e+03 + 125000 1.097620584849602e+00 -6.013459245377746e+00 -6.004527696557127e+00 3.634197793186590e+00 4.685484128667295e+00 9.230931249172103e+03 + 125020 1.039406293533638e+00 -5.979604697012762e+00 -6.004949605364288e+00 3.761830627605993e+00 4.616296241739641e+00 9.232230048684118e+03 + 125040 1.008201195709864e+00 -5.974890753548408e+00 -5.974658885247114e+00 3.848400209842324e+00 4.849731633509862e+00 9.139405048828548e+03 + 125060 1.000815264904330e+00 -5.987425798102696e+00 -6.009072635123370e+00 3.778231318187829e+00 4.653931830177918e+00 9.244914709629806e+03 + 125080 1.006195271644541e+00 -6.008918206070846e+00 -6.014514580420512e+00 3.639623872104803e+00 4.607488624552891e+00 9.261656412215254e+03 + 125100 9.919120621177697e-01 -5.996427921826531e+00 -6.008300450176950e+00 3.722721034204212e+00 4.654547139148282e+00 9.242558553017559e+03 + 125120 9.826954138447850e-01 -5.990141725117017e+00 -5.995575814270374e+00 3.797661745630173e+00 4.766458364789017e+00 9.203484803853133e+03 + 125140 1.031927886560280e+00 -6.069778139416736e+00 -5.999982576987956e+00 3.378925764162516e+00 4.779702684456950e+00 9.216993699636265e+03 + 125160 1.011618744821474e+00 -6.045405634582319e+00 -6.053622135845821e+00 3.402944343163574e+00 4.355763921409086e+00 9.382411170141566e+03 + 125180 9.481539069840340e-01 -5.958844562777684e+00 -6.031846432725819e+00 3.920888325027830e+00 4.501700290782779e+00 9.315098268803986e+03 + 125200 9.635801509796912e-01 -5.988930808991017e+00 -6.035262180553665e+00 3.712045848932476e+00 4.446003943663175e+00 9.325612031555751e+03 + 125220 9.740995815790641e-01 -6.009529920105448e+00 -5.965716069113188e+00 3.649102038210805e+00 4.900687950779888e+00 9.112103244027548e+03 + 125240 9.426075064835656e-01 -5.962571198064012e+00 -6.028349249155892e+00 3.861267552103097e+00 4.483559803613016e+00 9.304281985087167e+03 + 125260 1.020135407597811e+00 -6.077616627112765e+00 -5.990570677023661e+00 3.299711864367779e+00 4.799543180096659e+00 9.188134902130823e+03 + 125280 1.017033711444334e+00 -6.072639379242898e+00 -5.997580891331034e+00 3.264485867545605e+00 4.695483320398994e+00 9.209630142787824e+03 + 125300 9.334179511375577e-01 -5.948253042581875e+00 -5.966552341864610e+00 3.963796687509261e+00 4.858719279220384e+00 9.114615330726987e+03 + 125320 9.058860074723356e-01 -5.901348477473810e+00 -5.977346601126740e+00 4.182145793788626e+00 4.745752807101876e+00 9.147620208418193e+03 + 125340 9.969748559260597e-01 -6.023679304978067e+00 -5.972364473337065e+00 3.531610201012202e+00 4.826267905239368e+00 9.132404713016220e+03 + 125360 1.019399090899083e+00 -6.038084402483618e+00 -5.983977605561650e+00 3.478992212776802e+00 4.789681813702503e+00 9.167898524722605e+03 + 125380 1.021204313199955e+00 -6.018694869106962e+00 -5.991709877059316e+00 3.524577285572696e+00 4.679529285824303e+00 9.191592185891910e+03 + 125400 1.020678966138177e+00 -5.992203331433706e+00 -5.985485527456626e+00 3.747795509648807e+00 4.786370179662010e+00 9.172534382346297e+03 + 125420 1.010008783453193e+00 -5.947399276831139e+00 -6.050860947927063e+00 3.932883690286187e+00 4.338790764211532e+00 9.373843300089120e+03 + 125440 1.032819688356014e+00 -5.953591307373817e+00 -6.010377769655819e+00 3.916280243548987e+00 4.590203589449096e+00 9.248935788927951e+03 + 125460 1.074902084524316e+00 -5.990833451741444e+00 -5.957315320917294e+00 3.768398976641438e+00 4.960865270747687e+00 9.086446492988905e+03 + 125480 1.005275171964690e+00 -5.866110938443020e+00 -5.982136296990879e+00 4.420558252208743e+00 4.754322688560730e+00 9.162238996476748e+03 + 125500 1.049949797720821e+00 -5.912236491142219e+00 -5.988790534852830e+00 4.165467891516865e+00 4.725882725830557e+00 9.182613481481767e+03 + 125520 1.104715253590872e+00 -5.978110731707037e+00 -5.963916961902010e+00 3.832359092507432e+00 4.913861915206676e+00 9.106590717220904e+03 + 125540 1.081219951477477e+00 -5.932915861529744e+00 -5.978391310868883e+00 4.033340786985500e+00 4.772213719577123e+00 9.150828536161065e+03 + 125560 1.125449605056190e+00 -5.994371130196797e+00 -5.982512581338344e+00 3.718565944572181e+00 4.786659567221920e+00 9.163442612158698e+03 + 125580 1.186859722586394e+00 -6.090245463854491e+00 -5.972034131094916e+00 3.250605832692587e+00 4.929393598542692e+00 9.131389094805774e+03 + 125600 1.089030982738752e+00 -5.966654218185574e+00 -5.953042013799531e+00 3.870078484751655e+00 4.948241868818132e+00 9.073419893048242e+03 + 125620 1.021760289215146e+00 -5.902926662882873e+00 -5.940733849132510e+00 4.298208269097231e+00 5.081113555008651e+00 9.035945284070145e+03 + 125640 9.814839150866710e-01 -5.890602316239514e+00 -6.006404073144687e+00 4.250573417226613e+00 4.585621808813147e+00 9.236703207687464e+03 + 125660 1.037999285731651e+00 -6.030189571014499e+00 -5.974356348561984e+00 3.495813959226532e+00 4.816416962712123e+00 9.138488249677981e+03 + 125680 9.551825152910183e-01 -5.955910624108537e+00 -6.015787080314421e+00 3.902512084783592e+00 4.558692207397754e+00 9.265557956963570e+03 + 125700 9.726033814613453e-01 -6.016619267354353e+00 -5.985594547207881e+00 3.668126561071123e+00 4.846275305212096e+00 9.172881075348039e+03 + 125720 9.612809916496031e-01 -6.023804764931121e+00 -6.003229598832850e+00 3.588012232139724e+00 4.706158019872658e+00 9.226967665019087e+03 + 125740 1.035401968684546e+00 -6.149883215440727e+00 -5.950738302799014e+00 2.952616301728645e+00 5.096137207693001e+00 9.066455655232156e+03 + 125760 9.649353471912662e-01 -6.053391189519150e+00 -5.973996083018763e+00 3.443889883487218e+00 4.899788871365461e+00 9.137397824933234e+03 + 125780 9.390474983605321e-01 -6.017327882993260e+00 -5.993801342882723e+00 3.585897771034212e+00 4.720990805069230e+00 9.198021575105910e+03 + 125800 9.785108910638471e-01 -6.072959022851851e+00 -5.947337630185425e+00 3.313492744208733e+00 5.034830220747041e+00 9.056090725482029e+03 + 125820 9.436669535441604e-01 -6.013132036656266e+00 -6.003920962435579e+00 3.615909017208641e+00 4.668800430792957e+00 9.229075876438075e+03 + 125840 9.482587096932599e-01 -6.007129100036054e+00 -5.989979227711098e+00 3.662046269045141e+00 4.760523489869206e+00 9.186316354784814e+03 + 125860 9.608120790887555e-01 -6.007309771785031e+00 -6.033845045947523e+00 3.660458576694837e+00 4.508088926133400e+00 9.321250922584622e+03 + 125880 1.018350163597864e+00 -6.073820972137367e+00 -6.006473957740585e+00 3.294557162955924e+00 4.681274141539036e+00 9.236943432412018e+03 + 125900 9.887924360269364e-01 -6.011385898950010e+00 -6.015235858326106e+00 3.622217342662047e+00 4.600110280145216e+00 9.263878179905709e+03 + 125920 9.958588218604185e-01 -6.000045963391152e+00 -6.032538400868099e+00 3.668695314184196e+00 4.482118710003114e+00 9.317214819757693e+03 + 125940 1.065802825809796e+00 -6.081570500397539e+00 -5.979047406536282e+00 3.326508442270408e+00 4.915211912619249e+00 9.152850110536961e+03 + 125960 1.008204571873245e+00 -5.975380145696531e+00 -6.008671419392223e+00 3.833189039726022e+00 4.642025394357403e+00 9.243704173636637e+03 + 125980 1.002355300696404e+00 -5.947749671457522e+00 -6.039418859522347e+00 3.961072296845161e+00 4.434693633215928e+00 9.338442867238595e+03 + 126000 1.070322939067579e+00 -6.031495657248195e+00 -6.032683663250703e+00 3.551750193020037e+00 4.544928478710301e+00 9.317648243762374e+03 + 126020 1.080540821625192e+00 -6.031968710078305e+00 -5.976036830003016e+00 3.538057200359063e+00 4.859226711181842e+00 9.143646342701066e+03 + 126040 1.010352284103060e+00 -5.916394084110444e+00 -6.004248273339613e+00 4.126222750883993e+00 4.621750400938265e+00 9.230102133719836e+03 + 126060 9.936189891005375e-01 -5.883883684128283e+00 -6.048498909692882e+00 4.305395074142660e+00 4.360148974826902e+00 9.366519176931442e+03 + 126080 1.040572889425446e+00 -5.946971350999720e+00 -6.006768369252994e+00 4.006187514753634e+00 4.662823782384669e+00 9.237827222109252e+03 + 126100 1.074011697448616e+00 -5.991784204491791e+00 -5.988283534928775e+00 3.784203114995481e+00 4.804304501353180e+00 9.181104552559425e+03 + 126120 1.043327721086999e+00 -5.945054482126311e+00 -6.012197421405385e+00 3.947580599792178e+00 4.562035452115465e+00 9.254534157933602e+03 + 126140 1.012668938038879e+00 -5.903243631195958e+00 -6.051307201084065e+00 4.162498004475371e+00 4.312294073414475e+00 9.375240182504233e+03 + 126160 1.002049525542144e+00 -5.900897944640656e+00 -6.060419254521289e+00 4.260980819061892e+00 4.344984771884372e+00 9.403451506939511e+03 + 126180 1.016228764659691e+00 -5.949080547754446e+00 -6.027708361957030e+00 3.935181150061737e+00 4.483688073295577e+00 9.302306393301245e+03 + 126200 9.509187055770033e-01 -5.882620165532265e+00 -6.018753728238430e+00 4.357023151209265e+00 4.575323167549727e+00 9.274682676843489e+03 + 126220 9.905810802037659e-01 -5.973778162934403e+00 -6.015128200951174e+00 3.819486748142676e+00 4.582048430952675e+00 9.263531149392687e+03 + 126240 1.005605625605479e+00 -6.028714346709177e+00 -6.026092277101925e+00 3.544752401062634e+00 4.559808730511438e+00 9.297333157722274e+03 + 126260 9.855504242150177e-01 -6.032575286364621e+00 -6.033084407069212e+00 3.501919481936280e+00 4.498996032064346e+00 9.318905572537606e+03 + 126280 9.937509334446325e-01 -6.074649752246600e+00 -5.998001638091472e+00 3.280258171833364e+00 4.720383504569437e+00 9.210915850892492e+03 + 126300 9.537760273899872e-01 -6.039142211896226e+00 -5.981865381401023e+00 3.515696297823333e+00 4.844588722087663e+00 9.161459614690737e+03 + 126320 9.197020517765120e-01 -6.004050984677195e+00 -5.999051742814778e+00 3.702824828180694e+00 4.731531248584871e+00 9.214132796782798e+03 + 126340 1.004366728210673e+00 -6.139408835534846e+00 -5.994898324300915e+00 2.967722293970978e+00 4.797524012405553e+00 9.201403897981107e+03 + 126360 8.977370940620636e-01 -5.986476439726847e+00 -6.023305647426478e+00 3.761502207369202e+00 4.550023197456446e+00 9.288754880927771e+03 + 126380 9.581579661004165e-01 -6.075697823099003e+00 -6.029091458639776e+00 3.253159530306156e+00 4.520780487342630e+00 9.306584482010676e+03 + 126400 9.624464653476996e-01 -6.077063210382438e+00 -6.024113985995219e+00 3.258913968945238e+00 4.562956609242648e+00 9.291237424314984e+03 + 126420 9.666972274368565e-01 -6.075285128439799e+00 -5.979160675062667e+00 3.292234596709955e+00 4.844196083212530e+00 9.153183733083746e+03 + 126440 9.257702313964982e-01 -5.998727766568924e+00 -5.978563604528541e+00 3.729071059227829e+00 4.844856798057696e+00 9.151365055620172e+03 + 126460 9.867738893445132e-01 -6.064142543476539e+00 -5.969523226111564e+00 3.368293054211472e+00 4.911611816813197e+00 9.123740907981231e+03 + 126480 1.014982861392889e+00 -6.073478191542316e+00 -5.992641700760260e+00 3.322167382758571e+00 4.786343022235656e+00 9.194492422247118e+03 + 126500 1.052503233619153e+00 -6.091795075750636e+00 -5.998669845250659e+00 3.268037918551459e+00 4.802777403165171e+00 9.212977867146185e+03 + 126520 9.732106957277720e-01 -5.940699960549144e+00 -6.042203034598334e+00 3.977345471274317e+00 4.394499112533927e+00 9.347064651271494e+03 + 126540 1.027188861095846e+00 -5.990617722013163e+00 -5.999985066710535e+00 3.757638494582419e+00 4.703849751738204e+00 9.217002700837736e+03 + 126560 1.003445895595316e+00 -5.929888103308469e+00 -5.998187642103611e+00 4.050191288272151e+00 4.658004767190979e+00 9.211466667628623e+03 + 126580 1.032442380135101e+00 -5.953391376722640e+00 -5.985992781631492e+00 3.912441165935438e+00 4.725238853897705e+00 9.174108841103156e+03 + 126600 1.041525910018534e+00 -5.951973384666887e+00 -6.047424941596542e+00 3.952105078046879e+00 4.404007467076109e+00 9.363204449572999e+03 + 126620 1.025861650244323e+00 -5.923388752323168e+00 -6.018902158208336e+00 4.053463979988038e+00 4.505011222743612e+00 9.275174320393746e+03 + 126640 1.071931169848964e+00 -5.990147089516754e+00 -6.008489231203121e+00 3.757589748224180e+00 4.652266332223813e+00 9.243124398802214e+03 + 126660 1.012097017604710e+00 -5.905990885039561e+00 -6.047271170209743e+00 4.200350739670460e+00 4.389097479169801e+00 9.362732538907863e+03 + 126680 1.051451057047113e+00 -5.974892065310292e+00 -6.001117808300541e+00 3.816702072754249e+00 4.666109798083628e+00 9.220469066878813e+03 + 126700 1.015475203316565e+00 -5.931852527227987e+00 -6.029616478590155e+00 4.049058814949927e+00 4.487683077305777e+00 9.308169303801764e+03 + 126720 9.985391090683801e-01 -5.918418609230604e+00 -6.067769588855175e+00 4.127167663191647e+00 4.269571226197960e+00 9.426245582270356e+03 + 126740 1.010381504880904e+00 -5.949519893748811e+00 -6.046887099837126e+00 3.974586169876065e+00 4.415488604990516e+00 9.361536864098702e+03 + 126760 9.877567096521568e-01 -5.928734124705440e+00 -6.023807014159334e+00 4.071555057335239e+00 4.525631813608887e+00 9.290273332465742e+03 + 126780 1.048494801770816e+00 -6.032740332262077e+00 -6.003277326571490e+00 3.477461238143713e+00 4.646642376204460e+00 9.227102706975897e+03 + 126800 1.029802673025638e+00 -6.018790550510474e+00 -5.969002894977253e+00 3.611901572839508e+00 4.897789995526057e+00 9.122118753151226e+03 + 126820 1.007661856281030e+00 -5.995929921436116e+00 -5.987858495783819e+00 3.748992844288883e+00 4.795340219433457e+00 9.179790478808596e+03 + 126840 9.994073434041534e-01 -5.991707206086002e+00 -5.990763289598833e+00 3.746613814806365e+00 4.752033929346297e+00 9.188714909451566e+03 + 126860 1.071852687540978e+00 -6.104624386163079e+00 -5.969122690991814e+00 3.125358512342136e+00 4.903430214835099e+00 9.122519369061189e+03 + 126880 1.020774821089471e+00 -6.033737110009005e+00 -6.006603928173111e+00 3.538201828214290e+00 4.694004757162313e+00 9.237309560236492e+03 + 126900 9.597981384505995e-01 -5.947105264013785e+00 -6.030672607714600e+00 3.992597164544192e+00 4.512740545009467e+00 9.311440407292059e+03 + 126920 1.057083226994604e+00 -6.095967897546941e+00 -5.970918347877355e+00 3.204514206793671e+00 4.922568072351704e+00 9.127996632826671e+03 + 126940 9.297765619612924e-01 -5.911640495032261e+00 -6.038843500697634e+00 4.126712680630426e+00 4.396293337498348e+00 9.336670990923150e+03 + 126960 9.852217117654888e-01 -5.997010517103025e+00 -6.012065876898925e+00 3.702565551546328e+00 4.616115345788876e+00 9.254105152751907e+03 + 126980 9.858341561308115e-01 -5.998067400448159e+00 -5.978723185418414e+00 3.676290832699344e+00 4.787368308907743e+00 9.151861772388538e+03 + 127000 9.879359794822126e-01 -5.998797942917931e+00 -6.049483424413829e+00 3.710157472443961e+00 4.419113594141603e+00 9.369552639916028e+03 + 127020 9.526110090733547e-01 -5.945157457546740e+00 -6.018552386325988e+00 4.091347230350085e+00 4.669902191471126e+00 9.274093726943685e+03 + 127040 9.767921039317932e-01 -5.979848179448197e+00 -5.980785234980231e+00 3.802734486050912e+00 4.797353768177099e+00 9.158153924167924e+03 + 127060 1.010681262935819e+00 -6.026158587143191e+00 -5.977507359766596e+00 3.600625769313951e+00 4.879988645663459e+00 9.148128117551991e+03 + 127080 1.007655219694128e+00 -6.015747926938898e+00 -6.003903675471872e+00 3.638861077890150e+00 4.706872602705804e+00 9.229058094347096e+03 + 127100 1.015822739429654e+00 -6.021706263918435e+00 -6.023601327861203e+00 3.581069271526913e+00 4.570187521107338e+00 9.289636362595553e+03 + 127120 1.039947431421970e+00 -6.049271525994542e+00 -5.970759876777067e+00 3.451904333093588e+00 4.902730372538782e+00 9.127501192303063e+03 + 127140 1.029450304533891e+00 -6.020426513565474e+00 -5.993070491502103e+00 3.565370362425317e+00 4.722452874443926e+00 9.195766604225701e+03 + 127160 9.595297056093001e-01 -5.897569930412183e+00 -6.011784697635629e+00 4.204698564292221e+00 4.548859696217086e+00 9.253227425875866e+03 + 127180 1.032471472195369e+00 -5.975520427184144e+00 -5.984893337520771e+00 3.870077576006935e+00 4.816256874400841e+00 9.170719129699613e+03 + 127200 1.027881685995342e+00 -5.930542404970062e+00 -6.019241770645679e+00 4.045388510713384e+00 4.536063026821515e+00 9.276214400387367e+03 + 127220 1.079888643148452e+00 -5.968161008773680e+00 -6.023747493244224e+00 3.835615470816537e+00 4.516429275005997e+00 9.290096495824264e+03 + 127240 1.007006080992803e+00 -5.829570705031059e+00 -6.068442222455127e+00 4.525750167750919e+00 4.154112949454063e+00 9.428330330049228e+03 + 127260 9.857639023709340e-01 -5.777230894464740e+00 -6.048993836220127e+00 4.861893092358580e+00 4.301388225619826e+00 9.368041759356160e+03 + 127280 1.085940612239046e+00 -5.912470231746411e+00 -6.048234340494655e+00 4.085440772268099e+00 4.305862250407753e+00 9.365705710476548e+03 + 127300 1.061257141174926e+00 -5.872014577333476e+00 -5.985480676800453e+00 4.414978259951712e+00 4.763438357990185e+00 9.172538210268684e+03 + 127320 1.100522132757640e+00 -5.934154242610391e+00 -6.028971446816051e+00 4.053640956774854e+00 4.509185897311023e+00 9.306204453506001e+03 + 127340 1.066597477286030e+00 -5.903687977244488e+00 -6.020895317185328e+00 4.187235301993772e+00 4.514212618276232e+00 9.281298674126341e+03 + 127360 1.087694465066298e+00 -5.964211575103045e+00 -5.990184570086203e+00 3.911291143294357e+00 4.762150186793080e+00 9.186907025657551e+03 + 127380 1.049356762687138e+00 -5.943295228145061e+00 -5.988686956621363e+00 3.992225530941398e+00 4.731579201683192e+00 9.182355369031997e+03 + 127400 9.725052840397832e-01 -5.867161045153154e+00 -6.042014372846904e+00 4.421300123752491e+00 4.417265257669968e+00 9.346442416527016e+03 + 127420 1.051022758899312e+00 -6.020963599377749e+00 -6.024090727246411e+00 3.575263977985044e+00 4.557307525841715e+00 9.291146796927440e+03 + 127440 1.007921520592668e+00 -5.990965013958167e+00 -6.026125361283382e+00 3.733654595173410e+00 4.531758439785862e+00 9.297453832424057e+03 + 127460 9.871330663387800e-01 -5.991136612016938e+00 -6.043495566398008e+00 3.692982856533308e+00 4.392329637955199e+00 9.351076381245724e+03 + 127480 1.037162025836960e+00 -6.090363892875780e+00 -5.987196418533715e+00 3.246428597155899e+00 4.838832199943097e+00 9.177794745736765e+03 + 127500 8.865150670664946e-01 -5.883536993723847e+00 -6.009084914183722e+00 4.362707444823544e+00 4.641791857065040e+00 9.244931359400351e+03 + 127520 1.003102155548931e+00 -6.064778683411097e+00 -5.963062459480788e+00 3.344528368702449e+00 4.928598667045066e+00 9.104001853516766e+03 + 127540 9.974974078522862e-01 -6.060364985122694e+00 -5.989770386140426e+00 3.349757030262414e+00 4.755122142097484e+00 9.185681802488753e+03 + 127560 9.545369493599074e-01 -5.999908842649927e+00 -5.975654016704667e+00 3.704504056497043e+00 4.843779020496914e+00 9.142464796739479e+03 + 127580 9.731547490642515e-01 -6.025163416753940e+00 -5.997567275081018e+00 3.543580969361009e+00 4.702042285336050e+00 9.209582768427324e+03 + 127600 1.035800585997533e+00 -6.114078271638102e+00 -5.964431027030997e+00 3.086288590286762e+00 4.945586226657023e+00 9.108190642618472e+03 + 127620 9.536787599374443e-01 -5.987459311570670e+00 -5.989096135218199e+00 3.779227336171892e+00 4.769828441490139e+00 9.183553554581349e+03 + 127640 9.587521051586863e-01 -5.986145643381080e+00 -5.989833155993152e+00 3.794784762527958e+00 4.773610494468714e+00 9.185826914571700e+03 + 127660 9.990134475016830e-01 -6.030932508174542e+00 -5.983635896308229e+00 3.532736784181894e+00 4.804321248645292e+00 9.166863053195304e+03 + 127680 1.011978521356086e+00 -6.032720736916890e+00 -5.952275479381816e+00 3.521235156445239e+00 4.983164274075005e+00 9.071109558019261e+03 + 127700 9.927662620928909e-01 -5.981674781346862e+00 -5.972265092542253e+00 3.809848225388653e+00 4.863880114649350e+00 9.132094187462446e+03 + 127720 1.042692533133877e+00 -6.029769082116383e+00 -5.980523989501355e+00 3.515083357926245e+00 4.797856300375188e+00 9.157355350970132e+03 + 127740 1.025884990650385e+00 -5.974929785046936e+00 -5.990635677287614e+00 3.862333233192249e+00 4.772147569467313e+00 9.188311577644314e+03 + 127760 1.005302005156088e+00 -5.911996567052520e+00 -6.005296968167061e+00 4.198609583528446e+00 4.662864242138345e+00 9.233260945505821e+03 + 127780 1.023770807705223e+00 -5.906453327680439e+00 -6.006862678030421e+00 4.222531347903925e+00 4.645965319897578e+00 9.238111329522006e+03 + 127800 1.082690144564573e+00 -5.959887744261756e+00 -5.980157452104243e+00 3.968822936936748e+00 4.852431137778039e+00 9.156205439297637e+03 + 127820 1.065286821440856e+00 -5.902278781020101e+00 -6.006421553767138e+00 4.206379941902524e+00 4.608376024747037e+00 9.236709429114058e+03 + 127840 1.037986464659272e+00 -5.834088254570290e+00 -6.015941441064063e+00 4.553313773678932e+00 4.509084635142023e+00 9.266011827084203e+03 + 127860 1.052751947384366e+00 -5.832699184527084e+00 -6.053215640459521e+00 4.572934037202550e+00 4.306694422427231e+00 9.381126935088652e+03 + 127880 1.146389685621485e+00 -5.953099524813645e+00 -6.054024597100646e+00 3.949559898478701e+00 4.370032515302280e+00 9.383622937091883e+03 + 127900 1.121928591464230e+00 -5.911772056053179e+00 -6.034429473481056e+00 4.196050506812249e+00 4.491732634767381e+00 9.323037140985296e+03 + 127920 1.109173562730930e+00 -5.905324783393100e+00 -6.016923231155616e+00 4.170321702591446e+00 4.529506145735102e+00 9.269041408721067e+03 + 127940 1.065335256081995e+00 -5.874855302430412e+00 -5.962661185509113e+00 4.313054934713614e+00 4.808859966159223e+00 9.102757922780882e+03 + 127960 1.068344447928427e+00 -5.937152803151026e+00 -5.981005008228821e+00 4.016268955939189e+00 4.764462808275689e+00 9.158780250916772e+03 + 127980 1.018759429566964e+00 -5.934803740719032e+00 -5.995192243726732e+00 4.027103396521558e+00 4.680343267160706e+00 9.202300047932895e+03 + 128000 9.387072094197848e-01 -5.876573989395136e+00 -6.047764247648476e+00 4.347974461675557e+00 4.364973507178033e+00 9.364247071835691e+03 + 128020 1.000451242637367e+00 -6.007812424870898e+00 -5.990631275921212e+00 3.685437974887076e+00 4.784094790930380e+00 9.188292406885394e+03 + 128040 1.032553655181270e+00 -6.083940746947192e+00 -6.005037701599145e+00 3.236978267604957e+00 4.690051764200253e+00 9.232526881566817e+03 + 128060 1.006423967350842e+00 -6.068702389053529e+00 -5.998745738701910e+00 3.291405172896365e+00 4.693107084972020e+00 9.213185230403278e+03 + 128080 9.289077634255066e-01 -5.971379357648027e+00 -5.943475598958027e+00 3.832082901012491e+00 4.992310601503171e+00 9.044313146059681e+03 + 128100 9.463319589579593e-01 -6.004990136312212e+00 -5.894829915301774e+00 3.691906639726086e+00 5.324463676007134e+00 8.897010192367785e+03 + 128120 9.798802837569099e-01 -6.054000389621859e+00 -5.955997861773470e+00 3.394062929827252e+00 4.956808610574867e+00 9.082464277852458e+03 + 128140 1.004070998564655e+00 -6.085740123895430e+00 -5.985691103719994e+00 3.225646955236049e+00 4.800143911619238e+00 9.173151844094180e+03 + 128160 9.925650330039432e-01 -6.062932006962921e+00 -5.943600078308990e+00 3.355262059210232e+00 5.040484460097380e+00 9.044715773936745e+03 + 128180 1.028158427389251e+00 -6.105286494714720e+00 -5.969786130840967e+00 3.126482140723247e+00 4.904546198699881e+00 9.124514958583961e+03 + 128200 9.595227390759470e-01 -5.987249614035392e+00 -6.002469492335815e+00 3.746147410172869e+00 4.658752513703281e+00 9.224619228767000e+03 + 128220 9.682999439818541e-01 -5.981636961125142e+00 -5.960532414900518e+00 3.803546487181629e+00 4.924732057521396e+00 9.096281726946736e+03 + 128240 8.647145057747702e-01 -5.805451555606286e+00 -6.071903273829191e+00 4.668911684370788e+00 4.138904685064735e+00 9.439089824538987e+03 + 128260 1.052106403536501e+00 -6.057350290796379e+00 -6.007578886570073e+00 3.376003633220704e+00 4.661798738388065e+00 9.240308026791652e+03 + 128280 9.954038855501277e-01 -5.948336843958561e+00 -5.988248245125536e+00 3.998431285850210e+00 4.769253844080068e+00 9.181005224641054e+03 + 128300 1.045287568301547e+00 -5.998746049165963e+00 -6.010804880863547e+00 3.681371373690255e+00 4.612127695984556e+00 9.250223248416178e+03 + 128320 1.047977424011754e+00 -5.979793056458488e+00 -6.013319276615354e+00 3.848339925452775e+00 4.655827181146247e+00 9.257980657188600e+03 + 128340 1.050073647864767e+00 -5.965802460527244e+00 -6.023159455791997e+00 3.857681368563514e+00 4.528328625786971e+00 9.288281828705563e+03 + 128360 1.051525452285047e+00 -5.956582164653073e+00 -6.013906338077664e+00 3.888414627054256e+00 4.559250352363084e+00 9.259798917355236e+03 + 128380 1.056110961703002e+00 -5.957188253962125e+00 -6.020845660736772e+00 3.919315357124751e+00 4.553784676472868e+00 9.281154634545570e+03 + 128400 1.045569647423122e+00 -5.940500875818298e+00 -6.001151609421267e+00 4.006312801738305e+00 4.658046903719362e+00 9.220570108375496e+03 + 128420 9.832475297539028e-01 -5.853449167501552e+00 -5.976994019070416e+00 4.522621067826034e+00 4.813207411613623e+00 9.146520316509967e+03 + 128440 1.097252497085282e+00 -6.031253649927362e+00 -5.990953372154626e+00 3.527456484757242e+00 4.758866916176120e+00 9.189276031103309e+03 + 128460 9.975150703572050e-01 -5.899287254841412e+00 -6.055128630205241e+00 4.225299938637596e+00 4.330434644923597e+00 9.387039326713433e+03 + 128480 1.068793385743430e+00 -6.035038015236009e+00 -6.011855602791601e+00 3.463604640439933e+00 4.596721640162452e+00 9.253471641181304e+03 + 128500 1.023290096933179e+00 -6.012896584697229e+00 -5.968015394406229e+00 3.640587989385077e+00 4.898302729377752e+00 9.119121095380660e+03 + 128520 9.439574297988668e-01 -5.947390848902583e+00 -6.003578142947180e+00 4.014217686441378e+00 4.691581549081646e+00 9.228024226228026e+03 + 128540 9.554439910681820e-01 -6.012856206422853e+00 -5.973999208016886e+00 3.654479685419697e+00 4.877602583367828e+00 9.137379718878901e+03 + 128560 9.475195204901365e-01 -6.035507830840991e+00 -5.958071488832198e+00 3.530763039655073e+00 4.975414498704756e+00 9.088771086038116e+03 + 128580 9.455431384238935e-01 -6.053308580034300e+00 -5.951835703882524e+00 3.478782508293704e+00 5.061455466034039e+00 9.069770334124851e+03 + 128600 9.656796039485217e-01 -6.093955981370375e+00 -5.976153046703790e+00 3.199370542212150e+00 4.875813223012907e+00 9.143998462795233e+03 + 128620 8.505157921866495e-01 -5.924542686665331e+00 -6.022015459557739e+00 4.099069739885319e+00 4.539365994074259e+00 9.284766717530827e+03 + 128640 9.698506302999883e-01 -6.096824070366317e+00 -5.992162803712375e+00 3.151378121021208e+00 4.752359310426812e+00 9.193013020229248e+03 + 128660 9.604679393152528e-01 -6.074121629584546e+00 -5.998404164414745e+00 3.307386846400697e+00 4.742168248645562e+00 9.212169762923990e+03 + 128680 9.879656359653279e-01 -6.102296028933983e+00 -5.979575573255415e+00 3.186310212308688e+00 4.890990059744163e+00 9.154467768829905e+03 + 128700 9.202843401766456e-01 -5.985519874063225e+00 -5.987468245535381e+00 3.799003659936934e+00 4.787815809434305e+00 9.178623681600811e+03 + 128720 9.851702106098040e-01 -6.061180316987536e+00 -5.999900703624086e+00 3.336730233537585e+00 4.688607256460033e+00 9.216758858808484e+03 + 128740 9.663434045177725e-01 -6.010018647814018e+00 -6.008139109325924e+00 3.667138418519277e+00 4.677931019375550e+00 9.242051055287788e+03 + 128760 1.015568734502812e+00 -6.060139969355067e+00 -5.975042096299700e+00 3.343338637162192e+00 4.831983793099406e+00 9.140587174674181e+03 + 128780 1.028875969339291e+00 -6.055912219203117e+00 -5.962299449734457e+00 3.402281514686474e+00 4.939820523504777e+00 9.101680644472521e+03 + 128800 9.757179717818161e-01 -5.955764500472258e+00 -6.002445331639901e+00 3.934223835951568e+00 4.666175279551684e+00 9.224551750772871e+03 + 128820 1.034385775352941e+00 -6.024761355050257e+00 -5.978302506480723e+00 3.569346660804829e+00 4.836120558774677e+00 9.150551930815616e+03 + 128840 1.060909702100942e+00 -6.048502449440511e+00 -5.993207740114505e+00 3.489202828814317e+00 4.806713606592860e+00 9.196198157205057e+03 + 128860 1.051692460075836e+00 -6.023960057677946e+00 -5.999768479243894e+00 3.581777562768899e+00 4.720689349771888e+00 9.216344939062039e+03 + 128880 1.033252329188637e+00 -5.990825881819732e+00 -6.004901333175344e+00 3.749818843053057e+00 4.668995423200078e+00 9.232108956426706e+03 + 128900 1.016075023949411e+00 -5.964010508843751e+00 -5.989342786176423e+00 3.904147360761310e+00 4.758685504159859e+00 9.184364900553275e+03 + 128920 1.058581716127306e+00 -6.027517033939924e+00 -5.968801569234006e+00 3.566802144033834e+00 4.903955428564015e+00 9.121493742782790e+03 + 128940 9.759260074279310e-01 -5.906978997447178e+00 -6.023036620597526e+00 4.211758278561425e+00 4.545337446572987e+00 9.287886643799811e+03 + 128960 1.002313103294546e+00 -5.949324937377976e+00 -6.010868823610426e+00 3.969503554832230e+00 4.616109036199888e+00 9.250437437293522e+03 + 128980 1.044345472213966e+00 -6.015296303033006e+00 -6.002338487918886e+00 3.605939565102536e+00 4.680345344703222e+00 9.224248971286674e+03 + 129000 1.048738092576143e+00 -6.029642180566197e+00 -6.003983459012173e+00 3.560149878972292e+00 4.707486228809825e+00 9.229286111759126e+03 + 129020 9.727673165620796e-01 -5.924350637877566e+00 -6.033033343283979e+00 4.136018309537236e+00 4.511945396499310e+00 9.318708532168152e+03 + 129040 9.502613736836092e-01 -5.897493625092650e+00 -6.014201873221145e+00 4.295142476440171e+00 4.624985655143328e+00 9.260673677525067e+03 + 129060 1.020526873253962e+00 -6.005610557264253e+00 -5.974632776850246e+00 3.695651274405251e+00 4.873530483338506e+00 9.139337899452343e+03 + 129080 1.055514338312259e+00 -6.062792128115350e+00 -5.977677433964948e+00 3.363235836459920e+00 4.851977581727880e+00 9.148658774957310e+03 + 129100 9.229781647320041e-01 -5.870502255378035e+00 -6.043581041663495e+00 4.345521513944307e+00 4.351676339237576e+00 9.351321695135710e+03 + 129120 1.079864516932587e+00 -6.106398734894460e+00 -5.960961931063164e+00 3.137425685932840e+00 4.972546319804795e+00 9.097611756743001e+03 + 129140 1.004987044183094e+00 -6.000315949639446e+00 -5.989135098041931e+00 3.689807385292234e+00 4.754009565396357e+00 9.183728962679308e+03 + 129160 9.770102792761569e-01 -5.964690788915311e+00 -5.986999528636860e+00 3.812539558485320e+00 4.684439322737872e+00 9.177173003940377e+03 + 129180 9.325572406222066e-01 -5.901570630066749e+00 -5.963911306831359e+00 4.203371107119482e+00 4.845401293948544e+00 9.106568023171707e+03 + 129200 9.545276732589868e-01 -5.932505892076356e+00 -6.005431489696488e+00 4.027427861623725e+00 4.608677794889163e+00 9.233709569360031e+03 + 129220 1.006893725446736e+00 -6.006635350703687e+00 -5.982182605496312e+00 3.666738613436068e+00 4.807150060466909e+00 9.162418746545918e+03 + 129240 1.015208461534815e+00 -6.016495962379730e+00 -5.986557432272103e+00 3.565955615928415e+00 4.737867288778974e+00 9.175823231988918e+03 + 129260 1.046717135637673e+00 -6.060911551639271e+00 -5.982163393657437e+00 3.335702222990688e+00 4.787886332360441e+00 9.162365551202738e+03 + 129280 1.010383501473100e+00 -6.006489009792996e+00 -6.007219433767167e+00 3.630877457038610e+00 4.626683249546176e+00 9.239207278051275e+03 + 129300 9.922836962293752e-01 -5.980550126982769e+00 -5.999212704896792e+00 3.799934805598405e+00 4.692771395191484e+00 9.214613255065758e+03 + 129320 9.694310687226775e-01 -5.944275016358281e+00 -6.005203863464919e+00 3.940275300135311e+00 4.590412431340381e+00 9.233049580482906e+03 + 129340 9.936257037949381e-01 -5.979255205618803e+00 -6.023645928117546e+00 3.775598105289140e+00 4.520699707259258e+00 9.289789670069071e+03 + 129360 1.020403333289133e+00 -6.020397623111294e+00 -6.004299511015038e+00 3.611446642070187e+00 4.703884492901686e+00 9.230240800264670e+03 + 129380 9.907142361799818e-01 -5.976940386754113e+00 -5.993869769594108e+00 3.910117175668594e+00 4.812906039587819e+00 9.198224491073790e+03 + 129400 9.946641828799671e-01 -5.982129936549329e+00 -6.015764973751194e+00 3.828466067948489e+00 4.635328479330197e+00 9.265514493055351e+03 + 129420 1.076064266214556e+00 -6.104942850561373e+00 -5.974908955661144e+00 3.130300397024480e+00 4.876975144221795e+00 9.140197338899059e+03 + 129440 9.823927067437052e-01 -5.969617214907251e+00 -6.056125175198895e+00 3.841662923628983e+00 4.344920828570769e+00 9.390141258505906e+03 + 129460 1.017941905181488e+00 -6.032328517798633e+00 -6.009777050574376e+00 3.551141436801058e+00 4.680635451431013e+00 9.247097204924296e+03 + 129480 9.959151026773121e-01 -6.017031689896564e+00 -5.965013669014875e+00 3.657591933963023e+00 4.956287459628402e+00 9.109952269142183e+03 + 129500 9.731663921552207e-01 -6.005612391473320e+00 -5.959352128450965e+00 3.766084916384413e+00 5.031718505411341e+00 9.092660077333405e+03 + 129520 9.029051394701073e-01 -5.921803349507596e+00 -5.987880792580370e+00 4.104547826342279e+00 4.725120922767144e+00 9.179875883815697e+03 + 129540 9.482890567362423e-01 -6.007096064932270e+00 -5.997172603792926e+00 3.629739434826967e+00 4.686721484339730e+00 9.208376762257290e+03 + 129560 9.600456959124766e-01 -6.040016487476182e+00 -5.998349599527732e+00 3.532384700877478e+00 4.771642419407552e+00 9.211972781171287e+03 + 129580 9.776220570354500e-01 -6.078498325142204e+00 -6.017523136257008e+00 3.353626463205465e+00 4.703755433664247e+00 9.270918140923710e+03 + 129600 9.034900101022930e-01 -5.978232854312960e+00 -6.023802624344478e+00 3.839109305385481e+00 4.577440633965381e+00 9.290248271526114e+03 + 129620 9.562344850865300e-01 -6.061728257677846e+00 -5.939708780447196e+00 3.421550797603354e+00 5.122205518314823e+00 9.032907197370518e+03 + 129640 9.033621199933575e-01 -5.979869879511972e+00 -6.000276395162891e+00 3.872268246494183e+00 4.755090875728511e+00 9.217881766406143e+03 + 129660 1.052373973756105e+00 -6.191384891903369e+00 -5.959566991643456e+00 2.730620287546738e+00 5.061754544543286e+00 9.093358300320138e+03 + 129680 9.616629357566057e-01 -6.045040165367610e+00 -5.981283359414459e+00 3.456166720132436e+00 4.822268166249258e+00 9.159676365739697e+03 + 129700 9.695868950169850e-01 -6.039252332060416e+00 -5.969990815929365e+00 3.506734683317018e+00 4.904445027126493e+00 9.125157130010992e+03 + 129720 1.009120616043809e+00 -6.072515418737348e+00 -5.991060227056860e+00 3.331208982160830e+00 4.798937297940367e+00 9.189630841143100e+03 + 129740 1.006173006029847e+00 -6.040854511393437e+00 -6.020959441523466e+00 3.400343853638968e+00 4.514584423584457e+00 9.281498872566202e+03 + 129760 1.046404590331147e+00 -6.070650586562063e+00 -5.998378947755061e+00 3.283852827703206e+00 4.698847761732974e+00 9.212086736764017e+03 + 129780 9.883877901615780e-01 -5.957045006032190e+00 -6.032444945101710e+00 3.905387073796957e+00 4.472428955556914e+00 9.316908322713509e+03 + 129800 1.003533052271296e+00 -5.955618091562554e+00 -6.000273726777280e+00 3.881459348858640e+00 4.625039781018470e+00 9.217897549190282e+03 + 129820 9.832070289474178e-01 -5.903764182484596e+00 -5.971649966342071e+00 4.242272837326565e+00 4.852462161125843e+00 9.130213332301517e+03 + 129840 1.010187188159006e+00 -5.923893870619227e+00 -5.971393107398547e+00 4.135025048305565e+00 4.862277080235575e+00 9.129419611066607e+03 + 129860 1.013614863634049e+00 -5.910417592514338e+00 -5.991697745171674e+00 4.254859324924979e+00 4.788136110303586e+00 9.191565130420984e+03 + 129880 1.067925335110951e+00 -5.976313005616007e+00 -6.075367340785015e+00 3.760066930175666e+00 4.191281609026396e+00 9.449857056188530e+03 + 129900 1.117967033321007e+00 -6.046554551978498e+00 -5.983880714234401e+00 3.414203909916396e+00 4.774086784988046e+00 9.167642150304247e+03 + 129920 1.005401900635174e+00 -5.882831416601722e+00 -5.978893197357828e+00 4.393403178479215e+00 4.841801567865128e+00 9.152331031994041e+03 + 129940 1.010753057391384e+00 -5.895054613244981e+00 -6.015282077484189e+00 4.228494083010274e+00 4.538129378208779e+00 9.263995717515687e+03 + 129960 1.093399613155166e+00 -6.025124407169180e+00 -6.023069244013273e+00 3.538907412855640e+00 4.550708477732329e+00 9.287986099360787e+03 + 129980 1.009150668472008e+00 -5.919702858404034e+00 -5.998578261076164e+00 4.166678067422347e+00 4.713763299349867e+00 9.212680768841359e+03 + 130000 1.037751547993773e+00 -5.992110109889762e+00 -6.009552526758010e+00 3.770345127426452e+00 4.670188070563684e+00 9.246374161426193e+03 + 130020 9.908145180159973e-01 -5.963389106192283e+00 -5.970904010438749e+00 3.949870438530954e+00 4.906718695420067e+00 9.127933531448667e+03 + 130040 9.280155673539134e-01 -5.917251256727734e+00 -5.992916074230699e+00 4.137286513966719e+00 4.702807422772028e+00 9.195297499187283e+03 + 130060 9.595524704139696e-01 -6.010133675779773e+00 -6.010161600911466e+00 3.614478586075526e+00 4.614318235647945e+00 9.248201819458518e+03 + 130080 9.314203886347654e-01 -6.005599831183238e+00 -6.041816938093032e+00 3.600835918355036e+00 4.392871685899816e+00 9.345861501453346e+03 + 130100 9.517344424367696e-01 -6.062809667729904e+00 -5.973967359265375e+00 3.355062546495795e+00 4.865208830001926e+00 9.137330379887740e+03 + 130120 8.813290888018622e-01 -5.972700300468483e+00 -6.024697729710567e+00 3.817509323701857e+00 4.518932038417640e+00 9.293006708426925e+03 + 130140 1.033412690909530e+00 -6.204167456474518e+00 -5.937667491788797e+00 2.639062937546925e+00 5.169346975508583e+00 9.026710583435230e+03 + 130160 9.582197545886285e-01 -6.091905911710287e+00 -5.967676985779068e+00 3.157458047688994e+00 4.870799764750204e+00 9.118103773112454e+03 + 130180 8.632549572159915e-01 -5.943696291556827e+00 -5.999447959981097e+00 3.968616885561908e+00 4.648482177926941e+00 9.215338450618285e+03 + 130200 1.013752135444461e+00 -6.153646426214869e+00 -5.967040219925130e+00 2.878883730670323e+00 4.950405444403106e+00 9.116154243543957e+03 + 130220 9.612794038489771e-01 -6.061639873288725e+00 -5.963935317415885e+00 3.371638577316571e+00 4.932673256869575e+00 9.106645607708262e+03 + 130240 9.239330646508690e-01 -5.988488246858412e+00 -5.973162002563834e+00 3.723997271473501e+00 4.812002937941611e+00 9.134840893456889e+03 + 130260 9.710014946844866e-01 -6.036736936302495e+00 -6.000051202350139e+00 3.468767235512081e+00 4.679422396965490e+00 9.217213491892917e+03 + 130280 9.743768838340293e-01 -6.020368948625114e+00 -6.036476538172151e+00 3.531478065859158e+00 4.438985794038647e+00 9.329391992365876e+03 + 130300 9.279046530605765e-01 -5.933439282487546e+00 -6.017622512484666e+00 4.046722058525956e+00 4.563328924569759e+00 9.271217885321294e+03 + 130320 1.018396314722176e+00 -6.048873719129234e+00 -5.988657926507931e+00 3.379420993875897e+00 4.725189393471213e+00 9.182280662231853e+03 + 130340 1.047347152683664e+00 -6.074403459039202e+00 -5.940334266318025e+00 3.313904845048186e+00 5.083750896793706e+00 9.034791519423512e+03 + 130360 9.485508560498295e-01 -5.910397020820428e+00 -6.051217172546302e+00 4.158477263490039e+00 4.349866160432021e+00 9.374933608940177e+03 + 130380 1.069775604446337e+00 -6.075299827264171e+00 -5.985059801567441e+00 3.355384050684886e+00 4.873556242834353e+00 9.171247966702915e+03 + 130400 9.606198868153359e-01 -5.902847464718493e+00 -6.015385317223734e+00 4.185904485691843e+00 4.539694721430360e+00 9.264336105971588e+03 + 130420 1.002803889277898e+00 -5.958516965497759e+00 -5.966661317655273e+00 3.885574351828278e+00 4.838808221405405e+00 9.114995915702782e+03 + 130440 9.822701979978311e-01 -5.921607600915568e+00 -5.993168748091777e+00 4.144306707036171e+00 4.733391525898644e+00 9.196001144659876e+03 + 130460 9.891693959316625e-01 -5.924901303532156e+00 -5.981960606810342e+00 4.146202828905038e+00 4.818559479583048e+00 9.161704090523775e+03 + 130480 9.808002622514090e-01 -5.906011284052338e+00 -5.979751610289825e+00 4.161662736705834e+00 4.738234372171575e+00 9.154967991838661e+03 + 130500 9.892647259064381e-01 -5.911841127004600e+00 -6.003225121047725e+00 4.156213417315598e+00 4.631472381892598e+00 9.226961854874482e+03 + 130520 1.142076245454957e+00 -6.134164498241263e+00 -6.006113986570374e+00 2.959248364311468e+00 4.694534218078349e+00 9.235848541561476e+03 + 130540 1.007313198739957e+00 -5.938236094929297e+00 -6.020044121234127e+00 3.999470327844580e+00 4.529715981051088e+00 9.278698740380993e+03 + 130560 9.857476702324003e-01 -5.916242687883362e+00 -6.003884296458702e+00 4.119824482261775e+00 4.616572803327076e+00 9.228953761291472e+03 + 130580 1.069192919484169e+00 -6.054065597455280e+00 -5.942416334624140e+00 3.441551813059276e+00 5.082659157903265e+00 9.041101041490014e+03 + 130600 1.040974700502877e+00 -6.034759215719706e+00 -5.962142455425467e+00 3.526301293488378e+00 4.943277968505236e+00 9.101201862531399e+03 + 130620 1.045799231330264e+00 -6.081023764086412e+00 -5.977143752890905e+00 3.226442500187407e+00 4.822937599851789e+00 9.147024541023015e+03 + 130640 9.304060353517893e-01 -5.966932838631656e+00 -6.028648823922307e+00 3.865453756780490e+00 4.511071018723718e+00 9.305173647295003e+03 + 130660 8.550211192301715e-01 -5.909412888423455e+00 -6.010028320260917e+00 4.163961333099687e+00 4.586211953301222e+00 9.247785990933997e+03 + 130680 9.262755517295742e-01 -6.053803198453267e+00 -5.926903075509967e+00 3.428762114986681e+00 5.157442258657669e+00 8.994004034778938e+03 + 130700 9.354913654966395e-01 -6.089392531243090e+00 -5.931575679845718e+00 3.251121289560703e+00 5.157330072363235e+00 9.008192084560962e+03 + 130720 9.722619306150498e-01 -6.154287362840794e+00 -5.940171820469064e+00 2.887360183935924e+00 5.116844762507495e+00 9.034306822792556e+03 + 130740 9.423412200013547e-01 -6.111743270916906e+00 -5.992542425097653e+00 3.059791105448741e+00 4.744260808414170e+00 9.194186470369792e+03 + 130760 9.659805696672976e-01 -6.142265180158485e+00 -5.952509813387426e+00 2.927528771105917e+00 5.017133451653443e+00 9.071830954138479e+03 + 130780 9.121436220960939e-01 -6.050412802404012e+00 -5.976736273749574e+00 3.453742208852684e+00 4.876804237792429e+00 9.145751706947749e+03 + 130800 9.414142955578697e-01 -6.072396093511701e+00 -6.007273627473042e+00 3.290954133774420e+00 4.664897411437448e+00 9.239401964831506e+03 + 130820 9.889452751547436e-01 -6.115165001573543e+00 -6.012108747558173e+00 3.047350127117402e+00 4.639115085577424e+00 9.254261314994992e+03 + 130840 9.766422297006558e-01 -6.067513788862502e+00 -5.950258765151728e+00 3.424944083845583e+00 5.098240575149127e+00 9.064961659876841e+03 + 130860 9.667361955223737e-01 -6.021008990835047e+00 -5.946726516335534e+00 3.592644043008533e+00 5.019185506760513e+00 9.054215409885062e+03 + 130880 9.688117497582549e-01 -5.989193093281153e+00 -6.022877994566516e+00 3.712402473748630e+00 4.518978557846452e+00 9.287405288106858e+03 + 130900 1.046459896835408e+00 -6.076140588835923e+00 -5.987113254923373e+00 3.247110466957905e+00 4.758319195219165e+00 9.177543766486402e+03 + 130920 1.001241489815685e+00 -5.989045455665241e+00 -5.968776205861732e+00 3.770247258697248e+00 4.886636427725263e+00 9.121412079303464e+03 + 130940 1.015102110166460e+00 -5.992534699109218e+00 -5.949756933957074e+00 3.769193566819293e+00 5.014830114160667e+00 9.063413737140219e+03 + 130960 9.895406944753474e-01 -5.938949854768244e+00 -6.001256413191301e+00 3.982812723351691e+00 4.625038822977740e+00 9.220875819324372e+03 + 130980 1.024924967857476e+00 -5.980513514908746e+00 -5.999532966668895e+00 3.824700254427073e+00 4.715487619169647e+00 9.215604102110889e+03 + 131000 9.929163763065123e-01 -5.926794761807104e+00 -5.997169610423101e+00 4.098320438248973e+00 4.694217167023292e+00 9.208328024754333e+03 + 131020 9.863343497304644e-01 -5.912742605038970e+00 -5.978251132230994e+00 4.157213581423814e+00 4.781053480875389e+00 9.150373700035954e+03 + 131040 1.026502958096067e+00 -5.967305256129757e+00 -6.027907334722565e+00 3.836388092233951e+00 4.488401578812697e+00 9.302917269914193e+03 + 131060 1.048728847154973e+00 -6.001265657101656e+00 -6.024028623973661e+00 3.697615969164134e+00 4.566907490827341e+00 9.290940025232332e+03 + 131080 9.889393355206663e-01 -5.916955856332093e+00 -6.027425685694053e+00 4.106189286219957e+00 4.471854430872741e+00 9.301412968914718e+03 + 131100 1.037865634614798e+00 -5.996542675796617e+00 -5.980228381991186e+00 3.702519611123512e+00 4.796198810783103e+00 9.156423992949243e+03 + 131120 1.011618693635208e+00 -5.967221218051940e+00 -5.974245703828467e+00 3.924061195994286e+00 4.883725511629811e+00 9.138087361382166e+03 + 131140 1.017253049302407e+00 -5.986517651424045e+00 -5.948268421049749e+00 3.777779408601776e+00 4.997412408460251e+00 9.058924788909679e+03 + 131160 9.906888968076047e-01 -5.959679220404807e+00 -5.983547071829328e+00 3.897478719481563e+00 4.760425823063891e+00 9.166615315697958e+03 + 131180 9.861525112325507e-01 -5.968643110620259e+00 -6.001685332156196e+00 3.822142440107700e+00 4.632408890781095e+00 9.222200612043398e+03 + 131200 1.010150883399419e+00 -6.025241010784542e+00 -5.978735826122769e+00 3.572012249211560e+00 4.839052216193533e+00 9.151898345215264e+03 + 131220 9.634617858393478e-01 -5.984821763032730e+00 -6.017442792059971e+00 3.728999726099529e+00 4.541684729337179e+00 9.270669775951050e+03 + 131240 9.320903174748767e-01 -5.974629355676563e+00 -6.000781176958316e+00 3.879240122827778e+00 4.729072318046684e+00 9.219415154012926e+03 + 131260 9.596288892019618e-01 -6.059521589906135e+00 -5.986798750884664e+00 3.336896738437006e+00 4.754482533921259e+00 9.176571474889493e+03 + 131280 9.294171967612899e-01 -6.057506572535013e+00 -5.957698384004682e+00 3.422803160593937e+00 4.995917224402358e+00 9.087648543448455e+03 + 131300 9.368816737505392e-01 -6.101624095436714e+00 -5.958225120938673e+00 3.197086444157960e+00 5.020505546645293e+00 9.089262942157644e+03 + 131320 9.081809979090329e-01 -6.083203468796682e+00 -5.978506973984281e+00 3.252938344002955e+00 4.854121818945969e+00 9.151208929746004e+03 + 131340 9.140272377536326e-01 -6.105442739682275e+00 -5.952867864457081e+00 3.153928646885507e+00 5.030037191314197e+00 9.072929480964880e+03 + 131360 9.299782707210749e-01 -6.130074877849971e+00 -5.991326764342759e+00 2.939790434936322e+00 4.736503573895909e+00 9.190430008882078e+03 + 131380 9.292113359768130e-01 -6.120717577154668e+00 -5.951982823932367e+00 3.062532384021016e+00 5.031433448642144e+00 9.070246205063650e+03 + 131400 9.349050247908286e-01 -6.113052788629876e+00 -5.950550616089913e+00 3.103484355982219e+00 5.036596977836615e+00 9.065877646211531e+03 + 131420 8.944669324281120e-01 -6.029789336002717e+00 -5.991800640952964e+00 3.466551196806023e+00 4.684688162513266e+00 9.191871498008848e+03 + 131440 9.490785488211793e-01 -6.081372453595723e+00 -6.006901960210344e+00 3.254568527731753e+00 4.682189625022205e+00 9.238238950854175e+03 + 131460 9.441050074310288e-01 -6.040035811745318e+00 -5.988798056465310e+00 3.503967332268256e+00 4.798182452103064e+00 9.182710197619665e+03 + 131480 9.749943669524669e-01 -6.057908060253988e+00 -5.993426248170112e+00 3.376102544417253e+00 4.746367087931038e+00 9.196863186049690e+03 + 131500 9.480390910346277e-01 -5.994460582188390e+00 -6.043368852780913e+00 3.668339467528291e+00 4.387500609255614e+00 9.350630778454890e+03 + 131520 9.936554483390485e-01 -6.046281577999659e+00 -5.975775925999860e+00 3.455411305914447e+00 4.860265670411684e+00 9.142843783513661e+03 + 131540 9.974825880941089e-01 -6.038992918219156e+00 -5.986541282890313e+00 3.499324859726110e+00 4.800510266648666e+00 9.175788028419514e+03 + 131560 9.650634451688612e-01 -5.980158139206812e+00 -6.006599884049781e+00 3.826482366919605e+00 4.674649776184486e+00 9.237336502890559e+03 + 131580 9.844847597104974e-01 -5.998758182610353e+00 -6.020253187343963e+00 3.733795230133574e+00 4.610367586611955e+00 9.279309162893407e+03 + 131600 9.799845160853959e-01 -5.982355256986222e+00 -5.992591675016119e+00 3.816435554686437e+00 4.757656458278200e+00 9.194285020398986e+03 + 131620 1.074841989902992e+00 -6.111719734982337e+00 -5.990156589158974e+00 3.058032333011454e+00 4.756066728165226e+00 9.186841134894026e+03 + 131640 1.021566653898261e+00 -6.023496184101069e+00 -5.993923254252505e+00 3.577783793828215e+00 4.747596133414774e+00 9.198411150782498e+03 + 131660 9.988572878305120e-01 -5.982151115710368e+00 -6.021800198779461e+00 3.881532872872973e+00 4.653861702214468e+00 9.284075450314220e+03 + 131680 9.542998200077226e-01 -5.909095586032468e+00 -6.033044022740478e+00 4.195608689986646e+00 4.483877585450658e+00 9.318768752115076e+03 + 131700 9.948097351992861e-01 -5.963174628537422e+00 -6.008388483880959e+00 3.897634048252030e+00 4.638009094047936e+00 9.242816096675942e+03 + 131720 1.075774746962939e+00 -6.075864832384100e+00 -5.988895039556573e+00 3.294036738213971e+00 4.793430747161572e+00 9.182982886669404e+03 + 131740 1.026925605605125e+00 -5.998468945904522e+00 -5.987007033044060e+00 3.690584499054940e+00 4.756400576424991e+00 9.177231476320199e+03 + 131760 9.645541551530786e-01 -5.902902799090524e+00 -6.024738732508280e+00 4.184743427848777e+00 4.485142644114258e+00 9.293142928399158e+03 + 131780 1.037863459748161e+00 -6.008605433160512e+00 -6.008056798237897e+00 3.598390864015848e+00 4.601541210642486e+00 9.241789888565552e+03 + 131800 1.011416269782353e+00 -5.967293489743165e+00 -6.059025524296016e+00 3.822058748004886e+00 4.295319210115950e+00 9.399148034215455e+03 + 131820 1.045796583306019e+00 -6.020139756320925e+00 -6.039961113370834e+00 3.601762412770950e+00 4.487945113245279e+00 9.340151835226810e+03 + 131840 1.051363344620901e+00 -6.039196307859006e+00 -5.990917538023098e+00 3.460445651992833e+00 4.737669819506110e+00 9.189210823942260e+03 + 131860 9.516715597445816e-01 -5.904967216667557e+00 -6.065313356850689e+00 4.130147895400962e+00 4.209415544984414e+00 9.418622800076517e+03 + 131880 9.902121535581838e-01 -5.980996661991100e+00 -6.050556673666457e+00 3.764238278315116e+00 4.364813926898200e+00 9.372906231824405e+03 + 131900 9.992305102776153e-01 -6.021816236990613e+00 -5.988479971077663e+00 3.600440377003318e+00 4.791862374645959e+00 9.181737095208926e+03 + 131920 9.327371018627784e-01 -5.952708545753907e+00 -6.005590371468488e+00 3.971055616467836e+00 4.667399989778635e+00 9.234191892896813e+03 + 131940 1.032300505622860e+00 -6.128504056250518e+00 -5.946579398961126e+00 3.000283671674647e+00 5.044923206580066e+00 9.053791157802332e+03 + 131960 9.374364038543318e-01 -6.014774148843005e+00 -6.009737451162145e+00 3.609257693002378e+00 4.638179190512319e+00 9.246970149427940e+03 + 131980 9.129694426202657e-01 -6.000902233426792e+00 -6.005901240877793e+00 3.709424754795825e+00 4.680719680418271e+00 9.235175153588976e+03 + 132000 9.347293138641727e-01 -6.049746180086279e+00 -5.997036926212532e+00 3.437882529116709e+00 4.740547221590439e+00 9.207964693286849e+03 + 132020 1.007661819316109e+00 -6.170508154556785e+00 -5.956316367553574e+00 2.804409132700806e+00 5.034331519745159e+00 9.083459269847934e+03 + 132040 9.039688068028412e-01 -6.023529920764026e+00 -5.962135497007073e+00 3.599759514843564e+00 4.952295796812361e+00 9.101189557782816e+03 + 132060 9.400815177663824e-01 -6.074949342272023e+00 -5.972214207283267e+00 3.300029016741138e+00 4.889950060057336e+00 9.131939973745764e+03 + 132080 9.231809280595583e-01 -6.040181642798435e+00 -5.972836175167368e+00 3.444837087314707e+00 4.831545184129729e+00 9.133849333610633e+03 + 132100 9.695647251093127e-01 -6.089113839505469e+00 -5.952054161621563e+00 3.300871198579139e+00 5.087889078905132e+00 9.070430979363424e+03 + 132120 9.525130223641367e-01 -6.033570486809437e+00 -5.965448935213486e+00 3.522655227181482e+00 4.913819718221480e+00 9.111273689621772e+03 + 132140 9.771733932976668e-01 -6.027928095293650e+00 -6.002414123585487e+00 3.543863643345686e+00 4.690368817168316e+00 9.224442063120772e+03 + 132160 1.003578404677515e+00 -6.018580521538330e+00 -5.999421722668743e+00 3.570508556747712e+00 4.680521344671424e+00 9.215274792354157e+03 + 132180 1.011293119525269e+00 -5.986060594329639e+00 -6.021136768733252e+00 3.812304777450680e+00 4.610891956004686e+00 9.282042377343676e+03 + 132200 1.018135932628273e+00 -5.964094403222354e+00 -6.008527813606719e+00 3.863956697252700e+00 4.608813178777639e+00 9.243244327161114e+03 + 132220 1.063043309216911e+00 -6.011348753054513e+00 -5.988758609997705e+00 3.617856279972256e+00 4.747572377217785e+00 9.182575410881669e+03 + 132240 9.898005315034716e-01 -5.892438065206695e+00 -6.005795544835182e+00 4.265478755394578e+00 4.614562565354528e+00 9.234846334763384e+03 + 132260 1.044542916627904e+00 -5.968052329680044e+00 -5.970768013412160e+00 3.916196396641733e+00 4.900602520401227e+00 9.127497522490574e+03 + 132280 1.031013434802440e+00 -5.945085978811416e+00 -5.997198483695152e+00 3.985447837981947e+00 4.686209770555469e+00 9.208462015954326e+03 + 132300 1.093292219793546e+00 -6.039578747751402e+00 -5.971120346051375e+00 3.501366907392073e+00 4.894465643857054e+00 9.128611770211861e+03 + 132320 1.046878657813880e+00 -5.975744318052128e+00 -6.047352546606565e+00 3.831975036690973e+00 4.420789506993841e+00 9.362977908327457e+03 + 132340 1.017586913122717e+00 -5.944015916946937e+00 -6.089664932376402e+00 3.949621473696559e+00 4.113282287988282e+00 9.494357606616781e+03 + 132360 1.077201681012495e+00 -6.051323862438799e+00 -6.038255942188954e+00 3.393033173111758e+00 4.468071193440498e+00 9.334867023567695e+03 + 132380 9.798402200486902e-01 -5.930065130377508e+00 -6.014772151093011e+00 4.081213180798415e+00 4.594812359480906e+00 9.262440318157855e+03 + 132400 9.264576628612249e-01 -5.872373371951564e+00 -6.019868955074758e+00 4.374576035414259e+00 4.527633572253163e+00 9.278114457341262e+03 + 132420 1.017043944967979e+00 -6.026827155223682e+00 -6.020814255898976e+00 3.534211269140794e+00 4.568738267556419e+00 9.281069693823008e+03 + 132440 9.744611570973639e-01 -5.986325542135468e+00 -6.019297335435391e+00 3.771415403647459e+00 4.582086264150774e+00 9.276389218091392e+03 + 132460 9.682602421343692e-01 -5.996289221156561e+00 -5.968907980358157e+00 3.694306785428529e+00 4.851534107326282e+00 9.121853924028270e+03 + 132480 9.290149427906982e-01 -5.951414015927163e+00 -5.989759699909190e+00 3.971470330390357e+00 4.751283478990146e+00 9.185618583848838e+03 + 132500 9.888872647459694e-01 -6.051015779978992e+00 -5.984123752859995e+00 3.409912001318687e+00 4.794016372543711e+00 9.168368044482755e+03 + 132520 9.509488262933156e-01 -6.002694231811184e+00 -6.026368524944291e+00 3.636586312049884e+00 4.500644857294562e+00 9.298153432449239e+03 + 132540 9.560836947895920e-01 -6.014968944158200e+00 -5.990599159592692e+00 3.591779910691897e+00 4.731714984879019e+00 9.188226574017381e+03 + 132560 9.528414488255458e-01 -6.012013598426408e+00 -6.007363953044258e+00 3.661434986962404e+00 4.688133970277003e+00 9.239653722245464e+03 + 132580 9.358202002294473e-01 -5.985933302024173e+00 -6.017846781099994e+00 3.751494129074389e+00 4.568241993626100e+00 9.271917645942476e+03 + 132600 1.035282204292405e+00 -6.126375735626592e+00 -6.012820510653172e+00 3.005837121236166e+00 4.657888795647819e+00 9.256465769006414e+03 + 132620 9.897186654287189e-01 -6.046423895200101e+00 -5.965635748422404e+00 3.471295682838554e+00 4.935193723561401e+00 9.111860235476490e+03 + 132640 9.460957873826957e-01 -5.959603211254621e+00 -5.931301408366930e+00 3.926473541534465e+00 5.088986873405432e+00 9.007311335197883e+03 + 132660 9.550922147091240e-01 -5.932103677076007e+00 -5.990916435454871e+00 4.073721288275228e+00 4.736009328418851e+00 9.189105119089043e+03 + 132680 1.057332381040988e+00 -6.029300428746118e+00 -5.984547270704942e+00 3.523129168061642e+00 4.780108727062897e+00 9.169670575962644e+03 + 132700 1.067428882361025e+00 -5.994401644400253e+00 -6.009808063705728e+00 3.681934031867175e+00 4.593467988079456e+00 9.247193871405367e+03 + 132720 9.690843264902743e-01 -5.812274099455540e+00 -6.073705480512018e+00 4.661964521319256e+00 4.160785074917491e+00 9.444662645450529e+03 + 132740 1.087629623995797e+00 -5.962921465309778e+00 -5.986631454330087e+00 3.884913297521206e+00 4.748766871457644e+00 9.176051633925643e+03 + 132760 1.111538498502393e+00 -5.980405898243865e+00 -5.962965163390331e+00 3.786848249351743e+00 4.886995647825734e+00 9.103704079814637e+03 + 132780 1.012368286894607e+00 -5.826084043493803e+00 -6.029442503510468e+00 4.646848129988535e+00 4.479132382952860e+00 9.307593175990376e+03 + 132800 1.052117824663129e+00 -5.884539865298575e+00 -5.985633371522004e+00 4.380535862563187e+00 4.800041305658727e+00 9.172969541470107e+03 + 132820 1.058025069890496e+00 -5.900839605791115e+00 -6.046345869225844e+00 4.218263317521907e+00 4.382743835858201e+00 9.359831194970886e+03 + 132840 9.892617036796453e-01 -5.813619731926292e+00 -5.998418422667670e+00 4.687533571612733e+00 4.626390891870774e+00 9.212176087127535e+03 + 132860 1.103436888433949e+00 -6.003410801104486e+00 -5.963770713611007e+00 3.704209041982881e+00 4.931828558654155e+00 9.106161718214880e+03 + 132880 1.118458240786627e+00 -6.054642404660227e+00 -5.991659992332066e+00 3.406247629641486e+00 4.767902387726595e+00 9.191452565926047e+03 + 132900 9.894167809493012e-01 -5.900801601354317e+00 -6.021441810523565e+00 4.190516615528435e+00 4.497781865466579e+00 9.282994868843331e+03 + 132920 1.049373904602768e+00 -6.027960370963112e+00 -5.964758024942666e+00 3.557667827239699e+00 4.920585478620536e+00 9.109185617933894e+03 + 132940 9.554385372963414e-01 -5.922091721842826e+00 -6.033322747839472e+00 4.094484021717309e+00 4.455778257498928e+00 9.319614787961344e+03 + 132960 1.077661555616522e+00 -6.131846920219488e+00 -5.958249256305716e+00 3.014499532697393e+00 5.011324183041943e+00 9.089317663578186e+03 + 132980 9.032096803725701e-01 -5.893377712875572e+00 -6.019602455183914e+00 4.231566065247208e+00 4.506764061696967e+00 9.277318867958178e+03 + 133000 1.018892730904459e+00 -6.079021070755577e+00 -5.976073160414867e+00 3.236919611671228e+00 4.828062443985228e+00 9.143736615169895e+03 + 133020 9.597095045426429e-01 -6.000794092692508e+00 -5.995301196991814e+00 3.673304065847680e+00 4.704845122983922e+00 9.202628259018546e+03 + 133040 9.738906187119155e-01 -6.027153946256729e+00 -5.978893243453346e+00 3.512246334748288e+00 4.789366758564937e+00 9.152381075279800e+03 + 133060 1.002556346841729e+00 -6.072158383461296e+00 -5.950634553252388e+00 3.305325113692537e+00 5.003133752504032e+00 9.066137791965641e+03 + 133080 1.000041676689338e+00 -6.065314641759104e+00 -5.963903348016336e+00 3.327900964473084e+00 4.910220306491047e+00 9.106561519253615e+03 + 133100 1.090713838932731e+00 -6.194364986364813e+00 -5.931575797561210e+00 2.666807409457852e+00 5.175783598063682e+00 9.008194823380709e+03 + 133120 9.894103553529071e-01 -6.036763091375734e+00 -5.960185308646391e+00 3.542301977233442e+00 4.982023456038911e+00 9.095236418709199e+03 + 133140 9.747643500189752e-01 -6.005973686253450e+00 -5.987524954686227e+00 3.618204486905385e+00 4.724139958496363e+00 9.178783347563502e+03 + 133160 9.756533189193919e-01 -5.995550093188819e+00 -5.923846182138532e+00 3.753103932865281e+00 5.164838886260405e+00 8.984731778435911e+03 + 133180 9.830597773318667e-01 -5.989973418089081e+00 -5.931307020934613e+00 3.744170210964956e+00 5.081041742021528e+00 9.007358721633655e+03 + 133200 1.020882264567463e+00 -6.023157302598637e+00 -5.983698011808997e+00 3.556070673824130e+00 4.782652027843763e+00 9.167049438819036e+03 + 133220 1.018840358724251e+00 -5.995022374989894e+00 -6.002661172309677e+00 3.737345724281863e+00 4.693482567971600e+00 9.225219361749476e+03 + 133240 1.019953059269000e+00 -5.971954873944162e+00 -6.014655122285640e+00 3.834352128210367e+00 4.589160694391526e+00 9.262068309474518e+03 + 133260 1.050031712446987e+00 -5.992328494898086e+00 -6.018848304826233e+00 3.747927606435564e+00 4.595646753900819e+00 9.275002485990664e+03 + 133280 1.082523498300699e+00 -6.014728070150849e+00 -6.012944681860009e+00 3.644031139957632e+00 4.654271631502080e+00 9.256839952121694e+03 + 133300 1.021617946640478e+00 -5.902474790596842e+00 -6.002666822004547e+00 4.204325719357309e+00 4.629007570347518e+00 9.225224429346159e+03 + 133320 1.027829483666674e+00 -5.890476437140644e+00 -6.013130640090641e+00 4.255172363272292e+00 4.550872949256845e+00 9.257348356487049e+03 + 133340 1.038007465712548e+00 -5.875393809000679e+00 -6.033049371113693e+00 4.345564259375092e+00 4.440281624602778e+00 9.318708502186004e+03 + 133360 1.018145030398882e+00 -5.806954696024283e+00 -6.083378120205639e+00 4.732888678985878e+00 4.145622600949888e+00 9.474738648012293e+03 + 133380 1.089380217846973e+00 -5.867019713100437e+00 -6.050405472579200e+00 4.390074757579108e+00 4.337045347797489e+00 9.372441855684629e+03 + 133400 1.130175408386272e+00 -5.883112654987854e+00 -6.016006332549606e+00 4.287984715839110e+00 4.524888654049389e+00 9.266247318962127e+03 + 133420 1.106340526512883e+00 -5.811623075504751e+00 -6.028000348893598e+00 4.667863345565354e+00 4.425391557491754e+00 9.303162950999373e+03 + 133440 1.137486322389834e+00 -5.834447867959518e+00 -6.009287650849941e+00 4.554012965081299e+00 4.550055875355533e+00 9.245568702034776e+03 + 133460 1.114654053237710e+00 -5.791522652539895e+00 -6.032313537602834e+00 4.778117757891700e+00 4.395459233591267e+00 9.316475405446266e+03 + 133480 1.144189770740905e+00 -5.842287138593331e+00 -6.033416826775372e+00 4.521639637876286e+00 4.424143391111354e+00 9.319905825721064e+03 + 133500 1.155186948778318e+00 -5.888772764506853e+00 -6.030058061747318e+00 4.276844427277136e+00 4.465562386693297e+00 9.309549172544648e+03 + 133520 1.101386974645630e+00 -5.859717523752370e+00 -5.997402999074414e+00 4.415065750163376e+00 4.624454444105752e+00 9.209053852424204e+03 + 133540 1.116841468459481e+00 -5.942084074690961e+00 -5.947169633274848e+00 4.026563504979896e+00 4.997361440603570e+00 9.055573861794684e+03 + 133560 1.076079905993702e+00 -5.935630134230188e+00 -6.026322214354354e+00 4.015968814039235e+00 4.495200855412231e+00 9.298017696062920e+03 + 133580 1.002963331690393e+00 -5.868172263751732e+00 -6.024693365084151e+00 4.369971008269935e+00 4.471202622857039e+00 9.293006735491605e+03 + 133600 1.039726531454948e+00 -5.952286399327838e+00 -6.005198546699418e+00 3.935667059516359e+00 4.631837321180402e+00 9.232989799353061e+03 + 133620 9.766356947567814e-01 -5.881931788684558e+00 -5.998675436908354e+00 4.381583786801539e+00 4.711223692679327e+00 9.212973140630240e+03 + 133640 1.096352567750887e+00 -6.080260206907969e+00 -6.013103189859272e+00 3.228966663781072e+00 4.614592648189491e+00 9.257325101462086e+03 + 133660 1.036073533383709e+00 -6.013224178648735e+00 -6.005455385910909e+00 3.651971064293993e+00 4.696580674411380e+00 9.233813247605463e+03 + 133680 9.734803857278230e-01 -5.942349096318710e+00 -6.013327865513344e+00 4.014766824324896e+00 4.607195747680271e+00 9.257987636114505e+03 + 133700 9.589553834113960e-01 -5.940386244156954e+00 -6.024599219874849e+00 3.994531697502196e+00 4.510967759014167e+00 9.292697571453800e+03 + 133720 1.004064488869004e+00 -6.024857434018790e+00 -6.002785347497909e+00 3.573511614142422e+00 4.700252950589670e+00 9.225598678366552e+03 + 133740 9.811425078790368e-01 -6.009275403273760e+00 -5.999766029815087e+00 3.703254248697334e+00 4.757858542667821e+00 9.216318739736784e+03 + 133760 9.666935284375827e-01 -6.002849758035861e+00 -6.018725692054337e+00 3.646431374846782e+00 4.555269304919843e+00 9.274629198278590e+03 + 133780 1.009402742003225e+00 -6.081525466970535e+00 -5.983964423878405e+00 3.271059490987016e+00 4.831270097944657e+00 9.167889073779115e+03 + 133800 9.296551303803440e-01 -5.974436684601466e+00 -5.986899731640028e+00 3.812327106717365e+00 4.740762361971649e+00 9.176874430628342e+03 + 133820 9.776313371392075e-01 -6.051303798383044e+00 -5.960791954033628e+00 3.471226281600511e+00 4.990959298517502e+00 9.097060783479068e+03 + 133840 9.279583110519684e-01 -5.979851179327287e+00 -6.008840303640524e+00 3.783534088513053e+00 4.617074050653962e+00 9.244211802893366e+03 + 133860 9.596130567028447e-01 -6.025848982398222e+00 -5.976552107252985e+00 3.586454708911353e+00 4.869524994662079e+00 9.145197551020789e+03 + 133880 9.259735342370835e-01 -5.969451801294080e+00 -6.015005776667810e+00 3.822284698009367e+00 4.560706721958508e+00 9.263174167815238e+03 + 133900 9.493164582818275e-01 -5.991982407044678e+00 -5.998561939176538e+00 3.779294562092747e+00 4.741513870412302e+00 9.212664139394186e+03 + 133920 1.068871581583520e+00 -6.149951221251842e+00 -5.988653406904929e+00 2.893984448276026e+00 4.820181459012106e+00 9.182259874323596e+03 + 133940 9.730930166466757e-01 -5.985776028781488e+00 -6.007283298682657e+00 3.806039178537932e+00 4.682541106526156e+00 9.239412492177731e+03 + 133960 1.009437225467250e+00 -6.012918805102241e+00 -5.974152390772919e+00 3.594125330400421e+00 4.816728080562619e+00 9.137859616569109e+03 + 133980 1.023182298001809e+00 -5.999359300667509e+00 -5.982477622856862e+00 3.667758624823749e+00 4.764695831243682e+00 9.163342591304678e+03 + 134000 9.858613721122188e-01 -5.904692852366039e+00 -6.039863812682755e+00 4.184921274400962e+00 4.408748702623872e+00 9.339835985653064e+03 + 134020 1.059135222310033e+00 -5.977033857344186e+00 -6.050606485402792e+00 3.812294897210398e+00 4.389829481570487e+00 9.373067140275338e+03 + 134040 1.003699869380266e+00 -5.866974560970858e+00 -6.091546285036553e+00 4.364556703005432e+00 4.075031111058228e+00 9.500227589418802e+03 + 134060 1.050772380389617e+00 -5.920305773221518e+00 -6.002669550542830e+00 4.144134529201153e+00 4.671188974068832e+00 9.225218501478043e+03 + 134080 1.039656832784916e+00 -5.893157927906180e+00 -6.003464918060904e+00 4.287508261596047e+00 4.654108454176064e+00 9.227657390697055e+03 + 134100 1.074410205847596e+00 -5.941969376072200e+00 -6.032663565970035e+00 3.976877288918897e+00 4.456097215645006e+00 9.317573276509796e+03 + 134120 1.005631767362321e+00 -5.843803181197550e+00 -6.040637757037181e+00 4.525392402445797e+00 4.395137807922468e+00 9.342210232379295e+03 + 134140 9.831284532961762e-01 -5.822838552744112e+00 -6.012119532486430e+00 4.642383785316948e+00 4.555503108499606e+00 9.254268555568557e+03 + 134160 1.025937099383842e+00 -5.903575896722969e+00 -5.974493758678848e+00 4.170678988789269e+00 4.763457650934941e+00 9.138882182506488e+03 + 134180 9.598349098303757e-01 -5.824814714184150e+00 -6.037243599351265e+00 4.576812978489613e+00 4.357013446596302e+00 9.331721278486990e+03 + 134200 1.080390570313716e+00 -6.031055948577317e+00 -6.002947279640057e+00 3.502819564233627e+00 4.664223891073837e+00 9.226099978569964e+03 + 134220 9.995059480570477e-01 -5.948959734476075e+00 -5.999968799803662e+00 4.047120295886062e+00 4.754218349147708e+00 9.216949207325337e+03 + 134240 1.019884770919002e+00 -6.021236791535046e+00 -5.958120754469650e+00 3.620430904737307e+00 4.982852956741978e+00 9.088922550363783e+03 + 134260 9.419472642201560e-01 -5.947038963739085e+00 -5.987305567016255e+00 3.951981121353943e+00 4.720764054099710e+00 9.178121845575417e+03 + 134280 9.772040641981496e-01 -6.035772607272571e+00 -5.977543816455685e+00 3.488097953097186e+00 4.822456680844003e+00 9.148261464361985e+03 + 134300 9.294882160528173e-01 -5.990756075603794e+00 -6.022513597279155e+00 3.731587788724782e+00 4.549231184804260e+00 9.286290936500187e+03 + 134320 9.470032720241938e-01 -6.029682379517280e+00 -5.995097946025600e+00 3.588400241566733e+00 4.786989410599748e+00 9.202015870044845e+03 + 134340 1.011866836606955e+00 -6.129789676969929e+00 -5.986900867596871e+00 3.012733280982367e+00 4.833222936374254e+00 9.176891467381527e+03 + 134360 9.449088369218303e-01 -6.030401569631795e+00 -6.018721066851030e+00 3.531358755229423e+00 4.598430009748544e+00 9.274627630719429e+03 + 134380 9.459389797747382e-01 -6.028703189378939e+00 -6.001899896015249e+00 3.605292130094433e+00 4.759200788384987e+00 9.222884445393336e+03 + 134400 9.816914304627492e-01 -6.075212222020898e+00 -5.958918248046218e+00 3.320616896426916e+00 4.988394891423839e+00 9.091400039982460e+03 + 134420 9.869428240175663e-01 -6.074045433585310e+00 -5.990078351298068e+00 3.314624948975847e+00 4.796776929333179e+00 9.186606032774233e+03 + 134440 9.823566449570301e-01 -6.054830340416393e+00 -5.977129367847033e+00 3.438247856248839e+00 4.884418864928745e+00 9.146971834037709e+03 + 134460 9.263728658960075e-01 -5.954627162100530e+00 -6.073725057595644e+00 3.961751879988959e+00 4.277873333716248e+00 9.444746382053394e+03 + 134480 1.003597198866873e+00 -6.050356466045384e+00 -6.023783875264179e+00 3.467543625730574e+00 4.620127554091390e+00 9.290235224142132e+03 + 134500 9.746741752540558e-01 -5.989409602138267e+00 -6.048825193756155e+00 3.777628246196014e+00 4.436454724593010e+00 9.367545440838903e+03 + 134520 1.027266492072433e+00 -6.051040140865791e+00 -6.001194401365625e+00 3.467012276142820e+00 4.753234225956034e+00 9.220732358601666e+03 + 134540 9.856461148531146e-01 -5.971095197139918e+00 -5.978678927903553e+00 3.926763667398380e+00 4.883216711775046e+00 9.151718415385507e+03 + 134560 9.644411399860825e-01 -5.919993881431087e+00 -6.056412166047499e+00 4.138975114164350e+00 4.355640213235591e+00 9.391013527944002e+03 + 134580 1.063278490524800e+00 -6.047461541711574e+00 -5.989160427081453e+00 3.547736565481578e+00 4.882510587756066e+00 9.183795717818281e+03 + 134600 1.050006779686611e+00 -6.009555340407124e+00 -6.047899342178744e+00 3.695286548185112e+00 4.475109356297374e+00 9.364686559243783e+03 + 134620 1.024874560416465e+00 -5.958827134572831e+00 -6.007924108516463e+00 3.910725776709358e+00 4.628803354592863e+00 9.241403028489849e+03 + 134640 1.052903185703804e+00 -5.989633720334964e+00 -6.035147690707177e+00 3.799409347974955e+00 4.538061086833552e+00 9.325251997223955e+03 + 134660 1.038716377003139e+00 -5.962062966824954e+00 -6.040965777540663e+00 3.914523394687461e+00 4.461451245387361e+00 9.343231833136182e+03 + 134680 1.040635491292013e+00 -5.965529693640684e+00 -6.001743234602738e+00 3.827178688274536e+00 4.619234932043069e+00 9.222371656542789e+03 + 134700 1.023084418980424e+00 -5.942235028512269e+00 -5.980426840149466e+00 3.999023790172495e+00 4.779720497587961e+00 9.157024907008054e+03 + 134720 1.019878902839303e+00 -5.943436111654466e+00 -5.955663229673636e+00 4.045067778231846e+00 4.974857774425379e+00 9.081423134153125e+03 + 134740 1.042956392240052e+00 -5.987651062761967e+00 -6.001914340262939e+00 3.743655956668146e+00 4.661754010022506e+00 9.222916287120424e+03 + 134760 1.064262272716257e+00 -6.036356135917834e+00 -5.957079542037752e+00 3.558616165423888e+00 5.013834635496576e+00 9.085763632132401e+03 + 134780 9.989695854654153e-01 -5.969287150084233e+00 -6.010871260520834e+00 3.882743360226338e+00 4.643960962979086e+00 9.250432892743096e+03 + 134800 9.333295579881140e-01 -5.908220355122953e+00 -6.007630430428890e+00 4.256314528304178e+00 4.685486492238055e+00 9.240447542802114e+03 + 134820 9.417151948783967e-01 -5.958032533276013e+00 -6.022957742814737e+00 3.883431515851653e+00 4.510620915536597e+00 9.287591200896701e+03 + 134840 1.013126947813049e+00 -6.101189279972104e+00 -5.995551870020187e+00 3.134843770972060e+00 4.741430126252325e+00 9.203413217321078e+03 + 134860 9.133624247616636e-01 -5.986115498535090e+00 -6.051478236185190e+00 3.678681536060306e+00 4.303358581622472e+00 9.375757915477987e+03 + 134880 9.196273216162918e-01 -6.021815845417403e+00 -6.031232661928714e+00 3.558542558272500e+00 4.504469740616911e+00 9.313165721490719e+03 + 134900 9.318965656920375e-01 -6.057815660767115e+00 -6.009628816812649e+00 3.337179968251744e+00 4.613876283128288e+00 9.246633772495341e+03 + 134920 9.141198839606671e-01 -6.040755920928273e+00 -5.983049678686143e+00 3.478834505930171e+00 4.810192678896606e+00 9.165096802360849e+03 + 134940 9.528913364269224e-01 -6.099428825131133e+00 -5.977414141014231e+00 3.180487816519425e+00 4.881115014430022e+00 9.147848531204858e+03 + 134960 1.002235110654620e+00 -6.167602373082999e+00 -5.996149630326142e+00 2.766578928912667e+00 4.751087110048730e+00 9.205228616499482e+03 + 134980 9.466319279021105e-01 -6.073495096556471e+00 -6.003153426493285e+00 3.330364365477528e+00 4.734277120318602e+00 9.226741622647623e+03 + 135000 9.571762784994100e-01 -6.074549670120779e+00 -5.984863161784038e+00 3.273725405807897e+00 4.788719215619770e+00 9.170649047737881e+03 + 135020 9.130235229373171e-01 -5.985818953357634e+00 -6.027586716471056e+00 3.778318826863310e+00 4.538481867525589e+00 9.301920584586709e+03 + 135040 9.605890036763339e-01 -6.026152210061887e+00 -6.014011195667989e+00 3.524714000837212e+00 4.594429584302878e+00 9.260108841478599e+03 + 135060 9.883069197164831e-01 -6.035362702794888e+00 -5.959212146365365e+00 3.566879552724979e+00 5.004147832003822e+00 9.092251669796151e+03 + 135080 9.801874220534152e-01 -5.988093148975336e+00 -6.000551520357858e+00 3.734153542650177e+00 4.662615646244995e+00 9.218724601916478e+03 + 135100 1.000552636577304e+00 -5.987579873907001e+00 -5.952393499315027e+00 3.766861728405494e+00 4.968907336386477e+00 9.071481782815363e+03 + 135120 9.463795194433802e-01 -5.878713330403205e+00 -6.026174648628905e+00 4.258006280103482e+00 4.411260571286264e+00 9.297557673837387e+03 + 135140 9.597082898267109e-01 -5.880184719122284e+00 -5.983806296260662e+00 4.372405465882292e+00 4.777394334566488e+00 9.167401650529273e+03 + 135160 1.040194334521365e+00 -5.988011341470250e+00 -5.991647422922926e+00 3.814330408514854e+00 4.793451466131803e+00 9.191406903692447e+03 + 135180 9.984503345131772e-01 -5.920686269929726e+00 -6.056765749108756e+00 4.072299491082410e+00 4.290910063405076e+00 9.392120975528063e+03 + 135200 1.059088676214036e+00 -6.011579206389208e+00 -5.995994328421039e+00 3.618305633428323e+00 4.707796414473623e+00 9.204766605283934e+03 + 135220 9.790047459842667e-01 -5.896093238448845e+00 -6.027078879273479e+00 4.290173560091363e+00 4.538033740513908e+00 9.300336811601697e+03 + 135240 9.853905519353029e-01 -5.911085646066945e+00 -6.013701581103376e+00 4.135502550598698e+00 4.546265971854885e+00 9.259152174922649e+03 + 135260 1.058157138969695e+00 -6.026369488659261e+00 -5.989014553646052e+00 3.534940552540305e+00 4.749438370043668e+00 9.183351103431303e+03 + 135280 9.441446008150856e-01 -5.867048779426600e+00 -6.008262551533792e+00 4.382419904767675e+00 4.571548572567571e+00 9.242399513778761e+03 + 135300 9.732259314481506e-01 -5.918801855566161e+00 -5.996205862394802e+00 4.092514160117722e+00 4.648048374676324e+00 9.205384881114183e+03 + 135320 1.052526715944636e+00 -6.044191344572246e+00 -5.979654234675381e+00 3.478488288241250e+00 4.849070360354526e+00 9.154702696511533e+03 + 135340 1.033851448917769e+00 -6.027699492130966e+00 -5.996396984661200e+00 3.536584123927170e+00 4.716327965865942e+00 9.206000631716646e+03 + 135360 9.848716899682420e-01 -5.968533166636531e+00 -5.980852009971139e+00 3.868189831456749e+00 4.797453126694585e+00 9.158369840399526e+03 + 135380 9.735000558391735e-01 -5.966350176019034e+00 -5.995701311963382e+00 3.895985918202272e+00 4.727447153536223e+00 9.203852500055136e+03 + 135400 9.956195234311751e-01 -6.013279396591430e+00 -5.998556173453064e+00 3.629614468969003e+00 4.714157494640913e+00 9.212596747525455e+03 + 135420 9.119275232026064e-01 -5.903356334710947e+00 -6.049446597769656e+00 4.218500456575013e+00 4.379627558696768e+00 9.369440611026392e+03 + 135440 9.631719147840894e-01 -5.994624002603187e+00 -5.993231085175509e+00 3.712852765983250e+00 4.720851113406249e+00 9.196278479216529e+03 + 135460 9.672594038354716e-01 -6.015910564363018e+00 -5.988944957780524e+00 3.624445253305839e+00 4.779285939216648e+00 9.183152241676135e+03 + 135480 9.500803181278987e-01 -6.006679146504524e+00 -6.057275935641376e+00 3.612012996891015e+00 4.321478403839399e+00 9.393713608936747e+03 + 135500 9.250496499750086e-01 -5.988808450447669e+00 -6.011463015994167e+00 3.761966531095441e+00 4.631880509944761e+00 9.252270977996519e+03 + 135520 9.787499883316908e-01 -6.090600807551785e+00 -5.991138329156836e+00 3.195487905980785e+00 4.766616848693370e+00 9.189864939828922e+03 + 135540 9.383503652217786e-01 -6.054250109136849e+00 -5.984461643148334e+00 3.379474275058590e+00 4.780210446494846e+00 9.169421256586862e+03 + 135560 9.512744765817412e-01 -6.094545685920740e+00 -5.988851627548462e+00 3.181679700390669e+00 4.788591339666965e+00 9.182858526889202e+03 + 135580 9.478256192321670e-01 -6.107861062970107e+00 -5.954856373654694e+00 3.145878309031883e+00 5.024454912480132e+00 9.079003650594013e+03 + 135600 9.395283946517236e-01 -6.109932630363132e+00 -5.996348312832080e+00 3.067705317207674e+00 4.719924045587309e+00 9.205859466044169e+03 + 135620 9.274733863802501e-01 -6.100494375679824e+00 -5.999318330467783e+00 3.152577777199450e+00 4.733546285749389e+00 9.214973927439351e+03 + 135640 8.934158376964244e-01 -6.051551952656523e+00 -6.037714506170492e+00 3.436360902598644e+00 4.515817661659365e+00 9.333216449193396e+03 + 135660 9.055227518385351e-01 -6.064336691344595e+00 -6.042805511603471e+00 3.339619713741479e+00 4.463255079754306e+00 9.348938754823754e+03 + 135680 9.466900547130490e-01 -6.110470583098967e+00 -6.014822500974977e+00 3.111890832217205e+00 4.661116921266028e+00 9.262611848665494e+03 + 135700 9.495219156427653e-01 -6.089406726365332e+00 -5.983190616712649e+00 3.250727173113972e+00 4.860636511629521e+00 9.165522073679958e+03 + 135720 9.363870616317906e-01 -6.034203682810155e+00 -6.011381700295392e+00 3.534447524090897e+00 4.665494879381050e+00 9.252007890957046e+03 + 135740 1.028989964342726e+00 -6.126255988161900e+00 -5.954364518462497e+00 3.001462206440264e+00 4.988489625573207e+00 9.077496192701356e+03 + 135760 1.005495650099243e+00 -6.046498093973088e+00 -5.958559369550157e+00 3.473383897213222e+00 4.978341661323313e+00 9.090258298507910e+03 + 135780 9.325872095524308e-01 -5.900015800884305e+00 -5.978940398310254e+00 4.236007978864603e+00 4.782810726902829e+00 9.152510755678974e+03 + 135800 1.037863821759400e+00 -6.024325500024887e+00 -5.971064930560333e+00 3.564128210475352e+00 4.869958642387314e+00 9.128436738805845e+03 + 135820 1.071859642277600e+00 -6.050436016601926e+00 -6.008121845806842e+00 3.419075513964524e+00 4.662050030766663e+00 9.242002167084340e+03 + 135840 1.016588112159255e+00 -5.954941401437411e+00 -6.001521174631887e+00 3.974780906830415e+00 4.707312640951129e+00 9.221734200245020e+03 + 135860 1.093033897928049e+00 -6.058203787195690e+00 -6.005832593885587e+00 3.439704134266367e+00 4.740427630668950e+00 9.234963548421763e+03 + 135880 1.009898768516946e+00 -5.932448289128472e+00 -6.016623148064784e+00 4.014222333513546e+00 4.530877267483924e+00 9.268150610136328e+03 + 135900 9.962408376908223e-01 -5.913096941790967e+00 -5.988001688723744e+00 4.167691975014372e+00 4.737577326654240e+00 9.180242722220735e+03 + 135920 1.028831140878599e+00 -5.963207927191141e+00 -6.013086619592904e+00 3.867710513650030e+00 4.581299343176404e+00 9.257269458026789e+03 + 135940 1.031007472934491e+00 -5.971296922714788e+00 -6.036711443883789e+00 3.854594666353730e+00 4.478974362936890e+00 9.330080233562498e+03 + 135960 1.039675392635592e+00 -5.995700506959935e+00 -6.012312276047803e+00 3.661527709678475e+00 4.566140360912976e+00 9.254858473422364e+03 + 135980 9.897255825049621e-01 -5.935153845434289e+00 -5.976504992147627e+00 4.037328742137434e+00 4.799884058640180e+00 9.145053116929234e+03 + 136000 1.037593879499317e+00 -6.020722705865604e+00 -6.001775463633496e+00 3.594135114842759e+00 4.702933111815781e+00 9.222463586667754e+03 + 136020 1.013357998073092e+00 -6.004289198812436e+00 -6.019221339265800e+00 3.620705553695097e+00 4.534962892470610e+00 9.276134372020048e+03 + 136040 1.023734106303207e+00 -6.045878702918042e+00 -5.958941965308181e+00 3.466564713095694e+00 4.965768913868184e+00 9.091440353228556e+03 + 136060 9.840547811084670e-01 -6.012171789587595e+00 -6.000469601326169e+00 3.629330488162919e+00 4.696526264067808e+00 9.218485174213669e+03 + 136080 1.042666060877388e+00 -6.126040949756003e+00 -5.966447118494462e+00 3.022771262410380e+00 4.939183738579722e+00 9.114356361761173e+03 + 136100 9.359937928866793e-01 -5.996427824265233e+00 -6.006664133687508e+00 3.704932866624054e+00 4.646154393857584e+00 9.237524440655254e+03 + 136120 9.583398103203221e-01 -6.057002087321176e+00 -6.004641528268717e+00 3.398316822216874e+00 4.698979255066422e+00 9.231300667792219e+03 + 136140 9.564943876536821e-01 -6.080473127589936e+00 -5.985157636379267e+00 3.265627530454709e+00 4.812943831010966e+00 9.171570305450896e+03 + 136160 9.305603169477679e-01 -6.064628017570847e+00 -5.991842680477818e+00 3.378301239291124e+00 4.796245908373809e+00 9.192002942056777e+03 + 136180 9.062794151335378e-01 -6.045335220490970e+00 -5.975230323223969e+00 3.395349400907540e+00 4.797902569712450e+00 9.141174620540722e+03 + 136200 9.791972021243399e-01 -6.162918217034816e+00 -5.962885522731370e+00 2.766767423033085e+00 4.915386108682876e+00 9.103470344354115e+03 + 136220 9.200713799160744e-01 -6.078810247777878e+00 -5.968796318786429e+00 3.201682176183832e+00 4.833399181053224e+00 9.121500342979256e+03 + 136240 9.632787726130622e-01 -6.138244426437604e+00 -5.957259900353699e+00 2.982972545102170e+00 5.022213701140849e+00 9.086330467775440e+03 + 136260 9.743121592146419e-01 -6.136486500872513e+00 -5.989046440064151e+00 2.942151658828287e+00 4.788775304265570e+00 9.183473749902290e+03 + 136280 9.772346707865833e-01 -6.104651322978453e+00 -5.961400758386205e+00 3.120986120084920e+00 4.943553029926841e+00 9.098933225694200e+03 + 136300 9.456871402539769e-01 -6.002527207992213e+00 -5.941724615545806e+00 3.703931969166291e+00 5.053069864164335e+00 9.039009001227012e+03 + 136320 9.631114554221329e-01 -5.964401463733210e+00 -5.947139716691353e+00 3.889763731235079e+00 4.988883353996138e+00 9.055478716987793e+03 + 136340 9.494281114387692e-01 -5.890296848271961e+00 -5.981022792656803e+00 4.317219266902637e+00 4.796256854450360e+00 9.158863682057834e+03 + 136360 1.025171969900139e+00 -5.965587678324015e+00 -5.998068741368490e+00 3.864698681199001e+00 4.678187390769363e+00 9.211124308572527e+03 + 136380 1.039687806370140e+00 -5.963412417080840e+00 -6.039949303090938e+00 3.898618362200356e+00 4.459131718685539e+00 9.340097885093426e+03 + 136400 1.021534443805195e+00 -5.922638002597600e+00 -6.026203438834006e+00 4.123849461906191e+00 4.529160700337282e+00 9.297659894337326e+03 + 136420 9.966405985792444e-01 -5.876540300281909e+00 -6.065270727170967e+00 4.369426968996668e+00 4.285707651860524e+00 9.418504701582702e+03 + 136440 1.024858116833225e+00 -5.916596684763168e+00 -6.032716038729217e+00 4.172438445358093e+00 4.505663145473088e+00 9.317753501669669e+03 + 136460 1.104220351269706e+00 -6.040580163139600e+00 -5.987727025504983e+00 3.455899223447061e+00 4.759390118741646e+00 9.179447815500971e+03 + 136480 1.078806205450137e+00 -6.013409171425020e+00 -5.982141067338023e+00 3.646107604866684e+00 4.825653897257695e+00 9.162292272530303e+03 + 136500 1.019440311000324e+00 -5.941601979632280e+00 -6.017162800310581e+00 4.008342985307594e+00 4.574461059973578e+00 9.269807521264231e+03 + 136520 1.017556397456032e+00 -5.959716913590314e+00 -5.944739843724784e+00 3.996701248088452e+00 5.082701900950399e+00 9.048174016933684e+03 + 136540 9.967468604856634e-01 -5.950123328306790e+00 -5.943064230426839e+00 3.971617897221062e+00 5.012152329639610e+00 9.043051140664264e+03 + 136560 1.022074785604144e+00 -6.008394473236206e+00 -5.950954024335338e+00 3.634637023876509e+00 4.964468970346031e+00 9.067105181661862e+03 + 136580 1.031871782525669e+00 -6.045796563989980e+00 -5.993689984651320e+00 3.513679544749860e+00 4.812883586779535e+00 9.197669783738178e+03 + 136600 1.010782552117179e+00 -6.037584750662904e+00 -6.001081811778616e+00 3.584130203217148e+00 4.793735727102266e+00 9.220366584570658e+03 + 136620 1.023526691377179e+00 -6.078551619028613e+00 -5.966475159690832e+00 3.301074312050217e+00 4.944634685343788e+00 9.114434928535151e+03 + 136640 9.804759043246185e-01 -6.034774518424010e+00 -6.006785677868463e+00 3.536257538738072e+00 4.696973792467098e+00 9.237908316113222e+03 + 136660 9.656780558263287e-01 -6.034386018140115e+00 -6.019980730474765e+00 3.555524407802929e+00 4.638241798788428e+00 9.278482247052432e+03 + 136680 8.995686325015138e-01 -5.954335537446400e+00 -6.002346583972857e+00 3.968496679637064e+00 4.692809820796708e+00 9.224239160377849e+03 + 136700 9.487318370343446e-01 -6.038905503902854e+00 -5.961506516412198e+00 3.564106526629049e+00 5.008543490255003e+00 9.099242111902953e+03 + 136720 9.594075628803598e-01 -6.060085070502563e+00 -5.991461252048939e+00 3.361613631329182e+00 4.755662216391471e+00 9.190848025412299e+03 + 136740 9.480186597101476e-01 -6.043617454323411e+00 -5.980052834778506e+00 3.494520793464525e+00 4.859518675484452e+00 9.155906716183315e+03 + 136760 9.829127929005205e-01 -6.090805137297817e+00 -5.995254363269053e+00 3.211381114380755e+00 4.760048445288410e+00 9.202478329634318e+03 + 136780 9.744118672214118e-01 -6.068578207436629e+00 -5.967995278713599e+00 3.310638060272464e+00 4.888200802158019e+00 9.119063985702685e+03 + 136800 9.102091559313986e-01 -5.954516976103472e+00 -5.988105699718813e+00 3.946581503209697e+00 4.753709854372230e+00 9.180558842180810e+03 + 136820 9.613855083737486e-01 -5.995098923215774e+00 -6.048125814200313e+00 3.682148463335854e+00 4.377659849417772e+00 9.365354910513019e+03 + 136840 1.002793060607315e+00 -6.006083685879660e+00 -6.050528419454475e+00 3.610693845456199e+00 4.355485307469321e+00 9.372809310830013e+03 + 136860 1.050149271004926e+00 -6.021197756338491e+00 -6.009789161078379e+00 3.613404944066690e+00 4.678914863524665e+00 9.247112598838261e+03 + 136880 1.000143671864594e+00 -5.900627031167239e+00 -6.004907924518540e+00 4.230053385463376e+00 4.631256358424110e+00 9.232117213628118e+03 + 136900 1.072524514663445e+00 -5.973856783421995e+00 -6.017467082991518e+00 3.816292669421231e+00 4.565875580620985e+00 9.270734871770921e+03 + 136920 9.982038497653651e-01 -5.842135949013566e+00 -6.020019768194419e+00 4.537089524222160e+00 4.515653107053651e+00 9.278625258448612e+03 + 136940 1.057353088718384e+00 -5.919800417112991e+00 -6.023598220850578e+00 4.127718831327956e+00 4.531695779608516e+00 9.289642880848245e+03 + 136960 1.078141716191301e+00 -5.948976458350585e+00 -6.030538709391260e+00 3.885721000578256e+00 4.417377933385144e+00 9.311052840290515e+03 + 136980 1.023901902430471e+00 -5.875872616531152e+00 -6.034659270288973e+00 4.333088174618467e+00 4.421310636585799e+00 9.323741953429444e+03 + 137000 1.012464989779936e+00 -5.870186886037450e+00 -6.038856282108121e+00 4.373743489224471e+00 4.405217715481995e+00 9.336718840399153e+03 + 137020 1.063233037058750e+00 -5.963575421541605e+00 -5.998769684666682e+00 3.876112203737310e+00 4.674021298578500e+00 9.213269520683902e+03 + 137040 1.018139297257336e+00 -5.918345418320995e+00 -6.009782499102691e+00 4.106289700378225e+00 4.581243832687207e+00 9.247092025872435e+03 + 137060 1.009901425670117e+00 -5.930186805122561e+00 -6.011510660237845e+00 4.067393113736728e+00 4.600418952838862e+00 9.252386221644068e+03 + 137080 9.945417868107201e-01 -5.932127500347875e+00 -6.002307777187433e+00 4.045896139301417e+00 4.642910129325934e+00 9.224129479369358e+03 + 137100 1.001641387357770e+00 -5.967131899508441e+00 -5.994247674311263e+00 3.888489330857972e+00 4.732786355787576e+00 9.199382241523155e+03 + 137120 1.016921907045996e+00 -6.012316404410054e+00 -6.000320560687909e+00 3.604368994133819e+00 4.673250985137194e+00 9.218024824928276e+03 + 137140 1.036813967019353e+00 -6.060963240735469e+00 -5.972160042037775e+00 3.360982757946812e+00 4.870904467119556e+00 9.131798220544419e+03 + 137160 1.015402059963044e+00 -6.046368935208895e+00 -5.973658644859833e+00 3.464226658547091e+00 4.881740397612479e+00 9.136351979056830e+03 + 137180 9.416316643378648e-01 -5.950409761369603e+00 -5.992932050776025e+00 3.928067441202085e+00 4.683897875127387e+00 9.195353826195955e+03 + 137200 9.239137920658220e-01 -5.932842643915375e+00 -5.973105977207839e+00 4.080598036930838e+00 4.849399746434821e+00 9.134657723104914e+03 + 137220 9.901819193354732e-01 -6.033870990867659e+00 -5.997671510436552e+00 3.514219722412338e+00 4.722082740899252e+00 9.209894129616423e+03 + 137240 9.072669168653890e-01 -5.911022975695995e+00 -6.034259712236657e+00 4.143254942633204e+00 4.435610530593380e+00 9.322520853569693e+03 + 137260 9.843444578718793e-01 -6.023421346863490e+00 -6.013568796219347e+00 3.557511620961704e+00 4.614086491437660e+00 9.258760790326067e+03 + 137280 1.011833394538406e+00 -6.061760001221346e+00 -6.000108153926498e+00 3.368836805173542e+00 4.722851252933095e+00 9.217394111215721e+03 + 137300 9.346715402732279e-01 -5.943912467580183e+00 -6.013163898901597e+00 4.000094557169736e+00 4.602442121897814e+00 9.257484174379770e+03 + 137320 1.021444253557838e+00 -6.068201739233340e+00 -6.002866494844940e+00 3.343143223308961e+00 4.718308307183547e+00 9.225832504952754e+03 + 137340 1.022330791956295e+00 -6.064942748172038e+00 -5.987505372293434e+00 3.371672576355269e+00 4.816329972045406e+00 9.178754262880318e+03 + 137360 9.927736277090350e-01 -6.016535275306505e+00 -5.987334925322633e+00 3.625104574566155e+00 4.792777502913104e+00 9.178202346747526e+03 + 137380 9.829766713082625e-01 -5.997009231707835e+00 -6.007858150866774e+00 3.747344787479722e+00 4.685048614804284e+00 9.241183182391707e+03 + 137400 9.664729873516762e-01 -5.967461873395636e+00 -6.036847621264778e+00 3.852535819800640e+00 4.454112118126246e+00 9.330500687642450e+03 + 137420 1.015431317475433e+00 -6.034928475547911e+00 -5.996915946234536e+00 3.561842632854277e+00 4.780116458591577e+00 9.207595413670348e+03 + 137440 1.040029224792005e+00 -6.068493496020699e+00 -6.006042588706274e+00 3.360664796484613e+00 4.719267570530718e+00 9.235612568980470e+03 + 137460 1.056352028402261e+00 -6.092259731492568e+00 -5.948620214227113e+00 3.232373159408168e+00 5.057173495689868e+00 9.060000627055006e+03 + 137480 9.718833846259068e-01 -5.965922747828423e+00 -5.964694440702376e+00 3.881704092956981e+00 4.888757222554658e+00 9.108971206878403e+03 + 137500 9.732864154060633e-01 -5.964184880186464e+00 -5.997087520200697e+00 3.850602532663809e+00 4.661670482034991e+00 9.208102205090587e+03 + 137520 1.005050407038914e+00 -6.007724730201320e+00 -5.979868098057105e+00 3.642194969207489e+00 4.802152061779465e+00 9.155341309937538e+03 + 137540 9.729329612104511e-01 -5.956340974721136e+00 -5.976255613641362e+00 3.914742968961170e+00 4.800390030500819e+00 9.144303511307975e+03 + 137560 9.088841126187257e-01 -5.858725555057402e+00 -5.986882543872690e+00 4.441194107280273e+00 4.705296845272964e+00 9.176788698748816e+03 + 137580 1.005288915296697e+00 -5.994176605217332e+00 -5.992919689690481e+00 3.747138376270349e+00 4.754355779732573e+00 9.195304219752141e+03 + 137600 1.037718533838830e+00 -6.035833942007568e+00 -5.994528340810444e+00 3.506340168345965e+00 4.743523322440982e+00 9.200245436122106e+03 + 137620 9.005030220426302e-01 -5.828392665303555e+00 -6.007021775572426e+00 4.628910033170536e+00 4.603194039241203e+00 9.238603118565177e+03 + 137640 1.128921927234210e+00 -6.162945823685927e+00 -5.948321719358416e+00 2.803548010082690e+00 5.035952830104060e+00 9.059082386659058e+03 + 137660 1.024274626564225e+00 -6.004043870053597e+00 -6.025156706217859e+00 3.648600670787803e+00 4.527367498331774e+00 9.294440781171341e+03 + 137680 9.604806318576965e-01 -5.910046351082734e+00 -6.052151448175001e+00 4.192338543529126e+00 4.376349085332621e+00 9.377824253162884e+03 + 137700 9.743683639582091e-01 -5.931607784303832e+00 -6.012664863558120e+00 4.092939031651140e+00 4.627496739030544e+00 9.255961720701143e+03 + 137720 1.053120377330919e+00 -6.049710251510602e+00 -5.998831698885812e+00 3.409940384551474e+00 4.702092907153590e+00 9.213454860283660e+03 + 137740 1.064817583341400e+00 -6.072068511807633e+00 -5.952525961045242e+00 3.376638331797884e+00 5.063070157425475e+00 9.071901287894614e+03 + 137760 9.998552542153553e-01 -5.984975966133562e+00 -6.004075880521907e+00 3.770697303669575e+00 4.661022639549497e+00 9.229568104810882e+03 + 137780 9.802487484360189e-01 -5.968702545624265e+00 -5.991102256901586e+00 3.913521571851728e+00 4.784898963353236e+00 9.189746295177629e+03 + 137800 1.036311151176444e+00 -6.070645399734217e+00 -5.997717372294908e+00 3.320027410917262e+00 4.738791430049544e+00 9.210047184407716e+03 + 137820 9.641708182851719e-01 -5.990103128503461e+00 -5.979598095668065e+00 3.812652825214563e+00 4.872974349403988e+00 9.154505319531165e+03 + 137840 9.310043674974007e-01 -5.972431932526561e+00 -6.054066581620352e+00 3.782940321213935e+00 4.314181533196265e+00 9.383752777786643e+03 + 137860 9.193048711964390e-01 -5.990771075850223e+00 -6.010298838015057e+00 3.748927894733416e+00 4.636796462471507e+00 9.248679575574708e+03 + 137880 8.832901870793762e-01 -5.969122970284520e+00 -5.950049148035757e+00 3.943404052981692e+00 5.052928891998545e+00 9.064297629114137e+03 + 137900 9.081768740775518e-01 -6.026723238091853e+00 -5.947608560300200e+00 3.559607673610210e+00 5.013896396446704e+00 9.056912781994908e+03 + 137920 9.530276042743180e-01 -6.105634275268501e+00 -5.955022901651839e+00 3.172658571882572e+00 5.037492386224184e+00 9.079494514646725e+03 + 137940 9.475362142088493e-01 -6.103746634435463e+00 -5.973909413035321e+00 3.123916549714733e+00 4.869461967239423e+00 9.137138021475577e+03 + 137960 9.612121926278543e-01 -6.122904521071193e+00 -5.978297801355075e+00 3.054229962843313e+00 4.884584125270820e+00 9.150561676202604e+03 + 137980 9.776101300215735e-01 -6.138650166094560e+00 -5.972080286408425e+00 2.954122459710894e+00 4.910592485474254e+00 9.131544548664338e+03 + 138000 9.311050732304994e-01 -6.052429536699198e+00 -6.025522972335062e+00 3.381475130807234e+00 4.535976787163484e+00 9.295568786884993e+03 + 138020 9.458412505721069e-01 -6.049141014638208e+00 -6.013962463343455e+00 3.470918558191820e+00 4.672919243589505e+00 9.259971385580349e+03 + 138040 9.839732395685518e-01 -6.072233300890555e+00 -6.008709779018644e+00 3.297854689544401e+00 4.662616582366153e+00 9.243818672499519e+03 + 138060 9.401260747078265e-01 -5.969225116179367e+00 -6.067026326390403e+00 3.850283381075027e+00 4.288693697354896e+00 9.423940899709633e+03 + 138080 1.012675653633621e+00 -6.037711801045720e+00 -5.995891879656672e+00 3.489688190526982e+00 4.729824650754816e+00 9.204450652575866e+03 + 138100 1.009723915116968e+00 -5.999912724609985e+00 -5.982855058450173e+00 3.713432365456412e+00 4.811380124211358e+00 9.164484156162120e+03 + 138120 1.001652559290768e+00 -5.961310910378699e+00 -6.010712933410170e+00 3.917882616122391e+00 4.634208554937322e+00 9.249953645892225e+03 + 138140 1.021453429615588e+00 -5.969887375883316e+00 -6.035113952625506e+00 3.855254580299941e+00 4.480713482866151e+00 9.325156074075612e+03 + 138160 9.978008333155075e-01 -5.921883753861304e+00 -6.033260410758280e+00 4.096135807912260e+00 4.456593808527874e+00 9.319430331119065e+03 + 138180 1.084012724153102e+00 -6.043768413143900e+00 -6.008200803346152e+00 3.498911002706261e+00 4.703145722234762e+00 9.242242436248598e+03 + 138200 9.763137644583971e-01 -5.883488414021358e+00 -6.046098285085146e+00 4.363670835795411e+00 4.429939792350919e+00 9.359110563267754e+03 + 138220 1.057944847918731e+00 -6.008719380621995e+00 -6.013113521562035e+00 3.623293724491831e+00 4.598061887223007e+00 9.257354997530818e+03 + 138240 1.070484441034636e+00 -6.034112232996077e+00 -5.971442511316504e+00 3.550435832764941e+00 4.910295072757132e+00 9.129600498942722e+03 + 138260 1.003367435529426e+00 -5.942585584388345e+00 -6.013374205297838e+00 3.984471266572675e+00 4.577992050806683e+00 9.258152993514532e+03 + 138280 1.013681612976540e+00 -5.968344154450977e+00 -6.022030659160606e+00 3.866380066746948e+00 4.558103848744500e+00 9.284806954441658e+03 + 138300 1.011111520848505e+00 -5.978014566632917e+00 -6.026755876365678e+00 3.786799168692537e+00 4.506919025513720e+00 9.299366080758293e+03 + 138320 1.010358865564650e+00 -5.992656637004787e+00 -5.995333969130792e+00 3.731587179469600e+00 4.716213524086269e+00 9.202699603147863e+03 + 138340 9.787234622026656e-01 -5.959244918562565e+00 -5.967448525198367e+00 3.941009208730470e+00 4.893902829923670e+00 9.117388156340994e+03 + 138360 9.898723746300674e-01 -5.988526765234776e+00 -6.031168256870761e+00 3.686386852856220e+00 4.441532809132891e+00 9.313002354188873e+03 + 138380 9.913384223114879e-01 -6.006646645816000e+00 -5.994408548928288e+00 3.621434520074277e+00 4.691707566242890e+00 9.199890473465146e+03 + 138400 1.001400783618390e+00 -6.037301885215082e+00 -5.977325973125797e+00 3.457739298910469e+00 4.802130267369543e+00 9.147534300780628e+03 + 138420 9.271068839744653e-01 -5.939446671071265e+00 -5.975204807239305e+00 4.023634855477032e+00 4.818306104046459e+00 9.141054227871369e+03 + 138440 1.024359487447462e+00 -6.094159037710236e+00 -5.997006602104019e+00 3.182364806644818e+00 4.740229126186536e+00 9.207858474628529e+03 + 138460 9.570423884503114e-01 -6.006970476392199e+00 -6.024913795483031e+00 3.601785975923878e+00 4.498752660984668e+00 9.293694257064564e+03 + 138480 9.477992067006203e-01 -6.009919301686984e+00 -5.998396205252693e+00 3.656627862186565e+00 4.722795265105677e+00 9.212125676769278e+03 + 138500 9.847944978787669e-01 -6.084457530274685e+00 -5.972066331959811e+00 3.261497699397572e+00 4.906865352603311e+00 9.131496043330131e+03 + 138520 9.706689309525659e-01 -6.089414159612098e+00 -5.997079702304273e+00 3.172973291747465e+00 4.703172034320086e+00 9.208109871698032e+03 + 138540 8.938144564929298e-01 -6.005612339595828e+00 -6.011202737475839e+00 3.664377379878792e+00 4.632276450140488e+00 9.251462144846168e+03 + 138560 9.119655749123964e-01 -6.064119683939368e+00 -6.003506476429036e+00 3.340054700219241e+00 4.688105117607115e+00 9.227807308772251e+03 + 138580 8.937422036937729e-01 -6.062987145285517e+00 -5.943941323257175e+00 3.376663567818189e+00 5.060243100186351e+00 9.045763265215894e+03 + 138600 8.313419859652454e-01 -5.987656279770697e+00 -5.953720289148482e+00 3.799763859140054e+00 4.994629568870387e+00 9.075488171624080e+03 + 138620 9.029140772367072e-01 -6.098272604662832e+00 -5.936631395453849e+00 3.211791485439436e+00 5.139960322613700e+00 9.023521357787975e+03 + 138640 9.730555829965329e-01 -6.194811958089947e+00 -5.940155122101740e+00 2.671943879747125e+00 5.134222840009414e+00 9.034265793398821e+03 + 138660 8.746798797859010e-01 -6.031661142059957e+00 -5.979773431522378e+00 3.515035657215149e+00 4.812982920719188e+00 9.155082731482853e+03 + 138680 9.796938129378228e-01 -6.161162249209812e+00 -5.940604163377152e+00 2.853953781698894e+00 5.120432441803500e+00 9.035620267273667e+03 + 138700 9.045036566280092e-01 -6.013263132043956e+00 -6.017470897686593e+00 3.558275164828187e+00 4.534113523358537e+00 9.270744269792729e+03 + 138720 1.006830518744168e+00 -6.121876672244494e+00 -5.972784108165799e+00 3.063673703331085e+00 4.919786278270679e+00 9.133698113601124e+03 + 138740 9.790964646284650e-01 -6.039315208767661e+00 -6.011564202844463e+00 3.490754559639826e+00 4.650105130105119e+00 9.252584203801976e+03 + 138760 8.906121762309963e-01 -5.874770544707589e+00 -6.019695018487620e+00 4.386423057323400e+00 4.554244301888629e+00 9.277569626473067e+03 + 138780 9.614649442157768e-01 -5.952858059194433e+00 -5.979390957273729e+00 3.941394314206933e+00 4.789038307482912e+00 9.153872958751237e+03 + 138800 9.980756984231722e-01 -5.984796938510010e+00 -5.988536752814010e+00 3.758549820069069e+00 4.737075227601110e+00 9.181894098136705e+03 + 138820 1.027205926728344e+00 -6.010223842825346e+00 -6.011589903290423e+00 3.641459349710522e+00 4.633615219122875e+00 9.252649237311534e+03 + 138840 1.042484912732457e+00 -6.020561223567104e+00 -5.999928791509024e+00 3.581207917847162e+00 4.699682535583198e+00 9.216817898297608e+03 + 138860 1.016864113563817e+00 -5.974845092630594e+00 -5.983979586573733e+00 3.764725872209722e+00 4.712274194429849e+00 9.167943752748713e+03 + 138880 1.010135971637415e+00 -5.959868827931151e+00 -5.994756100853274e+00 3.920790849782156e+00 4.720462729875290e+00 9.200933952388423e+03 + 138900 1.046664558950832e+00 -6.009333570595302e+00 -5.993723074146880e+00 3.634660251886134e+00 4.724298138209494e+00 9.197781767003269e+03 + 138920 1.010993530080897e+00 -5.954210104764313e+00 -5.966946009634162e+00 3.928174925303499e+00 4.855043388665912e+00 9.115833593962880e+03 + 138940 9.924294145143523e-01 -5.924753252347107e+00 -6.009918080958659e+00 4.126874071128037e+00 4.637844446025869e+00 9.247486684687939e+03 + 138960 1.054138938999807e+00 -6.014249152744109e+00 -5.988070277360423e+00 3.622333318559379e+00 4.772656472180376e+00 9.180457210945651e+03 + 138980 1.091916021523929e+00 -6.074589206648665e+00 -5.961398194291441e+00 3.260680337913804e+00 4.910640647121539e+00 9.098944956723913e+03 + 139000 9.784731303560069e-01 -5.914442185343897e+00 -5.972922490871821e+00 4.152886318348943e+00 4.817083354209569e+00 9.134106246987569e+03 + 139020 9.877251518939310e-01 -5.938213579487480e+00 -5.972416239482725e+00 4.000482681700767e+00 4.804085715163541e+00 9.132549204234649e+03 + 139040 1.022014123677860e+00 -5.999948599535696e+00 -5.959530374757204e+00 3.732623744062813e+00 4.964711445440985e+00 9.093231784024492e+03 + 139060 1.000159910573599e+00 -5.983600987090513e+00 -5.992974599411858e+00 3.769956745570819e+00 4.716132013059839e+00 9.195479892922767e+03 + 139080 9.718675324572668e-01 -5.963132596865949e+00 -5.992689981694489e+00 3.869925465537261e+00 4.700202387861263e+00 9.194611207981799e+03 + 139100 1.019755124935249e+00 -6.060015870725190e+00 -5.977046769048123e+00 3.322927223159451e+00 4.799348644416161e+00 9.146731589559658e+03 + 139120 9.975895886273581e-01 -6.057867091841376e+00 -5.972819376990802e+00 3.411723799607203e+00 4.900080939370534e+00 9.133774644911986e+03 + 139140 9.328465403205430e-01 -5.993961533544408e+00 -5.976571004889374e+00 3.725073636619342e+00 4.824932743332162e+00 9.145276035299072e+03 + 139160 9.479897595675055e-01 -6.047344966767739e+00 -6.017129249202492e+00 3.389763177648953e+00 4.563266503775776e+00 9.269718227110969e+03 + 139180 1.011959880373875e+00 -6.169819555886181e+00 -6.000175261480236e+00 2.783675629356377e+00 4.757799420205028e+00 9.217604753683912e+03 + 139200 9.154892308229345e-01 -6.051123462354822e+00 -5.988442786417762e+00 3.428768653972667e+00 4.788690795006516e+00 9.181619986936554e+03 + 139220 8.922454826453519e-01 -6.031170711024370e+00 -6.001831110391138e+00 3.522219522644110e+00 4.690692049768650e+00 9.222678329229055e+03 + 139240 8.761362034777506e-01 -6.012964409818143e+00 -6.057610958259385e+00 3.629318271694795e+00 4.372950881514144e+00 9.394753229811638e+03 + 139260 9.594046775456335e-01 -6.137721500636301e+00 -5.988636955762511e+00 2.947788135238627e+00 4.803854662662687e+00 9.182206038913773e+03 + 139280 9.512584835125947e-01 -6.117988402011913e+00 -5.976983797866439e+00 3.101210667359676e+00 4.910880924754958e+00 9.146532761520442e+03 + 139300 8.990495077398326e-01 -6.022390777149372e+00 -6.008914647597315e+00 3.574351727661690e+00 4.651733748973908e+00 9.244459523094181e+03 + 139320 1.001069693714184e+00 -6.146611205067710e+00 -5.957999026501625e+00 2.953656473913619e+00 5.036696790880383e+00 9.088559262280169e+03 + 139340 9.223555717611884e-01 -5.987872893432346e+00 -5.978999947615875e+00 3.746316338116642e+00 4.797266166078749e+00 9.152683710566191e+03 + 139360 9.443143130353924e-01 -5.970937566588930e+00 -5.932034676334697e+00 3.892854247663522e+00 5.116240663706135e+00 9.009569879566690e+03 + 139380 1.008871858860810e+00 -6.013370731109384e+00 -5.983046980701359e+00 3.636001715780814e+00 4.810125383208904e+00 9.165046057288451e+03 + 139400 1.041565271945755e+00 -6.022235653032827e+00 -5.981015604693980e+00 3.566330359703636e+00 4.803022256047164e+00 9.158866378015169e+03 + 139420 1.027836273921348e+00 -5.978122205441046e+00 -5.998472019214912e+00 3.797965562478400e+00 4.681113782665360e+00 9.212353343914412e+03 + 139440 1.009466535640037e+00 -5.939831146571914e+00 -5.997292424834126e+00 4.033332030045790e+00 4.703380478160099e+00 9.208709353659535e+03 + 139460 1.041206282675019e+00 -5.981756719168831e+00 -5.951782619529029e+00 3.826414964552618e+00 4.998530883161290e+00 9.069620015771638e+03 + 139480 1.007287025848718e+00 -5.928424013532305e+00 -5.989067162805219e+00 4.108610171889035e+00 4.760387824266940e+00 9.183520895470047e+03 + 139500 1.008982270719107e+00 -5.930587308172487e+00 -6.023111579792949e+00 4.075124124379039e+00 4.543835438649588e+00 9.288120030085545e+03 + 139520 1.031816982894506e+00 -5.968671314911522e+00 -6.024701023844102e+00 3.848204136739869e+00 4.526472877479562e+00 9.293002679199097e+03 + 139540 9.816026197301152e-01 -5.900843334584536e+00 -6.012302312500795e+00 4.176162858369779e+00 4.536148158953533e+00 9.254810638877512e+03 + 139560 1.048676741247871e+00 -6.008026713053574e+00 -5.993070832944642e+00 3.632758557624120e+00 4.718637535624570e+00 9.195775267534515e+03 + 139580 9.540366376147698e-01 -5.879824188056143e+00 -6.001984753459471e+00 4.326754787408502e+00 4.625289916576196e+00 9.223119296224577e+03 + 139600 1.021101261734541e+00 -5.992667410212600e+00 -5.987560975834699e+00 3.712305633727105e+00 4.741627570143175e+00 9.178889341040549e+03 + 139620 1.052432659058221e+00 -6.055037096053687e+00 -5.981180530722419e+00 3.425616248053733e+00 4.849712075452422e+00 9.159357667261595e+03 + 139640 9.177540726698735e-01 -5.874716062550161e+00 -5.995246444173249e+00 4.421752296396759e+00 4.729648193100710e+00 9.202432119519841e+03 + 139660 9.674341688513884e-01 -5.966576439080006e+00 -5.967237545243836e+00 3.914160822781624e+00 4.910364648883067e+00 9.116729422325068e+03 + 139680 9.996974498008849e-01 -6.030181140432274e+00 -5.955385577729390e+00 3.550095392135828e+00 4.979583087751705e+00 9.080572489813530e+03 + 139700 9.778611582283996e-01 -6.011700437458074e+00 -5.980357068776532e+00 3.624717050856529e+00 4.804695524196572e+00 9.156843599254829e+03 + 139720 1.002968606691855e+00 -6.065780958974684e+00 -6.015774281764803e+00 3.398710455775635e+00 4.685856534823062e+00 9.265502554859284e+03 + 139740 9.475353577337424e-01 -6.000399377827796e+00 -6.010992099680951e+00 3.694355543584535e+00 4.633530495485306e+00 9.250814456954708e+03 + 139760 9.837034200351007e-01 -6.069921041974932e+00 -5.969699151886783e+00 3.388004031820512e+00 4.963493633994035e+00 9.124266621802150e+03 + 139780 9.397638419537712e-01 -6.019850032637533e+00 -6.011249418515288e+00 3.603289536974414e+00 4.652675594205081e+00 9.251601560560146e+03 + 139800 9.274986035560753e-01 -6.016718879275818e+00 -5.947497587597029e+00 3.683777025818660e+00 5.081256394598535e+00 9.056567374901910e+03 + 139820 9.942138806225652e-01 -6.125556420011560e+00 -5.936118982336342e+00 3.034252557610459e+00 5.122031640090299e+00 9.021986265636609e+03 + 139840 9.154067809120243e-01 -6.013345097197727e+00 -5.975374112415577e+00 3.639276348400105e+00 4.857311619010117e+00 9.141610350291263e+03 + 139860 9.999805687638214e-01 -6.136773617034367e+00 -5.961041968042384e+00 2.980832779579394e+00 4.989911102476155e+00 9.097848958390865e+03 + 139880 1.000504414837675e+00 -6.130935729492550e+00 -5.964480283818151e+00 3.007665998046823e+00 4.963478926006188e+00 9.108355186333056e+03 + 139900 9.493958496280287e-01 -6.042435087515318e+00 -5.970253135352642e+00 3.495162447633007e+00 4.909642387072088e+00 9.125950512318645e+03 + 139920 9.335646826355021e-01 -5.995164987091253e+00 -5.973433861323950e+00 3.706809623257722e+00 4.831593110294422e+00 9.135660059288541e+03 + 139940 9.190353143275196e-01 -5.937343831768461e+00 -5.992490034522826e+00 4.029856009682089e+00 4.713197979619236e+00 9.193993017132780e+03 + 139960 1.082281947355622e+00 -6.134826964421048e+00 -5.933610321381832e+00 3.022688759555270e+00 5.178105862061328e+00 9.014360291081459e+03 + 139980 9.607710634993710e-01 -5.910898796417311e+00 -5.987669740174283e+00 4.267497327304602e+00 4.826666687986915e+00 9.179178896137977e+03 + 140000 1.039271965810176e+00 -5.990710146032883e+00 -5.996522244560563e+00 3.763777603042372e+00 4.730403633877088e+00 9.206359845461311e+03 + 140020 1.050559443552058e+00 -5.977212919504155e+00 -6.040764329919098e+00 3.790417362747454e+00 4.425495329595874e+00 9.342611193030794e+03 + 140040 1.088665831452289e+00 -6.014886321571232e+00 -6.011952008518938e+00 3.640558896634439e+00 4.657408176264182e+00 9.253787904044530e+03 + 140060 1.016833262413255e+00 -5.900447118288691e+00 -5.999870601960446e+00 4.303629088926229e+00 4.732724059948636e+00 9.216639227786196e+03 + 140080 1.042974697905954e+00 -5.936622368270984e+00 -6.030484976617540e+00 4.070735021349927e+00 4.531761399032308e+00 9.310860346156245e+03 + 140100 1.050948497478095e+00 -5.951160413499231e+00 -6.025755202745302e+00 3.969569609527926e+00 4.541234786170661e+00 9.296283753095908e+03 + 140120 1.103570541716088e+00 -6.038646247068137e+00 -5.989689614034788e+00 3.506304328699291e+00 4.787420891591265e+00 9.185447317129157e+03 + 140140 1.036414773888680e+00 -5.951695983547252e+00 -6.035146456058167e+00 3.950805779606819e+00 4.471620252530254e+00 9.325270139484175e+03 + 140160 1.065552503557105e+00 -6.017221693290765e+00 -6.004486137491869e+00 3.621384923377552e+00 4.694514455595706e+00 9.230841398119057e+03 + 140180 9.687431013003498e-01 -5.902566215031082e+00 -6.043851134160708e+00 4.272038335444653e+00 4.460758466031765e+00 9.352117257182197e+03 + 140200 9.835881766359523e-01 -5.953926016081099e+00 -5.990469940593682e+00 3.930318063609425e+00 4.720477193904134e+00 9.187797485481271e+03 + 140220 9.603287170207961e-01 -5.946275185406952e+00 -6.008753273525434e+00 3.916866430187317e+00 4.558107579758105e+00 9.243928213124656e+03 + 140240 1.003279568124133e+00 -6.034308122364427e+00 -5.964936208195249e+00 3.510232558347034e+00 4.908576824775479e+00 9.109720194156564e+03 + 140260 9.654094690770644e-01 -5.997810758409150e+00 -6.004888233020129e+00 3.731925060856548e+00 4.691285106404652e+00 9.232059913991478e+03 + 140280 9.945089940865300e-01 -6.057118329348220e+00 -6.000379423198772e+00 3.367487847439791e+00 4.693291426867273e+00 9.218212511212603e+03 + 140300 9.251676508640740e-01 -5.965904902066947e+00 -6.022868002305589e+00 3.835610842946036e+00 4.508519906364480e+00 9.287401483356078e+03 + 140320 9.751119130746871e-01 -6.050655435415186e+00 -5.988249141639406e+00 3.399652354974614e+00 4.757998951177893e+00 9.180993673788742e+03 + 140340 9.986779791683572e-01 -6.091131293055185e+00 -5.936310432326446e+00 3.219694444772151e+00 5.108699785527341e+00 9.022579318837066e+03 + 140360 9.248158492794594e-01 -5.980708733131189e+00 -6.014214151950415e+00 3.825642983887902e+00 4.633249684081097e+00 9.260726872562387e+03 + 140380 1.023852726813619e+00 -6.122196323624539e+00 -6.019284575389955e+00 2.971623172948092e+00 4.562558356852646e+00 9.276363442569453e+03 + 140400 9.603081427770820e-01 -6.022374272200974e+00 -6.033550464560696e+00 3.569588617318943e+00 4.505413191279241e+00 9.320345597233534e+03 + 140420 9.480806730104098e-01 -5.996902238293199e+00 -5.979127329620321e+00 3.750669414885718e+00 4.852735691143608e+00 9.153089297135541e+03 + 140440 9.750510415190047e-01 -6.025343950116312e+00 -5.946650333616828e+00 3.590734068160008e+00 5.042604991897842e+00 9.053988195520804e+03 + 140460 9.438519032522503e-01 -5.957673317462424e+00 -5.967326379361531e+00 3.919875540138139e+00 4.864446164906967e+00 9.117007614822234e+03 + 140480 1.039784637261428e+00 -6.061322307816333e+00 -5.983191125700571e+00 3.387552695303959e+00 4.836194033774019e+00 9.165518718433950e+03 + 140500 1.048946611528068e+00 -6.009537320196844e+00 -5.984471385867566e+00 3.680132734536541e+00 4.824065208396055e+00 9.169443472033599e+03 + 140520 1.047635065637033e+00 -5.931385968990310e+00 -6.019541016808548e+00 4.033297373389896e+00 4.527097446868012e+00 9.277138402448652e+03 + 140540 1.020421937679271e+00 -5.830507622662965e+00 -6.021171748973224e+00 4.666819675216939e+00 4.571996756765239e+00 9.282120037589350e+03 + 140560 1.036145561350414e+00 -5.820174278765174e+00 -6.030994495583753e+00 4.694113185317637e+00 4.483550876022242e+00 9.312403948056164e+03 + 140580 1.075222011742712e+00 -5.863212395232648e+00 -6.048042740088586e+00 4.421119613070854e+00 4.359795170504634e+00 9.365119382631123e+03 + 140600 1.117282991803117e+00 -5.927082821840458e+00 -6.047661570229141e+00 4.067252996236016e+00 4.374871163487192e+00 9.363918182723160e+03 + 140620 1.088775179302568e+00 -5.899455398355466e+00 -6.024868738480991e+00 4.238433739506362e+00 4.518290932853937e+00 9.293545241013813e+03 + 140640 1.051443054233381e+00 -5.865510618605229e+00 -6.026949572688205e+00 4.418455413955881e+00 4.491447957014031e+00 9.299968417289820e+03 + 140660 9.927627461601770e-01 -5.805080722834630e+00 -6.056344060210467e+00 4.738100044713173e+00 4.295307078625318e+00 9.390831867119829e+03 + 140680 1.130830834163895e+00 -6.042527462371108e+00 -6.022082596857853e+00 3.472898471174906e+00 4.590296052784730e+00 9.284951355406463e+03 + 140700 1.045421639331238e+00 -5.952905769220010e+00 -6.038482680384203e+00 3.942574423934081e+00 4.451178557045077e+00 9.335551615186174e+03 + 140720 1.052078873074801e+00 -6.003243100488001e+00 -5.996044786792337e+00 3.663328206599048e+00 4.704662037774996e+00 9.204904624115301e+03 + 140740 1.048075509295191e+00 -6.031359900790230e+00 -5.974147891400796e+00 3.514369792499370e+00 4.842890003943341e+00 9.137860574434528e+03 + 140760 9.866897509253569e-01 -5.969592081996824e+00 -6.021258229078704e+00 3.800718276947499e+00 4.504043265092923e+00 9.282400746387151e+03 + 140780 9.842859778632015e-01 -5.989258528342103e+00 -5.981360346766499e+00 3.780808746034306e+00 4.826161326881074e+00 9.159915684125603e+03 + 140800 1.025039625987521e+00 -6.068719006269219e+00 -5.952209507431798e+00 3.342413404122515e+00 5.011428976233660e+00 9.070929044921024e+03 + 140820 9.800267404338564e-01 -6.017324942433372e+00 -5.977325459509522e+00 3.574218876220778e+00 4.803902097069500e+00 9.147572645808463e+03 + 140840 9.649826952395790e-01 -6.006996154666909e+00 -5.983724091113316e+00 3.655614214026764e+00 4.789246004291693e+00 9.167141658103334e+03 + 140860 9.586687342000558e-01 -6.005604909571713e+00 -5.995785872904458e+00 3.671700691725548e+00 4.728083119759940e+00 9.204107862761723e+03 + 140880 1.010833751928174e+00 -6.087827565430208e+00 -5.956197721032634e+00 3.269319888157667e+00 5.025158824341126e+00 9.083077539047641e+03 + 140900 9.892234714487406e-01 -6.058046448985337e+00 -5.967098168846404e+00 3.408770980865002e+00 4.931010079623622e+00 9.116307242753910e+03 + 140920 9.229159332792360e-01 -5.958224400455188e+00 -5.964593114577438e+00 3.885299025836769e+00 4.848728883791480e+00 9.108657174966978e+03 + 140940 9.573584397267666e-01 -6.001651767664145e+00 -5.965607146938478e+00 3.644294143014509e+00 4.851267933108323e+00 9.111766693966527e+03 + 140960 9.499912818698969e-01 -5.976967541193374e+00 -5.983729341684115e+00 3.864423201486798e+00 4.825595896683719e+00 9.167152992677680e+03 + 140980 9.922585286993028e-01 -6.018920827465959e+00 -5.985631540579971e+00 3.556686798719530e+00 4.747839035519375e+00 9.173008227980257e+03 + 141000 1.016913080694127e+00 -6.027524622042455e+00 -6.006347799438236e+00 3.543745743904143e+00 4.665346336400278e+00 9.236558632446387e+03 + 141020 1.013757276565669e+00 -5.991294657543470e+00 -6.014316740519579e+00 3.717202544883464e+00 4.585006181778823e+00 9.261057411848966e+03 + 141040 1.036306636860578e+00 -5.990995461232297e+00 -6.004677484120759e+00 3.745810070954739e+00 4.667245778242993e+00 9.231406779728941e+03 + 141060 9.906825620558238e-01 -5.888731793953895e+00 -6.035655961202778e+00 4.269866885806182e+00 4.426205581021697e+00 9.326812336287958e+03 + 141080 1.047029676374936e+00 -5.940746316214888e+00 -6.012024556094582e+00 4.054878905138589e+00 4.645588221477409e+00 9.253966315788433e+03 + 141100 1.056556062184258e+00 -5.926210914889553e+00 -6.042121443779635e+00 4.060554069940636e+00 4.394977875957411e+00 9.346817524220820e+03 + 141120 1.069469150772407e+00 -5.926204044216679e+00 -6.034721077503134e+00 4.116279487443436e+00 4.493157889355987e+00 9.323934844436917e+03 + 141140 1.076978439284562e+00 -5.926763677401696e+00 -6.036924690747941e+00 4.090830640684237e+00 4.458269054688375e+00 9.330746633977484e+03 + 141160 1.113610639852611e+00 -5.979865021248573e+00 -6.032270212766877e+00 3.786546290298159e+00 4.485627570922877e+00 9.316383650121212e+03 + 141180 1.052430801443373e+00 -5.899444033338169e+00 -6.037422598073735e+00 4.201724928437632e+00 4.409430657612124e+00 9.332285454490506e+03 + 141200 1.001018954341893e+00 -5.843125103742261e+00 -6.001884713109192e+00 4.527133307993854e+00 4.615511063038791e+00 9.222830438803330e+03 + 141220 1.053441738936672e+00 -5.948775767670416e+00 -6.015071550364129e+00 4.013842541996681e+00 4.633161898530165e+00 9.263350203692316e+03 + 141240 1.018067213021564e+00 -5.941343355380109e+00 -6.019307989400730e+00 4.018124200323829e+00 4.570439206789301e+00 9.276415008488106e+03 + 141260 1.027009139694642e+00 -6.017865138168945e+00 -5.995497183275175e+00 3.559955656297009e+00 4.688395914726870e+00 9.203241187698095e+03 + 141280 9.897616396595379e-01 -6.023688523504218e+00 -5.980294227882100e+00 3.564800203792193e+00 4.813976964499939e+00 9.156654980107143e+03 + 141300 9.086248656873380e-01 -5.945568484552505e+00 -5.968699793542388e+00 4.010778748767713e+00 4.877955192989306e+00 9.121214103500190e+03 + 141320 9.679540741507150e-01 -6.053025479046577e+00 -5.949100488347890e+00 3.435367851875107e+00 5.032121230807300e+00 9.061446992055955e+03 + 141340 9.348910010922554e-01 -6.010019018875368e+00 -5.939561502359917e+00 3.690238511309681e+00 5.094816474406848e+00 9.032403370057227e+03 + 141360 9.896239785717778e-01 -6.089382365685028e+00 -5.957394265423803e+00 3.241510053754324e+00 4.999406150546781e+00 9.086712245697947e+03 + 141380 1.008036501142923e+00 -6.110628783072852e+00 -5.984542928817083e+00 3.069688259274591e+00 4.793692746134103e+00 9.169673717245327e+03 + 141400 9.713977190107396e-01 -6.050072347018994e+00 -6.014102599784207e+00 3.422552385997402e+00 4.629096240919940e+00 9.260383458849070e+03 + 141420 9.550728498929767e-01 -6.018318488867928e+00 -5.981082948293168e+00 3.606385052543970e+00 4.820197288705525e+00 9.159075791338442e+03 + 141440 9.449788370344295e-01 -5.989714602602669e+00 -6.011731015708292e+00 3.715226743915180e+00 4.588805092833777e+00 9.253072291942075e+03 + 141460 9.805588996264102e-01 -6.024033979299195e+00 -5.986754415650509e+00 3.582636339948993e+00 4.796701363413580e+00 9.176424509320697e+03 + 141480 1.013886731163816e+00 -6.052787804913662e+00 -5.970695542554855e+00 3.472948580001892e+00 4.944335054202704e+00 9.127294189133056e+03 + 141500 9.933681814621980e-01 -5.999144250062352e+00 -5.975103919385933e+00 3.701878434970018e+00 4.839921733943164e+00 9.140787526593922e+03 + 141520 9.925299714279370e-01 -5.974395686371683e+00 -6.002522419891299e+00 3.856125508978948e+00 4.694617452511373e+00 9.224798201875723e+03 + 141540 1.036909269935660e+00 -6.017075671685485e+00 -5.990634680904791e+00 3.645260771323949e+00 4.797089032116792e+00 9.188284979091130e+03 + 141560 1.030690774940583e+00 -5.984831026700464e+00 -6.000340183297270e+00 3.800659174723563e+00 4.711603197510472e+00 9.218086075113455e+03 + 141580 1.059356054481615e+00 -6.005358697595692e+00 -5.991209588195392e+00 3.678898142549591e+00 4.760144518293718e+00 9.190098571916709e+03 + 141600 1.025645813404789e+00 -5.939074375925124e+00 -5.990193097014016e+00 4.038262241441797e+00 4.744730634352856e+00 9.186959093315003e+03 + 141620 1.039102411569125e+00 -5.946573621461797e+00 -5.988061105249170e+00 4.005040078059525e+00 4.766812525985059e+00 9.180421855936946e+03 + 141640 1.015120950508631e+00 -5.902396342089075e+00 -6.043802599857450e+00 4.240662777741850e+00 4.428686163088174e+00 9.351966418212562e+03 + 141660 1.066289876538435e+00 -5.972924596185608e+00 -6.000622338383415e+00 3.881830891392726e+00 4.722786169481166e+00 9.218947278669320e+03 + 141680 1.050162373513105e+00 -5.948633817778926e+00 -6.063978554700931e+00 3.925769166493604e+00 4.263441837547104e+00 9.414496899009284e+03 + 141700 1.097744846988975e+00 -6.027959018068579e+00 -6.007425223298219e+00 3.542778947865839e+00 4.660687175031722e+00 9.239859753243667e+03 + 141720 1.015237205472077e+00 -5.922859089579497e+00 -6.040794875845186e+00 4.088652850800382e+00 4.411447315558855e+00 9.342692385535702e+03 + 141740 9.992999645226122e-01 -5.928450082214295e+00 -6.029938383530901e+00 4.031843490703297e+00 4.449081959279472e+00 9.309193244153425e+03 + 141760 1.005131453707304e+00 -5.979713273610386e+00 -5.997301665373799e+00 3.840827532112661e+00 4.739832264812318e+00 9.208772083242846e+03 + 141780 9.709160760615200e-01 -5.977794776201065e+00 -5.997990144347645e+00 3.866348730574209e+00 4.750383801453431e+00 9.210864588474331e+03 + 141800 9.803282639840547e-01 -6.039401266714443e+00 -6.000514034924663e+00 3.468238955243815e+00 4.691535457960405e+00 9.218606743545753e+03 + 141820 9.594156893267792e-01 -6.044415806484250e+00 -5.990626035941355e+00 3.434116237046788e+00 4.742985423444180e+00 9.188280744423204e+03 + 141840 9.647820290851310e-01 -6.076293939486161e+00 -6.023714161085698e+00 3.254644597503205e+00 4.556565821773074e+00 9.290003512394658e+03 + 141860 9.799331312897980e-01 -6.113530485927313e+00 -5.998207400971348e+00 3.088131490808723e+00 4.750334490815597e+00 9.211573102008309e+03 + 141880 9.791081092658948e-01 -6.121076411869053e+00 -5.994893726920822e+00 3.036269424687936e+00 4.760829928368070e+00 9.201404690172802e+03 + 141900 9.515235828014684e-01 -6.082358922162840e+00 -5.947038450224087e+00 3.279275326583140e+00 5.056306417230809e+00 9.055182317099874e+03 + 141920 8.836008570368252e-01 -5.975894933191378e+00 -5.945254142544695e+00 3.880072658151716e+00 5.056016819692001e+00 9.049754751835062e+03 + 141940 9.887244418249830e-01 -6.118377479073247e+00 -5.980695602983013e+00 3.049275634380639e+00 4.839866273092227e+00 9.157897631382149e+03 + 141960 9.668707091460165e-01 -6.068474017846654e+00 -6.011750519622595e+00 3.290458534623567e+00 4.616173639359096e+00 9.253170962469703e+03 + 141980 9.566425949516885e-01 -6.034813768600785e+00 -6.033036487519474e+00 3.507626369121915e+00 4.517831792124163e+00 9.318721682580426e+03 + 142000 1.004038576293480e+00 -6.084854991872959e+00 -5.981932706317867e+00 3.290092941929614e+00 4.881088632759166e+00 9.161660138357083e+03 + 142020 9.704113181751642e-01 -6.014270128656978e+00 -6.018011265880400e+00 3.621785149464350e+00 4.600302960588347e+00 9.272436866332000e+03 + 142040 1.020891498542913e+00 -6.068189293192276e+00 -6.030928457284438e+00 3.323109819221826e+00 4.537067305100354e+00 9.312258064387395e+03 + 142060 9.313846037419831e-01 -5.917956828884531e+00 -6.046468392225896e+00 4.170614632911557e+00 4.432681349105282e+00 9.360255764750656e+03 + 142080 9.876974470414244e-01 -5.986451151550558e+00 -6.010089991112716e+00 3.797085042413510e+00 4.661347167549000e+00 9.248058941784357e+03 + 142100 9.865588666130629e-01 -5.970843521640624e+00 -6.025893716498795e+00 3.836442290607359e+00 4.520335552741619e+00 9.296695781538567e+03 + 142120 9.978659225860754e-01 -5.975398535187557e+00 -5.993845507911345e+00 3.846927948965512e+00 4.741002576925712e+00 9.198139236066301e+03 + 142140 1.037418055071861e+00 -6.023656846879240e+00 -6.000921870730969e+00 3.587292319357650e+00 4.717840070627207e+00 9.219872018843118e+03 + 142160 9.814662358905988e-01 -5.933682733356086e+00 -5.955855410199995e+00 4.116290267641162e+00 4.988971325992786e+00 9.081998819400756e+03 + 142180 1.006290156889981e+00 -5.963976383038128e+00 -5.965372446521361e+00 3.852855995398918e+00 4.844839582838071e+00 9.111046410698093e+03 + 142200 1.047481148587131e+00 -6.018159330222583e+00 -5.962094939593655e+00 3.637263022041024e+00 4.959193428968744e+00 9.101048206122257e+03 + 142220 1.002273604933187e+00 -5.945937719405025e+00 -6.025765521854280e+00 3.954513594072913e+00 4.496129999096786e+00 9.296307185705766e+03 + 142240 1.045227449738763e+00 -6.008909018792191e+00 -6.004701200417505e+00 3.628634441373239e+00 4.652796385638479e+00 9.231487180750861e+03 + 142260 9.651797363616643e-01 -5.890481511811447e+00 -6.014161941286962e+00 4.267500682853779e+00 4.557308517320767e+00 9.260567480552654e+03 + 142280 1.043674373017887e+00 -6.009105819122472e+00 -5.988451812499212e+00 3.657056096916740e+00 4.775654599144696e+00 9.181623133001667e+03 + 142300 9.957376999981321e-01 -5.942344122685166e+00 -6.012914112802759e+00 3.960694666338446e+00 4.555470862412552e+00 9.256749772207137e+03 + 142320 1.040491920658572e+00 -6.015825299354069e+00 -5.983017559727877e+00 3.605839949018201e+00 4.794227066933098e+00 9.165010587232664e+03 + 142340 9.994088039570280e-01 -5.962430628539248e+00 -6.047037654014417e+00 3.837915649477888e+00 4.352089016304587e+00 9.361996244329765e+03 + 142360 1.026048782868298e+00 -6.010174758766356e+00 -6.040371211065406e+00 3.588133209479083e+00 4.414740507492050e+00 9.341385467273240e+03 + 142380 9.797001662907349e-01 -5.950474383779784e+00 -5.990698910418029e+00 3.943832485948611e+00 4.712857029266427e+00 9.188494684421121e+03 + 142400 9.590207729503555e-01 -5.924647544477073e+00 -5.961541643643755e+00 4.053980227020626e+00 4.842128600262144e+00 9.099355827855039e+03 + 142420 9.804165291732100e-01 -5.956797828481124e+00 -5.980226154222117e+00 3.888945055677298e+00 4.754415983750826e+00 9.156426823061702e+03 + 142440 1.061792405652693e+00 -6.078118683002723e+00 -5.984927216068314e+00 3.249408647038246e+00 4.784528471508521e+00 9.170844225918227e+03 + 142460 1.008319781043202e+00 -6.001355686136633e+00 -6.009803490822836e+00 3.672198483593791e+00 4.623689881792062e+00 9.247148198485729e+03 + 142480 9.943110195989456e-01 -5.983349514416791e+00 -6.014296597215626e+00 3.786024132945642e+00 4.608321194469145e+00 9.260987927078939e+03 + 142500 9.871588584594029e-01 -5.975868273140073e+00 -6.004761059490677e+00 3.801850301914451e+00 4.635943451545051e+00 9.231650570621630e+03 + 142520 1.003939292353814e+00 -6.004674630457796e+00 -5.948635115724188e+00 3.676227253136757e+00 4.998014818824013e+00 9.060025585643347e+03 + 142540 9.551728641951208e-01 -5.931695374645167e+00 -5.993754856400939e+00 4.041825165960039e+00 4.685470018044630e+00 9.197875852471430e+03 + 142560 1.044411162991910e+00 -6.060757482765778e+00 -5.996595092300579e+00 3.360660391295902e+00 4.729090766444914e+00 9.206593631515339e+03 + 142580 1.013720237661714e+00 -6.014316315733987e+00 -5.994531397870748e+00 3.596867370783127e+00 4.710475430859991e+00 9.200244459893176e+03 + 142600 1.001867699947043e+00 -5.997203436262343e+00 -5.979732260188305e+00 3.704597714830002e+00 4.804919911502883e+00 9.154906089212809e+03 + 142620 9.524291568218852e-01 -5.924121288090693e+00 -5.971248287314713e+00 4.088085772487668e+00 4.817475250063779e+00 9.128951718890730e+03 + 142640 1.001735671513476e+00 -5.992777140860269e+00 -5.996487365217235e+00 3.725273223232161e+00 4.703968540819094e+00 9.206226443449201e+03 + 142660 9.613129495625525e-01 -5.925723920730281e+00 -6.020572125854264e+00 4.036914292293101e+00 4.492281220758882e+00 9.280289681546901e+03 + 142680 1.009609205265977e+00 -5.988913008827472e+00 -6.023403619024745e+00 3.756742228633366e+00 4.558691807475943e+00 9.289043965302762e+03 + 142700 1.029077512995640e+00 -6.010423685659596e+00 -6.003596085243901e+00 3.671636605832519e+00 4.710841743987193e+00 9.228088647114182e+03 + 142720 1.004498501131532e+00 -5.967054148859640e+00 -6.015950838642973e+00 3.859726852844140e+00 4.578954493369956e+00 9.266086482446683e+03 + 142740 1.016610058950480e+00 -5.978257286552350e+00 -5.984141750258368e+00 3.842952519795537e+00 4.809163018577767e+00 9.168401728827126e+03 + 142760 1.037010198897318e+00 -6.001106810445228e+00 -5.968040059890471e+00 3.729046914678434e+00 4.918921313426964e+00 9.119195411609782e+03 + 142780 1.043765490488644e+00 -6.001162120896964e+00 -5.999453320286821e+00 3.705922684995933e+00 4.715734882535417e+00 9.215359763799423e+03 + 142800 9.882945898864103e-01 -5.909028491285439e+00 -6.024177939603366e+00 4.200667557591085e+00 4.539461606030017e+00 9.291367650636803e+03 + 142820 1.042999778384037e+00 -5.982229274275739e+00 -6.014147336379139e+00 3.769029742196590e+00 4.585751290294722e+00 9.260513115487433e+03 + 142840 1.066330962877568e+00 -6.009682383830716e+00 -6.003407601451631e+00 3.604155857142057e+00 4.640186628582198e+00 9.227512182618684e+03 + 142860 1.074253757207893e+00 -6.017738210820341e+00 -5.961116739952267e+00 3.641291150711384e+00 4.966420398580166e+00 9.098062390963509e+03 + 142880 1.028458141666634e+00 -5.949073714007098e+00 -5.975618328637364e+00 3.971923759503286e+00 4.819500474530461e+00 9.142324029034984e+03 + 142900 9.962642227907526e-01 -5.904574686352394e+00 -6.032973496647770e+00 4.164658618159294e+00 4.427372779791568e+00 9.318530525606498e+03 + 142920 9.964125332380310e-01 -5.912081855520427e+00 -6.071961561969874e+00 4.139308120854674e+00 4.221254105117334e+00 9.439260689183357e+03 + 142940 9.782090630188435e-01 -5.897955346686912e+00 -6.034694719962548e+00 4.208027255902010e+00 4.422848614203676e+00 9.323851000463592e+03 + 142960 1.067403364824678e+00 -6.049200262546028e+00 -5.974986924073215e+00 3.422810958373380e+00 4.848955432361290e+00 9.140420884608367e+03 + 142980 9.927893057555371e-01 -5.962137003073414e+00 -5.956742057992380e+00 3.961090968765237e+00 4.992069578285587e+00 9.084720758714664e+03 + 143000 1.026019119867684e+00 -6.036055376448913e+00 -5.984680309537648e+00 3.450881712408640e+00 4.745885296879035e+00 9.170053386416050e+03 + 143020 9.647712210801486e-01 -5.971458341798068e+00 -6.004646947453050e+00 3.824764251827710e+00 4.634190142236677e+00 9.231317846897882e+03 + 143040 1.006043025003857e+00 -6.059548405177569e+00 -5.941751397893956e+00 3.385705542192978e+00 5.062114187043447e+00 9.039108052576381e+03 + 143060 9.834685013277533e-01 -6.048593253328431e+00 -5.958410427582512e+00 3.475043717105672e+00 4.992887458285916e+00 9.089821783521229e+03 + 143080 9.604258565669499e-01 -6.033373924363105e+00 -5.988692217645143e+00 3.500531396540684e+00 4.757100670986988e+00 9.182370460024833e+03 + 143100 9.767269123638138e-01 -6.073175703477518e+00 -6.021280549218176e+00 3.251190550799609e+00 4.549180557305919e+00 9.282503418707242e+03 + 143120 9.152276782151394e-01 -5.995081453708726e+00 -6.008599762588126e+00 3.714549007671534e+00 4.636924786134485e+00 9.243458511449135e+03 + 143140 9.913225686978538e-01 -6.114720242008745e+00 -5.959014249576824e+00 3.079549464007989e+00 4.973637367976536e+00 9.091670229858397e+03 + 143160 9.374464509799327e-01 -6.037297109677590e+00 -5.972196253806087e+00 3.543735693500602e+00 4.917554882239661e+00 9.131895939282223e+03 + 143180 1.015866879835405e+00 -6.150003579389574e+00 -5.961317527452905e+00 2.914545137766831e+00 4.998009647059360e+00 9.098690308320665e+03 + 143200 9.365780732945125e-01 -6.023435982530565e+00 -6.018803742586784e+00 3.522245175699686e+00 4.548844214293695e+00 9.274883101747489e+03 + 143220 9.300010627794899e-01 -5.994624371691734e+00 -6.006834158626491e+00 3.711770903991634e+00 4.641660417953839e+00 9.238066943241354e+03 + 143240 1.023246466176175e+00 -6.104002153902939e+00 -5.982219445089179e+00 3.117698160170527e+00 4.816993319992414e+00 9.162559474250294e+03 + 143260 9.721329519116175e-01 -5.985086341775935e+00 -6.009694401454455e+00 3.724921226537425e+00 4.583617939778431e+00 9.246854407973240e+03 + 143280 1.063641854297031e+00 -6.070495532818321e+00 -6.008954012090708e+00 3.314509536508950e+00 4.667890472046462e+00 9.244531757791163e+03 + 143300 1.010493805931066e+00 -5.941367724443690e+00 -6.026303035632594e+00 4.009641400944105e+00 4.521929700400486e+00 9.297981836653473e+03 + 143320 1.012729496248912e+00 -5.907177984936294e+00 -6.053822504389078e+00 4.132693106388690e+00 4.290637582524757e+00 9.383016451438394e+03 + 143340 1.061221067572097e+00 -5.952310669914858e+00 -6.028576148133952e+00 3.945692539033772e+00 4.507764361055123e+00 9.304996156273090e+03 + 143360 1.036282915545778e+00 -5.902754131994434e+00 -6.021870667020902e+00 4.255642052529083e+00 4.571656475182881e+00 9.284306240018786e+03 + 143380 9.879113787359696e-01 -5.826809187271335e+00 -6.041115557823209e+00 4.624213277181127e+00 4.393632933668609e+00 9.343672724734479e+03 + 143400 1.061538224418216e+00 -5.939497605841168e+00 -6.026822538860154e+00 4.047741778883918e+00 4.546308499999190e+00 9.299561292291912e+03 + 143420 1.001514964040311e+00 -5.858371172065785e+00 -6.073463418108338e+00 4.372124418156257e+00 4.137031455962418e+00 9.443942625760783e+03 + 143440 1.040184095872913e+00 -5.929083185951812e+00 -6.046890442153262e+00 4.016947331906178e+00 4.340479836183476e+00 9.361547554591014e+03 + 143460 1.058521401880514e+00 -5.975006626132298e+00 -5.980661051339097e+00 3.814182501465948e+00 4.781713916909037e+00 9.157769035170137e+03 + 143480 1.028226576102049e+00 -5.951336712703938e+00 -6.021527621822290e+00 3.901224011419464e+00 4.498176949253809e+00 9.283253846583002e+03 + 143500 1.048556297179285e+00 -6.006838180929597e+00 -5.983995968153402e+00 3.697261402318385e+00 4.828424922900298e+00 9.167979203645467e+03 + 143520 1.029890065906846e+00 -6.004892522430193e+00 -5.985943869576150e+00 3.659879668707164e+00 4.768685765689637e+00 9.173934523554297e+03 + 143540 9.538036474451987e-01 -5.913590389762581e+00 -6.009969469341366e+00 4.178104796631958e+00 4.624681207076218e+00 9.247675061024946e+03 + 143560 1.012715031401895e+00 -6.019034233876248e+00 -6.009694086543540e+00 3.594488709198890e+00 4.648121280566425e+00 9.246826513885047e+03 + 143580 9.733735499732030e-01 -5.979023600973283e+00 -6.008251802150051e+00 3.772054306763055e+00 4.604221452556541e+00 9.242371086229577e+03 + 143600 9.880315513425267e-01 -6.014021739554329e+00 -5.986260927109575e+00 3.620331079507977e+00 4.779737960537590e+00 9.174924635878944e+03 + 143620 9.313600886086034e-01 -5.938372174170290e+00 -6.026278103158965e+00 4.045760165831454e+00 4.540990718179937e+00 9.297887214277560e+03 + 143640 9.989173021684992e-01 -6.044704776968807e+00 -6.018079413397022e+00 3.457695797793874e+00 4.610582755684765e+00 9.272629529830709e+03 + 143660 9.641524096041182e-01 -5.997654430137785e+00 -6.015448881368094e+00 3.719616232865168e+00 4.617437740218303e+00 9.264533872674030e+03 + 143680 9.560633477564715e-01 -5.986498786776670e+00 -6.025915561312735e+00 3.762388360020151e+00 4.536051140907918e+00 9.296750133693036e+03 + 143700 9.895806141636594e-01 -6.036024120975520e+00 -5.999281280832203e+00 3.453368192570767e+00 4.664351266609829e+00 9.214860307347501e+03 + 143720 9.305391670892742e-01 -5.945524119680344e+00 -6.043139935169205e+00 3.970055040170172e+00 4.409529921634503e+00 9.349946439629472e+03 + 143740 1.061353110054638e+00 -6.136144326259783e+00 -5.991201493636836e+00 2.965842738445165e+00 4.798126913196986e+00 9.190073329597906e+03 + 143760 9.746022096756571e-01 -6.004583114890686e+00 -6.001638010846513e+00 3.670341449131880e+00 4.687252692306902e+00 9.222084502237043e+03 + 143780 9.617814547405216e-01 -5.979820307019961e+00 -6.033599877516112e+00 3.821633890556231e+00 4.512823274405692e+00 9.320476972602357e+03 + 143800 9.940299595643953e-01 -6.024105812233958e+00 -6.053652579246680e+00 3.541088593013546e+00 4.371426484479080e+00 9.382486029371168e+03 + 143820 9.934220929545590e-01 -6.020856150979756e+00 -5.986429219386841e+00 3.634865626452483e+00 4.832550395209445e+00 9.175447582747558e+03 + 143840 9.336235936238786e-01 -5.928569950435494e+00 -5.997170815986062e+00 4.089482899643536e+00 4.695566113702541e+00 9.208366924125321e+03 + 143860 9.579732958412619e-01 -5.958442086043971e+00 -6.020991249061446e+00 3.951048559317218e+00 4.591881585819186e+00 9.281606577962350e+03 + 143880 1.025746830866926e+00 -6.053502674050260e+00 -6.004290854731942e+00 3.361537535396411e+00 4.644119417426618e+00 9.230249752549575e+03 + 143900 1.012618008160733e+00 -6.030879602627622e+00 -6.005019792830430e+00 3.583605066745339e+00 4.732096096393448e+00 9.232454361630713e+03 + 143920 9.659397369825446e-01 -5.958651799654382e+00 -6.045498812339742e+00 3.941984066132457e+00 4.443295079761339e+00 9.357248161348914e+03 + 143940 9.499252733193427e-01 -5.932495142223002e+00 -6.068624006632215e+00 3.960479052772289e+00 4.178806047460901e+00 9.428888812345143e+03 + 143960 1.025897109771379e+00 -6.043656378010708e+00 -5.948933609144008e+00 3.476560964018336e+00 5.020473761152031e+00 9.060954174058699e+03 + 143980 9.902747496636225e-01 -5.987099795935081e+00 -5.942910302669016e+00 3.772094946401851e+00 5.025837855037580e+00 9.042618572532034e+03 + 144000 1.014369870409376e+00 -6.017886043817189e+00 -5.966386763768344e+00 3.611849037809804e+00 4.907565873338106e+00 9.114134677206197e+03 + 144020 1.060071315355936e+00 -6.080474905319726e+00 -5.981649062804132e+00 3.266070536674904e+00 4.833543817649153e+00 9.160801772162207e+03 + 144040 9.336360902447188e-01 -5.889752907444445e+00 -6.026994267898646e+00 4.234643815143498e+00 4.446582685383585e+00 9.300109285921108e+03 + 144060 1.016183759593726e+00 -6.010553227136117e+00 -5.953773299627930e+00 3.655515318849727e+00 4.981554449267125e+00 9.075681674259638e+03 + 144080 1.042448328337857e+00 -6.043492781098114e+00 -5.980600985419255e+00 3.482275370755247e+00 4.843409794017186e+00 9.157594006075678e+03 + 144100 1.055453035269398e+00 -6.057699008517859e+00 -5.981378146222158e+00 3.385918011167252e+00 4.824164213084437e+00 9.159986472115066e+03 + 144120 9.768278981413673e-01 -5.940238731333043e+00 -6.027516242246314e+00 3.924976298429452e+00 4.423815324614287e+00 9.301690925457126e+03 + 144140 9.834784577796795e-01 -5.948209082310563e+00 -5.988030026723845e+00 3.988810300836133e+00 4.760152275743841e+00 9.180292570493884e+03 + 144160 9.903699465857806e-01 -5.954424718797602e+00 -5.995278799276906e+00 3.923677068597578e+00 4.689086616336895e+00 9.202556877187741e+03 + 144180 1.029301056925180e+00 -6.006865177549577e+00 -6.043133211473513e+00 3.618377520503141e+00 4.410120857251790e+00 9.349936721829825e+03 + 144200 9.983792096944891e-01 -5.955916815061374e+00 -5.986795537831901e+00 3.948274998447801e+00 4.770964593832530e+00 9.176539094531541e+03 + 144220 9.289415100248983e-01 -5.846344166606392e+00 -6.038041599636792e+00 4.552108678056678e+00 4.451352352514238e+00 9.334155952656027e+03 + 144240 1.002379075372907e+00 -5.946351141638212e+00 -6.021007892291544e+00 4.008658598588260e+00 4.579967983242004e+00 9.281640685353375e+03 + 144260 1.071559996693637e+00 -6.039084711588035e+00 -6.008024287792261e+00 3.520806622139150e+00 4.699160382159530e+00 9.241708031452441e+03 + 144280 1.043137856430322e+00 -5.990468920749844e+00 -6.016281287919490e+00 3.753439233654996e+00 4.605220626915976e+00 9.267106504027775e+03 + 144300 9.956429338715099e-01 -5.918310251371743e+00 -5.987846446056897e+00 4.105747950252718e+00 4.706460359679213e+00 9.179781891319402e+03 + 144320 1.044458120710779e+00 -5.992211508343604e+00 -5.974984969084431e+00 3.750799579115562e+00 4.849717033340064e+00 9.140414285493685e+03 + 144340 1.010283980211606e+00 -5.943098365747236e+00 -6.039151294722764e+00 3.961705475150188e+00 4.410154692829986e+00 9.337616758301112e+03 + 144360 1.029353828808548e+00 -5.976700898708115e+00 -6.045631880626789e+00 3.822989003481549e+00 4.427176638269541e+00 9.357661160185173e+03 + 144380 1.028447427801659e+00 -5.987087893225515e+00 -6.023929241695418e+00 3.745776287906024e+00 4.534227563811589e+00 9.290652738800543e+03 + 144400 9.692081921801015e-01 -5.915445046845586e+00 -6.015530229527405e+00 4.179696153271037e+00 4.604991546180071e+00 9.264754808114811e+03 + 144420 1.020394386658607e+00 -6.008152185772259e+00 -6.018911213171092e+00 3.649951272140290e+00 4.588171271862080e+00 9.275204951680213e+03 + 144440 9.989798054457499e-01 -5.996896155462064e+00 -6.014284143787217e+00 3.717490107801686e+00 4.617645588056162e+00 9.260972418421827e+03 + 144460 9.828511786228347e-01 -5.996782425122694e+00 -5.988661207397268e+00 3.737312240817089e+00 4.783945529750866e+00 9.182274992167886e+03 + 144480 9.752927864206771e-01 -6.008401457709764e+00 -5.958385143491872e+00 3.699928789219178e+00 4.987130205457923e+00 9.089742022250099e+03 + 144500 9.922385590005608e-01 -6.052653920123117e+00 -5.976508644279844e+00 3.430651551632200e+00 4.867889508967630e+00 9.145068780262003e+03 + 144520 1.017123853915155e+00 -6.105353833576578e+00 -6.000964034910270e+00 3.168960690198380e+00 4.768383068409456e+00 9.220027864427217e+03 + 144540 9.487119707961863e-01 -6.021110358112641e+00 -6.040214741580036e+00 3.558576257006641e+00 4.448875930743070e+00 9.340921783235255e+03 + 144560 9.026028946012893e-01 -5.967611315871537e+00 -6.014737750710964e+00 3.891011627032643e+00 4.620404345392432e+00 9.262350971235863e+03 + 144580 9.874290768127768e-01 -6.103904521217029e+00 -5.966017526379519e+00 3.175748110241649e+00 4.967516572542120e+00 9.113028670455484e+03 + 144600 9.555772537023101e-01 -6.061856679975254e+00 -5.971977075575844e+00 3.415717682482437e+00 4.931820279767676e+00 9.131238649806804e+03 + 144620 1.002106564697661e+00 -6.130561389194900e+00 -5.985031245250846e+00 3.036175285229489e+00 4.871831892473244e+00 9.171153930086708e+03 + 144640 9.548740251438269e-01 -6.054844662563151e+00 -6.006140089569624e+00 3.443062668460361e+00 4.722731863597509e+00 9.235916270339654e+03 + 144660 9.574667831813201e-01 -6.047251958536547e+00 -6.009259667865623e+00 3.445729998679647e+00 4.663887611000070e+00 9.245494254957252e+03 + 144680 9.935237374302001e-01 -6.080875950127553e+00 -6.006597620359730e+00 3.240684340824690e+00 4.667202004885914e+00 9.237328254619470e+03 + 144700 1.003555442415166e+00 -6.063941102186172e+00 -6.074293645540260e+00 3.314050253789290e+00 4.254604347799207e+00 9.446480508453158e+03 + 144720 1.019025153726932e+00 -6.047493788361750e+00 -6.035105376172393e+00 3.477170211038755e+00 4.548306390930634e+00 9.325130596617020e+03 + 144740 1.045326163237689e+00 -6.042208336706166e+00 -5.979536431794300e+00 3.543691574839599e+00 4.903563351289472e+00 9.154327012092313e+03 + 144760 1.002403033047359e+00 -5.936714673399880e+00 -5.998580282713635e+00 4.038788379699493e+00 4.683546477347813e+00 9.212687675037250e+03 + 144780 1.057193355593690e+00 -5.981412378363301e+00 -5.972072272491848e+00 3.829673003025956e+00 4.883305336316552e+00 9.131496380463392e+03 + 144800 1.016129099115472e+00 -5.891847640501859e+00 -6.007914532800223e+00 4.251371163740721e+00 4.584897106869981e+00 9.241339381482812e+03 + 144820 1.101933598111601e+00 -6.000036924601751e+00 -6.005764575985403e+00 3.668584028255698e+00 4.635694967659583e+00 9.234769286642828e+03 + 144840 1.031770440545979e+00 -5.889102975343481e+00 -5.976460742222110e+00 4.303573959866751e+00 4.801952143878929e+00 9.144907823379370e+03 + 144860 1.041268232760532e+00 -5.902540212773613e+00 -5.986459236138743e+00 4.293879999035793e+00 4.812003980446323e+00 9.175461533667130e+03 + 144880 1.052883114936598e+00 -5.922056816640553e+00 -6.001944790626474e+00 4.068539209727355e+00 4.609810100476178e+00 9.223013979141930e+03 + 144900 1.042604009323368e+00 -5.915408320578691e+00 -6.052808209542293e+00 4.085292441540838e+00 4.296321016547741e+00 9.379879341855692e+03 + 144920 1.086754051780475e+00 -5.996094502526765e+00 -6.059591255788689e+00 3.672548908514755e+00 4.307940725193978e+00 9.400908868190780e+03 + 144940 1.093313426701941e+00 -6.030334237964823e+00 -5.996489856500554e+00 3.542656256573276e+00 4.736995932342215e+00 9.206285845821174e+03 + 144960 9.911581930978604e-01 -5.906002446741732e+00 -5.982194407467508e+00 4.229033849360227e+00 4.791527820205011e+00 9.162459639005017e+03 + 144980 1.041393271649913e+00 -6.005101414096837e+00 -5.959243074519414e+00 3.695479799738741e+00 4.958805482147418e+00 9.092323387662025e+03 + 145000 9.874712931500707e-01 -5.944512912253335e+00 -5.955143343358591e+00 4.065727153914446e+00 5.004685573454165e+00 9.079814552272344e+03 + 145020 1.013137349676630e+00 -5.997362055617272e+00 -5.986892836257746e+00 3.671249785856440e+00 4.731365663525300e+00 9.176870571800657e+03 + 145040 1.068891167059814e+00 -6.093898883652746e+00 -5.964241855106389e+00 3.161931138911403e+00 4.906441861184907e+00 9.107614224802788e+03 + 145060 1.011213912769952e+00 -6.021187766152206e+00 -5.999054622220345e+00 3.601250260699259e+00 4.728342198248963e+00 9.214160386902144e+03 + 145080 9.780658222858261e-01 -5.983171572996707e+00 -5.962530549829269e+00 3.815888348747477e+00 4.934412297962912e+00 9.102391661962129e+03 + 145100 9.720462998520066e-01 -5.979207050715813e+00 -5.947481446264239e+00 3.808697964843324e+00 4.990871295125682e+00 9.056518569064914e+03 + 145120 9.743391592880173e-01 -5.981651258752540e+00 -6.011709842264171e+00 3.798795591526098e+00 4.626194553451548e+00 9.253009881822180e+03 + 145140 1.014331013378868e+00 -6.040166132140115e+00 -5.994992635611113e+00 3.514027951964257e+00 4.773421159609784e+00 9.201672397612650e+03 + 145160 9.931208031175235e-01 -6.008158451416429e+00 -5.978686670691088e+00 3.656369979928587e+00 4.825601505596820e+00 9.151740401101335e+03 + 145180 9.475790624594267e-01 -5.939791933474814e+00 -5.968457432874230e+00 4.020263164275666e+00 4.855661430752526e+00 9.120490261249868e+03 + 145200 1.017955111748345e+00 -6.041677097053587e+00 -6.021295644252211e+00 3.408636012929029e+00 4.525669468934161e+00 9.282535257283180e+03 + 145220 9.526689823692729e-01 -5.940916992149564e+00 -6.073555036225358e+00 3.950682128342974e+00 4.189053953588783e+00 9.444211523126007e+03 + 145240 9.335041097603322e-01 -5.909850348770558e+00 -6.006239578738558e+00 4.200062725784658e+00 4.646580851123268e+00 9.236215468487306e+03 + 145260 1.019550575353238e+00 -6.034348261036230e+00 -5.995744101049172e+00 3.521406102546639e+00 4.743077163166782e+00 9.203959046572074e+03 + 145280 1.024980634756864e+00 -6.038258589462449e+00 -5.961112433282899e+00 3.521251883204492e+00 4.964237050316555e+00 9.098061313059632e+03 + 145300 1.003642712589381e+00 -6.000762666124282e+00 -6.010712942930789e+00 3.684758114869472e+00 4.627622085646147e+00 9.249973626649706e+03 + 145320 1.033744561389013e+00 -6.042117180773358e+00 -5.987979750018617e+00 3.437339936045349e+00 4.748205441179408e+00 9.180195905544217e+03 + 145340 1.011783451088057e+00 -6.007179067788475e+00 -6.017114465136246e+00 3.684469228350953e+00 4.627418639282282e+00 9.269642299866960e+03 + 145360 1.092967586923631e+00 -6.125171486909958e+00 -5.963355699245301e+00 3.053486864493879e+00 4.982658158176555e+00 9.104902940462320e+03 + 145380 9.682162726071293e-01 -5.937233548909616e+00 -6.010337406717683e+00 4.031860411286591e+00 4.612086746967239e+00 9.248772243024816e+03 + 145400 1.046575386064725e+00 -6.048581976902052e+00 -5.974643567375191e+00 3.460519971352876e+00 4.885085760788013e+00 9.139373433433399e+03 + 145420 1.007600647814133e+00 -5.983677442895872e+00 -6.035090240117079e+00 3.784176775495172e+00 4.488956537746344e+00 9.325079018630891e+03 + 145440 9.638571545998363e-01 -5.912179908565498e+00 -6.016799192743081e+00 4.165763605929975e+00 4.565023486400396e+00 9.268679395179701e+03 + 145460 1.019083456785201e+00 -5.984129771276293e+00 -5.984455688647537e+00 3.776236927355304e+00 4.774365459374071e+00 9.169371379845108e+03 + 145480 9.870894664988736e-01 -5.924503134147398e+00 -6.027877291741325e+00 4.092112362956762e+00 4.498521952953245e+00 9.302798620654576e+03 + 145500 9.816906500064776e-01 -5.903564928730553e+00 -6.048048205638713e+00 4.211895846254343e+00 4.382250511532852e+00 9.365114880320070e+03 + 145520 1.082824479996435e+00 -6.042077948874216e+00 -6.002867653342624e+00 3.505682477835420e+00 4.730834062551443e+00 9.225846495392634e+03 + 145540 1.040844646776641e+00 -5.971350013758226e+00 -6.041048592723508e+00 3.798125769831970e+00 4.397905743593085e+00 9.343500300733818e+03 + 145560 1.019804143585232e+00 -5.937787314132484e+00 -6.024253217652326e+00 4.003955200689191e+00 4.507454602122932e+00 9.291645145871644e+03 + 145580 1.031286474813202e+00 -5.955396363111252e+00 -6.007380786040503e+00 3.956640774048983e+00 4.658138173025774e+00 9.239707903333529e+03 + 145600 1.038987418999279e+00 -5.970476388547776e+00 -6.027586884532651e+00 3.807027830547201e+00 4.479090524781360e+00 9.301945639376803e+03 + 145620 1.035932158605705e+00 -5.978445654206726e+00 -6.012593903787412e+00 3.741923999718796e+00 4.545839466201954e+00 9.255745353414741e+03 + 145640 9.837738292308880e-01 -5.917204793739272e+00 -5.991695734867803e+00 4.145532617375531e+00 4.717794105979625e+00 9.191552627297691e+03 + 145660 9.836842500762703e-01 -5.933570776768774e+00 -6.011943450305389e+00 4.048867312462821e+00 4.598839292883548e+00 9.253746809324623e+03 + 145680 9.411711280831839e-01 -5.890774029861855e+00 -6.056745290991517e+00 4.225746766358314e+00 4.272714100982140e+00 9.392054781500821e+03 + 145700 9.743102419496299e-01 -5.961497024456220e+00 -5.999957224657376e+00 3.832623925733288e+00 4.611779504481505e+00 9.216928998132345e+03 + 145720 9.780982226129207e-01 -5.987629962371034e+00 -5.990705726878312e+00 3.790746271376127e+00 4.773084755602310e+00 9.188532038363888e+03 + 145740 9.948462064437332e-01 -6.033365698968798e+00 -5.980145974862686e+00 3.512994169408116e+00 4.818590060951104e+00 9.156220692000652e+03 + 145760 1.003769317725403e+00 -6.069465503627400e+00 -5.993995313530084e+00 3.298422195060307e+00 4.731783705573271e+00 9.198641005881693e+03 + 145780 9.506041316927898e-01 -6.011929612584299e+00 -6.000224096304006e+00 3.617254287763143e+00 4.684469173667376e+00 9.217715600310836e+03 + 145800 9.728668483253247e-01 -6.060877702061767e+00 -5.960825538542474e+00 3.413123589772861e+00 4.987638595722905e+00 9.097180685107685e+03 + 145820 9.556485520576307e-01 -6.048200430856607e+00 -5.937880548138871e+00 3.449067575245161e+00 5.082541413757077e+00 9.027339840821322e+03 + 145840 9.933183589544394e-01 -6.110236597500824e+00 -5.946467045893995e+00 3.096220199056275e+00 5.036610307638897e+00 9.053441679947524e+03 + 145860 9.784443209505010e-01 -6.088791789865550e+00 -6.007538757011688e+00 3.230790965284486e+00 4.697358453797559e+00 9.240210349957841e+03 + 145880 1.013295181059930e+00 -6.138126787434806e+00 -5.975460243441630e+00 2.959484756340250e+00 4.893541224515396e+00 9.141892186471507e+03 + 145900 9.082476550196908e-01 -5.975552723767165e+00 -6.006052397222250e+00 3.809120325564397e+00 4.633986480776086e+00 9.235651166895092e+03 + 145920 9.567834750865056e-01 -6.033224612110772e+00 -6.017202338090662e+00 3.484965509286502e+00 4.576967886148863e+00 9.269935291529953e+03 + 145940 9.722272138947428e-01 -6.030628082208806e+00 -5.990683533000507e+00 3.567683116084994e+00 4.797050899038059e+00 9.188470689165501e+03 + 145960 9.758023476667106e-01 -5.999971386669308e+00 -6.010560486265526e+00 3.702835033620540e+00 4.642030785081194e+00 9.249481798077104e+03 + 145980 1.069745781327832e+00 -6.091064445750801e+00 -5.967342563671442e+00 3.225776254763271e+00 4.936206447562325e+00 9.117067785313837e+03 + 146000 9.251665762046253e-01 -5.826788832623731e+00 -6.004874331934950e+00 4.629707718938314e+00 4.607113223251342e+00 9.231990515375182e+03 + 146020 1.035293612937146e+00 -5.948288511163669e+00 -5.985042876295799e+00 3.989739258162590e+00 4.778690005854278e+00 9.171115299340856e+03 + 146040 1.072172678696891e+00 -5.971231224333609e+00 -5.995723109845643e+00 3.821631382101134e+00 4.680995185384003e+00 9.203910461079264e+03 + 146060 1.047336673222628e+00 -5.913950015851645e+00 -6.013445493745230e+00 4.163646691520501e+00 4.592328260580096e+00 9.258356292769116e+03 + 146080 1.009824679823282e+00 -5.849770561908489e+00 -5.995524063887132e+00 4.463993538030841e+00 4.627054374387941e+00 9.203280867288271e+03 + 146100 1.012623781819700e+00 -5.852142707651311e+00 -5.967909878433217e+00 4.502499863371762e+00 4.837746853830280e+00 9.118761003599975e+03 + 146120 1.056437723715421e+00 -5.917973506924930e+00 -6.002152596297615e+00 4.159311457767623e+00 4.675942099917687e+00 9.223603410968901e+03 + 146140 9.785362630741612e-01 -5.810257216633323e+00 -5.983269566300072e+00 4.706128329318606e+00 4.712664643957552e+00 9.165745759444226e+03 + 146160 1.017852916723209e+00 -5.878143895691900e+00 -6.027114502958660e+00 4.329233448570450e+00 4.473821168517744e+00 9.300473109806604e+03 + 146180 1.043911539691283e+00 -5.931726183279805e+00 -6.066501171590415e+00 3.988029534308422e+00 4.214130695066862e+00 9.422320708805637e+03 + 146200 1.068630467382682e+00 -5.991433534256910e+00 -6.003386599902315e+00 3.725438602849283e+00 4.656802250182437e+00 9.227455040859490e+03 + 146220 9.706682045866865e-01 -5.875598124608504e+00 -6.033785671935535e+00 4.349922322986341e+00 4.441584946790698e+00 9.321047674975394e+03 + 146240 1.025752763487855e+00 -5.987449335652083e+00 -6.035811304565427e+00 3.708292086856450e+00 4.430590177365524e+00 9.327330773287156e+03 + 146260 9.760221841134513e-01 -5.945080395924111e+00 -6.058215597854169e+00 3.916146921969132e+00 4.266507084870826e+00 9.396646598824249e+03 + 146280 9.820599578321977e-01 -5.983821636002117e+00 -6.034006805040946e+00 3.693951863586483e+00 4.405780856835722e+00 9.321732186751113e+03 + 146300 9.672924023399080e-01 -5.983642404863553e+00 -5.999110772515513e+00 3.756187968685859e+00 4.667366207906150e+00 9.214338244217857e+03 + 146320 9.589785060529610e-01 -5.985967310669660e+00 -6.020875050021282e+00 3.749049620773948e+00 4.548603979461733e+00 9.281254517054740e+03 + 146340 9.873086177236396e-01 -6.038877223675098e+00 -6.019897966839235e+00 3.467992944668693e+00 4.576974774450723e+00 9.278240092842776e+03 + 146360 9.340283124348085e-01 -5.967537804492419e+00 -5.978954334658646e+00 3.809505384790684e+00 4.743949901873869e+00 9.152564637338362e+03 + 146380 9.110509170889752e-01 -5.935447770733778e+00 -6.003691380281552e+00 3.998732878990329e+00 4.606867512302562e+00 9.228387232167768e+03 + 146400 1.023094940497989e+00 -6.099267253070698e+00 -5.951705452829634e+00 3.161895200161204e+00 5.009217892260184e+00 9.069398951794274e+03 + 146420 9.286690377829251e-01 -5.953075348018171e+00 -6.018902724724329e+00 3.929392803744864e+00 4.551401819944476e+00 9.275129580140883e+03 + 146440 9.160482036479469e-01 -5.925906911346908e+00 -6.009187362928492e+00 4.077328129435224e+00 4.599118888845541e+00 9.245272354753830e+03 + 146460 1.042969284008299e+00 -6.103945097531083e+00 -6.021843402809422e+00 3.096239278416666e+00 4.567679914704639e+00 9.284229175214596e+03 + 146480 1.021580586362234e+00 -6.064026255802167e+00 -5.995276746521092e+00 3.364892774303999e+00 4.759663095548115e+00 9.202561358423933e+03 + 146500 9.556385460279209e-01 -5.959287959727708e+00 -5.994938856151905e+00 3.932743493993035e+00 4.728030529766901e+00 9.201506904906486e+03 + 146520 1.008429353603009e+00 -6.030112464408780e+00 -5.966493137683381e+00 3.567407081964698e+00 4.932719101080933e+00 9.114466623721262e+03 + 146540 9.250206928725512e-01 -5.896197801498803e+00 -6.002937727961774e+00 4.210321134397818e+00 4.597403958697202e+00 9.226064735884262e+03 + 146560 1.000673789919201e+00 -5.996705851811758e+00 -5.982678733719220e+00 3.706563813654161e+00 4.787109696431020e+00 9.163953245340035e+03 + 146580 1.004237239920166e+00 -5.988697354552752e+00 -6.009455737349420e+00 3.702354783448863e+00 4.583156937081041e+00 9.246093084109518e+03 + 146600 1.058442149939690e+00 -6.056281079330957e+00 -5.973841153378213e+00 3.411516705670893e+00 4.884899518028860e+00 9.136911727698009e+03 + 146620 1.017941810858311e+00 -5.982631517124894e+00 -6.023745262832973e+00 3.757687829868722e+00 4.521606339681343e+00 9.290079976926767e+03 + 146640 1.104401600637001e+00 -6.100834892636403e+00 -5.947590398192506e+00 3.142330378809889e+00 5.022283980415622e+00 9.056861249062618e+03 + 146660 1.049294493733776e+00 -6.012137192432932e+00 -5.932578876007909e+00 3.628587867926508e+00 5.085424032448667e+00 9.011222024217524e+03 + 146680 9.762856047130266e-01 -5.894009781371448e+00 -5.930699024052423e+00 4.238098986701860e+00 5.027423677585744e+00 9.005473179860466e+03 + 146700 9.760876525739138e-01 -5.876914480897402e+00 -5.945983963553270e+00 4.408047919013095e+00 5.011440261135205e+00 9.051886410902840e+03 + 146720 1.071797609864190e+00 -5.990442380330000e+00 -5.955067378952279e+00 3.720945152448857e+00 4.924073884623502e+00 9.079599849998383e+03 + 146740 1.054342552977845e+00 -5.921644513997920e+00 -6.016301435219500e+00 4.101684143451884e+00 4.558149453686357e+00 9.267148624379319e+03 + 146760 1.043080819974475e+00 -5.859266416964562e+00 -6.080653946465593e+00 4.473215974966584e+00 4.201974520962200e+00 9.466244079117751e+03 + 146780 1.124671624742567e+00 -5.941342218093446e+00 -6.015532635927275e+00 4.016269413051251e+00 4.590256552919353e+00 9.264805066701374e+03 + 146800 1.048265524614906e+00 -5.802247456472258e+00 -6.050446970314235e+00 4.748556918481068e+00 4.323356901249800e+00 9.372529361867582e+03 + 146820 1.076498034346658e+00 -5.830468102611465e+00 -6.067583489000038e+00 4.567356810917789e+00 4.205803568787149e+00 9.425669029723806e+03 + 146840 1.047895191580802e+00 -5.787475992918536e+00 -6.076126457849664e+00 4.815532379875410e+00 4.158056741725785e+00 9.452216874959806e+03 + 146860 1.105883037357892e+00 -5.887032313468720e+00 -5.981449891729126e+00 4.284469460704704e+00 4.742309115260438e+00 9.160188123523054e+03 + 146880 1.099400189763775e+00 -5.903260290880397e+00 -5.995107268078613e+00 4.176739651311514e+00 4.649340094965567e+00 9.202019212223211e+03 + 146900 1.093052661770129e+00 -5.932411821743210e+00 -6.004697533160536e+00 4.060018062912372e+00 4.644942321776394e+00 9.231470701827609e+03 + 146920 1.069590478226019e+00 -5.943336858653624e+00 -6.029621069746150e+00 4.031833156250342e+00 4.536375863718544e+00 9.308212880247866e+03 + 146940 1.034107791271901e+00 -5.939328425810491e+00 -6.072656962328280e+00 3.978612518119471e+00 4.213019428909984e+00 9.441436044499256e+03 + 146960 1.055704601453745e+00 -6.013828257489641e+00 -5.974760221882641e+00 3.605366851632642e+00 4.829701557847008e+00 9.139728405646985e+03 + 146980 9.954936705477722e-01 -5.955073004713624e+00 -5.981586404843047e+00 3.932435869147313e+00 4.780191822668755e+00 9.160587763415915e+03 + 147000 1.065992677677076e+00 -6.079600013465132e+00 -5.970007676389181e+00 3.275772969410748e+00 4.905069128260214e+00 9.125201823658899e+03 + 147020 1.034138211388486e+00 -6.046075767291795e+00 -6.061346376626426e+00 3.455735784265808e+00 4.368049582347198e+00 9.406325020637914e+03 + 147040 1.017894806478701e+00 -6.038279589225278e+00 -6.019335833811667e+00 3.502377558053666e+00 4.611155533175298e+00 9.276508114268974e+03 + 147060 9.140389479070199e-01 -5.897787672279407e+00 -6.031303026224789e+00 4.247216613353622e+00 4.480550789564990e+00 9.313377875563399e+03 + 147080 1.038753659428150e+00 -6.093657594470680e+00 -5.971790300702791e+00 3.273808098898868e+00 4.973588958616846e+00 9.130654035531490e+03 + 147100 9.792363989036936e-01 -6.013072801226800e+00 -6.041845073720065e+00 3.633086903050637e+00 4.467872061899528e+00 9.345947599181092e+03 + 147120 9.556511416136236e-01 -5.984987381118433e+00 -6.018902096396578e+00 3.786707992204814e+00 4.591964448792474e+00 9.275163612687753e+03 + 147140 9.601838346134909e-01 -5.996618341836211e+00 -6.013004290394294e+00 3.704343795792858e+00 4.610253143455003e+00 9.257018498254371e+03 + 147160 9.805840106623785e-01 -6.030026622576379e+00 -6.000852529990851e+00 3.567701708937618e+00 4.735223863239960e+00 9.219661799430263e+03 + 147180 1.017876948174219e+00 -6.086009114983499e+00 -5.979827854439384e+00 3.258638799469685e+00 4.868348029010958e+00 9.155199299334674e+03 + 147200 9.931146751533079e-01 -6.047372770191480e+00 -5.987036045557725e+00 3.422556116294870e+00 4.769018926219857e+00 9.177296091996648e+03 + 147220 9.761351903487938e-01 -6.017472302584705e+00 -5.986798612110976e+00 3.589617981230208e+00 4.765751058668614e+00 9.176579085160573e+03 + 147240 1.032488780080043e+00 -6.091641844916486e+00 -5.961526901640438e+00 3.226976875033535e+00 4.974117014547002e+00 9.099321877099337e+03 + 147260 9.909708783238195e-01 -6.014349514357239e+00 -6.044902934233122e+00 3.584324349972329e+00 4.408881884918562e+00 9.355395972583703e+03 + 147280 1.011578407048918e+00 -6.028951913937673e+00 -6.010138255871124e+00 3.553616628779026e+00 4.661647564801330e+00 9.248176599863758e+03 + 147300 1.060989239266021e+00 -6.077836545400511e+00 -6.000576073281101e+00 3.264078254404861e+00 4.707719841333931e+00 9.218850140017867e+03 + 147320 1.005432401689564e+00 -5.969353296531612e+00 -5.981168396740696e+00 3.854800221269902e+00 4.786956087488494e+00 9.159310999752950e+03 + 147340 9.798522393251657e-01 -5.902735569118247e+00 -5.975336193463681e+00 4.199498113336196e+00 4.782614093434400e+00 9.141454020429690e+03 + 147360 9.952254019792033e-01 -5.891200787687406e+00 -5.976083385637267e+00 4.237867196638620e+00 4.750458183670934e+00 9.143743559163686e+03 + 147380 1.074271987125533e+00 -5.971213706669562e+00 -5.990459857665112e+00 3.805037980986488e+00 4.694523603637799e+00 9.187757392642527e+03 + 147400 1.048078321189092e+00 -5.897593245797662e+00 -6.051995520056026e+00 4.190205636836806e+00 4.303603884370555e+00 9.377339840327310e+03 + 147420 1.054432252525174e+00 -5.884578972358971e+00 -5.960535862386383e+00 4.288725275374471e+00 4.852569058546333e+00 9.096292705925222e+03 + 147440 1.073986446131941e+00 -5.896932496134309e+00 -6.032840842282691e+00 4.267060482511271e+00 4.486653727178669e+00 9.318124278063069e+03 + 147460 1.045933927628602e+00 -5.849237400121832e+00 -6.043698701726120e+00 4.536082177585032e+00 4.419455290984042e+00 9.351641845311546e+03 + 147480 1.081836177180305e+00 -5.906387748958461e+00 -6.020666111552012e+00 4.249330832267600e+00 4.593126789735968e+00 9.280582772238167e+03 + 147500 1.024278078051951e+00 -5.833560299871292e+00 -6.052111917205425e+00 4.571145650730561e+00 4.316188443244488e+00 9.377709957721452e+03 + 147520 1.118189556494424e+00 -5.997549327457970e+00 -5.985281850560791e+00 3.739550089027719e+00 4.809991839757238e+00 9.171933352829941e+03 + 147540 1.051043548723476e+00 -5.934460959678087e+00 -6.028507489950787e+00 4.064094329544866e+00 4.524064599065496e+00 9.304752241937897e+03 + 147560 9.860461566661262e-01 -5.883190085707709e+00 -6.034198310402381e+00 4.393348116455520e+00 4.526235521811468e+00 9.322305605095815e+03 + 147580 1.049976860726056e+00 -6.025448960550658e+00 -6.010812265536082e+00 3.543525922280762e+00 4.627572090075692e+00 9.250285849841071e+03 + 147600 9.876855694138911e-01 -5.972696067453701e+00 -5.989948898715598e+00 3.926214282376555e+00 4.827145855403735e+00 9.186199601177173e+03 + 147620 9.596203932306527e-01 -5.956816185216270e+00 -5.993341940740624e+00 3.920411184145700e+00 4.710674643582460e+00 9.196615885108258e+03 + 147640 9.503098167818431e-01 -5.955413732439411e+00 -6.026744976883061e+00 3.882895613420072e+00 4.473300569350224e+00 9.299338457762800e+03 + 147660 9.792025788260712e-01 -6.005563932765724e+00 -6.037290165935348e+00 3.703570091056327e+00 4.521393150577628e+00 9.331884896480333e+03 + 147680 1.007749938878115e+00 -6.054358502061521e+00 -6.012042088275933e+00 3.396216264623196e+00 4.639203661023907e+00 9.254072254181929e+03 + 147700 9.428923191843426e-01 -5.962908622824595e+00 -6.002207535948232e+00 3.914391686149993e+00 4.688731245506918e+00 9.223832169728581e+03 + 147720 9.671960549566440e-01 -6.000061673855162e+00 -5.966962070227692e+00 3.770772817665166e+00 4.960835863841207e+00 9.115895950458764e+03 + 147740 9.591341406118271e-01 -5.983855142102416e+00 -5.995895485279360e+00 3.796242622522821e+00 4.727105108763727e+00 9.204437786090157e+03 + 147760 1.002782611483377e+00 -6.042157278596002e+00 -5.963491045382955e+00 3.488741326174172e+00 4.940455010843730e+00 9.105301505226988e+03 + 147780 9.757060023147547e-01 -5.992173036281534e+00 -5.988193637919881e+00 3.814930724336451e+00 4.837781045538970e+00 9.180825377287998e+03 + 147800 9.649849644021182e-01 -5.964111016263060e+00 -6.046593587333906e+00 3.862213128886248e+00 4.388585441660835e+00 9.360640503036137e+03 + 147820 1.017470981989786e+00 -6.030163560658141e+00 -6.030677656959172e+00 3.523876747052479e+00 4.520924726535814e+00 9.311461053081543e+03 + 147840 1.026237549083648e+00 -6.031091799070516e+00 -5.999781704464851e+00 3.544115464218673e+00 4.723902872665882e+00 9.216379698868077e+03 + 147860 1.005522021985366e+00 -5.986606229204186e+00 -6.001977094715025e+00 3.714160581855278e+00 4.625898693458291e+00 9.223127278310338e+03 + 147880 1.014329124580563e+00 -5.987292658819213e+00 -6.000820920704540e+00 3.737879751753013e+00 4.660198378515705e+00 9.219559780674294e+03 + 147900 9.829269821354291e-01 -5.926510306976234e+00 -6.005158785668315e+00 4.011114318903367e+00 4.559502583440694e+00 9.232887356290144e+03 + 147920 9.937424260503718e-01 -5.927227289508981e+00 -5.990095965363997e+00 4.081299984938861e+00 4.720298319283214e+00 9.186657173659509e+03 + 147940 1.028943977642344e+00 -5.961885399576211e+00 -5.984720209978049e+00 3.954655918488980e+00 4.823534903486134e+00 9.170191463397185e+03 + 147960 1.039691175905690e+00 -5.958487865882605e+00 -6.013337456368057e+00 3.955355795412998e+00 4.640400958898841e+00 9.258028650513819e+03 + 147980 1.052993506363975e+00 -5.960208423061725e+00 -6.044193865955648e+00 3.894368591860587e+00 4.412111182058393e+00 9.353228263780298e+03 + 148000 1.037844638160867e+00 -5.923650223914770e+00 -6.033313951152860e+00 4.066991581857732e+00 4.437285489649672e+00 9.319601172019884e+03 + 148020 1.016713527935738e+00 -5.880228166550846e+00 -6.012591264194786e+00 4.362790041504050e+00 4.602740651709388e+00 9.255727238965192e+03 + 148040 1.059464731878219e+00 -5.932819170006319e+00 -5.999894893160636e+00 4.066972643793424e+00 4.681813461506721e+00 9.216718647349062e+03 + 148060 1.020873373701872e+00 -5.868319547450537e+00 -6.078681540224218e+00 4.375806627205301e+00 4.167875511285653e+00 9.460150843666550e+03 + 148080 1.093477458354580e+00 -5.979994514895679e+00 -6.001861127193919e+00 3.850977994115438e+00 4.725416522451630e+00 9.222765573376746e+03 + 148100 1.048469530790213e+00 -5.927404548668319e+00 -5.989622795324542e+00 4.072417164778072e+00 4.715150364235487e+00 9.185172988537115e+03 + 148120 1.010561719535501e+00 -5.893386989675033e+00 -5.980191593971949e+00 4.261320897291439e+00 4.762875426449446e+00 9.156311655866253e+03 + 148140 1.009477591574436e+00 -5.921145943641752e+00 -5.993238971750428e+00 4.087810943819987e+00 4.673841620059919e+00 9.196298636957279e+03 + 148160 1.071815776840783e+00 -6.051876100443477e+00 -6.008621357440243e+00 3.384210343631415e+00 4.632585771605832e+00 9.243532657775057e+03 + 148180 9.992446589319506e-01 -5.987876599243604e+00 -5.995270310163996e+00 3.768625965465616e+00 4.726170133187658e+00 9.202539005389444e+03 + 148200 9.823963588612952e-01 -6.001933566777624e+00 -6.022712139827997e+00 3.636809966221827e+00 4.517496184292795e+00 9.286873264001473e+03 + 148220 9.669405379291510e-01 -6.011315598160169e+00 -5.988747176637188e+00 3.639464770093199e+00 4.769056138930098e+00 9.182537387176979e+03 + 148240 9.707408070311156e-01 -6.040425775450682e+00 -6.008020494168271e+00 3.469343917228231e+00 4.655420057052907e+00 9.241697087399272e+03 + 148260 1.035665193284576e+00 -6.154289405205023e+00 -5.946763961625512e+00 2.879130338440278e+00 5.070773549932433e+00 9.054364677815061e+03 + 148280 9.322460711401074e-01 -6.012039112926700e+00 -5.969594321874745e+00 3.660114884046313e+00 4.903839442576823e+00 9.123927180542354e+03 + 148300 9.723214690843799e-01 -6.076039871552551e+00 -5.948413390324299e+00 3.291610179941796e+00 5.024461185288553e+00 9.059371585573192e+03 + 148320 9.144314542076902e-01 -5.988968609133354e+00 -5.977142859541797e+00 3.711314469251220e+00 4.779219753434777e+00 9.147007417106825e+03 + 148340 8.935731426841854e-01 -5.949948092050392e+00 -6.031430585366335e+00 3.960722108977431e+00 4.492837022982197e+00 9.313769739493915e+03 + 148360 9.515095075674967e-01 -6.021118859705171e+00 -6.061963860269025e+00 3.553052072111833e+00 4.318513758130775e+00 9.408263786677378e+03 + 148380 1.023188399652470e+00 -6.110826104607579e+00 -6.004775775263755e+00 3.095189859317913e+00 4.704147261645579e+00 9.231728861009960e+03 + 148400 9.407457804954813e-01 -5.969995747760130e+00 -6.047634160491102e+00 3.821901665198411e+00 4.376089884791631e+00 9.363865517783128e+03 + 148420 9.748040223817566e-01 -5.999416818784296e+00 -6.020425516284509e+00 3.713418919028129e+00 4.592783726896474e+00 9.279862961688630e+03 + 148440 9.668702039318871e-01 -5.965552349896316e+00 -5.994828264505294e+00 3.856386793442029e+00 4.688279961324133e+00 9.201178264107370e+03 + 148460 1.049285860258161e+00 -6.061430636816282e+00 -5.992923938795249e+00 3.387451809300959e+00 4.780827870714985e+00 9.195312208086449e+03 + 148480 9.810158197886344e-01 -5.930604072492649e+00 -6.011303725330099e+00 4.029513584565181e+00 4.566123689741626e+00 9.251745270312767e+03 + 148500 1.045617725301525e+00 -5.997937299287655e+00 -5.949185706359288e+00 3.737923410747851e+00 5.017862601627152e+00 9.061681319381381e+03 + 148520 1.040176947167913e+00 -5.959170632280092e+00 -5.993343400319155e+00 3.835905114729825e+00 4.639679792430761e+00 9.196634851712159e+03 + 148540 1.045185820414581e+00 -5.938375215071079e+00 -6.010311574148719e+00 4.009339399202730e+00 4.596269693263331e+00 9.248725235567699e+03 + 148560 1.033678281157743e+00 -5.900003060165462e+00 -6.027050101342713e+00 4.223310966207553e+00 4.493787195301693e+00 9.300271513396028e+03 + 148580 1.097623023198674e+00 -5.978423912949175e+00 -5.996017957787000e+00 3.843967858206426e+00 4.742940130077997e+00 9.204821184668708e+03 + 148600 1.039978320760284e+00 -5.883278883874817e+00 -6.008621055668701e+00 4.337510300638531e+00 4.617776153559651e+00 9.243518549319018e+03 + 148620 1.054520060206707e+00 -5.902400618177001e+00 -6.037798217225731e+00 4.232435696301248e+00 4.454961729852702e+00 9.333419185118173e+03 + 148640 1.115851253827198e+00 -6.000320419253126e+00 -5.981912487827808e+00 3.729022284092280e+00 4.834723474954638e+00 9.161610597513662e+03 + 148660 1.028294169045532e+00 -5.892113103142711e+00 -6.043798910559989e+00 4.261194757664579e+00 4.390191378171738e+00 9.351971302715123e+03 + 148680 1.063687371177248e+00 -5.995280690933463e+00 -6.019100285918626e+00 3.731581511620093e+00 4.594805711144875e+00 9.275750424963348e+03 + 148700 1.072823550576143e+00 -6.087409642851145e+00 -5.946784701706004e+00 3.272802833314489e+00 5.080293007009194e+00 9.054389706902370e+03 + 148720 9.674030203615400e-01 -6.000648003358686e+00 -6.002137259285471e+00 3.661284322009833e+00 4.652732784016623e+00 9.223600354090438e+03 + 148740 9.596961167806284e-01 -6.033572019499799e+00 -6.009646072639419e+00 3.471912143543500e+00 4.609298632944110e+00 9.246694254694086e+03 + 148760 9.735577732677104e-01 -6.082877810935974e+00 -5.966801437354873e+00 3.266246124213491e+00 4.932774624076936e+00 9.115409807316104e+03 + 148780 9.114042096614414e-01 -6.007037815285586e+00 -5.988352337469872e+00 3.647955809972905e+00 4.755250715159081e+00 9.181297375522645e+03 + 148800 9.653249093118530e-01 -6.092863021163510e+00 -5.969005493623625e+00 3.186354777918500e+00 4.897563867942967e+00 9.122157302574069e+03 + 148820 9.360867831092657e-01 -6.048240659754943e+00 -6.022701146303866e+00 3.459523449847112e+00 4.606175288310125e+00 9.286881512180533e+03 + 148840 9.296835894333775e-01 -6.034656820689941e+00 -6.000666213089888e+00 3.501926787832102e+00 4.697106116701136e+00 9.219123010809752e+03 + 148860 9.387286991731654e-01 -6.038641610248070e+00 -6.021643393211842e+00 3.477435800240559e+00 4.575042192928167e+00 9.283617805687640e+03 + 148880 9.371735946827094e-01 -6.022089092689532e+00 -5.958880906174485e+00 3.634588780896290e+00 4.997539969300945e+00 9.091244228871992e+03 + 148900 9.628851934134424e-01 -6.038586799431149e+00 -5.974211392858101e+00 3.457684782422162e+00 4.827338329026575e+00 9.138011684075482e+03 + 148920 9.671657612421298e-01 -6.016729941885223e+00 -5.967266101290315e+00 3.572049339900338e+00 4.856078367100891e+00 9.116821589051793e+03 + 148940 9.910974443422421e-01 -6.018594582422983e+00 -5.978354903783978e+00 3.611518750405180e+00 4.842581212220493e+00 9.150710678172176e+03 + 148960 9.965543575983603e-01 -5.994412651333611e+00 -5.980848897073262e+00 3.690366951600623e+00 4.768252127547738e+00 9.158346971285351e+03 + 148980 9.911613949063609e-01 -5.957504842392112e+00 -5.977423252501223e+00 3.955328204423023e+00 4.840953611212499e+00 9.147840854367216e+03 + 149000 1.096188195311424e+00 -6.084687879232021e+00 -5.961800512235048e+00 3.204122333306647e+00 4.909760611361849e+00 9.100178088891196e+03 + 149020 1.106617647704829e+00 -6.076046103448572e+00 -5.992093027790265e+00 3.298630519753476e+00 4.780702071879949e+00 9.192805353652851e+03 + 149040 1.012147902498857e+00 -5.920939655720176e+00 -6.025646712943272e+00 4.099094169359862e+00 4.497850043420100e+00 9.295958765515763e+03 + 149060 1.024953533835675e+00 -5.931014902560691e+00 -6.021250537233001e+00 4.054177098243014e+00 4.536030120035274e+00 9.282410120670780e+03 + 149080 1.040362845918087e+00 -5.949395587618832e+00 -6.023247022340305e+00 3.994354679890840e+00 4.570288313247550e+00 9.288523237282736e+03 + 149100 1.017231410193722e+00 -5.915520430266268e+00 -6.030867027202559e+00 4.150416863362155e+00 4.488078853925786e+00 9.312034258455731e+03 + 149120 1.048133035371628e+00 -5.967450375527211e+00 -6.008666551842436e+00 3.823593595809303e+00 4.586923933224607e+00 9.243681816153889e+03 + 149140 1.042882584617541e+00 -5.971285644936812e+00 -5.981912148591155e+00 3.865547246533051e+00 4.804528218103691e+00 9.161583131570294e+03 + 149160 1.020316611151886e+00 -5.952314756652462e+00 -6.067826497433265e+00 3.916980056624818e+00 4.253693765677328e+00 9.426405182410697e+03 + 149180 1.059858456080144e+00 -6.032343747637514e+00 -6.028270894690387e+00 3.503541250690763e+00 4.526928202585121e+00 9.304057576906105e+03 + 149200 1.059593940880772e+00 -6.063905955611578e+00 -6.002797552033588e+00 3.382443527553797e+00 4.733337437393505e+00 9.225648126764341e+03 + 149220 1.021115452884911e+00 -6.045166922671984e+00 -6.003396158997912e+00 3.483486739646831e+00 4.723340928668140e+00 9.227481572258159e+03 + 149240 1.018458318987525e+00 -6.084758680091620e+00 -5.992817407331193e+00 3.282781016533777e+00 4.810722032590128e+00 9.195015841856368e+03 + 149260 9.227360996230455e-01 -5.981606225385570e+00 -6.016331166048795e+00 3.851471389287807e+00 4.652075406332364e+00 9.267236949185159e+03 + 149280 9.215886030002320e-01 -6.008380907595485e+00 -5.973456894336954e+00 3.642970651825597e+00 4.843509740429663e+00 9.135757775263357e+03 + 149300 1.018622970143336e+00 -6.167002374564963e+00 -5.974561866224058e+00 2.791285811119166e+00 4.896308990085062e+00 9.139140983699554e+03 + 149320 9.528019492473957e-01 -6.076233856804047e+00 -6.032527009528703e+00 3.268460436957420e+00 4.519431917625200e+00 9.317181210000415e+03 + 149340 9.468190235283297e-01 -6.070362788540357e+00 -6.023491164542353e+00 3.372791493947429e+00 4.641935612304337e+00 9.289292021585863e+03 + 149360 9.849219178056967e-01 -6.124710046372337e+00 -6.003413497673040e+00 3.008609749437810e+00 4.705113302649426e+00 9.227543632783560e+03 + 149380 9.373843069248727e-01 -6.048480039846679e+00 -6.022449230104545e+00 3.459500720473126e+00 4.608973658267250e+00 9.286092423586151e+03 + 149400 9.824083115556387e-01 -6.105904662879393e+00 -5.994663711215633e+00 3.130084146533054e+00 4.768846905467996e+00 9.200680694868573e+03 + 149420 9.634066652983554e-01 -6.065115966679685e+00 -6.014598609743746e+00 3.335275550440093e+00 4.625354031501976e+00 9.261928449734736e+03 + 149440 9.283876703378153e-01 -5.999043126881118e+00 -6.028197630478475e+00 3.662927835490395e+00 4.495518164189525e+00 9.303801796941987e+03 + 149460 9.736813109845882e-01 -6.050645234161428e+00 -5.988583294494513e+00 3.448146742840820e+00 4.804516004462376e+00 9.182042923562312e+03 + 149480 9.957145815454619e-01 -6.067043598743706e+00 -6.002426979277081e+00 3.279516659550906e+00 4.650555287917816e+00 9.224501519608206e+03 + 149500 9.796832656481813e-01 -6.027584651381940e+00 -5.988418425978116e+00 3.590955053132103e+00 4.815853580354656e+00 9.181524737303094e+03 + 149520 9.344002661537461e-01 -5.943219959809978e+00 -6.061694037735867e+00 3.942420695015516e+00 4.262124205760756e+00 9.407392638792064e+03 + 149540 1.009045240486583e+00 -6.036924696231344e+00 -6.006785802957721e+00 3.522086190476694e+00 4.695148379632499e+00 9.237886069432136e+03 + 149560 9.340532261769188e-01 -5.910736129731853e+00 -6.029749957909614e+00 4.131380954067493e+00 4.447985135340402e+00 9.308612334763460e+03 + 149580 1.018208148959573e+00 -6.021231933840252e+00 -5.996629543986348e+00 3.578944302635157e+00 4.720215032383799e+00 9.206708468871504e+03 + 149600 1.017792388228405e+00 -6.007337296140144e+00 -6.024663375868839e+00 3.646080524062210e+00 4.546591493057873e+00 9.292915783282600e+03 + 149620 1.044760954073430e+00 -6.037833125943477e+00 -6.011765151249055e+00 3.443446545579238e+00 4.593132890280660e+00 9.253215387966931e+03 + 149640 1.002929192699069e+00 -5.970293719647144e+00 -5.979647420260521e+00 3.863459392518133e+00 4.809748996115633e+00 9.154675739358778e+03 + 149660 9.839124563199826e-01 -5.937109767536231e+00 -5.955278213404253e+00 4.021054214762629e+00 4.916728187030530e+00 9.080256273685625e+03 + 149680 1.013783392358900e+00 -5.975080015888973e+00 -5.974069196723041e+00 3.821546661396524e+00 4.827350941471061e+00 9.137618100331541e+03 + 149700 9.708893972847361e-01 -5.904220188477254e+00 -6.033189294726482e+00 4.224988243853148e+00 4.484427677865386e+00 9.319218144336277e+03 + 149720 1.015390738107077e+00 -5.967166511206442e+00 -6.059709888637153e+00 3.841779269211397e+00 4.310380874962881e+00 9.401262335581490e+03 + 149740 1.021953421127690e+00 -5.977311468980105e+00 -6.033163730482904e+00 3.791413926772328e+00 4.470701598113719e+00 9.319154424346669e+03 + 149760 9.870737393122601e-01 -5.931671866181235e+00 -6.007864022540730e+00 4.035047531805528e+00 4.597540379291216e+00 9.241211028508807e+03 + 149780 1.014859726900752e+00 -5.982232950205913e+00 -5.994618423454178e+00 3.766366341800704e+00 4.695247037763380e+00 9.200538762478012e+03 + 149800 9.747806111225863e-01 -5.937804101835932e+00 -6.032726317088526e+00 3.937322836883411e+00 4.392264787737678e+00 9.317797872616869e+03 + 149820 9.662765851986340e-01 -5.952288627258438e+00 -6.024821681919087e+00 3.975776386274512e+00 4.559280361959135e+00 9.293400347746676e+03 + 149840 8.632469379255969e-01 -5.842964531120230e+00 -6.049665733675299e+00 4.502225004248849e+00 4.315314712269920e+00 9.370117745622576e+03 + 149860 9.875290521982237e-01 -6.078115556610828e+00 -5.980792188974798e+00 3.264481283789447e+00 4.823327121497998e+00 9.158196109320717e+03 + 149880 9.225497323211401e-01 -6.031228393563124e+00 -5.997756575143518e+00 3.572717016935457e+00 4.764917378047997e+00 9.210164152427380e+03 + 149900 9.316963760499051e-01 -6.082020848520450e+00 -6.012003727442896e+00 3.258238607225748e+00 4.660287751567532e+00 9.253934711503098e+03 + 149920 9.613321699146622e-01 -6.150838607426984e+00 -5.980545411690557e+00 2.885088108375474e+00 4.862937991080913e+00 9.157437264502747e+03 + 149940 9.892168127309307e-01 -6.206042995140859e+00 -5.987352742249969e+00 2.557410013226939e+00 4.813163287533692e+00 9.178292404109716e+03 + 149960 8.828202938057288e-01 -6.053479707199010e+00 -6.000047822407321e+00 3.416920862824926e+00 4.723735013856252e+00 9.217227322888964e+03 + 149980 9.387988409005733e-01 -6.133439438764023e+00 -5.982531475860911e+00 2.965811876610625e+00 4.832348752532077e+00 9.163522137512206e+03 + 150000 8.773533104870720e-01 -6.029848249464694e+00 -6.018857162379883e+00 3.524991508146165e+00 4.588104031052383e+00 9.275034662099568e+03 + 150020 9.289321335003504e-01 -6.084334420390995e+00 -5.991313613143171e+00 3.266793787659894e+00 4.800933657800299e+00 9.190410336577786e+03 + 150040 8.419763074105849e-01 -5.926324404908343e+00 -6.043969876362475e+00 4.065325314821750e+00 4.389786812154260e+00 9.352537226507156e+03 + 150060 9.561185106377023e-01 -6.061479005603272e+00 -6.013462996915885e+00 3.297772323287714e+00 4.573487675624022e+00 9.258431549530644e+03 + 150080 9.932488182492362e-01 -6.080801924718049e+00 -5.985687789738340e+00 3.236740285710431e+00 4.782900367628740e+00 9.173170518501653e+03 + 150100 9.598825592664251e-01 -5.997764405659390e+00 -5.998030642645632e+00 3.715606391759910e+00 4.714077617784867e+00 9.211008826165940e+03 + 150120 9.942292106453476e-01 -6.020674409324942e+00 -5.977343307035691e+00 3.593232820249548e+00 4.842046715060831e+00 9.147625648534042e+03 + 150140 9.607506765887810e-01 -5.948383647249267e+00 -5.972664047200150e+00 3.996085399918841e+00 4.856663586021127e+00 9.133304005552283e+03 + 150160 1.019333985721495e+00 -6.015137062101235e+00 -5.986104907092463e+00 3.582513100514222e+00 4.749220227286053e+00 9.174442777719923e+03 + 150180 9.927637948995944e-01 -5.960512738898636e+00 -5.991109367967271e+00 3.895148252771027e+00 4.719457673845884e+00 9.189785176742227e+03 + 150200 1.023511764524766e+00 -5.993816716226081e+00 -6.004460329818900e+00 3.734071992067279e+00 4.672954715723431e+00 9.230715265606261e+03 + 150220 1.060198046434023e+00 -6.038724989466267e+00 -6.008158223925647e+00 3.486915535642436e+00 4.662434633568359e+00 9.242103816205254e+03 + 150240 9.848638118726182e-01 -5.921904859953719e+00 -6.024118511054717e+00 4.072288474255436e+00 4.485361872122119e+00 9.291237899293639e+03 + 150260 1.028133659895182e+00 -5.983732832074012e+00 -5.999660091420660e+00 3.798978829378284e+00 4.707522041474413e+00 9.216016252697727e+03 + 150280 1.021456766331944e+00 -5.973563808355188e+00 -6.038168447756642e+00 3.836466134034373e+00 4.465496297055584e+00 9.334589666152433e+03 + 150300 9.915445232394130e-01 -5.932077797195295e+00 -6.049606584171595e+00 4.049183194623947e+00 4.374314712285025e+00 9.369976349495757e+03 + 150320 1.039461328091913e+00 -6.011206751955931e+00 -6.023905529973336e+00 3.658510340871607e+00 4.585591992366117e+00 9.290581042734677e+03 + 150340 9.746454285653234e-01 -5.925893286041009e+00 -6.035330107825645e+00 4.061980876868432e+00 4.433577710887608e+00 9.325812071087876e+03 + 150360 1.056174956252247e+00 -6.062340574563990e+00 -5.983980631667654e+00 3.353396750310526e+00 4.803351668583262e+00 9.167924468030569e+03 + 150380 9.527306757765671e-01 -5.927335389854666e+00 -5.960662628471865e+00 4.116376200448213e+00 4.925006038934749e+00 9.096673503921229e+03 + 150400 9.973850333784239e-01 -6.012180496926310e+00 -5.979766266652777e+00 3.579110940666666e+00 4.765238466983215e+00 9.155035590494108e+03 + 150420 9.459713632607548e-01 -5.957843061750874e+00 -6.018729734253497e+00 3.967934027123067e+00 4.618313331430891e+00 9.274632666153362e+03 + 150440 9.619378058965578e-01 -6.008876452242495e+00 -6.003036572622412e+00 3.628535754190940e+00 4.662069246687912e+00 9.226372963290802e+03 + 150460 9.677870245435928e-01 -6.051114696796739e+00 -6.012999008659961e+00 3.408255600757694e+00 4.627121780422755e+00 9.256989681637668e+03 + 150480 9.415356369057095e-01 -6.048267221669925e+00 -5.984904618868681e+00 3.424790597269871e+00 4.788628467885710e+00 9.170777973731023e+03 + 150500 9.374038095278562e-01 -6.075945083395894e+00 -5.991402903085043e+00 3.306309627671041e+00 4.791763909876067e+00 9.190673462104967e+03 + 150520 9.539955340314616e-01 -6.129605095403642e+00 -5.991447057325193e+00 3.023550935559805e+00 4.816875770093553e+00 9.190798213987859e+03 + 150540 8.940313886623629e-01 -6.063995128791780e+00 -5.962383696433268e+00 3.327637938828806e+00 4.911106507749720e+00 9.101946953438424e+03 + 150560 9.084140310803310e-01 -6.098125327512221e+00 -5.989685571742864e+00 3.159547806574701e+00 4.782225665200318e+00 9.185423203669785e+03 + 150580 8.878367627652330e-01 -6.071509962499022e+00 -6.013876460590240e+00 3.253182886485816e+00 4.584123373201636e+00 9.259710195205791e+03 + 150600 9.087060588340793e-01 -6.096770947525507e+00 -5.983170818955180e+00 3.182483382036725e+00 4.834792899850623e+00 9.165474729660546e+03 + 150620 9.234718489644897e-01 -6.102986914784077e+00 -6.003122099909126e+00 3.106348813433913e+00 4.679788034476042e+00 9.226632468606695e+03 + 150640 8.688467744595743e-01 -5.991935564270508e+00 -6.008745540012717e+00 3.702137232971948e+00 4.605611750924849e+00 9.243923061842683e+03 + 150660 8.832693643510025e-01 -5.966637009372232e+00 -6.020638689331130e+00 3.911733836567312e+00 4.601647833510358e+00 9.280528247987715e+03 + 150680 1.073117110661551e+00 -6.188014779940824e+00 -6.016806323937202e+00 2.665629303117458e+00 4.648734751913192e+00 9.268735726030436e+03 + 150700 9.816310940494757e-01 -6.003881294393033e+00 -6.042912153292324e+00 3.638919496792345e+00 4.414798264986721e+00 9.349261410826904e+03 + 150720 9.581149634529368e-01 -5.937825560560106e+00 -6.022934882044843e+00 4.092872249295437e+00 4.604161354705145e+00 9.287602122759416e+03 + 150740 1.095273691591849e+00 -6.123179355354659e+00 -5.982342817150593e+00 3.052832464632560e+00 4.861537661384158e+00 9.162918999138285e+03 + 150760 9.339548604721137e-01 -5.872339427512746e+00 -6.012153510854307e+00 4.373519479442733e+00 4.570685376736022e+00 9.254389755215028e+03 + 150780 1.021718467060454e+00 -5.992846371446692e+00 -6.008531041303730e+00 3.750129816798739e+00 4.660066015284810e+00 9.243262215669227e+03 + 150800 1.020821067758811e+00 -5.986064685071893e+00 -6.053197066832262e+00 3.704147778049007e+00 4.318663253278464e+00 9.381074741867240e+03 + 150820 9.692671086257949e-01 -5.908974282948363e+00 -6.014958324294692e+00 4.177365806799305e+00 4.568789040411296e+00 9.263018660193466e+03 + 150840 1.034022245569062e+00 -6.005436407859200e+00 -5.997166741905411e+00 3.725443191545096e+00 4.772928893178428e+00 9.208339793878968e+03 + 150860 1.009576847856824e+00 -5.969473489627489e+00 -5.987356756760285e+00 3.902160053696462e+00 4.799471566393300e+00 9.178273407156787e+03 + 150880 1.082558511121473e+00 -6.079592779551439e+00 -5.970434599788804e+00 3.329639284681543e+00 4.956442445052321e+00 9.126525325461302e+03 + 150900 1.013234181444743e+00 -5.982688851436196e+00 -6.003135626790179e+00 3.761875104075942e+00 4.644466555865109e+00 9.226668203241579e+03 + 150920 9.783288508787957e-01 -5.938784116057776e+00 -6.039999146979610e+00 3.991545663245798e+00 4.410353292717215e+00 9.340232821511836e+03 + 150940 1.056281567220214e+00 -6.064461777282776e+00 -6.010311807607811e+00 3.372235219005565e+00 4.683172724559939e+00 9.248754355026709e+03 + 150960 9.797588514600295e-01 -5.964911030375053e+00 -6.009964269721258e+00 3.907563673592855e+00 4.648861001300691e+00 9.247655626710870e+03 + 150980 1.033725984597089e+00 -6.061710552635518e+00 -5.948158634205329e+00 3.443476119663019e+00 5.095508807391748e+00 9.058570174488996e+03 + 151000 9.804216615056182e-01 -6.000248376998947e+00 -5.974583104654544e+00 3.715573966028643e+00 4.862947931518267e+00 9.139179196906896e+03 + 151020 9.860704884418690e-01 -6.028116232507712e+00 -5.933167968001682e+00 3.590944317569471e+00 5.136151945559536e+00 9.013006785218739e+03 + 151040 9.559084821690419e-01 -5.999531857991830e+00 -5.931141125532753e+00 3.694811142546817e+00 5.087521311758477e+00 9.006841471567232e+03 + 151060 9.539305224329071e-01 -6.007545895623976e+00 -5.965250938625566e+00 3.633102634693068e+00 4.875966822901384e+00 9.110657819587914e+03 + 151080 9.856274609330224e-01 -6.063794463166113e+00 -5.978345986879818e+00 3.299688405741642e+00 4.790346779686518e+00 9.150667520224411e+03 + 151100 9.303909834606774e-01 -5.988312093219127e+00 -5.967726812648809e+00 3.737107574142533e+00 4.855311440739169e+00 9.118248977836540e+03 + 151120 9.616874039440702e-01 -6.036852677738136e+00 -5.988462573874281e+00 3.449601032436915e+00 4.727464497167547e+00 9.181652998427980e+03 + 151140 9.785067504417249e-01 -6.060632728667542e+00 -5.997958842306435e+00 3.331100590556848e+00 4.690983744794894e+00 9.210804865262598e+03 + 151160 9.264877239537771e-01 -5.978701661913051e+00 -6.009919647295771e+00 3.814672373322037e+00 4.635413870286833e+00 9.247517258799780e+03 + 151180 9.577765071995964e-01 -6.014906354921859e+00 -5.982977370738742e+00 3.562549375195529e+00 4.745890543369319e+00 9.164839641366083e+03 + 151200 9.521994086116360e-01 -5.986769416941264e+00 -5.971148887319202e+00 3.747589569104230e+00 4.837285067463259e+00 9.128683767482315e+03 + 151220 9.740138448061736e-01 -5.988744227627172e+00 -5.974614353503411e+00 3.737957425331325e+00 4.819093349140913e+00 9.139274580429214e+03 + 151240 1.005925658295044e+00 -5.997956578600248e+00 -5.984814302557895e+00 3.681253644568615e+00 4.756718627364448e+00 9.170504772255656e+03 + 151260 1.009872827131000e+00 -5.962449973136058e+00 -6.037080873575629e+00 3.868748051212484e+00 4.440205871793952e+00 9.331212858126033e+03 + 151280 1.073244167001375e+00 -6.020876327872808e+00 -5.990865063168961e+00 3.565074690439205e+00 4.737404016596900e+00 9.189041829501741e+03 + 151300 1.039692089841699e+00 -5.943681822961341e+00 -6.015167847610062e+00 3.985004281949398e+00 4.574520465989876e+00 9.263667585855555e+03 + 151320 1.023731823154914e+00 -5.900321409915273e+00 -6.010119120881022e+00 4.234149556101451e+00 4.603674108595265e+00 9.248128272823189e+03 + 151340 1.072018850773465e+00 -5.958925288679311e+00 -6.014028277468061e+00 3.885131155078775e+00 4.568721266293818e+00 9.260158023337488e+03 + 151360 1.008015682531468e+00 -5.858973563515301e+00 -6.071577588533894e+00 4.426560381382772e+00 4.205755169359468e+00 9.438038268555507e+03 + 151380 1.022390159305904e+00 -5.882793648990144e+00 -6.016734435561163e+00 4.279296325563888e+00 4.510187601803366e+00 9.268450691768705e+03 + 151400 1.008224343271581e+00 -5.868837290555525e+00 -6.014116079064953e+00 4.479966479818367e+00 4.645753194377371e+00 9.260399609190876e+03 + 151420 1.054916404981742e+00 -5.950528044724011e+00 -6.028924041429839e+00 3.943063561061342e+00 4.492901616235194e+00 9.306042393612008e+03 + 151440 1.063884087622961e+00 -5.985547566512386e+00 -5.959838303523109e+00 3.856615285314353e+00 5.004241851894369e+00 9.094150327431711e+03 + 151460 9.681430709057014e-01 -5.870435384758603e+00 -5.983135607512210e+00 4.468469972691453e+00 4.821327853337135e+00 9.165309804379149e+03 + 151480 1.047060894687514e+00 -6.016467238812702e+00 -5.984922287915309e+00 3.626050491523698e+00 4.807186481141898e+00 9.170794708639874e+03 + 151500 1.030223143782326e+00 -6.026553885446074e+00 -5.996529269243444e+00 3.523172165716107e+00 4.695578158245949e+00 9.206403431760835e+03 + 151520 9.630495693371202e-01 -5.963115532846690e+00 -5.979854033688142e+00 3.894607031885916e+00 4.798491969779674e+00 9.155274120999275e+03 + 151540 9.576202327337099e-01 -5.983457745797613e+00 -6.009062275915690e+00 3.778571855733494e+00 4.631546681507258e+00 9.244876436539596e+03 + 151560 9.918334627799483e-01 -6.057013837531033e+00 -6.040377649428798e+00 3.375238969389359e+00 4.470766535914184e+00 9.341422868928641e+03 + 151580 9.303592964179678e-01 -5.987642258950951e+00 -6.027414253685720e+00 3.743458326258955e+00 4.515081377795620e+00 9.301392859575204e+03 + 151600 9.370606507245728e-01 -6.009274790109130e+00 -6.001034139615810e+00 3.664610918004958e+00 4.711930008374140e+00 9.220196731161759e+03 + 151620 1.005923512469055e+00 -6.114915451633760e+00 -5.978337710521302e+00 3.072512690482978e+00 4.856763215287841e+00 9.150670938959316e+03 + 151640 9.815152394079441e-01 -6.078282075657696e+00 -5.982590612192332e+00 3.265955368660587e+00 4.815430560084817e+00 9.163703026791452e+03 + 151660 8.853520877753709e-01 -5.931074351547274e+00 -6.020446008651648e+00 4.011626723605684e+00 4.498440838293128e+00 9.279906566311180e+03 + 151680 9.715879526308547e-01 -6.051698666551225e+00 -5.989575680231240e+00 3.390841335697622e+00 4.747561136648043e+00 9.185082385204074e+03 + 151700 9.712433531137389e-01 -6.042563489753583e+00 -6.021119525060909e+00 3.429328470242360e+00 4.552463033950504e+00 9.281992488378733e+03 + 151720 1.016535527391153e+00 -6.101649794882733e+00 -5.939755981345416e+00 3.195840580937303e+00 5.125459911255252e+00 9.033040642703965e+03 + 151740 9.575321000972211e-01 -6.003072399301122e+00 -5.985249025303032e+00 3.725378238613927e+00 4.827722810269175e+00 9.171691277167934e+03 + 151760 9.828078329456489e-01 -6.027124726835721e+00 -5.989025855677907e+00 3.576125221030973e+00 4.794894835000399e+00 9.183352838935720e+03 + 151780 1.044737469821037e+00 -6.104267121098460e+00 -5.979933082539068e+00 3.165414818564888e+00 4.879360108603205e+00 9.155536543719123e+03 + 151800 8.988750397840366e-01 -5.873125620899970e+00 -6.048185763519117e+00 4.329029257937939e+00 4.323806828549286e+00 9.365566493268152e+03 + 151820 9.835669982383161e-01 -5.982931956056682e+00 -6.042160813560942e+00 3.744865139705506e+00 4.404763874279967e+00 9.346939662628591e+03 + 151840 9.259984763818158e-01 -5.882221189169056e+00 -6.052255620353236e+00 4.289697625386172e+00 4.313333608783422e+00 9.378156446838357e+03 + 151860 1.025361168244824e+00 -6.013965479128006e+00 -6.020564443816038e+00 3.587510879856367e+00 4.549618603431210e+00 9.280302652742863e+03 + 151880 9.773980035022569e-01 -5.928479918812855e+00 -6.056095266141819e+00 4.073032959149810e+00 4.340245886375719e+00 9.390038724862903e+03 + 151900 1.082295238372089e+00 -6.071618694785818e+00 -5.974526780414257e+00 3.330163865049538e+00 4.887680662296235e+00 9.139025076284908e+03 + 151920 9.876885591413468e-01 -5.919723258125781e+00 -6.034748874609768e+00 4.075165414161352e+00 4.414670524153672e+00 9.324036353579080e+03 + 151940 1.030334289617298e+00 -5.973147627230021e+00 -6.024078016763076e+00 3.856409754996914e+00 4.563959576845804e+00 9.291107507194823e+03 + 151960 1.027825328229850e+00 -5.963007691079177e+00 -5.989432027622762e+00 3.835847975073889e+00 4.684115345487760e+00 9.184628295104792e+03 + 151980 1.001330806029908e+00 -5.920390493987311e+00 -5.998205899943780e+00 4.127218474266050e+00 4.680390371368849e+00 9.211516707596003e+03 + 152000 1.015355174945420e+00 -5.935442463173820e+00 -6.018574967232228e+00 4.070013990449988e+00 4.592654287433191e+00 9.274136468945466e+03 + 152020 1.081813467003885e+00 -6.029654134816251e+00 -6.014161044426606e+00 3.582904013860103e+00 4.671867736425437e+00 9.260582671327156e+03 + 152040 1.037953212335328e+00 -5.966347477335904e+00 -6.068227140814313e+00 3.876492615983507e+00 4.291483822463510e+00 9.427671495981609e+03 + 152060 1.042095738753555e+00 -5.982448839982646e+00 -6.007450852070577e+00 3.864374405047108e+00 4.720808982589341e+00 9.239932494047756e+03 + 152080 9.794305189039816e-01 -5.907004524235669e+00 -6.064864602938482e+00 4.203234571511945e+00 4.296777570832160e+00 9.417250112761336e+03 + 152100 1.021663222204000e+00 -5.996188384581353e+00 -6.022247892302862e+00 3.715129803864927e+00 4.565492077832233e+00 9.285475485894372e+03 + 152120 1.040839163497207e+00 -6.057657478328912e+00 -5.992201775178495e+00 3.383848341599931e+00 4.759705118326952e+00 9.193106887712018e+03 + 152140 1.000044606562817e+00 -6.030115557757036e+00 -5.959433690630225e+00 3.533266957785017e+00 4.939133176810760e+00 9.092923403764800e+03 + 152160 1.000880381887789e+00 -6.061078376329917e+00 -5.979474777488071e+00 3.448413554342193e+00 4.916994047008182e+00 9.154128108972969e+03 + 152180 9.712034851487680e-01 -6.043096442946593e+00 -5.964222751135901e+00 3.484632520097508e+00 4.937537464138856e+00 9.107535460703170e+03 + 152200 9.603007374470393e-01 -6.047671836745419e+00 -6.018037217215871e+00 3.423771937966564e+00 4.593938509247780e+00 9.272506898698419e+03 + 152220 9.370524167970798e-01 -6.030132613358297e+00 -5.990923113446842e+00 3.542188524449824e+00 4.767335540591898e+00 9.189203137627159e+03 + 152240 9.573493798364791e-01 -6.070803929099231e+00 -5.973892412232568e+00 3.320533064730031e+00 4.877013991587175e+00 9.137068212266357e+03 + 152260 9.523481610136985e-01 -6.067791195923206e+00 -5.940324780667311e+00 3.354390512954885e+00 5.086322394718250e+00 9.034756108495465e+03 + 152280 9.864782413382789e-01 -6.114254925493487e+00 -5.963668304682616e+00 3.098353197140499e+00 4.963044877040778e+00 9.105850966736412e+03 + 152300 9.773774086369922e-01 -6.089980655721680e+00 -5.980387616921889e+00 3.193648976765872e+00 4.822949165022218e+00 9.156947497431504e+03 + 152320 9.638526411570453e-01 -6.054686643516379e+00 -5.985352489018551e+00 3.371195864385506e+00 4.769323308937769e+00 9.172157197012124e+03 + 152340 9.691528967902641e-01 -6.040173225975279e+00 -5.986353691991471e+00 3.514947792239268e+00 4.823987884920259e+00 9.175206221658502e+03 + 152360 9.517683795231072e-01 -5.984674527507289e+00 -6.018418021492047e+00 3.765053783063300e+00 4.571293418814005e+00 9.273689087891498e+03 + 152380 9.857517840710753e-01 -5.999221694654436e+00 -6.035649638689151e+00 3.707334529059264e+00 4.498159637205812e+00 9.326798169050402e+03 + 152400 1.001255379129849e+00 -5.985954080450023e+00 -6.008238613528203e+00 3.795173110160781e+00 4.667211872705525e+00 9.242353457162309e+03 + 152420 9.860917047333877e-01 -5.930586569656579e+00 -6.054137637511012e+00 4.056503288656022e+00 4.347053937569910e+00 9.383974774732240e+03 + 152440 1.032156979254577e+00 -5.971027983236694e+00 -6.040551664364838e+00 3.870190660632621e+00 4.470974924839932e+00 9.341969681515313e+03 + 152460 1.073539670283112e+00 -6.014191584292018e+00 -6.018606990869822e+00 3.575893597387395e+00 4.550539649535686e+00 9.274282598233784e+03 + 152480 1.054752937150641e+00 -5.977079714251149e+00 -6.019800055081217e+00 3.820609406665752e+00 4.575302598668124e+00 9.277915650403069e+03 + 152500 1.050908941153667e+00 -5.967370213672618e+00 -5.973419625162750e+00 3.894287879353919e+00 4.859551222434183e+00 9.135620558263652e+03 + 152520 1.040968540786013e+00 -5.952142971830734e+00 -5.985397296160410e+00 3.941451062015685e+00 4.750499585624630e+00 9.172283084684434e+03 + 152540 1.024954192566925e+00 -5.932061695158469e+00 -6.010159924716710e+00 4.070582330331903e+00 4.622130210546524e+00 9.248259987511783e+03 + 152560 1.000227293617728e+00 -5.903879301634188e+00 -5.988143609018227e+00 4.198183265009614e+00 4.714324572151034e+00 9.180676165150888e+03 + 152580 9.876115562695748e-01 -5.892488653800219e+00 -5.994490256660736e+00 4.297302494384609e+00 4.711593506062491e+00 9.200125840671782e+03 + 152600 1.050421020675910e+00 -5.992504666241546e+00 -6.001227347422077e+00 3.763059729100105e+00 4.712972743930944e+00 9.220809001874206e+03 + 152620 1.014137077361775e+00 -5.948552526012344e+00 -6.022269238419342e+00 3.935680891902844e+00 4.512388121637489e+00 9.285547483828446e+03 + 152640 1.038796383240976e+00 -5.998477772226391e+00 -5.984128389589671e+00 3.737564334207746e+00 4.819960709867577e+00 9.168385496856494e+03 + 152660 9.869735669607721e-01 -5.932330099292184e+00 -6.029945406730527e+00 4.018663345993422e+00 4.458141144762448e+00 9.309194091121035e+03 + 152680 1.076054835242791e+00 -6.076265663758591e+00 -5.979191543845008e+00 3.326423352114141e+00 4.883837970829434e+00 9.153279074664359e+03 + 152700 9.589069949509454e-01 -5.912875144108061e+00 -6.015134784045298e+00 4.170643893376228e+00 4.583453216228476e+00 9.263549947360205e+03 + 152720 1.031658781988468e+00 -6.030201029613650e+00 -5.961455495691435e+00 3.572475940481894e+00 4.967223434600250e+00 9.099091279720553e+03 + 152740 1.033031667619511e+00 -6.039153330224023e+00 -6.000275687273328e+00 3.488212606324611e+00 4.711454048443304e+00 9.217883627263644e+03 + 152760 1.027884831121753e+00 -6.037827738280135e+00 -6.000084514037581e+00 3.474343738288650e+00 4.691071172634471e+00 9.217312255425126e+03 + 152780 9.889380109994573e-01 -5.987470837862720e+00 -6.002745168895943e+00 3.835529903003995e+00 4.747822330516133e+00 9.225472722484183e+03 + 152800 1.010643070218887e+00 -6.024734020767707e+00 -5.986782909610247e+00 3.612596512364478e+00 4.830517665546090e+00 9.176527689605848e+03 + 152820 9.909876627105110e-01 -5.999103417308512e+00 -6.020282969814867e+00 3.726691003607867e+00 4.605074735591215e+00 9.279438843452494e+03 + 152840 9.978607157796281e-01 -6.012214985140097e+00 -6.042423078315131e+00 3.635059288998320e+00 4.461599743299965e+00 9.347739563020819e+03 + 152860 9.999904024660496e-01 -6.019463100492636e+00 -6.000105765427922e+00 3.613561405079170e+00 4.724714218558672e+00 9.217371689191854e+03 + 152880 1.062025779116619e+00 -6.114555987182127e+00 -5.942588921107941e+00 3.098327152688484e+00 5.085788657903930e+00 9.041653874961674e+03 + 152900 9.563341480605191e-01 -5.960031296457307e+00 -5.978097824924878e+00 3.879322927885796e+00 4.775582125638759e+00 9.149934243844067e+03 + 152920 1.010118912642507e+00 -6.040885604728603e+00 -5.959455780873364e+00 3.495178406419227e+00 4.962761056220525e+00 9.093006930743597e+03 + 152940 9.473131694530033e-01 -5.944459304689596e+00 -5.994519481691917e+00 3.972254797953565e+00 4.684801514818889e+00 9.200210748084279e+03 + 152960 9.724403850721123e-01 -5.976117957523456e+00 -5.993088436338878e+00 3.833197038086845e+00 4.735749922555583e+00 9.195815586457788e+03 + 152980 1.020214655939091e+00 -6.040510469965291e+00 -5.991510425412859e+00 3.494712661858521e+00 4.776078500410973e+00 9.190973529994893e+03 + 153000 1.036208513022704e+00 -6.056937139204011e+00 -5.994601585996293e+00 3.377847630647137e+00 4.735788023561543e+00 9.200483600194679e+03 + 153020 1.005432042325397e+00 -6.006495203555549e+00 -6.025888226195338e+00 3.674321010947142e+00 4.562963273888923e+00 9.296701486592521e+03 + 153040 9.817217009391129e-01 -5.967779873149858e+00 -6.014253373316273e+00 3.873173013236408e+00 4.606314983529946e+00 9.260857832832948e+03 + 153060 1.045134922274149e+00 -6.059491960373935e+00 -5.984660889396656e+00 3.378600758307940e+00 4.808292347930290e+00 9.170023461272589e+03 + 153080 9.841610733559720e-01 -5.966959864027751e+00 -6.003596130659754e+00 3.865635617035342e+00 4.655264504590440e+00 9.228068751207287e+03 + 153100 1.011588263011098e+00 -6.006068397340584e+00 -5.967856703393823e+00 3.692577999550670e+00 4.911995459433493e+00 9.118601747728426e+03 + 153120 9.604399087472681e-01 -5.927041570140578e+00 -5.985635321437433e+00 4.131904280248286e+00 4.795449892948038e+00 9.172974449607886e+03 + 153140 9.994921451563397e-01 -5.979711958107544e+00 -5.990970227480188e+00 3.840343666496598e+00 4.775696941547314e+00 9.189339246094725e+03 + 153160 1.029755151423092e+00 -6.021815022036906e+00 -5.995820378722913e+00 3.553619448685116e+00 4.702884713252115e+00 9.204232800835862e+03 + 153180 1.008785376123178e+00 -5.991840981860378e+00 -5.956557867341031e+00 3.785405078761113e+00 4.988006182375529e+00 9.084166578796248e+03 + 153200 1.041430776479210e+00 -6.039017311073954e+00 -5.963638529906178e+00 3.551778589051776e+00 4.984615215345831e+00 9.105754736938788e+03 + 153220 9.924809992564678e-01 -5.965576228342496e+00 -6.010099023519222e+00 3.866525460170758e+00 4.610868680385707e+00 9.248093385596889e+03 + 153240 1.015216797484810e+00 -6.000813891056766e+00 -6.032402071057449e+00 3.641627650854867e+00 4.460243433035890e+00 9.316783622143643e+03 + 153260 9.609661311767491e-01 -5.923328935146872e+00 -6.003859629932724e+00 4.091258963669116e+00 4.628839252124010e+00 9.228898793606686e+03 + 153280 9.985982762031365e-01 -5.979767379599269e+00 -5.968068223205698e+00 3.867209384477118e+00 4.934387750927606e+00 9.119274682159141e+03 + 153300 1.076389353080526e+00 -6.094945620634140e+00 -5.987908791676844e+00 3.182536106422396e+00 4.797158142190934e+00 9.179968284644363e+03 + 153320 1.076586328014824e+00 -6.098111688109872e+00 -6.001849397094427e+00 3.172290553706237e+00 4.725043525258318e+00 9.222720917101580e+03 + 153340 9.927762874214089e-01 -5.980430863763656e+00 -6.013274909638803e+00 3.798689575640260e+00 4.610093981625495e+00 9.257826510823688e+03 + 153360 9.666837952282679e-01 -5.947078158254597e+00 -6.053402041733025e+00 3.966868506110016e+00 4.356340313609090e+00 9.381691747846204e+03 + 153380 9.631482864655275e-01 -5.947853564266724e+00 -6.022645295484957e+00 3.963640933651954e+00 4.534175239013861e+00 9.286705747666676e+03 + 153400 1.014427286364264e+00 -6.030631527040961e+00 -5.987913353289965e+00 3.522319945377023e+00 4.767614309671264e+00 9.179996354096897e+03 + 153420 9.340685669065637e-01 -5.918877450680126e+00 -6.013654735471023e+00 4.178151095164059e+00 4.633925259157311e+00 9.258995885542385e+03 + 153440 9.807819646158761e-01 -5.994889201052865e+00 -6.006613017960170e+00 3.710395799249074e+00 4.643075828312526e+00 9.237370468470430e+03 + 153460 1.026967331185860e+00 -6.070680330810350e+00 -5.987085322481212e+00 3.298253515491341e+00 4.778268989602980e+00 9.177445844123384e+03 + 153480 9.677969546783882e-01 -5.991023306128984e+00 -5.993473002966376e+00 3.751593625792819e+00 4.737527087463149e+00 9.196992055833793e+03 + 153500 9.871493374031156e-01 -6.024056524104576e+00 -5.986895008598643e+00 3.507942208806591e+00 4.721329381567601e+00 9.176856466689585e+03 + 153520 9.702727420678284e-01 -6.001941064799108e+00 -6.034820081623560e+00 3.664247077421193e+00 4.475450674803780e+00 9.324249344276872e+03 + 153540 9.687201100009538e-01 -6.004497623840043e+00 -5.983248322200403e+00 3.693569097263695e+00 4.815585875597312e+00 9.165698651493896e+03 + 153560 9.992654165071334e-01 -6.051343745146426e+00 -5.985503810566636e+00 3.440851893111725e+00 4.818914986165829e+00 9.172601683972123e+03 + 153580 1.001998014771537e+00 -6.054325555450640e+00 -6.009941513150544e+00 3.405597904069605e+00 4.660457943365106e+00 9.247597319865172e+03 + 153600 1.017681271815443e+00 -6.074972841205356e+00 -6.029819018655059e+00 3.274796754086502e+00 4.534076990701765e+00 9.308816357637232e+03 + 153620 1.027068376580897e+00 -6.086031925675162e+00 -5.967108622423098e+00 3.250904949782994e+00 4.933780960378046e+00 9.116352526268784e+03 + 153640 8.939361035895502e-01 -5.882454171864631e+00 -6.014859312011348e+00 4.389415601306393e+00 4.629124796954725e+00 9.262678467596124e+03 + 153660 9.907433298025076e-01 -6.013233662370320e+00 -6.035688474983740e+00 3.590577962861967e+00 4.461638953964687e+00 9.326940786957550e+03 + 153680 1.042359016160419e+00 -6.073193504609386e+00 -6.001180652384355e+00 3.334431854609424e+00 4.747940796038418e+00 9.220687668959170e+03 + 153700 1.034432099643915e+00 -6.042959654120679e+00 -6.029269754972689e+00 3.447670782721925e+00 4.526280302134733e+00 9.307112097156491e+03 + 153720 9.958678929352623e-01 -5.967220771498281e+00 -6.039410366388752e+00 3.876232231522560e+00 4.461708406357767e+00 9.338428940522075e+03 + 153740 1.008517056134427e+00 -5.965187922445955e+00 -6.060040630083936e+00 3.810435309180531e+00 4.265776383514171e+00 9.402283783208028e+03 + 153760 1.043815029446842e+00 -6.001079914927503e+00 -5.983060602316204e+00 3.758321013439192e+00 4.861790694932884e+00 9.165100237605748e+03 + 153780 9.498920919175092e-01 -5.843615219129063e+00 -6.069665697403050e+00 4.564653760630598e+00 4.266636933182910e+00 9.432115198538932e+03 + 153800 1.005852839702275e+00 -5.908668778688988e+00 -6.054282265600472e+00 4.155890092642502e+00 4.319754917182490e+00 9.384439499258631e+03 + 153820 1.028246798778961e+00 -5.926216877816223e+00 -6.033372952217380e+00 4.082308480003612e+00 4.467001718443249e+00 9.319794573471352e+03 + 153840 1.025886740603077e+00 -5.914083976639142e+00 -6.007981334781197e+00 4.209450200392478e+00 4.670277039371580e+00 9.241550226461119e+03 + 153860 9.894342334898864e-01 -5.853395161000053e+00 -6.018075217400717e+00 4.460533263280372e+00 4.514914895271392e+00 9.272605456292864e+03 + 153880 1.127465615427448e+00 -6.053047570224118e+00 -5.980257029132934e+00 3.425732062957253e+00 4.843706614202662e+00 9.156551235197074e+03 + 153900 1.096919088407365e+00 -6.012599324172547e+00 -5.997880923353799e+00 3.551942436567516e+00 4.636457771733935e+00 9.210538052072059e+03 + 153920 9.882435364956793e-01 -5.866038972200365e+00 -6.005936315195900e+00 4.470730834510415e+00 4.667418641986191e+00 9.235213491884149e+03 + 153940 1.029085349332307e+00 -5.946354259705553e+00 -5.949899424364361e+00 4.007171148586128e+00 4.986814264502790e+00 9.063852285545894e+03 + 153960 1.033409350619930e+00 -5.978201126557262e+00 -6.009340836269215e+00 3.789224665529933e+00 4.610415633509397e+00 9.245736635034857e+03 + 153980 1.062015878463885e+00 -6.056680988853945e+00 -6.000009007008988e+00 3.412207446282366e+00 4.737626735996960e+00 9.217076134531166e+03 + 154000 9.850169099327796e-01 -5.986117350006833e+00 -5.964066225190210e+00 3.805561807409364e+00 4.932182778506947e+00 9.107071848958814e+03 + 154020 9.208124639216702e-01 -5.930248285089446e+00 -5.997595277963068e+00 4.082920295246728e+00 4.696203440252925e+00 9.209634894189563e+03 + 154040 1.033522218589729e+00 -6.129715851892761e+00 -5.943192782625213e+00 3.016908304185804e+00 5.087952632271747e+00 9.043494983844079e+03 + 154060 9.309458124750325e-01 -6.002353442289832e+00 -5.974814770685613e+00 3.666367537300787e+00 4.824498851247871e+00 9.139900860296308e+03 + 154080 8.953715010162460e-01 -5.962575758714157e+00 -6.013662404539176e+00 3.913159411574628e+00 4.619811985614479e+00 9.259020048645274e+03 + 154100 9.957073912636289e-01 -6.118429693550341e+00 -5.988174169299165e+00 3.037381800215148e+00 4.785329177442635e+00 9.180803866144041e+03 + 154120 9.236181725258490e-01 -6.014363419250780e+00 -5.975074678048314e+00 3.602718611637942e+00 4.828320643535556e+00 9.140704654691230e+03 + 154140 9.823999916203963e-01 -6.097750326226784e+00 -5.995249057304035e+00 3.134932898633576e+00 4.723511046808105e+00 9.202472906666395e+03 + 154160 9.545416457318852e-01 -6.047962878662474e+00 -5.988661586300505e+00 3.457093086139773e+00 4.797610283727529e+00 9.182274707426657e+03 + 154180 9.376256404251384e-01 -6.011287662291399e+00 -5.968627144741612e+00 3.667577807554429e+00 4.912541101019061e+00 9.120999084489109e+03 + 154200 9.680098037483712e-01 -6.039318911557925e+00 -5.978425826819963e+00 3.515274890640665e+00 4.864932406380452e+00 9.150937265750268e+03 + 154220 9.484879047953447e-01 -5.988345014581715e+00 -6.000981283962727e+00 3.790674352320091e+00 4.718114938077952e+00 9.220031871982181e+03 + 154240 9.851962632780802e-01 -6.018294357771572e+00 -6.028355379525861e+00 3.557410040533713e+00 4.499638096682498e+00 9.304298367230240e+03 + 154260 1.009904287776747e+00 -6.028991253710687e+00 -6.027145155732479e+00 3.473008756204188e+00 4.483609336477795e+00 9.300581916918969e+03 + 154280 9.884318625487580e-01 -5.976419358485089e+00 -5.998833675090060e+00 3.813394308229257e+00 4.684687833679228e+00 9.213438077471679e+03 + 154300 9.966507303851484e-01 -5.969835710530723e+00 -5.945619780365019e+00 3.946445736743306e+00 5.085497355157857e+00 9.050843290803143e+03 + 154320 1.045411286575373e+00 -6.023124724732781e+00 -5.972425895304296e+00 3.609341383297788e+00 4.900461907494648e+00 9.132592133776805e+03 + 154340 9.600104306204874e-01 -5.883502824949063e+00 -6.037108952065433e+00 4.227521018192524e+00 4.345490865818982e+00 9.331323862523430e+03 + 154360 9.904815469406838e-01 -5.919931052252003e+00 -6.008501679263492e+00 4.096643029514631e+00 4.588056782954425e+00 9.243127631502795e+03 + 154380 1.011092591668110e+00 -5.945551674134736e+00 -6.035494431798631e+00 3.963052435278960e+00 4.446587202176108e+00 9.326301620548053e+03 + 154400 1.076168602534045e+00 -6.042101977565962e+00 -6.007041347435274e+00 3.491882603491789e+00 4.693206167317183e+00 9.238672218895561e+03 + 154420 1.023521418216818e+00 -5.968766319896369e+00 -6.049450340094695e+00 3.815844102093414e+00 4.352543972302854e+00 9.369468040922817e+03 + 154440 9.850803793732000e-01 -5.918484044203551e+00 -6.016556988554722e+00 4.183109992499388e+00 4.619959969295878e+00 9.267919780473501e+03 + 154460 1.013464110457321e+00 -5.967244561159388e+00 -5.972436762110178e+00 3.834214339824589e+00 4.804399918474656e+00 9.132588200129274e+03 + 154480 9.854344890204552e-01 -5.930350229681058e+00 -5.995273535390399e+00 4.131547012812470e+00 4.758747344580347e+00 9.202497400818802e+03 + 154500 1.036863097085982e+00 -6.011441115965360e+00 -5.983261773150928e+00 3.602381551443851e+00 4.764191698623526e+00 9.165723568785384e+03 + 154520 9.779362402804955e-01 -5.930126075860749e+00 -6.032807737643213e+00 4.026546708741896e+00 4.436932716851183e+00 9.318019286577368e+03 + 154540 1.032682119472608e+00 -6.019472199091743e+00 -6.015796869341544e+00 3.577839950723495e+00 4.598944262904580e+00 9.265599302602101e+03 + 154560 1.026620619009612e+00 -6.021414888315377e+00 -6.003217206623992e+00 3.604197350445244e+00 4.708691254799315e+00 9.226918425291309e+03 + 154580 9.955114622976984e-01 -5.987943471828876e+00 -6.038177593392995e+00 3.702288730774058e+00 4.413836631047696e+00 9.334618834260411e+03 + 154600 9.983784742615271e-01 -6.006699871905430e+00 -5.998082582820693e+00 3.607187103244213e+00 4.656668910689946e+00 9.211162387084338e+03 + 154620 9.277398522389051e-01 -5.915655225127380e+00 -6.000998356749846e+00 4.177361614808113e+00 4.687308146224979e+00 9.220127020316984e+03 + 154640 9.976902624728630e-01 -6.031254139825228e+00 -6.016392843007117e+00 3.513314835479047e+00 4.598650701586886e+00 9.267451949429736e+03 + 154660 1.002072924916289e+00 -6.054123058910775e+00 -6.016118324779574e+00 3.432948746307167e+00 4.651177810902119e+00 9.266603357289143e+03 + 154680 9.052463081658328e-01 -5.928436839978667e+00 -5.991731256312098e+00 4.144452087467972e+00 4.781005754102138e+00 9.191679158587767e+03 + 154700 9.836142285432771e-01 -6.061643126997803e+00 -5.973731624842715e+00 3.348591555417971e+00 4.853393005053482e+00 9.136585659986598e+03 + 154720 9.558571038288898e-01 -6.037191057035389e+00 -5.952252517892616e+00 3.549908398091495e+00 5.037638634045745e+00 9.071035924478747e+03 + 154740 9.326428215842683e-01 -6.017230477689758e+00 -5.990207482945389e+00 3.573836397638369e+00 4.729006615255455e+00 9.187005285921465e+03 + 154760 9.162728006253601e-01 -6.006614065904072e+00 -5.993220777670850e+00 3.658623800255772e+00 4.735530133895589e+00 9.196225455271006e+03 + 154780 9.350149696642575e-01 -6.046072701938997e+00 -5.979448217524883e+00 3.468023710724606e+00 4.850591810336090e+00 9.154058019389595e+03 + 154800 9.268405584094190e-01 -6.042027380934860e+00 -6.005491372507690e+00 3.454350422477895e+00 4.664145836795735e+00 9.233925675698372e+03 + 154820 9.694715189699855e-01 -6.110297751209170e+00 -5.990082739433813e+00 3.079912780888509e+00 4.770205981715558e+00 9.186650497737703e+03 + 154840 9.998689168767654e-01 -6.156460367588832e+00 -5.949961234815596e+00 2.845952898872887e+00 5.031702874894327e+00 9.064098425884094e+03 + 154860 9.047270042939991e-01 -6.009457784445012e+00 -5.963748961855847e+00 3.689200181418669e+00 4.951667314143091e+00 9.106093414768147e+03 + 154880 9.946047571247092e-01 -6.127276727618858e+00 -5.961093779293643e+00 2.996496467746932e+00 4.950744673758457e+00 9.097996766705457e+03 + 154900 9.987500232156385e-01 -6.107743847641848e+00 -5.954459210426859e+00 3.133087147744911e+00 5.013271255354327e+00 9.077767377743947e+03 + 154920 9.654989694846415e-01 -6.023662242053303e+00 -5.988085295848905e+00 3.584408879036476e+00 4.788697209656757e+00 9.180500837603295e+03 + 154940 1.010196036167359e+00 -6.048735010720269e+00 -6.007446956461974e+00 3.413008851584563e+00 4.650091248441439e+00 9.239946911490269e+03 + 154960 1.025516162266148e+00 -6.034023849151300e+00 -5.984564200090635e+00 3.530183542662047e+00 4.814188501424345e+00 9.169712825881648e+03 + 154980 1.028943051807332e+00 -6.008904523226491e+00 -5.978369075874078e+00 3.642677344767157e+00 4.818016608809916e+00 9.150748762294750e+03 + 155000 1.068531046414956e+00 -6.040038824930837e+00 -5.991216600434181e+00 3.412490487969162e+00 4.692835256243784e+00 9.190110197221496e+03 + 155020 1.015500077072386e+00 -5.939733281955551e+00 -6.052202485497428e+00 4.016746243334056e+00 4.370930672043598e+00 9.377977468094614e+03 + 155040 1.045569355140310e+00 -5.968694314360831e+00 -6.045151840617866e+00 3.805153976530528e+00 4.366123028998683e+00 9.356176401571369e+03 + 155060 1.017639018821679e+00 -5.920355251261887e+00 -5.994402120802588e+00 4.181709692122473e+00 4.756521108503738e+00 9.199834207521906e+03 + 155080 1.051342552465032e+00 -5.966333456487130e+00 -5.955333586615662e+00 3.890964223546198e+00 4.954127178572526e+00 9.080435472193236e+03 + 155100 1.037169784823303e+00 -5.945060838629262e+00 -5.987687819410057e+00 3.973767205780981e+00 4.728996485633694e+00 9.179263534127667e+03 + 155120 1.047753504752014e+00 -5.963329431268913e+00 -5.988249112839913e+00 3.837907672060185e+00 4.694815004171245e+00 9.181008942401078e+03 + 155140 1.038567424095626e+00 -5.956479984282568e+00 -5.989075822632151e+00 3.938691236886254e+00 4.751520888893272e+00 9.183522442467065e+03 + 155160 1.010893281588425e+00 -5.927926312784498e+00 -6.014397293803966e+00 4.020304815615504e+00 4.523775061260653e+00 9.261275967922713e+03 + 155180 9.845625122481979e-01 -5.905604784903248e+00 -5.982643136642935e+00 4.196222112572303e+00 4.753855975236616e+00 9.163831519630194e+03 + 155200 1.022562284903701e+00 -5.983283394788669e+00 -5.982138508016332e+00 3.797919755859774e+00 4.804493872877184e+00 9.162280393728337e+03 + 155220 1.080825014778091e+00 -6.097488988907767e+00 -5.970092297504354e+00 3.217020572765442e+00 4.948552089378124e+00 9.125466178917895e+03 + 155240 9.982265063962322e-01 -6.012211645687749e+00 -5.976195345809986e+00 3.647157795690730e+00 4.853968963093244e+00 9.144095980638182e+03 + 155260 9.742772940006780e-01 -6.016402938810502e+00 -5.949628717446572e+00 3.635170645885501e+00 5.018598558234547e+00 9.063043055847753e+03 + 155280 9.927140818299192e-01 -6.082721234091675e+00 -5.955839454633339e+00 3.275041615623382e+00 5.003616428165064e+00 9.081954188784453e+03 + 155300 9.708245987880417e-01 -6.082009758702881e+00 -5.935043673837592e+00 3.219543567608949e+00 5.063445569833569e+00 9.018720990022528e+03 + 155320 9.036434938499552e-01 -6.004019967156908e+00 -5.932731475804996e+00 3.692870062945815e+00 5.102219612146877e+00 9.011691419010420e+03 + 155340 9.220322885025901e-01 -6.041026200204699e+00 -5.949547496564502e+00 3.487593875348994e+00 5.012878747934641e+00 9.062808341396287e+03 + 155360 9.770031865924084e-01 -6.125901249815149e+00 -5.976098799981226e+00 3.023287739588787e+00 4.883476588389364e+00 9.143821894178624e+03 + 155380 9.765211869193547e-01 -6.122973387064694e+00 -5.961202536664681e+00 2.968230446687989e+00 4.897143703643060e+00 9.098343291163768e+03 + 155400 9.508739394937327e-01 -6.076726857373187e+00 -5.982140108587106e+00 3.309440213715260e+00 4.852571962497002e+00 9.162285637093579e+03 + 155420 9.188608965579500e-01 -6.016822438179955e+00 -5.963859781833828e+00 3.593411356169995e+00 4.897531124854035e+00 9.106442554807449e+03 + 155440 9.399851637450807e-01 -6.030818354562782e+00 -5.983611106774690e+00 3.594253961247608e+00 4.865325283344818e+00 9.166778213970429e+03 + 155460 9.767129791627324e-01 -6.066759519942504e+00 -5.960899200614990e+00 3.337853163261945e+00 4.945719498672000e+00 9.097410208999203e+03 + 155480 9.930339452156947e-01 -6.074495401045570e+00 -5.979594707792964e+00 3.249553596180457e+00 4.794488062671736e+00 9.154524049920432e+03 + 155500 9.386861552995084e-01 -5.980033555291146e+00 -6.024552457026761e+00 3.786893047385143e+00 4.531258624341463e+00 9.292577031850578e+03 + 155520 9.618294888604474e-01 -6.003148294855549e+00 -5.994736908670213e+00 3.680503242193001e+00 4.728802723327007e+00 9.200910481483734e+03 + 155540 9.594608622871416e-01 -5.988643835503059e+00 -5.980632096235697e+00 3.748431817365637e+00 4.794436464051479e+00 9.157689797689365e+03 + 155560 1.011985746744903e+00 -6.055982081015592e+00 -5.975360658671930e+00 3.412205220698084e+00 4.875145903920181e+00 9.141574683423793e+03 + 155580 1.018457559706363e+00 -6.054726981401814e+00 -5.958777681713413e+00 3.474332959814173e+00 5.025288686731107e+00 9.090928343204509e+03 + 155600 1.032214489754560e+00 -6.064127482822865e+00 -5.978950741344148e+00 3.421736755902710e+00 4.910834786531650e+00 9.152545982535501e+03 + 155620 9.981574075858994e-01 -6.002828112638390e+00 -6.031004138430933e+00 3.648859971089819e+00 4.487068870763139e+00 9.312479360349844e+03 + 155640 1.023712461323239e+00 -6.032604682127521e+00 -5.995621924643923e+00 3.544283677256875e+00 4.756644393790916e+00 9.203598319455725e+03 + 155660 9.150557953216502e-01 -5.863260870301786e+00 -6.010254319466276e+00 4.446521153848115e+00 4.602462021582869e+00 9.248545203482465e+03 + 155680 9.960983790250389e-01 -5.971954111501005e+00 -5.981989243562015e+00 3.904521382402756e+00 4.846898101176774e+00 9.161814266083662e+03 + 155700 9.920682976255403e-01 -5.951194210392703e+00 -6.031560794853807e+00 3.917307268716260e+00 4.455829904051855e+00 9.314197962072281e+03 + 155720 1.058700879442675e+00 -6.039794071148918e+00 -6.011148102063370e+00 3.479749289558792e+00 4.644238876997401e+00 9.251319398136764e+03 + 155740 1.028957806105577e+00 -5.986817902538230e+00 -6.007859895586226e+00 3.736385613575957e+00 4.615559233256462e+00 9.241190942897203e+03 + 155760 1.001954198415120e+00 -5.939796338594197e+00 -6.038484200147251e+00 4.003776477384212e+00 4.437095504449355e+00 9.335537026826649e+03 + 155780 1.039539106927784e+00 -5.988831940265251e+00 -5.968598191857904e+00 3.773077784582736e+00 4.889263099100166e+00 9.120885536347174e+03 + 155800 1.004289878555189e+00 -5.930802681263253e+00 -5.981316737331247e+00 4.020448513403998e+00 4.730388986436663e+00 9.159771362492911e+03 + 155820 1.051622559695882e+00 -5.995179785784154e+00 -5.990932386099844e+00 3.767496178177647e+00 4.791885404447932e+00 9.189200209551938e+03 + 155840 1.024444363694612e+00 -5.951296525697587e+00 -5.963983507803741e+00 3.984150199107573e+00 4.911299584549898e+00 9.106792958140664e+03 + 155860 9.975601811825657e-01 -5.908576768605900e+00 -5.974786431119791e+00 4.231800365671537e+00 4.851614237604612e+00 9.139787441422292e+03 + 155880 1.029421430888017e+00 -5.952747854047482e+00 -5.962151059806348e+00 3.971767024167147e+00 4.917772361558350e+00 9.101220366413541e+03 + 155900 1.052048403910336e+00 -5.985430162583285e+00 -5.960789981971791e+00 3.825243678440243e+00 4.966731408567068e+00 9.097048928102413e+03 + 155920 1.072491516788644e+00 -6.018365432759399e+00 -5.992888367330734e+00 3.525391288826692e+00 4.671684541081218e+00 9.195240602772274e+03 + 155940 9.742308242433042e-01 -5.879750392044881e+00 -5.979920705296006e+00 4.344939737074037e+00 4.769746297080199e+00 9.155496283746284e+03 + 155960 1.050134873247860e+00 -6.001372285482092e+00 -6.037111322629559e+00 3.639837143821892e+00 4.434618061923014e+00 9.331323631070760e+03 + 155980 1.060082950449662e+00 -6.033459347575737e+00 -5.994304799976108e+00 3.534915551718116e+00 4.759747023181845e+00 9.199524471311188e+03 + 156000 9.860247076454690e-01 -5.946801982586318e+00 -5.999593391004373e+00 3.968982212168462e+00 4.665845775587940e+00 9.215801864085384e+03 + 156020 9.600097702475310e-01 -5.935309069311873e+00 -5.967078572387117e+00 4.073924123262767e+00 4.891498720290002e+00 9.116225470527686e+03 + 156040 9.617904380326701e-01 -5.962560392087448e+00 -5.987879675534487e+00 3.855199788973863e+00 4.709812545274513e+00 9.179838636580747e+03 + 156060 9.648839634361004e-01 -5.988190069099558e+00 -5.969284636762753e+00 3.724679002229918e+00 4.833236920314050e+00 9.123000408865673e+03 + 156080 9.556958714776603e-01 -5.992484015964607e+00 -5.998820329189599e+00 3.749365655884403e+00 4.712981564805196e+00 9.213432996836458e+03 + 156100 1.021531438916179e+00 -6.106025155693918e+00 -5.990986930705665e+00 3.115238425285698e+00 4.775805715276029e+00 9.189435512501246e+03 + 156120 1.022105554112232e+00 -6.122562434831845e+00 -5.978867261986667e+00 3.059353433251884e+00 4.884473352485029e+00 9.152311852050241e+03 + 156140 1.012808430733923e+00 -6.124376248845142e+00 -5.977675514976339e+00 3.036276430908325e+00 4.878654746648186e+00 9.148658281099310e+03 + 156160 9.437004235933862e-01 -6.034428586584344e+00 -5.947448155445353e+00 3.506476434212221e+00 5.005931529990523e+00 9.056433399159350e+03 + 156180 9.528631257315973e-01 -6.054168581156506e+00 -5.939336332943128e+00 3.405401632989215e+00 5.064786172463413e+00 9.031758346043873e+03 + 156200 9.582074274813688e-01 -6.061234245706294e+00 -5.991144182665312e+00 3.358400839609688e+00 4.760868827993214e+00 9.189887699264604e+03 + 156220 9.422677755565344e-01 -6.029098014208721e+00 -6.012228826077340e+00 3.537998446233988e+00 4.634863934982803e+00 9.254607929685388e+03 + 156240 9.646967619765076e-01 -6.047194459603581e+00 -5.996695497845927e+00 3.466600680002949e+00 4.756573533104477e+00 9.206919763887547e+03 + 156260 9.941131336325121e-01 -6.066616934613710e+00 -6.020545162361872e+00 3.348850860072736e+00 4.613402105926506e+00 9.280242486919804e+03 + 156280 9.870474903696963e-01 -6.024880894070576e+00 -5.989593377560182e+00 3.604499983439220e+00 4.807126363967433e+00 9.185133628278058e+03 + 156300 9.784625895818214e-01 -5.971358800345510e+00 -6.015831927678462e+00 3.817923963535615e+00 4.562552384195593e+00 9.265710261370699e+03 + 156320 1.069548166122868e+00 -6.059955768957600e+00 -6.004656798004405e+00 3.358928208421295e+00 4.676463457122637e+00 9.231360585162553e+03 + 156340 1.030225709110215e+00 -5.959757426608255e+00 -5.996438922707100e+00 3.935752223198967e+00 4.725121396156229e+00 9.206115600902014e+03 + 156360 1.102136953249768e+00 -6.033351300813127e+00 -5.993818147604701e+00 3.564275486030331e+00 4.791280969488799e+00 9.198072234006971e+03 + 156380 1.081893475012560e+00 -5.980834758586768e+00 -6.002155783003046e+00 3.777947142839296e+00 4.655518521223168e+00 9.223683689452017e+03 + 156400 9.979176079572988e-01 -5.845701720244660e+00 -6.036109289521680e+00 4.519878477878393e+00 4.426528749613624e+00 9.328215056825451e+03 + 156420 1.038277649537138e+00 -5.901366749245051e+00 -5.982685165061580e+00 4.212486416903213e+00 4.745543489300531e+00 9.163952255201797e+03 + 156440 1.000649228397848e+00 -5.846493096746441e+00 -6.015452041192910e+00 4.512194200421500e+00 4.542005795097722e+00 9.264507716910946e+03 + 156460 1.084644710618589e+00 -5.977505074596809e+00 -5.975926420079889e+00 3.793393417134634e+00 4.802458295666787e+00 9.143317999361618e+03 + 156480 1.032345104090961e+00 -5.912732478623116e+00 -6.045618174573405e+00 4.155123258382257e+00 4.392073028240714e+00 9.357606713102501e+03 + 156500 1.026017308670078e+00 -5.920846352348364e+00 -6.002751329401363e+00 4.193796559162895e+00 4.723485506170340e+00 9.225482266233119e+03 + 156520 1.034022675889937e+00 -5.952467355795323e+00 -5.979868915174400e+00 3.994486848463894e+00 4.837142854131629e+00 9.155347758676544e+03 + 156540 9.547969581844103e-01 -5.855128419545848e+00 -6.023726613700354e+00 4.459968532796190e+00 4.491851611474789e+00 9.290018300695543e+03 + 156560 1.076425738549095e+00 -6.055261637512548e+00 -5.971905163567992e+00 3.365941474299682e+00 4.844587247061981e+00 9.131007729993786e+03 + 156580 9.231864605071064e-01 -5.845867159647654e+00 -6.061157215696396e+00 4.504309393805437e+00 4.268080575945066e+00 9.405721682328412e+03 + 156600 1.074947448131709e+00 -6.087931181736392e+00 -5.970443080222298e+00 3.194035327761268e+00 4.868670187880152e+00 9.126547447052104e+03 + 156620 9.806425214161109e-01 -5.964787460399743e+00 -5.998565397814652e+00 3.914070766918258e+00 4.720112623162931e+00 9.212653302176705e+03 + 156640 1.007666738455863e+00 -6.018177786544795e+00 -5.991973736414108e+00 3.622066713477596e+00 4.772534424391656e+00 9.192421462017228e+03 + 156660 9.654597818281411e-01 -5.964561117966589e+00 -5.964292798881128e+00 3.921222351430070e+00 4.922763081141031e+00 9.107754879154478e+03 + 156680 9.633779811067518e-01 -5.964887459985927e+00 -6.020784744964363e+00 3.874416731314403e+00 4.553445870891327e+00 9.280973030867974e+03 + 156700 1.012840925889855e+00 -6.040482024975684e+00 -6.016560779520383e+00 3.481370383650158e+00 4.618729876855269e+00 9.267954164161642e+03 + 156720 9.677035272798227e-01 -5.976682392089555e+00 -5.977785444228795e+00 3.794317794626969e+00 4.787983898546686e+00 9.148971114650494e+03 + 156740 9.687355631704844e-01 -5.977626270806263e+00 -6.016142254527434e+00 3.759994772572326e+00 4.538830033716144e+00 9.266647286083449e+03 + 156760 1.076874024490185e+00 -6.135779169810773e+00 -5.969732372447152e+00 3.002071425335534e+00 4.955537831456295e+00 9.124367312836290e+03 + 156780 9.598476311152302e-01 -5.961475471041683e+00 -5.997455095006664e+00 3.854326663191878e+00 4.647726094556138e+00 9.209227415165204e+03 + 156800 9.356992689522694e-01 -5.923879323000756e+00 -6.005618326530044e+00 4.067004702764974e+00 4.597646695429886e+00 9.234273611439630e+03 + 156820 1.006464080354083e+00 -6.023198418467491e+00 -5.990294885222333e+00 3.631990120494783e+00 4.820927300193794e+00 9.187220203193609e+03 + 156840 1.006313820236602e+00 -6.017384170532153e+00 -5.995214714344264e+00 3.609256797524332e+00 4.736557245667445e+00 9.202372546309023e+03 + 156860 1.040225434905872e+00 -6.062466630367660e+00 -6.004393478413311e+00 3.345252333975278e+00 4.678717359288369e+00 9.230559227038844e+03 + 156880 1.028299214899132e+00 -6.042389194884100e+00 -5.994025102421359e+00 3.472927937532903e+00 4.750642040773080e+00 9.198729719228102e+03 + 156900 9.702295857122382e-01 -5.954367727477870e+00 -5.989951026999348e+00 3.948904550582209e+00 4.744579738232078e+00 9.186232670252188e+03 + 156920 9.802250613706779e-01 -5.966719497582075e+00 -6.011603792782036e+00 3.852304673236276e+00 4.594572104375871e+00 9.252708621747352e+03 + 156940 9.944171493315874e-01 -5.985866031952818e+00 -5.986196770527361e+00 3.817816300460538e+00 4.815917148383881e+00 9.174705739285850e+03 + 156960 9.358989187910117e-01 -5.893441812058851e+00 -6.006913534912587e+00 4.299366046903787e+00 4.647793854585273e+00 9.238242625419982e+03 + 156980 1.039331128710779e+00 -6.040674966831532e+00 -6.002002817646383e+00 3.521330209029016e+00 4.743391674145891e+00 9.223190587714100e+03 + 157000 1.017548093378406e+00 -6.000641943828476e+00 -6.017697403175031e+00 3.689686645135702e+00 4.591751558243978e+00 9.271461914428572e+03 + 157020 1.026017147947780e+00 -6.005006201076732e+00 -6.001721630507582e+00 3.678310701895951e+00 4.697171214389661e+00 9.222342261020443e+03 + 157040 1.028231967148681e+00 -5.999441603056658e+00 -6.017853091611360e+00 3.679026765842158e+00 4.573305149392414e+00 9.271920489178330e+03 + 157060 9.839918803697235e-01 -5.922631868580491e+00 -6.020149055900939e+00 4.106604504899400e+00 4.546645724569424e+00 9.278944386963421e+03 + 157080 9.869184742964995e-01 -5.910727763724124e+00 -6.002044565902026e+00 4.189898688973567e+00 4.665543479638583e+00 9.223292073904880e+03 + 157100 1.012655102544502e+00 -5.926301425381177e+00 -5.988159448676408e+00 4.162074956602247e+00 4.806876614342862e+00 9.180719287128459e+03 + 157120 1.036049566939546e+00 -5.936768665598631e+00 -6.020478748302005e+00 4.044128452532119e+00 4.563452203555914e+00 9.279996179146941e+03 + 157140 1.053908925817445e+00 -5.941297625809114e+00 -6.065147164144323e+00 3.974946582961892e+00 4.263783368187010e+00 9.418114889616249e+03 + 157160 9.750414212429849e-01 -5.809542491302873e+00 -6.060090283869345e+00 4.748532965838596e+00 4.309848768776327e+00 9.402418313240802e+03 + 157180 1.048781512456741e+00 -5.910160074725588e+00 -5.999664617600480e+00 4.231437855425727e+00 4.717488919454849e+00 9.215982867349836e+03 + 157200 9.928923941495678e-01 -5.821509812758084e+00 -6.066234495696987e+00 4.625376681055300e+00 4.220129680597826e+00 9.421478091235691e+03 + 157220 1.079815886257194e+00 -5.953659681406927e+00 -6.044080107384148e+00 3.932101249126009e+00 4.412893170649108e+00 9.352860745084377e+03 + 157240 1.037527679606691e+00 -5.902959427509844e+00 -6.010995092694564e+00 4.214649602422707e+00 4.594292094466887e+00 9.250822892247057e+03 + 157260 1.072011977141883e+00 -5.972725150097947e+00 -5.962126066259625e+00 3.849680122990303e+00 4.910541702592872e+00 9.101150322614494e+03 + 157280 1.022747598099079e+00 -5.925456452795429e+00 -6.010232558280670e+00 4.163303432887970e+00 4.676505916131792e+00 9.248461270633137e+03 + 157300 1.089040452863974e+00 -6.059066667793214e+00 -5.941395084501927e+00 3.382572709654842e+00 5.058261150532074e+00 9.038028692139897e+03 + 157320 1.015896021398681e+00 -5.985456488308500e+00 -5.974281660925434e+00 3.753635332973337e+00 4.817802921105848e+00 9.138242605836880e+03 + 157340 1.007260623160975e+00 -6.003615493444865e+00 -5.978954247330535e+00 3.674129147478466e+00 4.815737838982452e+00 9.152549637128875e+03 + 157360 1.043932369280565e+00 -6.085527148918293e+00 -5.989062010467481e+00 3.203851167043168e+00 4.757768919959662e+00 9.183519064323607e+03 + 157380 9.573712824874293e-01 -5.982445730534573e+00 -6.005011568688016e+00 3.822222279154517e+00 4.692645744425272e+00 9.232454953505052e+03 + 157400 9.839637424950695e-01 -6.043069943521168e+00 -5.972768372634302e+00 3.498180573253349e+00 4.901863072418668e+00 9.133636926373707e+03 + 157420 9.540743091260190e-01 -6.012435733721757e+00 -6.009384306477507e+00 3.660626610023276e+00 4.678148377466601e+00 9.245873418446688e+03 + 157440 1.077639679555158e+00 -6.205804664552121e+00 -5.987821154854236e+00 2.602194536211034e+00 4.853889581735390e+00 9.179724451987891e+03 + 157460 8.899981551330978e-01 -5.935955771249519e+00 -6.052824950567125e+00 4.017433764283888e+00 4.346352851195145e+00 9.379931208362468e+03 + 157480 9.576739452411704e-01 -6.039875730555249e+00 -6.024083305919600e+00 3.441895782757318e+00 4.532578328885026e+00 9.291055238702582e+03 + 157500 9.894402996737462e-01 -6.086833609795920e+00 -5.984802531511067e+00 3.220371319719595e+00 4.806249560489555e+00 9.170442167060082e+03 + 157520 9.479556594767882e-01 -6.021518477706805e+00 -6.001705563715723e+00 3.524457824252995e+00 4.638226642428318e+00 9.222289314654796e+03 + 157540 9.648694443185758e-01 -6.037342363067489e+00 -5.988956538250148e+00 3.481539127233241e+00 4.759378021016601e+00 9.183176359397541e+03 + 157560 1.018166778743456e+00 -6.102182200616815e+00 -5.983880865630371e+00 3.091873955923233e+00 4.771178528487818e+00 9.167645599853971e+03 + 157580 9.097781716227297e-01 -5.921138160003744e+00 -6.019650713361212e+00 4.122660139216693e+00 4.556985813069750e+00 9.277445360228279e+03 + 157600 1.035988817329983e+00 -6.079897103190830e+00 -5.993268357531019e+00 3.278276502891600e+00 4.775712166225302e+00 9.196386148587460e+03 + 157620 1.025865356282052e+00 -6.023390769969561e+00 -6.020995216582435e+00 3.565586330679977e+00 4.579341968939543e+00 9.281630837518447e+03 + 157640 1.024259946820580e+00 -5.974090419001708e+00 -5.997244826530540e+00 3.853777543473623e+00 4.720821352310088e+00 9.208574088306130e+03 + 157660 1.052843634585507e+00 -5.967220512966490e+00 -5.953070328808468e+00 3.904378702382231e+00 4.985631249551517e+00 9.073527353632151e+03 + 157680 1.067079560968394e+00 -5.942578946526291e+00 -6.006710328297460e+00 3.985489829773305e+00 4.617237511344001e+00 9.237655160693188e+03 + 157700 1.054917018082333e+00 -5.894005171003320e+00 -6.043318056506330e+00 4.234791705497157e+00 4.377414010844515e+00 9.350508465364928e+03 + 157720 1.033160970159197e+00 -5.848342457523593e+00 -6.053335315690482e+00 4.494864736463324e+00 4.317764022326769e+00 9.381492122787678e+03 + 157740 1.036568401110942e+00 -5.852395095708044e+00 -6.048419968790159e+00 4.508327901727027e+00 4.382722745738447e+00 9.366260329780562e+03 + 157760 1.045312104395617e+00 -5.871273211900852e+00 -6.056506252529332e+00 4.348303713181680e+00 4.284666929172550e+00 9.391319389188986e+03 + 157780 1.028184359958844e+00 -5.857183991393851e+00 -6.062936238105408e+00 4.388464851381827e+00 4.207003610706791e+00 9.411262834732472e+03 + 157800 1.108768922892658e+00 -5.994453814567116e+00 -6.030267872128759e+00 3.645519331169023e+00 4.439869470442575e+00 9.310222049280042e+03 + 157820 1.013345660527794e+00 -5.876481899438243e+00 -6.008256425445802e+00 4.350435972272180e+00 4.593766251894778e+00 9.242405935903091e+03 + 157840 1.048654843193751e+00 -5.951974835943119e+00 -6.000269668826189e+00 3.910940957347285e+00 4.633624553331458e+00 9.217861568494558e+03 + 157860 9.963540951250582e-01 -5.898491106766225e+00 -6.011236964273984e+00 4.183421750212016e+00 4.536017589037408e+00 9.251555638955069e+03 + 157880 1.005109646549181e+00 -5.933411777526399e+00 -6.013061082062393e+00 4.011397809471971e+00 4.554039177136255e+00 9.257186078064578e+03 + 157900 1.021248499399027e+00 -5.978176608610720e+00 -6.039978087911785e+00 3.799362311100594e+00 4.444488653205863e+00 9.340163891422853e+03 + 157920 9.965161966291373e-01 -5.964145870551885e+00 -5.986576347186203e+00 3.883281378684169e+00 4.754482110744872e+00 9.175883271457771e+03 + 157940 1.018000184418513e+00 -6.014707316241329e+00 -5.985859231222199e+00 3.593357396543915e+00 4.759007564950485e+00 9.173698767307358e+03 + 157960 1.065459434486456e+00 -6.102584154278894e+00 -6.011491392058314e+00 3.198417922042519e+00 4.721486659272486e+00 9.252358066968996e+03 + 157980 9.347507301966350e-01 -5.926797120477151e+00 -6.057012773887620e+00 4.076188359163286e+00 4.328469926473135e+00 9.392901682043252e+03 + 158000 9.868709620221353e-01 -6.020605626830092e+00 -6.000296384489306e+00 3.629594540756258e+00 4.746213353122144e+00 9.217965562193229e+03 + 158020 1.008754455742515e+00 -6.066445700988504e+00 -5.968080385098313e+00 3.354172104897235e+00 4.919000970722151e+00 9.119318140259547e+03 + 158040 9.376172799096421e-01 -5.970748732061255e+00 -5.973555108497830e+00 3.880261878810615e+00 4.864147231026446e+00 9.136016093839240e+03 + 158060 9.502422782612084e-01 -5.992149090261105e+00 -6.010475080089077e+00 3.731364521255833e+00 4.626133851725855e+00 9.249244908543957e+03 + 158080 1.042480016935265e+00 -6.129808634445554e+00 -6.023356927415428e+00 2.959994537497852e+00 4.571256712613259e+00 9.288924132761060e+03 + 158100 9.122884967369705e-01 -5.937422501321481e+00 -6.038916328096906e+00 3.998495632197855e+00 4.415702372734431e+00 9.336927969439104e+03 + 158120 1.060321445466710e+00 -6.156236216057479e+00 -5.996192504580589e+00 2.823597409558066e+00 4.742593167542682e+00 9.205390005294772e+03 + 158140 9.295945463056196e-01 -5.960121881730548e+00 -5.985482166047563e+00 3.929875795580849e+00 4.784253118541240e+00 9.172511838900566e+03 + 158160 9.813003410638159e-01 -6.029467727589465e+00 -5.977821073534414e+00 3.525645030821957e+00 4.822208110699950e+00 9.149067682295907e+03 + 158180 9.885166606744838e-01 -6.021503759419323e+00 -5.958333188589033e+00 3.651211155431940e+00 5.013946348753707e+00 9.089566915767708e+03 + 158200 9.828642811058098e-01 -5.982305424104281e+00 -5.990842798105943e+00 3.828476696481462e+00 4.779453773809559e+00 9.188931572763122e+03 + 158220 9.744318212407846e-01 -5.922572515418604e+00 -6.022429605329130e+00 4.078750687459820e+00 4.505355824358858e+00 9.286020220083306e+03 + 158240 1.014119665254342e+00 -5.925313300262539e+00 -5.995703264795803e+00 4.064148857598341e+00 4.659958788436536e+00 9.203851418998374e+03 + 158260 1.103511123873385e+00 -6.007018274659313e+00 -5.946852700233981e+00 3.683068798071818e+00 5.028548837014624e+00 9.054619282829997e+03 + 158280 1.036127191249600e+00 -5.869749843054083e+00 -5.990198150096229e+00 4.353484082433136e+00 4.661851264081860e+00 9.186958945638922e+03 + 158300 1.063577748222445e+00 -5.886208559936533e+00 -6.019600987228854e+00 4.270082012749072e+00 4.504122052825154e+00 9.277263369948327e+03 + 158320 1.101796900561629e+00 -5.930788171744062e+00 -5.979261409985025e+00 4.081539161728755e+00 4.803198326539774e+00 9.153458341138003e+03 + 158340 1.112293415759407e+00 -5.944123323472500e+00 -5.986070795059899e+00 4.044636206421243e+00 4.803767333216153e+00 9.174295624758042e+03 + 158360 1.031922276148501e+00 -5.831506496053739e+00 -6.012935545088179e+00 4.601872451568337e+00 4.560078775957987e+00 9.256788724730704e+03 + 158380 1.096245281413277e+00 -5.942369743352601e+00 -6.010919226475634e+00 4.003828311483748e+00 4.610206571393062e+00 9.250605192098685e+03 + 158400 1.078775291601145e+00 -5.941065338743281e+00 -6.047026456352560e+00 4.014990291278437e+00 4.406545156535998e+00 9.361948908858931e+03 + 158420 1.030670938392361e+00 -5.901807245611191e+00 -6.041918469984020e+00 4.255714290768280e+00 4.451173958277596e+00 9.346137491848314e+03 + 158440 1.008198718546610e+00 -5.902855395038042e+00 -6.015818360294809e+00 4.205064702306332e+00 4.556413874839600e+00 9.265663494312483e+03 + 158460 1.021563074805141e+00 -5.958269043257469e+00 -6.011036209506779e+00 3.943060305211696e+00 4.640063070915573e+00 9.250963265499724e+03 + 158480 1.000041874029309e+00 -5.958794331111794e+00 -6.021809231443833e+00 3.930492771168349e+00 4.568651461937469e+00 9.284109106935693e+03 + 158500 1.051790393201695e+00 -6.058942807813466e+00 -6.009683626728179e+00 3.377336657659848e+00 4.660190498285207e+00 9.246784546311468e+03 + 158520 9.988765278997698e-01 -6.000202278782643e+00 -6.004156242322101e+00 3.715938741801903e+00 4.693234471284455e+00 9.229815308285382e+03 + 158540 1.007249863938297e+00 -6.029094024282705e+00 -5.979992295212773e+00 3.547325480290123e+00 4.829275207077693e+00 9.155726363277518e+03 + 158560 9.382983348117007e-01 -5.937124264915040e+00 -6.038879713439100e+00 4.023134997038739e+00 4.438839465008816e+00 9.336777949436671e+03 + 158580 9.602427303348809e-01 -5.977457853904292e+00 -6.011539981535550e+00 3.804297334034070e+00 4.608592482983182e+00 9.252509299834797e+03 + 158600 9.927640345234163e-01 -6.031012197013839e+00 -5.997572417295464e+00 3.538852143323626e+00 4.730868533255718e+00 9.209609394227591e+03 + 158620 9.503964363828763e-01 -5.970340141586703e+00 -6.003364648638845e+00 3.855866848471048e+00 4.666235018451699e+00 9.227397266742108e+03 + 158640 9.838576803815202e-01 -6.019030649449538e+00 -6.010504247415469e+00 3.604322975691887e+00 4.653282895627961e+00 9.249318450643583e+03 + 158660 9.961048591604530e-01 -6.035874071701697e+00 -6.035211684905775e+00 3.446819808486753e+00 4.450623335972962e+00 9.325460783563753e+03 + 158680 9.734031382292708e-01 -6.000568759756991e+00 -6.034760309015555e+00 3.680954884838088e+00 4.484621717870268e+00 9.324080933887069e+03 + 158700 1.019541886737426e+00 -6.066204348705783e+00 -5.999631091564462e+00 3.393804195363928e+00 4.776078140047643e+00 9.215933281531827e+03 + 158720 9.770116000496499e-01 -5.999649518905536e+00 -6.022055935802896e+00 3.713935474832594e+00 4.585274361626146e+00 9.284877816214650e+03 + 158740 1.034461528565342e+00 -6.079229684640679e+00 -5.974873495393145e+00 3.265935677775587e+00 4.865165065503023e+00 9.140074716689986e+03 + 158760 9.690838414855645e-01 -5.974868814659614e+00 -5.997076499068499e+00 3.816972219345662e+00 4.689452258841789e+00 9.208062347325362e+03 + 158780 9.712806306669008e-01 -5.964292862168566e+00 -6.018842928271001e+00 3.884633175443363e+00 4.571398254287735e+00 9.274968290424587e+03 + 158800 1.000936742962732e+00 -5.985019306328353e+00 -6.025745502264344e+00 3.735436035012129e+00 4.501579915589212e+00 9.296271782368880e+03 + 158820 1.058637606957790e+00 -6.040464222161960e+00 -6.023347752515702e+00 3.495767013673423e+00 4.594052431147353e+00 9.288876776015613e+03 + 158840 9.808939691911815e-01 -5.891650058734743e+00 -6.063935511722193e+00 4.249008624841290e+00 4.259718892699661e+00 9.414353539057578e+03 + 158860 9.999185984748633e-01 -5.882544616797418e+00 -6.048074099742590e+00 4.291882788101017e+00 4.341386881425137e+00 9.365194451352974e+03 + 158880 1.064804123115785e+00 -5.939799699070935e+00 -5.998435221288688e+00 4.010045181105628e+00 4.673350938713551e+00 9.212225161285758e+03 + 158900 1.078696289612449e+00 -5.925445760997094e+00 -6.041047775393562e+00 4.029952682920463e+00 4.366148026902033e+00 9.343504746903074e+03 + 158920 1.137243087169405e+00 -5.986331226856130e+00 -5.997362933149170e+00 3.766778094163539e+00 4.703432329477872e+00 9.208941778343156e+03 + 158940 1.094620580759152e+00 -5.909493933934400e+00 -6.002578281821872e+00 4.168410519049303e+00 4.633905788723160e+00 9.224956280089786e+03 + 158960 1.028753524124946e+00 -5.805932603792663e+00 -6.065645011493352e+00 4.731703597437365e+00 4.240394762054808e+00 9.419663513315605e+03 + 158980 1.136906018952045e+00 -5.974645067938932e+00 -6.015492430493897e+00 3.847318107980001e+00 4.612766231080462e+00 9.264688569213622e+03 + 159000 1.100171971239055e+00 -5.941286847841411e+00 -6.023452160597915e+00 4.022371383756390e+00 4.550565442867487e+00 9.289181752953307e+03 + 159020 1.051610996978976e+00 -5.904387680683501e+00 -6.009523751569358e+00 4.189002135295985e+00 4.585294546515006e+00 9.246286107992850e+03 + 159040 9.474613280854542e-01 -5.793834339823102e+00 -6.008706411702765e+00 4.759951341335533e+00 4.526122653256845e+00 9.243764051027567e+03 + 159060 1.011795340667918e+00 -5.927732720859541e+00 -5.969238260670335e+00 4.069471083058103e+00 4.831139850502995e+00 9.122804665723508e+03 + 159080 1.034418993505762e+00 -5.993426907236168e+00 -5.993521342400056e+00 3.683639026161596e+00 4.683096764836757e+00 9.197136887715007e+03 + 159100 1.000816189494112e+00 -5.970370146108327e+00 -6.041398435508201e+00 3.783250350645740e+00 4.375394921319404e+00 9.344565598049074e+03 + 159120 1.048143334253784e+00 -6.062751878426872e+00 -5.980808715850843e+00 3.343824752129183e+00 4.814355072304167e+00 9.158217386441329e+03 + 159140 9.481942082131043e-01 -5.927168537900184e+00 -5.991272338875397e+00 4.086621938441493e+00 4.718527993210679e+00 9.190254889029742e+03 + 159160 9.674502705608908e-01 -5.964626981256871e+00 -5.969564941559280e+00 3.933087024668994e+00 4.904732492465671e+00 9.123815436678509e+03 + 159180 1.038203007771875e+00 -6.073818954030989e+00 -5.977607902677767e+00 3.317571292670896e+00 4.870030038153173e+00 9.148441378946274e+03 + 159200 1.015096394237751e+00 -6.042734906609613e+00 -5.974918381115140e+00 3.454522121786077e+00 4.843935105748749e+00 9.140198580821701e+03 + 159220 9.560091868802948e-01 -5.956680357924192e+00 -6.003029013179180e+00 3.900981417566300e+00 4.634840266660940e+00 9.226335387455178e+03 + 159240 9.150455860828660e-01 -5.896574242317199e+00 -6.050105778161295e+00 4.226451896582518e+00 4.344850058837332e+00 9.371491318008601e+03 + 159260 1.000205847947655e+00 -6.022410173242243e+00 -5.989154362292501e+00 3.547882628569602e+00 4.738842641363135e+00 9.183792609248230e+03 + 159280 9.711993542221165e-01 -5.977222699851403e+00 -5.993445033203112e+00 3.826467069131730e+00 4.733315920628244e+00 9.196936452918293e+03 + 159300 9.818358822597771e-01 -5.988124951965341e+00 -6.039663512384980e+00 3.725171151352350e+00 4.429228761856339e+00 9.339217575466457e+03 + 159320 9.750292404795829e-01 -5.974153803546288e+00 -6.030807982588010e+00 3.783226023610088e+00 4.457908960346642e+00 9.311858488350774e+03 + 159340 1.025434900082332e+00 -6.043623583382672e+00 -5.983853387832904e+00 3.544382885800363e+00 4.887592598054999e+00 9.167519816410391e+03 + 159360 1.047825784104359e+00 -6.069171101480032e+00 -5.974924228883383e+00 3.264886598758522e+00 4.806066725864881e+00 9.140243515333865e+03 + 159380 9.533980555133019e-01 -5.918787905988847e+00 -6.015309504940378e+00 4.139806183775313e+00 4.585564225926460e+00 9.264066251810889e+03 + 159400 1.018637733524578e+00 -6.003917460170587e+00 -5.980829246962396e+00 3.732553334003841e+00 4.865129427134720e+00 9.158272774227498e+03 + 159420 1.034173301616139e+00 -6.010355963949451e+00 -6.038976120884514e+00 3.613304672606314e+00 4.448963302530217e+00 9.337085937188414e+03 + 159440 9.943493578756768e-01 -5.932827792631599e+00 -6.020966364571638e+00 4.063605864993107e+00 4.557500545513474e+00 9.281514115682674e+03 + 159460 1.024461371204370e+00 -5.955510228803456e+00 -5.989047884340971e+00 3.985871317654927e+00 4.793292909623095e+00 9.183452387765146e+03 + 159480 1.035748289266619e+00 -5.946173434302401e+00 -6.002442290059972e+00 4.054311167602497e+00 4.731206690265242e+00 9.224556277627080e+03 + 159500 1.031212292486131e+00 -5.911378736956396e+00 -6.031463114775706e+00 4.143046578077918e+00 4.453503497642036e+00 9.313901415793647e+03 + 159520 1.058805207813739e+00 -5.925997922008456e+00 -6.023768690451242e+00 4.097934277086076e+00 4.536519394710079e+00 9.290154304678097e+03 + 159540 1.119131363934976e+00 -5.994878013279849e+00 -6.005582956956259e+00 3.757365052212980e+00 4.695895609038359e+00 9.234185175585508e+03 + 159560 1.037350234491170e+00 -5.860492174372813e+00 -6.035886402496120e+00 4.427264658473533e+00 4.420123858420425e+00 9.327532169636152e+03 + 159580 1.079640552140489e+00 -5.916071925804431e+00 -6.033706106231257e+00 4.133965997305567e+00 4.458492329464140e+00 9.320811592453443e+03 + 159600 1.084501794897959e+00 -5.927180154867921e+00 -5.932603267784032e+00 4.120038205939981e+00 5.088897852351660e+00 9.011278945233740e+03 + 159620 1.027930786875877e+00 -5.853060717543073e+00 -5.971058223835776e+00 4.462785060257092e+00 4.785225119069307e+00 9.128386020438607e+03 + 159640 1.082983097112168e+00 -5.951664541646313e+00 -5.946137140979909e+00 4.045920746860257e+00 5.077659936849240e+00 9.052414074896391e+03 + 159660 1.052099447715315e+00 -5.935926992037361e+00 -6.029728556944718e+00 4.048451573885861e+00 4.509828472442561e+00 9.308508057896648e+03 + 159680 1.008622331887496e+00 -5.915257264047999e+00 -6.028868193333594e+00 4.165806247450648e+00 4.513434710258280e+00 9.305874677388445e+03 + 159700 1.012936687573398e+00 -5.969027952360778e+00 -5.999914072773715e+00 3.853731785094020e+00 4.676378902071248e+00 9.216768172349437e+03 + 159720 9.580423099643852e-01 -5.930673089248154e+00 -6.016050142756599e+00 4.077666445434643e+00 4.587418192132821e+00 9.266375596903588e+03 + 159740 1.019066363036946e+00 -6.056071612131017e+00 -6.015449188725151e+00 3.375015366463192e+00 4.608275607959381e+00 9.264537136552035e+03 + 159760 9.552800415534263e-01 -5.989578903561117e+00 -6.037383640961348e+00 3.717991636723654e+00 4.443489436812328e+00 9.332178212165500e+03 + 159780 9.668183874734675e-01 -6.024567629120570e+00 -6.026512803096705e+00 3.535812339052586e+00 4.524642849066920e+00 9.298622207778222e+03 + 159800 9.897765678315403e-01 -6.070397337579338e+00 -5.979611232101687e+00 3.373951709153029e+00 4.895259575910119e+00 9.154569797677621e+03 + 159820 9.372405471486146e-01 -5.998813573325064e+00 -5.997419172987730e+00 3.675076054915405e+00 4.683082917435136e+00 9.209146303935418e+03 + 159840 9.438370536512489e-01 -6.009928521330453e+00 -6.015424072261163e+00 3.585667604814778e+00 4.554111300936884e+00 9.264447564409673e+03 + 159860 9.306294217750053e-01 -5.988305485378703e+00 -5.956544619714080e+00 3.821995470516256e+00 5.004371276140599e+00 9.084109370507584e+03 + 159880 1.052946188671871e+00 -6.161957119427522e+00 -5.923744394843757e+00 2.810548992164053e+00 5.178403320024024e+00 8.984435109516147e+03 + 159900 9.728220541758182e-01 -6.029553126375461e+00 -5.944810219298901e+00 3.567807693000484e+00 5.054414579356582e+00 9.048387610657075e+03 + 159920 9.844970624430790e-01 -6.029525383371160e+00 -5.994957744402039e+00 3.512636911048601e+00 4.711129643334138e+00 9.201588432028382e+03 + 159940 9.801226784897152e-01 -6.003728265598066e+00 -6.004061174876538e+00 3.657306727493465e+00 4.655395110898931e+00 9.229516800387752e+03 + 159960 1.003513387507547e+00 -6.017294716602880e+00 -6.007453659200221e+00 3.539402201391014e+00 4.595911075895795e+00 9.239957630415327e+03 + 159980 1.007947823748043e+00 -6.002540425019272e+00 -5.998753481546204e+00 3.642954413999386e+00 4.664699629449355e+00 9.213211726145228e+03 + 160000 9.543539917104560e-01 -5.900261352826585e+00 -6.038222154854846e+00 4.239763823419176e+00 4.447571548807793e+00 9.334720106571405e+03 + 160020 1.037357033024850e+00 -6.000236300520401e+00 -5.980681545487596e+00 3.677935038480325e+00 4.790221467967249e+00 9.157819391201205e+03 + 160040 1.026583558431805e+00 -5.961638452563316e+00 -5.985112023044009e+00 3.909656178071586e+00 4.774867303848154e+00 9.171397153784097e+03 + 160060 1.045704740248333e+00 -5.968266470371322e+00 -5.996264075452608e+00 3.831462775588807e+00 4.670696194596680e+00 9.205578896734463e+03 + 160080 1.049404147500742e+00 -5.955743797417787e+00 -5.979619860793060e+00 3.977159845644473e+00 4.840059794934790e+00 9.154591284388594e+03 + 160100 1.043601010179561e+00 -5.931497631245326e+00 -6.028016871318217e+00 4.015256873430538e+00 4.461028460627870e+00 9.303255800401419e+03 + 160120 1.055438165176422e+00 -5.935598889123364e+00 -6.021384991831250e+00 4.050156240804776e+00 4.557559163699602e+00 9.282804378832494e+03 + 160140 1.067766959005933e+00 -5.945524210976529e+00 -6.011054992452717e+00 3.980459089576319e+00 4.604171201484383e+00 9.251013580487916e+03 + 160160 1.056972727789983e+00 -5.926064230600744e+00 -5.989708109239521e+00 4.093253054853432e+00 4.727800054851184e+00 9.185470465238870e+03 + 160180 1.064057455614660e+00 -5.938079343333508e+00 -6.001618011425073e+00 4.046076979279231e+00 4.681228114520358e+00 9.222007931817772e+03 + 160200 1.096865378765961e+00 -5.996945069430559e+00 -5.993303904829786e+00 3.788328372230572e+00 4.809236502836614e+00 9.196500735592123e+03 + 160220 1.034108045077602e+00 -5.929309618204704e+00 -6.002858287394838e+00 4.081195167291060e+00 4.658867327181538e+00 9.225806987634365e+03 + 160240 9.690652528380195e-01 -5.868633054986858e+00 -6.011065764215862e+00 4.430787857803531e+00 4.612917200020067e+00 9.251023831886685e+03 + 160260 1.032900863787162e+00 -6.003321296492603e+00 -5.973296261933551e+00 3.705207116566222e+00 4.877615511363378e+00 9.135253302512057e+03 + 160280 1.009421266313451e+00 -6.009729224364233e+00 -5.996863257888558e+00 3.655306832178884e+00 4.729185202684092e+00 9.207413959393434e+03 + 160300 9.898118209843599e-01 -6.017056448600211e+00 -5.974920045504571e+00 3.605856874313787e+00 4.847810621476260e+00 9.140226160652444e+03 + 160320 9.865873670624269e-01 -6.043927894060685e+00 -6.001409975745514e+00 3.457988852588452e+00 4.702133319180756e+00 9.221365570554926e+03 + 160340 9.972764357017723e-01 -6.085613172472881e+00 -5.972072737509894e+00 3.221852994565400e+00 4.873819742448394e+00 9.131514498507227e+03 + 160360 9.625410277080177e-01 -6.054277830916212e+00 -5.910044171312459e+00 3.454905498381671e+00 5.283117491913114e+00 8.942955835836963e+03 + 160380 9.386798611680151e-01 -6.028729755141118e+00 -5.974627975276070e+00 3.565482966246116e+00 4.876143758454599e+00 9.139306228599671e+03 + 160400 9.412621422743230e-01 -6.036043694446783e+00 -5.975777580171305e+00 3.499266153911383e+00 4.845323508232222e+00 9.142838809521978e+03 + 160420 8.901954151449177e-01 -5.958544529686002e+00 -5.983429510312073e+00 3.891254020978171e+00 4.748360611284968e+00 9.166224071270773e+03 + 160440 9.540440279095108e-01 -6.045022557774733e+00 -5.964623702011779e+00 3.397088367044824e+00 4.858751038518428e+00 9.108755604963011e+03 + 160460 9.717326106687892e-01 -6.054274443241994e+00 -5.992345348350361e+00 3.403760462432396e+00 4.759366908796612e+00 9.193558794984960e+03 + 160480 9.841133773759392e-01 -6.050458687910786e+00 -6.008658588829266e+00 3.384959235382650e+00 4.624981872853165e+00 9.243656092332581e+03 + 160500 9.857170965525551e-01 -6.027538402958273e+00 -6.007632686627839e+00 3.555173318537368e+00 4.669475022106365e+00 9.240495970752519e+03 + 160520 9.504548608150292e-01 -5.948634311602605e+00 -6.004835591059705e+00 3.976196247495960e+00 4.653479803733405e+00 9.231883721066608e+03 + 160540 1.025772983123868e+00 -6.030375952437197e+00 -5.993747031623313e+00 3.524860101517636e+00 4.735189033138139e+00 9.197863177757654e+03 + 160560 1.000728380618666e+00 -5.962549678341017e+00 -6.011620542734482e+00 3.902179875678359e+00 4.620407378639363e+00 9.252761589101543e+03 + 160580 1.005717704235259e+00 -5.944086481030424e+00 -6.042090990889849e+00 3.977818870114446e+00 4.415061808352740e+00 9.346704161397722e+03 + 160600 1.077847471288511e+00 -6.029565772986225e+00 -6.046199186084481e+00 3.479160333964883e+00 4.383648701942342e+00 9.359420737771030e+03 + 160620 1.048252225599818e+00 -5.971456961838726e+00 -5.999696464499304e+00 3.861916807231214e+00 4.699761212905262e+00 9.216128718056727e+03 + 160640 9.610462916011152e-01 -5.834330632420808e+00 -6.044968014621085e+00 4.588619796144879e+00 4.379107351521339e+00 9.355599290331964e+03 + 160660 1.024613967875829e+00 -5.923538819381980e+00 -6.063178348026995e+00 4.069431953128927e+00 4.267600170502030e+00 9.412001974198305e+03 + 160680 1.053636107874291e+00 -5.968247058049092e+00 -6.040706656546415e+00 3.834363385155803e+00 4.418289157497547e+00 9.342425048616595e+03 + 160700 1.018286238269592e+00 -5.923814963911751e+00 -6.051965720508552e+00 4.054285371787454e+00 4.318423896143138e+00 9.377277705762193e+03 + 160720 1.059594829726587e+00 -5.998903463655076e+00 -6.003953583729110e+00 3.719464743563103e+00 4.690466172594443e+00 9.229198406020749e+03 + 160740 1.052393942943580e+00 -6.008292726760556e+00 -5.996881706169074e+00 3.703316167885994e+00 4.768840013972017e+00 9.207482280370616e+03 + 160760 1.022482097402826e+00 -5.989466385673874e+00 -6.030674670305198e+00 3.676409211805256e+00 4.439784864490757e+00 9.311462315478340e+03 + 160780 1.108649189565062e+00 -6.149531842300692e+00 -5.955251521763142e+00 2.904125542703263e+00 5.019713208012318e+00 9.080195550316439e+03 + 160800 9.629498461824223e-01 -5.973851642815937e+00 -5.982714019707520e+00 3.892009100698209e+00 4.841119961138350e+00 9.164055548405855e+03 + 160820 8.928878392252760e-01 -5.912579343842498e+00 -5.946018323410957e+00 4.181841444687677e+00 4.989829649340219e+00 9.052059150105721e+03 + 160840 8.977440436836467e-01 -5.953887530137131e+00 -6.007716111957810e+00 3.843146879173263e+00 4.534054832412808e+00 9.240734752360866e+03 + 160860 9.328680901094688e-01 -6.034701165803861e+00 -5.964242630111632e+00 3.515301113848696e+00 4.919884929216640e+00 9.107614328145522e+03 + 160880 9.721897161861465e-01 -6.111994922023370e+00 -5.975615134649156e+00 3.073784958512974e+00 4.856898802319598e+00 9.142349179195591e+03 + 160900 9.896340875941932e-01 -6.148504369293977e+00 -5.976428073598414e+00 2.897305233414045e+00 4.885393952018668e+00 9.144843040933920e+03 + 160920 9.321217545434516e-01 -6.065364051685483e+00 -5.947947632313242e+00 3.427224662009677e+00 5.101447912177262e+00 9.057954697797748e+03 + 160940 9.342985802039493e-01 -6.063782937291748e+00 -5.993726373034649e+00 3.346332106491121e+00 4.748607739673664e+00 9.197796279986298e+03 + 160960 9.843442540391312e-01 -6.130039329454951e+00 -5.952914113698474e+00 3.006942187438287e+00 5.024022586350528e+00 9.073080674535744e+03 + 160980 9.241315234708865e-01 -6.030606467553297e+00 -5.985754963506786e+00 3.558131158551515e+00 4.815675435534398e+00 9.173366568004292e+03 + 161000 9.895675138219547e-01 -6.115456744857433e+00 -5.968390239476424e+00 3.101899387254441e+00 4.946378019620347e+00 9.120262155367234e+03 + 161020 9.484283017247078e-01 -6.039371488429274e+00 -6.000836826311267e+00 3.501239361970288e+00 4.722511355071572e+00 9.219625439609994e+03 + 161040 9.378461028125493e-01 -6.006628779479262e+00 -6.010670577839912e+00 3.636436234150310e+00 4.613227602497182e+00 9.249841072910251e+03 + 161060 9.751397111636719e-01 -6.042248158738417e+00 -6.022947477578064e+00 3.480515484711070e+00 4.591342982704571e+00 9.287621840135949e+03 + 161080 9.526603356935284e-01 -5.988469957403186e+00 -6.012803722631137e+00 3.743660200131113e+00 4.603931954554224e+00 9.256402375927779e+03 + 161100 1.014057667809752e+00 -6.057817090462603e+00 -5.960768761228445e+00 3.393329874986283e+00 4.950596399629228e+00 9.097022318188392e+03 + 161120 1.020164419314882e+00 -6.043060673935757e+00 -6.005260528589705e+00 3.445198437626893e+00 4.662252721757507e+00 9.233190280953428e+03 + 161140 9.973283688029509e-01 -5.987442077490051e+00 -6.016812303752008e+00 3.727850997300435e+00 4.559202613076456e+00 9.268679820290001e+03 + 161160 9.693092690836458e-01 -5.925371244015134e+00 -5.958860041094356e+00 4.153573728045362e+00 4.961275872841876e+00 9.091178255123514e+03 + 161180 1.093899142035211e+00 -6.085998859504999e+00 -5.974671160997230e+00 3.216047101332310e+00 4.855307974069586e+00 9.139443491781911e+03 + 161200 1.064426123811495e+00 -6.021919898102770e+00 -5.973835342614594e+00 3.587132707129706e+00 4.863241665803725e+00 9.136896142548490e+03 + 161220 1.009955988437702e+00 -5.924368384314026e+00 -6.007060245066347e+00 4.067295901571217e+00 4.592466440607295e+00 9.238741240377889e+03 + 161240 1.086097448374550e+00 -6.024406830315661e+00 -5.983686213813101e+00 3.573388559155656e+00 4.807212640608394e+00 9.167027795240174e+03 + 161260 1.019618788514871e+00 -5.917844391594989e+00 -6.030064332701378e+00 4.091250340985165e+00 4.446866073172518e+00 9.309572621804036e+03 + 161280 1.033691115413999e+00 -5.937170957093135e+00 -5.976175260504660e+00 4.063615338596769e+00 4.839646592511344e+00 9.144036144805503e+03 + 161300 1.005882225940329e+00 -5.895702095128709e+00 -6.029941291196819e+00 4.252120459799505e+00 4.481298222527967e+00 9.309201340570153e+03 + 161320 1.078734638251447e+00 -6.008933509390550e+00 -6.036029380839561e+00 3.605003671107842e+00 4.449414984175068e+00 9.327971688714657e+03 + 161340 1.048605035059098e+00 -5.979060326142059e+00 -6.015070541887778e+00 3.821522418231038e+00 4.614746186856244e+00 9.263361507677848e+03 + 161360 9.515518029595686e-01 -5.859089460003956e+00 -6.060679799397777e+00 4.524339358876682e+00 4.366776434073160e+00 9.404248594394612e+03 + 161380 1.025523261669167e+00 -6.004617178858203e+00 -6.006921421792669e+00 3.667895601826619e+00 4.654664282316474e+00 9.238303600004194e+03 + 161400 9.895475119328700e-01 -5.997393818129471e+00 -6.005796487645971e+00 3.718216496115731e+00 4.669967067443085e+00 9.234840289342235e+03 + 161420 9.489099046790658e-01 -5.981680302672672e+00 -5.972045809092243e+00 3.800196074815875e+00 4.855518827887764e+00 9.131445177279282e+03 + 161440 9.824302010935702e-01 -6.069707568709373e+00 -6.019160721392371e+00 3.321708194898907e+00 4.611956014292476e+00 9.275984644478491e+03 + 161460 1.022792577551239e+00 -6.162385411534211e+00 -5.981028412278707e+00 2.872001870536002e+00 4.913381825166039e+00 9.158910389111221e+03 + 161480 9.697303842343118e-01 -6.108263709606693e+00 -5.986622584890484e+00 3.160905603845100e+00 4.859387765868789e+00 9.176043107054831e+03 + 161500 8.711132766710158e-01 -5.973175964813201e+00 -6.021574276639499e+00 3.858909382612777e+00 4.580998786491624e+00 9.283389227556463e+03 + 161520 9.514720950745312e-01 -6.094132184882064e+00 -5.971001776161700e+00 3.179551502515614e+00 4.886585363757110e+00 9.128251928208205e+03 + 161540 9.682115820061473e-01 -6.113333207809963e+00 -5.969154071776005e+00 3.111362170909172e+00 4.939261081665349e+00 9.122582227023777e+03 + 161560 9.391717382794473e-01 -6.058897432527799e+00 -5.979061748222227e+00 3.428338482137149e+00 4.886767335951963e+00 9.152904649896742e+03 + 161580 9.801968985478771e-01 -6.105267930585431e+00 -5.993009208827653e+00 3.158910141688762e+00 4.803517094002979e+00 9.195606395694052e+03 + 161600 8.928627566610730e-01 -5.959282257922852e+00 -6.013929428598797e+00 3.932512752692222e+00 4.618720242048614e+00 9.259848712747371e+03 + 161620 9.736687337846565e-01 -6.060885870622824e+00 -5.999126649962388e+00 3.402878186152601e+00 4.757509188393337e+00 9.214365697766449e+03 + 161640 9.663412620908324e-01 -6.029121513976166e+00 -5.979624146524955e+00 3.589708385813489e+00 4.873929929411195e+00 9.154603136040037e+03 + 161660 9.957287156539052e-01 -6.051556623797238e+00 -5.956198553517322e+00 3.434466593766025e+00 4.982027389926987e+00 9.083078031839552e+03 + 161680 1.012569056726924e+00 -6.053941882193143e+00 -6.030757113884825e+00 3.404172043054397e+00 4.537302570512059e+00 9.311726992608450e+03 + 161700 9.922643539980914e-01 -6.005784353359027e+00 -6.034561769448311e+00 3.668253064831352e+00 4.503008688355931e+00 9.323472907060286e+03 + 161720 9.292812169000150e-01 -5.899570549236382e+00 -6.024191340249188e+00 4.238830046775821e+00 4.523238179775209e+00 9.291472970537761e+03 + 161740 1.070674486573604e+00 -6.097856627760721e+00 -5.977040481546186e+00 3.236309657969971e+00 4.930054665772037e+00 9.146695247507294e+03 + 161760 1.014383953930517e+00 -6.006056172793192e+00 -5.984598135486674e+00 3.655718238704871e+00 4.778933609539438e+00 9.169828163077431e+03 + 161780 1.009062092671237e+00 -5.990904165192948e+00 -5.978169323882467e+00 3.734572826843716e+00 4.807698256358817e+00 9.150160430638423e+03 + 161800 1.028810270868253e+00 -6.012832004605261e+00 -6.001375635292638e+00 3.651195140298952e+00 4.716979385759458e+00 9.221276033019090e+03 + 161820 1.036196998924080e+00 -6.019876702551514e+00 -6.015545314166622e+00 3.604008395943712e+00 4.628879898329947e+00 9.264853254497964e+03 + 161840 1.037283042260460e+00 -6.021128194842947e+00 -6.025194315872060e+00 3.586646370424517e+00 4.563298074245159e+00 9.294552666315698e+03 + 161860 1.108700722609341e+00 -6.129227278529602e+00 -5.987569223578369e+00 3.047881307958539e+00 4.861303781001675e+00 9.178932797790869e+03 + 161880 9.939644425126315e-01 -5.964342200457356e+00 -6.026897679214423e+00 3.926565475405612e+00 4.567362235953478e+00 9.299805436016386e+03 + 161900 9.937327236543428e-01 -5.970679875573376e+00 -6.003489252415774e+00 3.895437691564763e+00 4.707041172501057e+00 9.227764453679720e+03 + 161920 9.727462996333139e-01 -5.946229891437940e+00 -6.025634186171143e+00 4.013385096453662e+00 4.557433348320719e+00 9.295906080135830e+03 + 161940 1.021199693183249e+00 -6.025954736506009e+00 -5.975981704101654e+00 3.560279033965541e+00 4.847231919333117e+00 9.143466923403259e+03 + 161960 9.449240212159047e-01 -5.920753570349351e+00 -6.054464795605219e+00 4.113215856921818e+00 4.345425309757387e+00 9.384995559344998e+03 + 161980 1.022340738626015e+00 -6.045671810814951e+00 -6.021758341060657e+00 3.450301353399193e+00 4.587616197325833e+00 9.283975771685886e+03 + 162000 9.696475607892012e-01 -5.981805618909952e+00 -6.023636557831040e+00 3.795399586468786e+00 4.555199861867022e+00 9.289759410353270e+03 + 162020 9.620830467883295e-01 -5.992361507397943e+00 -6.000616617962190e+00 3.744951916829950e+00 4.697549794495812e+00 9.218951175343944e+03 + 162040 1.048443032182123e+00 -6.155970426410600e+00 -6.015734711618873e+00 2.844728817588674e+00 4.649983993329498e+00 9.265425158011036e+03 + 162060 9.283078851211289e-01 -6.027320028868655e+00 -5.968524643361570e+00 3.559995099804065e+00 4.897607301942256e+00 9.120693403725800e+03 + 162080 8.198153346019057e-01 -5.912188963709472e+00 -6.039196350417110e+00 4.132664063454428e+00 4.403367994649597e+00 9.337768197060705e+03 + 162100 9.248710568636554e-01 -6.106353457205143e+00 -5.955432071881397e+00 3.180481701692716e+00 5.047095651230570e+00 9.080743218991662e+03 + 162120 9.449895670255876e-01 -6.158998837940627e+00 -5.955323531166824e+00 2.844157054295350e+00 5.013692184442381e+00 9.080409182660045e+03 + 162140 9.062080220858205e-01 -6.112521033052403e+00 -5.995792828385763e+00 3.058964756092311e+00 4.729236170919451e+00 9.204142059693064e+03 + 162160 8.713974382900049e-01 -6.062046908413455e+00 -5.994930158865159e+00 3.299554395615973e+00 4.684949157805715e+00 9.201502597039753e+03 + 162180 8.862678923255833e-01 -6.075122136014830e+00 -5.957038028047088e+00 3.291171611610900e+00 4.969228833018324e+00 9.085643585870150e+03 + 162200 9.096464549298351e-01 -6.090203467259455e+00 -5.970988303225447e+00 3.247221104979081e+00 4.931773025349365e+00 9.128202578096285e+03 + 162220 9.349409140836442e-01 -6.098318043961849e+00 -5.953401340529544e+00 3.181697209131612e+00 5.013831346027292e+00 9.074561124917460e+03 + 162240 9.370106122085293e-01 -6.065584912137465e+00 -5.969372439890490e+00 3.368594433848986e+00 4.921061338323081e+00 9.123267713359925e+03 + 162260 9.235452364979483e-01 -6.007959594723721e+00 -5.966384512223540e+00 3.634155693710341e+00 4.872886251149606e+00 9.114146170394381e+03 + 162280 9.961794431043668e-01 -6.080671767458593e+00 -5.960757802077831e+00 3.271158032443318e+00 4.959722578285824e+00 9.096971427553250e+03 + 162300 9.523189383031305e-01 -5.984741306053694e+00 -5.985599298878906e+00 3.788324897945702e+00 4.783398170369374e+00 9.172907905128632e+03 + 162320 1.001688483654537e+00 -6.033842553690658e+00 -6.030344450276324e+00 3.522912723797856e+00 4.542999374932715e+00 9.310416677535124e+03 + 162340 1.025904574764254e+00 -6.051988829280266e+00 -6.000656104700768e+00 3.419363171790314e+00 4.714123620039246e+00 9.219063130052336e+03 + 162360 1.046949091851151e+00 -6.068119541812703e+00 -5.985251988532794e+00 3.360980256718325e+00 4.836818571363991e+00 9.171844527729147e+03 + 162380 1.002845851537773e+00 -5.993126776374245e+00 -6.040598170754031e+00 3.696040299086607e+00 4.423452206383333e+00 9.342102248056308e+03 + 162400 9.839033823356719e-01 -5.959418560043376e+00 -6.015667921373240e+00 3.948192840406903e+00 4.625200303090285e+00 9.265198908223951e+03 + 162420 9.694366514663193e-01 -5.931272109618615e+00 -6.033644749744761e+00 3.986069312161163e+00 4.398229770441969e+00 9.320618278212931e+03 + 162440 1.012396050152234e+00 -5.988677874700462e+00 -6.017640161745479e+00 3.693393522149830e+00 4.527087588037904e+00 9.271277809029927e+03 + 162460 9.269441997739926e-01 -5.856799240311759e+00 -6.045570148259269e+00 4.464923569540539e+00 4.380971803902340e+00 9.357458936632758e+03 + 162480 1.063807442660780e+00 -6.055161347760672e+00 -5.989683645397223e+00 3.388782847974966e+00 4.764765947587579e+00 9.185410615485931e+03 + 162500 1.022911038661207e+00 -5.992387309901241e+00 -5.992108158768743e+00 3.696551561715313e+00 4.698154490716611e+00 9.192850761181518e+03 + 162520 1.054264656346463e+00 -6.039251239762955e+00 -5.988840903365375e+00 3.466422865502104e+00 4.755886818071348e+00 9.182828538086427e+03 + 162540 9.733280258555498e-01 -5.922190016133668e+00 -6.012741480136524e+00 4.059863205134388e+00 4.539902686036221e+00 9.256180924187152e+03 + 162560 9.855309860453070e-01 -5.942965222057665e+00 -6.059015181050457e+00 3.956813778797434e+00 4.290436955587710e+00 9.399055603873489e+03 + 162580 1.055864136735847e+00 -6.054253378276689e+00 -6.002564195630312e+00 3.398990272399224e+00 4.695797558029888e+00 9.224909438256465e+03 + 162600 9.800519700727006e-01 -5.953890902191777e+00 -5.979372999607837e+00 3.941576459866597e+00 4.795254313161748e+00 9.153816831732185e+03 + 162620 1.026595125570893e+00 -6.035291639269955e+00 -5.945470429665647e+00 3.527910908405805e+00 5.043678193741003e+00 9.050391231469672e+03 + 162640 1.022777697899419e+00 -6.045646652750457e+00 -5.981541170689617e+00 3.453266706664487e+00 4.821370304949116e+00 9.160469680342272e+03 + 162660 9.691566401379849e-01 -5.988053158801816e+00 -6.000386808779509e+00 3.752534393813119e+00 4.681712667015042e+00 9.218234804273327e+03 + 162680 1.020888598559480e+00 -6.089587827024706e+00 -5.989985286143323e+00 3.202182691365159e+00 4.774115894549451e+00 9.186339673988603e+03 + 162700 9.209466687283280e-01 -5.967267091345172e+00 -6.063462686540923e+00 3.815939486270949e+00 4.263569492436698e+00 9.412899221202115e+03 + 162720 9.991051786144821e-01 -6.111701599888931e+00 -5.996452793559635e+00 3.123898325108478e+00 4.785674805746435e+00 9.206172135098061e+03 + 162740 9.378060719269914e-01 -6.047652349487604e+00 -5.972033632305697e+00 3.451451605681474e+00 4.885665981698649e+00 9.131416272764287e+03 + 162760 9.390916994810455e-01 -6.070251961734650e+00 -5.964480419050129e+00 3.343613317952257e+00 4.950969884140109e+00 9.108322794983344e+03 + 162780 9.429474163981074e-01 -6.088238306529440e+00 -5.971086393494917e+00 3.197097851562317e+00 4.869802265406499e+00 9.128499018426706e+03 + 162800 9.576233233807784e-01 -6.114839447618790e+00 -6.025373488448162e+00 3.052566139172280e+00 4.566293521542461e+00 9.295118135538882e+03 + 162820 9.010569478704680e-01 -6.032367981292797e+00 -6.050756995162489e+00 3.494428974789758e+00 4.388836411459287e+00 9.373516627036663e+03 + 162840 9.382529723707786e-01 -6.082626891485834e+00 -5.934656618325058e+00 3.299441733603180e+00 5.149109940418123e+00 9.017556740700780e+03 + 162860 9.143661984321241e-01 -6.030937489706036e+00 -5.947368076621897e+00 3.522395097059893e+00 5.002263599313898e+00 9.056192283944229e+03 + 162880 9.363812377383377e-01 -6.035054696544214e+00 -5.996314936840706e+00 3.521187990412149e+00 4.743637685588130e+00 9.205729658004293e+03 + 162900 1.000539660454986e+00 -6.087428456700951e+00 -6.012139535258074e+00 3.200181028910081e+00 4.632501666758020e+00 9.254364091563433e+03 + 162920 1.005459746283917e+00 -6.048809320752847e+00 -5.968419014086199e+00 3.423626285255204e+00 4.885239866494851e+00 9.120351933383501e+03 + 162940 9.600468609334076e-01 -5.939150632349780e+00 -6.012866528171288e+00 4.076717777449703e+00 4.653429696144594e+00 9.256546665421571e+03 + 162960 1.034357349442555e+00 -6.013040491943967e+00 -5.980608310397456e+00 3.652103839853257e+00 4.838334445157193e+00 9.157613350819131e+03 + 162980 9.918071667963645e-01 -5.923608133823135e+00 -6.006367611756969e+00 4.144572934215768e+00 4.669355204931879e+00 9.236593957260600e+03 + 163000 1.057547532451302e+00 -6.005600497920716e+00 -5.992798797076263e+00 3.659295723641008e+00 4.732805070946656e+00 9.194938819356741e+03 + 163020 1.049525876087730e+00 -5.985092196358900e+00 -6.006085651888492e+00 3.740330276864253e+00 4.619782606486588e+00 9.235737014481039e+03 + 163040 1.084150747148902e+00 -6.033847492948065e+00 -5.982462700505708e+00 3.511065893577483e+00 4.806125323552430e+00 9.163296245555146e+03 + 163060 9.769507699404325e-01 -5.876105973424720e+00 -6.062898957961186e+00 4.404432454451126e+00 4.331838231121800e+00 9.411131193994179e+03 + 163080 1.041935449461572e+00 -5.979462172971780e+00 -5.992436744100774e+00 3.817171466414679e+00 4.742669471183607e+00 9.193838005601370e+03 + 163100 1.053567022511191e+00 -6.005452398138313e+00 -6.016400487970577e+00 3.675148119509009e+00 4.612282493480720e+00 9.267457209693708e+03 + 163120 1.003124997396243e+00 -5.942344114675308e+00 -6.050274556599367e+00 3.964113173676785e+00 4.344359873966930e+00 9.372031864187542e+03 + 163140 9.859355520507637e-01 -5.932898854065787e+00 -6.040286983702394e+00 4.065003202818840e+00 4.448363944186091e+00 9.341132738052167e+03 + 163160 1.045364875233624e+00 -6.040755024395786e+00 -6.005278105583509e+00 3.497389210431373e+00 4.701103168286909e+00 9.233267172097298e+03 + 163180 9.707677058002973e-01 -5.949661919303883e+00 -6.070282348684652e+00 3.906930153431946e+00 4.214308981976444e+00 9.434081499659260e+03 + 163200 9.735907385019225e-01 -5.975376847421571e+00 -6.074568679294881e+00 3.782190287348731e+00 4.212615438845810e+00 9.447392045821274e+03 + 163220 9.374662585397168e-01 -5.945562929214664e+00 -6.063187489759457e+00 4.000501850346781e+00 4.325083421356665e+00 9.412049765328986e+03 + 163240 1.002374933859561e+00 -6.066482125813056e+00 -6.041852407751598e+00 3.275163884324605e+00 4.416591536870048e+00 9.345985463868914e+03 + 163260 9.150862993151127e-01 -5.961225509418843e+00 -5.992097675239622e+00 3.883097582967046e+00 4.705824829371914e+00 9.192820539198161e+03 + 163280 9.399988505559478e-01 -6.016559770145100e+00 -6.041771166384676e+00 3.568629771018210e+00 4.423862032359606e+00 9.345716012276354e+03 + 163300 9.704780112688778e-01 -6.076931293233277e+00 -6.007508134581642e+00 3.296999976120679e+00 4.695638496297445e+00 9.240120248895115e+03 + 163320 9.408809394221747e-01 -6.043668691567787e+00 -6.009872590076376e+00 3.456330926751075e+00 4.650393371444562e+00 9.247389884493257e+03 + 163340 9.625997541240725e-01 -6.083925465322570e+00 -6.004540475866350e+00 3.190596141383418e+00 4.646437035628445e+00 9.231010677764496e+03 + 163360 9.882800108769305e-01 -6.126189020156537e+00 -5.978486784746520e+00 2.988392587389415e+00 4.836521679960793e+00 9.151130266329072e+03 + 163380 8.901865656485211e-01 -5.979328226514728e+00 -5.978357905652145e+00 3.858090309110309e+00 4.863662041659925e+00 9.150727532950910e+03 + 163400 9.469875699150684e-01 -6.053525489770889e+00 -5.991634095015122e+00 3.407017019395728e+00 4.762406985745728e+00 9.191404682129001e+03 + 163420 1.011542566003074e+00 -6.122237213464975e+00 -5.966446332793358e+00 3.038705189582827e+00 4.933280534960119e+00 9.114355345122020e+03 + 163440 9.540515180055131e-01 -5.992119434190923e+00 -5.997715262705100e+00 3.730641490025953e+00 4.698509376745888e+00 9.210053398894623e+03 + 163460 9.946748776698743e-01 -5.992887767325203e+00 -5.998087312562419e+00 3.750448867640140e+00 4.720592274261026e+00 9.211191638681305e+03 + 163480 1.059773788864986e+00 -6.036468045598911e+00 -5.995169656596435e+00 3.461014663259891e+00 4.698156403817154e+00 9.202232833639458e+03 + 163500 9.956217695310434e-01 -5.900107294630754e+00 -5.997023284258423e+00 4.255577994750785e+00 4.699071384607779e+00 9.207885450090302e+03 + 163520 1.057224216454209e+00 -5.962304958875155e+00 -5.987327941674829e+00 3.917498741532980e+00 4.773812902003172e+00 9.178186471860283e+03 + 163540 1.111412671351112e+00 -6.020211882977694e+00 -6.007752119047676e+00 3.584577240931668e+00 4.656123133560072e+00 9.240864797183114e+03 + 163560 1.068467727422145e+00 -5.945833352075362e+00 -6.041056012853789e+00 4.039867527001850e+00 4.493084273152991e+00 9.343492434361895e+03 + 163580 1.084511532003489e+00 -5.968236606069263e+00 -5.997278988057432e+00 3.832025646491579e+00 4.665259794821426e+00 9.208704359670903e+03 + 163600 1.118582070583703e+00 -6.024981863299381e+00 -5.997591148042043e+00 3.574278430048835e+00 4.731560155755959e+00 9.209647584853366e+03 + 163620 9.985248717808520e-01 -5.861430513778153e+00 -6.040971260499250e+00 4.377583199476421e+00 4.346632447963121e+00 9.343241803658140e+03 + 163640 1.062974589817197e+00 -5.977857247492961e+00 -6.017905478236272e+00 3.823036712935207e+00 4.593073574563441e+00 9.272060652149868e+03 + 163660 1.018893693271631e+00 -5.937092800697025e+00 -5.985835834906699e+00 4.073070459506291e+00 4.793180414114178e+00 9.173604202043412e+03 + 163680 1.031591260953455e+00 -5.983872404946798e+00 -5.999424284832351e+00 3.770027394621192e+00 4.680726093672711e+00 9.215295834365674e+03 + 163700 1.079205944342481e+00 -6.086409211507690e+00 -6.004468342407057e+00 3.245519595652851e+00 4.716036746337199e+00 9.230761554491524e+03 + 163720 9.812675873468011e-01 -5.972146060271352e+00 -6.035513189289492e+00 3.822118454403185e+00 4.458254593549503e+00 9.326393242758229e+03 + 163740 9.975645748926730e-01 -6.026065441268845e+00 -5.984854887397221e+00 3.580150819568476e+00 4.816788197211949e+00 9.170617190185658e+03 + 163760 9.684036557706799e-01 -6.007369673279056e+00 -6.009026793871195e+00 3.622200233071771e+00 4.612684790193130e+00 9.244769315730444e+03 + 163780 9.153738253604564e-01 -5.945897443134425e+00 -6.040785130857286e+00 4.012842143003315e+00 4.467982356276428e+00 9.342658819386490e+03 + 163800 9.558332817015761e-01 -6.018754431084333e+00 -5.982824598145575e+00 3.666420875091335e+00 4.872735535949360e+00 9.164404044405253e+03 + 163820 9.679519709488037e-01 -6.044566054477608e+00 -5.992524519596310e+00 3.453299502966128e+00 4.752130049656036e+00 9.194115352968131e+03 + 163840 9.151261453773077e-01 -5.970039492899417e+00 -6.019132007392272e+00 3.862473391424353e+00 4.580576576164320e+00 9.275843031456025e+03 + 163860 9.039889876868109e-01 -5.951143350114993e+00 -6.012645723280194e+00 3.946924390225841e+00 4.593768246049772e+00 9.255897488163235e+03 + 163880 9.859204923498662e-01 -6.065231546944524e+00 -6.012221304532954e+00 3.346726223252377e+00 4.651119238488112e+00 9.254611248490693e+03 + 163900 9.681545466516267e-01 -6.028676806571754e+00 -6.023478551560951e+00 3.534132945555673e+00 4.563982130255073e+00 9.289264457307238e+03 + 163920 9.396012507584544e-01 -5.974800362207032e+00 -6.004281250781792e+00 3.830300403134028e+00 4.661016578784995e+00 9.230188100722224e+03 + 163940 9.923433959214450e-01 -6.036924847801824e+00 -6.006166397689398e+00 3.511438574467872e+00 4.688058354868192e+00 9.235974624905397e+03 + 163960 9.686362984195618e-01 -5.981574131221270e+00 -6.023030497433883e+00 3.795251267702432e+00 4.557202397557670e+00 9.287888783357490e+03 + 163980 1.059650376550190e+00 -6.093506946021860e+00 -6.022970558939889e+00 3.160019666736987e+00 4.565050516832287e+00 9.287702963509893e+03 + 164000 9.971159770396719e-01 -5.977241619068239e+00 -5.978006148240961e+00 3.860385411511667e+00 4.855995366691391e+00 9.149635724428328e+03 + 164020 9.050964246293430e-01 -5.813249796164339e+00 -6.053964192959993e+00 4.688129264627769e+00 4.305909947794604e+00 9.383398366353071e+03 + 164040 1.028496415474589e+00 -5.955111537454676e+00 -5.985504100891775e+00 3.913527096207722e+00 4.739008293717908e+00 9.172604921842982e+03 + 164060 1.107622705064118e+00 -6.019685369060274e+00 -5.983995279651374e+00 3.634853856380777e+00 4.839791872790163e+00 9.167971665901036e+03 + 164080 1.063408094586710e+00 -5.902070284021056e+00 -5.969140670066672e+00 4.240553398519834e+00 4.855424862737208e+00 9.122520695107305e+03 + 164100 1.061599488060522e+00 -5.854877393774347e+00 -5.969703072134481e+00 4.564824171796552e+00 4.905477357436365e+00 9.124196831719857e+03 + 164120 1.100869890252349e+00 -5.878327059857710e+00 -5.994582010667012e+00 4.372239756648847e+00 4.704685838706339e+00 9.200395785014220e+03 + 164140 1.136511394344940e+00 -5.909331182215656e+00 -6.044153085248372e+00 4.185727050710640e+00 4.411558819874721e+00 9.353092333013557e+03 + 164160 1.118192867790441e+00 -5.883060959568578e+00 -5.989980190470379e+00 4.279668600650405e+00 4.665721831114753e+00 9.186310796383392e+03 + 164180 1.111232517703800e+00 -5.882169389089628e+00 -5.969768804562344e+00 4.405005108786844e+00 4.901995709176775e+00 9.124434280072626e+03 + 164200 1.117269786150672e+00 -5.905387768707530e+00 -6.024038276264602e+00 4.159724154116934e+00 4.478414578617522e+00 9.290995326695194e+03 + 164220 1.094975867228970e+00 -5.894105816122332e+00 -6.051079932828270e+00 4.244822532098496e+00 4.343452862306947e+00 9.374480862989836e+03 + 164240 1.067784955941933e+00 -5.879341231258513e+00 -6.007849403847105e+00 4.327485970935253e+00 4.589572157356121e+00 9.241134562308154e+03 + 164260 1.027109114708167e+00 -5.847220157632726e+00 -5.970673442130771e+00 4.499568609704085e+00 4.790680745782273e+00 9.127216739626672e+03 + 164280 1.016432128067745e+00 -5.855741263480742e+00 -5.941174707953865e+00 4.500606250185641e+00 5.010034191238163e+00 9.037292992039147e+03 + 164300 1.033186406352248e+00 -5.904234408865707e+00 -5.980340981152151e+00 4.233289023163732e+00 4.796273307640976e+00 9.156625302575785e+03 + 164320 1.040832028289954e+00 -5.939639693254617e+00 -5.940891591654474e+00 4.058104183111572e+00 5.050915588768947e+00 9.036447638221440e+03 + 164340 1.024754839009441e+00 -5.939448811043752e+00 -5.952571189172556e+00 4.039711612802326e+00 4.964360886905282e+00 9.072006121574126e+03 + 164360 1.028650852326712e+00 -5.970953189535612e+00 -5.968974657958665e+00 3.805013598711300e+00 4.816374633202903e+00 9.122028932372818e+03 + 164380 9.998114634570682e-01 -5.953917331440081e+00 -5.984350428002259e+00 3.940868235228549e+00 4.766116685262051e+00 9.169061944623983e+03 + 164400 1.002726068685666e+00 -5.980955395089477e+00 -5.973877574015285e+00 3.765918401334437e+00 4.806560345231722e+00 9.137024415788659e+03 + 164420 9.565950907560035e-01 -5.932421468261052e+00 -6.031678687834620e+00 4.020042680586270e+00 4.450092365789758e+00 9.314540255887101e+03 + 164440 1.025480832283233e+00 -6.054510116664808e+00 -5.987520962423947e+00 3.416580358221581e+00 4.801242448410720e+00 9.178782141271642e+03 + 164460 9.674260668800186e-01 -5.986988703302007e+00 -5.978401932410465e+00 3.752259563243836e+00 4.801566130501573e+00 9.150854044178843e+03 + 164480 9.838339156421041e-01 -6.028033396788077e+00 -5.995498058569312e+00 3.540121460533364e+00 4.726944407412831e+00 9.203233646619796e+03 + 164500 9.706037310128078e-01 -6.021759413882279e+00 -6.010243841327645e+00 3.522382103217763e+00 4.588506302855565e+00 9.248496821830353e+03 + 164520 9.754829110189486e-01 -6.039362646282163e+00 -5.982690733923285e+00 3.524474424231741e+00 4.849893314946515e+00 9.163980146872344e+03 + 164540 9.718835395546767e-01 -6.039838570753404e+00 -5.989744826713121e+00 3.469628908849958e+00 4.757274939111097e+00 9.185612622385257e+03 + 164560 9.191992179765578e-01 -5.964877941656011e+00 -6.039388597087362e+00 3.827168943915428e+00 4.399317229941953e+00 9.338374248565364e+03 + 164580 1.084432116092379e+00 -6.210614438515273e+00 -5.977030825401703e+00 2.581518097717367e+00 4.922791351162791e+00 9.146710149042601e+03 + 164600 9.335082159823005e-01 -5.985814810973878e+00 -6.046790377507905e+00 3.767146320601985e+00 4.417015181625172e+00 9.361265364112360e+03 + 164620 9.349814811889484e-01 -5.985996151292576e+00 -5.999526575645437e+00 3.724605949414201e+00 4.646912158953675e+00 9.215584018143345e+03 + 164640 9.468319882625965e-01 -5.995703666087840e+00 -5.977041967983901e+00 3.646055966295157e+00 4.753214324696422e+00 9.146699543818218e+03 + 164660 9.643671252952503e-01 -6.003327982820285e+00 -5.979108468432036e+00 3.701306280655364e+00 4.840378480230428e+00 9.153018836618030e+03 + 164680 1.021998166135702e+00 -6.056461500062768e+00 -5.963783519556493e+00 3.358469794563737e+00 4.890641100501897e+00 9.106203801965776e+03 + 164700 1.046269052354148e+00 -6.048685444652794e+00 -5.978966040354639e+00 3.443921145884265e+00 4.844260754407224e+00 9.152568958915304e+03 + 164720 1.051696417347132e+00 -6.009111048446540e+00 -5.972952494514720e+00 3.670999726364327e+00 4.878627738558977e+00 9.134191214024278e+03 + 164740 1.040978474194928e+00 -5.949803411172401e+00 -6.010537353973996e+00 3.982951298296942e+00 4.634207600182913e+00 9.249359212305586e+03 + 164760 1.025623638885554e+00 -5.895307582639829e+00 -5.962388141936643e+00 4.276082192456057e+00 4.890895240290749e+00 9.101893085730171e+03 + 164780 1.042456225419418e+00 -5.895355159413683e+00 -6.014296562793065e+00 4.200524702765954e+00 4.517544758438850e+00 9.260936993093348e+03 + 164800 1.068656606223340e+00 -5.917739361049619e+00 -6.008509831398099e+00 4.148044942203878e+00 4.626826854778016e+00 9.243159686713087e+03 + 164820 1.018335320086234e+00 -5.836912576550863e+00 -6.030110608282105e+00 4.479063161896740e+00 4.369690166397162e+00 9.309687078817253e+03 + 164840 1.072673506426081e+00 -5.918105174966652e+00 -5.971422337818447e+00 4.103366756996899e+00 4.797211357097614e+00 9.129510074017495e+03 + 164860 1.025915273658921e+00 -5.854942970353795e+00 -6.041009298341038e+00 4.462263308328819e+00 4.393841659354872e+00 9.343351313401559e+03 + 164880 1.084665357320912e+00 -5.958500976699422e+00 -6.025179311567265e+00 3.884025133426399e+00 4.501147816176270e+00 9.294481646926108e+03 + 164900 1.043902126445272e+00 -5.920664705150137e+00 -6.032279299120764e+00 4.064063170347868e+00 4.423154899465933e+00 9.316413510118817e+03 + 164920 1.122611361386446e+00 -6.068605577410258e+00 -5.983075593297952e+00 3.375370748081294e+00 4.866497152576423e+00 9.165155415975614e+03 + 164940 9.670740599726690e-01 -5.872039974160868e+00 -6.031616856017725e+00 4.319433292759542e+00 4.403118142694812e+00 9.314367122202440e+03 + 164960 1.089354032746623e+00 -6.089454398368446e+00 -5.969560214277891e+00 3.159064471845697e+00 4.847515430458690e+00 9.123874919743450e+03 + 164980 9.700531352679465e-01 -5.943701214606546e+00 -6.041200206362054e+00 3.928342023699579e+00 4.368487725119234e+00 9.343973030392963e+03 + 165000 9.769658728121204e-01 -5.978231304017480e+00 -6.029810035084410e+00 3.827328795792156e+00 4.531155740223004e+00 9.308776288744199e+03 + 165020 1.010168735416380e+00 -6.045415221875551e+00 -5.978760374676797e+00 3.438312058777137e+00 4.821054506196652e+00 9.151963201247345e+03 + 165040 1.005054054920648e+00 -6.048310516864852e+00 -5.949481230094030e+00 3.487425593390847e+00 5.054918651811611e+00 9.062618299601332e+03 + 165060 1.014523291251254e+00 -6.067312905632370e+00 -5.996476608367120e+00 3.301686436026075e+00 4.708439416804723e+00 9.206236727141988e+03 + 165080 9.543702408477041e-01 -5.981085384067523e+00 -6.020673945775648e+00 3.731796724958406e+00 4.504473077320226e+00 9.280635900362739e+03 + 165100 9.727253771495086e-01 -6.009016144867810e+00 -5.994823924012419e+00 3.606182790935523e+00 4.687676719326261e+00 9.201151551942246e+03 + 165120 9.617572093860809e-01 -5.990321708269255e+00 -5.971507373677026e+00 3.762379741821947e+00 4.870414562559400e+00 9.129765427071034e+03 + 165140 9.820892137076324e-01 -6.014620575000152e+00 -5.997580585444950e+00 3.619117609986189e+00 4.716963866942024e+00 9.209599005995622e+03 + 165160 9.619088179754316e-01 -5.977848262489456e+00 -6.015568021509829e+00 3.804931981334170e+00 4.588339287925342e+00 9.264904139084412e+03 + 165180 1.004613122737017e+00 -6.032935843750215e+00 -6.033472662388002e+00 3.503875366520076e+00 4.500792870829486e+00 9.320087822949954e+03 + 165200 9.817502186536257e-01 -5.991091722631145e+00 -6.016199775100425e+00 3.752412551768736e+00 4.608238229031568e+00 9.266859939050199e+03 + 165220 1.037793243937883e+00 -6.066639303456450e+00 -5.955131319855951e+00 3.356356956730553e+00 4.996653054369308e+00 9.079820807117720e+03 + 165240 9.408478438636525e-01 -5.913211797875518e+00 -6.059540530769575e+00 4.137153958621449e+00 4.296911730045541e+00 9.400713331525743e+03 + 165260 1.056202321302382e+00 -6.072884361993731e+00 -6.002450834281791e+00 3.385726536416652e+00 4.790166752091802e+00 9.224585460211125e+03 + 165280 9.956318993119190e-01 -5.970626982876918e+00 -6.017525442249031e+00 3.883805011117702e+00 4.614506799889895e+00 9.270942381596016e+03 + 165300 1.033258383753133e+00 -6.013240003780882e+00 -6.009393342336059e+00 3.653708140288823e+00 4.675796265573927e+00 9.245899792824561e+03 + 165320 1.038360998468479e+00 -6.004595751847910e+00 -6.011821456358575e+00 3.664385336482137e+00 4.622894223007743e+00 9.253369192527471e+03 + 165340 1.021338148043310e+00 -5.959479167051520e+00 -6.008425338002967e+00 3.953436407707745e+00 4.672379919709060e+00 9.242928949339082e+03 + 165360 1.015575513426695e+00 -5.925642791344301e+00 -6.070136474003647e+00 4.040396173119261e+00 4.210691086964174e+00 9.433611815624807e+03 + 165380 1.039804046873806e+00 -5.936048975719386e+00 -6.061173350899948e+00 3.978412233747961e+00 4.259928708526689e+00 9.405806775931182e+03 + 165400 1.042556575508926e+00 -5.914461507033701e+00 -6.026848968962740e+00 4.146432177017839e+00 4.501085978717771e+00 9.299625229993206e+03 + 165420 9.977039289707226e-01 -5.823902664767362e+00 -5.985229405389468e+00 4.650333187946110e+00 4.723970078061545e+00 9.171728872089087e+03 + 165440 1.068296251354389e+00 -5.901796126901480e+00 -6.027568089692879e+00 4.123737036977791e+00 4.401534963481240e+00 9.301850009709620e+03 + 165460 1.098248037293794e+00 -5.923791750159210e+00 -6.018083376237074e+00 4.086637899317971e+00 4.545200790796898e+00 9.272611399229312e+03 + 165480 1.063153422020545e+00 -5.857820525567718e+00 -6.036322631177760e+00 4.404318448061345e+00 4.379331734536913e+00 9.328857249715391e+03 + 165500 1.098491840064453e+00 -5.906518008535035e+00 -6.006749987199053e+00 4.189349696742466e+00 4.613802164405103e+00 9.237755000038700e+03 + 165520 1.104873607144362e+00 -5.923594587943448e+00 -6.020876317218788e+00 4.112202131189014e+00 4.553595387391066e+00 9.281241201914198e+03 + 165540 1.083340706492949e+00 -5.912541536142948e+00 -6.004085017349616e+00 4.158376319675264e+00 4.632719484278641e+00 9.229595481470982e+03 + 165560 1.064433518446639e+00 -5.920553264396656e+00 -6.057762922465115e+00 4.035435383755443e+00 4.247556294000383e+00 9.395178650764199e+03 + 165580 1.059594300726101e+00 -5.960256413048246e+00 -5.990933669896851e+00 3.881414852365370e+00 4.705261296250525e+00 9.189235476617834e+03 + 165600 9.578878049833790e-01 -5.858779536531175e+00 -6.016671497060699e+00 4.379429544982029e+00 4.472789473919579e+00 9.268284528847695e+03 + 165620 9.860863426100877e-01 -5.938909239617971e+00 -6.028497882457073e+00 3.972318658651538e+00 4.457886807671741e+00 9.304743696353415e+03 + 165640 9.903699795838622e-01 -5.977744498520449e+00 -6.041881946426940e+00 3.782304897806056e+00 4.414017746688996e+00 9.346079866347858e+03 + 165660 1.056830160155249e+00 -6.103907014461154e+00 -6.001936894152008e+00 3.077942985353171e+00 4.663471195993410e+00 9.223013706719576e+03 + 165680 9.064631414816192e-01 -5.900187761570707e+00 -6.055460346234909e+00 4.143383477544194e+00 4.251784268047522e+00 9.388042642517534e+03 + 165700 9.833907734372845e-01 -6.026726328495697e+00 -5.948845595943602e+00 3.624233227061930e+00 5.071436445380474e+00 9.060671264085009e+03 + 165720 1.023381494728409e+00 -6.090759543815699e+00 -5.948819161374006e+00 3.204392050443085e+00 5.019435691626480e+00 9.060603135029378e+03 + 165740 9.747053698121926e-01 -6.020270881561415e+00 -5.982813294832175e+00 3.576306759306865e+00 4.791394018848973e+00 9.164373897988969e+03 + 165760 9.543154074357806e-01 -5.990672692636865e+00 -6.010986091431414e+00 3.712513216646573e+00 4.595870537279968e+00 9.250783871721011e+03 + 165780 9.554647733168787e-01 -5.990205385478275e+00 -5.971065314528296e+00 3.733287122092894e+00 4.843192371404079e+00 9.128447743785096e+03 + 165800 9.732244930071225e-01 -6.010631298193614e+00 -5.965211675228476e+00 3.672709202279019e+00 4.933515706008778e+00 9.110551526546511e+03 + 165820 9.473743471869892e-01 -5.962235396079466e+00 -6.011246127063638e+00 3.881759483464122e+00 4.600332281766899e+00 9.251547037464021e+03 + 165840 1.011924310432692e+00 -6.043385435605010e+00 -5.972675738908853e+00 3.474971429022394e+00 4.880997449741924e+00 9.133341722474919e+03 + 165860 1.013295165509699e+00 -6.026967378925008e+00 -5.983888650980971e+00 3.552134439396830e+00 4.799499161663098e+00 9.167652163248356e+03 + 165880 9.847839593526763e-01 -5.963368809264665e+00 -5.978726523272172e+00 3.897929601048453e+00 4.809743230618782e+00 9.151872253100451e+03 + 165900 1.049072551985663e+00 -6.033724968718434e+00 -6.000078750219553e+00 3.504815763241334e+00 4.698017556597394e+00 9.217291316682305e+03 + 165920 1.020196019336090e+00 -5.965434959364369e+00 -6.027808249932958e+00 3.880020043893011e+00 4.521862957212651e+00 9.302613637969582e+03 + 165940 1.056421889380903e+00 -5.994747870495123e+00 -6.008647296987023e+00 3.701665257630231e+00 4.621852599784442e+00 9.243616728342626e+03 + 165960 9.924313193398050e-01 -5.877499241298957e+00 -6.024178712104055e+00 4.361994386639634e+00 4.519738166702012e+00 9.291392935428195e+03 + 165980 1.072087859979581e+00 -5.970643447750860e+00 -5.952949845527375e+00 3.877577391269416e+00 4.979176793312766e+00 9.073155590724476e+03 + 166000 1.080955707512629e+00 -5.957709921967445e+00 -6.026331627000244e+00 3.953844754985171e+00 4.559808305512306e+00 9.298033881954072e+03 + 166020 1.070824669500611e+00 -5.921138750473912e+00 -6.019494639713771e+00 4.082104324536289e+00 4.517329587996354e+00 9.276971808743703e+03 + 166040 9.817239352684638e-01 -5.771338927385496e+00 -6.013532499602240e+00 4.923077546259635e+00 4.532364575256917e+00 9.258622612691252e+03 + 166060 1.044741590637170e+00 -5.846599938542488e+00 -6.025065317257440e+00 4.501165021063160e+00 4.476389199053805e+00 9.294149286012944e+03 + 166080 1.078490164408772e+00 -5.879650625016050e+00 -6.032492188645634e+00 4.362420813788909e+00 4.484780903272312e+00 9.317050432607357e+03 + 166100 1.138171028242104e+00 -5.956743455057570e+00 -6.025912076540264e+00 3.930201697944175e+00 4.533024769580966e+00 9.296771239207448e+03 + 166120 1.028287180167065e+00 -5.795511558084518e+00 -6.095249898844538e+00 4.631061724922556e+00 3.909917787920196e+00 9.511784097227841e+03 + 166140 1.089761491445663e+00 -5.905229731986621e+00 -5.982898783564384e+00 4.193531048070700e+00 4.747543334664297e+00 9.164628017108820e+03 + 166160 1.058615306112008e+00 -5.891802045709340e+00 -6.020021242460093e+00 4.207026329029580e+00 4.470771859430185e+00 9.278602796795421e+03 + 166180 1.062940105276478e+00 -5.944192797629976e+00 -5.959626484201280e+00 3.969565289498466e+00 4.880942672850757e+00 9.093528096234922e+03 + 166200 9.888429213514667e-01 -5.883278452283350e+00 -6.023515519233941e+00 4.319340117149365e+00 4.514077177103098e+00 9.289358208487991e+03 + 166220 1.051702488927136e+00 -6.023886786142014e+00 -6.019302245442235e+00 3.541763805563480e+00 4.568088947716989e+00 9.276398849808000e+03 + 166240 1.019045101323452e+00 -6.016806213414773e+00 -5.989426676190296e+00 3.649432114740178e+00 4.806649654452820e+00 9.184623518112741e+03 + 166260 9.824916960038327e-01 -5.994122208710265e+00 -6.002035222637783e+00 3.657809400784662e+00 4.612371650277907e+00 9.223301137996665e+03 + 166280 1.003163576358764e+00 -6.049079477134097e+00 -5.986728581831542e+00 3.465934104005252e+00 4.823962593602382e+00 9.176344594168633e+03 + 166300 9.880437105272510e-01 -6.044789314033777e+00 -6.008098597272616e+00 3.496370989524164e+00 4.707054763036824e+00 9.241895593987210e+03 + 166320 8.980946262365008e-01 -5.924239694071879e+00 -5.981527661669339e+00 4.069634023932797e+00 4.740677648703849e+00 9.160443142450125e+03 + 166340 9.803097422697198e-01 -6.052039970201533e+00 -6.034627058876715e+00 3.344833750994691e+00 4.444821382461113e+00 9.323651574189877e+03 + 166360 9.621337593517958e-01 -6.028690771817849e+00 -6.021025481531747e+00 3.514417836653004e+00 4.558433119675643e+00 9.281714657807030e+03 + 166380 1.018722453043519e+00 -6.114153949597096e+00 -5.992759052536343e+00 3.078965751775217e+00 4.776034036497668e+00 9.194839674395589e+03 + 166400 9.408289358595047e-01 -5.997622779727496e+00 -6.017494690752390e+00 3.661195904868232e+00 4.547088316594998e+00 9.270830466725287e+03 + 166420 9.566200810122690e-01 -6.017519729330752e+00 -5.972826693219920e+00 3.614882932911116e+00 4.871517262484501e+00 9.133810381533072e+03 + 166440 9.448289404782083e-01 -5.988921341645425e+00 -6.049652361129952e+00 3.699354681435433e+00 4.350627769460390e+00 9.370104144652429e+03 + 166460 9.714069360399427e-01 -6.013318248930421e+00 -6.036075302816402e+00 3.601595253259851e+00 4.470920728203845e+00 9.328135562974447e+03 + 166480 1.013357361065510e+00 -6.058340115972192e+00 -5.982558542292470e+00 3.423879936991908e+00 4.859029460221498e+00 9.163565378841517e+03 + 166500 9.703128896339069e-01 -5.972296823807082e+00 -5.991084258028825e+00 3.834051437987631e+00 4.726171083340333e+00 9.189689902987575e+03 + 166520 9.571751637558621e-01 -5.926173922930206e+00 -6.000008126687392e+00 4.052101487088195e+00 4.628134063308322e+00 9.217076384433414e+03 + 166540 1.039880114046356e+00 -6.013219898585210e+00 -6.030854401147799e+00 3.597795979334305e+00 4.496535936689469e+00 9.312005740095510e+03 + 166560 1.041390106611749e+00 -5.980506430579786e+00 -6.014342437570929e+00 3.758449286306154e+00 4.564157698057852e+00 9.261135439803022e+03 + 166580 1.110460555318594e+00 -6.054338678341166e+00 -5.973471478150576e+00 3.350850383747578e+00 4.815202361400731e+00 9.135817473272567e+03 + 166600 1.061221099922338e+00 -5.958097725723356e+00 -5.996303464918835e+00 3.979711584577955e+00 4.760328317798485e+00 9.205677454533614e+03 + 166620 1.043716709224948e+00 -5.913166465421947e+00 -5.984463416776052e+00 4.189183330385278e+00 4.779785202542445e+00 9.169393461271482e+03 + 166640 1.028057032987457e+00 -5.875412435130477e+00 -6.066643490439782e+00 4.284945193655410e+00 4.186866881159212e+00 9.422750810508847e+03 + 166660 1.037168389036773e+00 -5.881768157210791e+00 -6.013388620994963e+00 4.327156555120002e+00 4.571371483870342e+00 9.258189848752347e+03 + 166680 1.050877531331690e+00 -5.903974277614931e+00 -6.009529490624907e+00 4.210561224669931e+00 4.604446856950228e+00 9.246326082804910e+03 + 166700 1.025596187429537e+00 -5.876562636174276e+00 -6.034124136485524e+00 4.296264453750373e+00 4.391521936399816e+00 9.322105014156095e+03 + 166720 1.138393992090791e+00 -6.064965945319823e+00 -5.944471505844042e+00 3.366046022779667e+00 5.057943740703850e+00 9.047378999948754e+03 + 166740 9.686668918353576e-01 -5.847351708554185e+00 -5.979442814730794e+00 4.538173140194328e+00 4.779685567495624e+00 9.154002767234599e+03 + 166760 9.985051542472910e-01 -5.937324419906267e+00 -5.947767401627976e+00 4.035573107152253e+00 4.975607890060003e+00 9.057375388576269e+03 + 166780 1.003825264929499e+00 -6.003858588798810e+00 -5.974483602863861e+00 3.665147942703196e+00 4.833823657706055e+00 9.138875650980375e+03 + 166800 9.576300552377509e-01 -5.992491253671163e+00 -5.976383750357904e+00 3.802107063050104e+00 4.894598839702923e+00 9.144672094975796e+03 + 166820 1.002434333289818e+00 -6.101736914368355e+00 -5.958256418346563e+00 3.142448790310936e+00 4.966336002003064e+00 9.089370518746031e+03 + 166840 9.620779427723199e-01 -6.064745723709705e+00 -6.013682420761530e+00 3.330506617587796e+00 4.623720005136809e+00 9.259101432003305e+03 + 166860 1.003489299029601e+00 -6.138423350988524e+00 -5.961156248787313e+00 2.973281599235478e+00 4.991176732070238e+00 9.098213745398043e+03 + 166880 9.775316476436242e-01 -6.104764934486347e+00 -5.962355934443709e+00 3.172862157272285e+00 4.990596673238647e+00 9.101851307250265e+03 + 166900 9.403452259315485e-01 -6.046782522773098e+00 -5.985600665315387e+00 3.436721083735883e+00 4.788036777119903e+00 9.172881170875033e+03 + 166920 9.330254618684513e-01 -6.027612092860740e+00 -5.968457798859585e+00 3.555460320774836e+00 4.895133431026878e+00 9.120486251690278e+03 + 166940 9.586002465029356e-01 -6.051849792598676e+00 -5.985330337645550e+00 3.375706187971280e+00 4.757671192164517e+00 9.172096025760129e+03 + 166960 9.714061394774155e-01 -6.051723602416153e+00 -6.011787809695470e+00 3.400945690097849e+00 4.630263191943966e+00 9.253293015434305e+03 + 166980 1.019945844436534e+00 -6.103703868024522e+00 -5.986513843317903e+00 3.173860129992980e+00 4.846783386956098e+00 9.175706903226654e+03 + 167000 9.967567792874311e-01 -6.047763846288339e+00 -5.991061166911404e+00 3.462402439496906e+00 4.787997999190540e+00 9.189639774144065e+03 + 167020 1.001113670401895e+00 -6.031482839549992e+00 -6.017827023640234e+00 3.566658016387454e+00 4.645071824571965e+00 9.271848884138444e+03 + 167040 1.033707594470653e+00 -6.055774237017538e+00 -5.999685247344539e+00 3.416963017203707e+00 4.739034675649163e+00 9.216069825992030e+03 + 167060 1.026573680350488e+00 -6.022847994290831e+00 -5.980262760583542e+00 3.559897142885866e+00 4.804428144876740e+00 9.156582554288751e+03 + 167080 1.011831074564014e+00 -5.980435038606925e+00 -5.987953446405372e+00 3.845386817181125e+00 4.802214956132593e+00 9.180097213675272e+03 + 167100 1.096561454948223e+00 -6.087185408061775e+00 -6.003559779106312e+00 3.277212703984756e+00 4.757404006471281e+00 9.227988337753650e+03 + 167120 1.053694923563616e+00 -6.008189606156913e+00 -6.019876518075974e+00 3.656401445980805e+00 4.589293389197783e+00 9.278174192650242e+03 + 167140 9.814194498957651e-01 -5.890448412965628e+00 -6.035489537953167e+00 4.310147699608074e+00 4.477299114888070e+00 9.326317698517538e+03 + 167160 1.066819568770250e+00 -6.009257807432592e+00 -6.028859181819357e+00 3.669805579296161e+00 4.557251454264474e+00 9.305867925104201e+03 + 167180 1.064085605237366e+00 -6.003681019543407e+00 -6.038769751407557e+00 3.661338721583927e+00 4.459853793256275e+00 9.336458148533913e+03 + 167200 1.037627159819815e+00 -5.968254707061046e+00 -6.003017113251405e+00 3.869776631791377e+00 4.670165515981368e+00 9.226315668885503e+03 + 167220 9.834626937560229e-01 -5.896575693161480e+00 -6.082680103988425e+00 4.216741077319478e+00 4.148100750786660e+00 9.472603496475551e+03 + 167240 9.832837858535851e-01 -5.913697111999280e+00 -6.040728527885348e+00 4.155941018939332e+00 4.426506970873456e+00 9.342480551619055e+03 + 167260 1.040088384177310e+00 -6.025510347719773e+00 -5.990656684251925e+00 3.551109864833161e+00 4.751244994052536e+00 9.188389527874853e+03 + 167280 1.037757888713675e+00 -6.064157491568846e+00 -5.969358847555505e+00 3.398308668201893e+00 4.942657152169242e+00 9.123245328698647e+03 + 167300 9.593723770729133e-01 -6.000702405496546e+00 -5.989845340167843e+00 3.689198952952725e+00 4.751541902195570e+00 9.185910485001827e+03 + 167320 9.998361980444108e-01 -6.108305917284426e+00 -5.951004853828296e+00 3.143637720820341e+00 5.046884769446338e+00 9.067251309766254e+03 + 167340 9.112913740603147e-01 -6.015697731156003e+00 -5.966930834496928e+00 3.665225458122509e+00 4.945252525391783e+00 9.115816361494381e+03 + 167360 9.563823307781835e-01 -6.108250637640312e+00 -5.976352613329128e+00 3.127314517998898e+00 4.884693384747010e+00 9.144602177819317e+03 + 167380 9.311146007781271e-01 -6.084143989975370e+00 -5.991676589713742e+00 3.222764767390947e+00 4.753726888977164e+00 9.191525814340639e+03 + 167400 9.507028892241529e-01 -6.117153403416495e+00 -5.969471983277300e+00 3.108804237696396e+00 4.956813805761559e+00 9.123589335260520e+03 + 167420 9.296182230122145e-01 -6.081578044092806e+00 -5.980311394244137e+00 3.279571697146591e+00 4.861060471541068e+00 9.156724538785918e+03 + 167440 9.102224246456192e-01 -6.040783489802114e+00 -6.004598076194632e+00 3.456468238631792e+00 4.664250483240612e+00 9.231185621095112e+03 + 167460 1.005427905469429e+00 -6.165806495040464e+00 -5.957583484314961e+00 2.856044963808080e+00 5.051693713800690e+00 9.087324215569588e+03 + 167480 9.214599244554507e-01 -6.020481279917561e+00 -6.038276589420587e+00 3.536302341804785e+00 4.434118920823167e+00 9.334935704158399e+03 + 167500 9.348585986479099e-01 -6.018159720045126e+00 -6.033936638250783e+00 3.547575545395710e+00 4.456982039588625e+00 9.321541271075021e+03 + 167520 9.468031239634074e-01 -6.012373296623038e+00 -5.981267347845003e+00 3.616229626853679e+00 4.794844798367171e+00 9.159619881502626e+03 + 167540 1.012826515723096e+00 -6.085123355415104e+00 -5.937411062466097e+00 3.244630145371254e+00 5.092816989887908e+00 9.025901962336189e+03 + 167560 1.022615022816148e+00 -6.073775262749619e+00 -5.995529587885822e+00 3.270364219495986e+00 4.719662993042959e+00 9.203336316279376e+03 + 167580 9.993960094877274e-01 -6.019603275470510e+00 -5.997629481902055e+00 3.599467808128003e+00 4.725644731231634e+00 9.209768861862360e+03 + 167600 9.990844069406728e-01 -6.001219713077002e+00 -5.987700840185054e+00 3.732464436550246e+00 4.810091896734630e+00 9.179322312900817e+03 + 167620 9.881750620881449e-01 -5.971237270207006e+00 -5.980372768008182e+00 3.880333548040924e+00 4.827876105952851e+00 9.156870609449463e+03 + 167640 1.033437731621355e+00 -6.025582412873549e+00 -5.965097915129141e+00 3.632481730141118e+00 4.979793076135282e+00 9.110202331863458e+03 + 167660 1.009233072297676e+00 -5.979930226926234e+00 -6.004270274939434e+00 3.813377533736998e+00 4.673613211434946e+00 9.230179699124590e+03 + 167680 1.014657939906897e+00 -5.982540545330568e+00 -6.018193656450469e+00 3.791742487342926e+00 4.587016805991334e+00 9.273012169714779e+03 + 167700 1.006325735085429e+00 -5.968928462868825e+00 -5.987545910151798e+00 3.835612721842244e+00 4.728708458502759e+00 9.178863362613936e+03 + 167720 1.016891959626797e+00 -5.982743835991818e+00 -5.982879697282100e+00 3.794147622689979e+00 4.793367486136711e+00 9.164569118280913e+03 + 167740 1.050943833020899e+00 -6.031954269919368e+00 -5.995229609466750e+00 3.535717486609272e+00 4.746596170051044e+00 9.202420881140461e+03 + 167760 1.023572763326777e+00 -5.992370845458000e+00 -6.043743888341522e+00 3.719480086977578e+00 4.424488124787699e+00 9.351835973940371e+03 + 167780 1.039307026921117e+00 -6.021684527878901e+00 -6.005139313942886e+00 3.606205218017199e+00 4.701210396801380e+00 9.232833839312536e+03 + 167800 1.017221214268295e+00 -5.998056631095202e+00 -6.016991753724259e+00 3.667249633242073e+00 4.558521228905269e+00 9.269292557514043e+03 + 167820 9.634952856818766e-01 -5.927891552712405e+00 -6.030225527901367e+00 4.062517081578475e+00 4.474899559911976e+00 9.310073127198380e+03 + 167840 9.611412882551429e-01 -5.935516326584742e+00 -5.989681853048115e+00 4.033608110711751e+00 4.722581275670938e+00 9.185388297042371e+03 + 167860 1.062970337739529e+00 -6.097131995895975e+00 -5.952988719358926e+00 3.163250550260106e+00 4.990943550235797e+00 9.073296329290666e+03 + 167880 9.864761583829662e-01 -5.997219812008232e+00 -5.976622999775326e+00 3.651471163629979e+00 4.769741246817717e+00 9.145423920459418e+03 + 167900 1.052037809857959e+00 -6.113590631902396e+00 -5.969237227455555e+00 3.063909855225909e+00 4.892809442176818e+00 9.122854033141546e+03 + 167920 9.410337240472494e-01 -5.973960372523970e+00 -5.997763204791343e+00 3.798310333560688e+00 4.661630787205042e+00 9.210189009433443e+03 + 167940 9.334714260198247e-01 -5.996387844177987e+00 -5.990889118186077e+00 3.715123623861683e+00 4.746698159432324e+00 9.189110282068155e+03 + 167960 9.379568128956154e-01 -6.043985794408927e+00 -6.003745201518966e+00 3.446704058289647e+00 4.677771769875426e+00 9.228559916857446e+03 + 167980 9.948006081814911e-01 -6.171292492708036e+00 -5.953536045499912e+00 2.798647331583942e+00 5.049038549154292e+00 9.074982762220727e+03 + 168000 9.383895196821082e-01 -6.123023103533602e+00 -5.974311067782224e+00 3.099347962826321e+00 4.953275485223891e+00 9.138370731796069e+03 + 168020 9.413189404896527e-01 -6.153926622760743e+00 -5.996017789379167e+00 2.816553687026450e+00 4.723290644616451e+00 9.204863316945160e+03 + 168040 9.138411771542604e-01 -6.130115886871891e+00 -5.974274415776335e+00 3.050679520124919e+00 4.945545363545319e+00 9.138251230288608e+03 + 168060 9.150638139918201e-01 -6.137915688828189e+00 -5.981592241086162e+00 2.943264619962643e+00 4.840898047872718e+00 9.160612146307951e+03 + 168080 8.884086520784776e-01 -6.094065717293469e+00 -5.956114740199460e+00 3.218922103706161e+00 5.011057962024669e+00 9.082813403826252e+03 + 168100 9.568459313697452e-01 -6.179843243044539e+00 -5.943902373087063e+00 2.692468472422336e+00 5.047277459449788e+00 9.045662948397752e+03 + 168120 9.258550952280904e-01 -6.106812940434820e+00 -5.983565544930765e+00 3.174615047729296e+00 4.882320665186398e+00 9.166668341425264e+03 + 168140 8.710843280929065e-01 -5.993115729716971e+00 -5.987596959319970e+00 3.768628205066208e+00 4.800317838712745e+00 9.178997996944228e+03 + 168160 8.868751785135580e-01 -5.977432275098972e+00 -5.990717213353087e+00 3.819295053850280e+00 4.743010882557600e+00 9.188562503514549e+03 + 168180 9.495499787711148e-01 -6.032549112945284e+00 -5.991359961556847e+00 3.483695351256405e+00 4.720209832529388e+00 9.190561861200749e+03 + 168200 9.711189070062899e-01 -6.033822396908478e+00 -6.010617352543587e+00 3.517462301639646e+00 4.650709257351864e+00 9.249673740625323e+03 + 168220 1.003721390505510e+00 -6.060650574577572e+00 -5.974897197552052e+00 3.395781768218215e+00 4.888190929390958e+00 9.140148819128683e+03 + 168240 9.921659939967847e-01 -6.027007408864042e+00 -6.006603829008624e+00 3.570786951933661e+00 4.687947464907252e+00 9.237333005803357e+03 + 168260 1.000246360206373e+00 -6.026349680580876e+00 -6.006252953513782e+00 3.559383337588293e+00 4.674781854366011e+00 9.236259104583927e+03 + 168280 1.008233692176989e+00 -6.027731159384143e+00 -5.997791763447743e+00 3.572661727179475e+00 4.744578371752834e+00 9.210277207963347e+03 + 168300 9.621854149723802e-01 -5.948119970464739e+00 -6.004734526378185e+00 3.986048769565755e+00 4.660959228436536e+00 9.231580038568241e+03 + 168320 1.023853663869215e+00 -6.029207644781547e+00 -5.966074547732816e+00 3.577358309881812e+00 4.939878322950816e+00 9.113192112101315e+03 + 168340 1.053917179915700e+00 -6.062741642677145e+00 -5.962402125173819e+00 3.364421295899963e+00 4.940586332894215e+00 9.101982712327152e+03 + 168360 1.029005272475812e+00 -6.016159644350546e+00 -5.986284732953273e+00 3.617362984605689e+00 4.788909348976432e+00 9.174971344482918e+03 + 168380 1.026929089176922e+00 -6.003097605967356e+00 -5.974828809138337e+00 3.759490105572481e+00 4.921813911546881e+00 9.139926402477027e+03 + 168400 1.008977971873487e+00 -5.965833980491781e+00 -6.026580291268949e+00 3.877247785931973e+00 4.528433068988258e+00 9.298825978495370e+03 + 168420 1.053684305851986e+00 -6.023082992815064e+00 -6.021616071862441e+00 3.573922481932552e+00 4.582345769047794e+00 9.283544685254130e+03 + 168440 1.031884094789772e+00 -5.986090407020926e+00 -5.993449941898679e+00 3.800265316004946e+00 4.758005727852547e+00 9.196966796631108e+03 + 168460 9.852226694937535e-01 -5.914640901710015e+00 -6.041743802772221e+00 4.123735919728253e+00 4.393891392718698e+00 9.345636496870862e+03 + 168480 1.087733441728491e+00 -6.067045724319438e+00 -5.986452415965427e+00 3.413139903547838e+00 4.875919151890731e+00 9.175509158970042e+03 + 168500 1.018248840164626e+00 -5.968303946737057e+00 -6.041838198039556e+00 3.901405699918016e+00 4.479160649550458e+00 9.345925124012176e+03 + 168520 1.075458784627423e+00 -6.064266385903880e+00 -5.996644518884498e+00 3.354077574679680e+00 4.742372799555074e+00 9.206743186076998e+03 + 168540 9.740503181344710e-01 -5.930696933678960e+00 -5.974510939922792e+00 4.128504784024946e+00 4.876917979977313e+00 9.138960757023553e+03 + 168560 9.657549858354950e-01 -5.940597826872752e+00 -5.999192480457107e+00 3.990182226091908e+00 4.653722657717206e+00 9.214566662937335e+03 + 168580 9.546383909295242e-01 -5.950356871217194e+00 -5.990439596292282e+00 3.988777926727522e+00 4.758616716564712e+00 9.187685846984223e+03 + 168600 9.669023417219762e-01 -5.998169238841697e+00 -6.012063292022248e+00 3.720833870846353e+00 4.641052067385846e+00 9.254089835689538e+03 + 168620 9.710216343082106e-01 -6.034270384132317e+00 -5.978043320457503e+00 3.547391325588189e+00 4.870255826318957e+00 9.149775269086114e+03 + 168640 9.548061451664647e-01 -6.037803593325010e+00 -6.009348685434089e+00 3.482114250486965e+00 4.645506734979397e+00 9.245779633429325e+03 + 168660 9.576729819040480e-01 -6.068018929987289e+00 -6.021783345104843e+00 3.318737722972347e+00 4.584229606300985e+00 9.284047177407992e+03 + 168680 9.816024318843886e-01 -6.127703062844926e+00 -5.977757616418001e+00 2.973665118986230e+00 4.834675076352481e+00 9.148924562988219e+03 + 168700 9.150111041469448e-01 -6.046027606280883e+00 -6.013849876035446e+00 3.440238356832352e+00 4.625007863389309e+00 9.259600785805618e+03 + 168720 8.908934561568038e-01 -6.020233464252655e+00 -5.997013760333375e+00 3.616908588533875e+00 4.750239721675951e+00 9.207875310320878e+03 + 168740 9.200818731898882e-01 -6.066392186006778e+00 -5.975831372734131e+00 3.326421234155162e+00 4.846435438207265e+00 9.143006813505430e+03 + 168760 9.259493374979539e-01 -6.069402511272567e+00 -5.970770792695657e+00 3.329512074345840e+00 4.895870665623574e+00 9.127530954501777e+03 + 168780 9.563818994058654e-01 -6.098565678759384e+00 -5.975729840801327e+00 3.088512971994952e+00 4.793855362334609e+00 9.142705355536891e+03 + 168800 9.895988455251853e-01 -6.120270106418423e+00 -5.966495169751097e+00 3.010835218033764e+00 4.893834700972095e+00 9.114494578116932e+03 + 168820 8.904207109799234e-01 -5.933774374506596e+00 -6.003238613028914e+00 4.046009779253557e+00 4.647135372102235e+00 9.226979361544551e+03 + 168840 1.021475991046943e+00 -6.078709519679041e+00 -5.970942665809279e+00 3.296145779034523e+00 4.914959730821439e+00 9.128060530252958e+03 + 168860 1.007655779841924e+00 -6.003706244223635e+00 -6.034397125900093e+00 3.649544981442411e+00 4.473313189457599e+00 9.322960071461235e+03 + 168880 9.682603913858385e-01 -5.905828358063924e+00 -6.047929262256256e+00 4.198315802958135e+00 4.382350421041908e+00 9.364791756572688e+03 + 168900 1.036551256798434e+00 -5.985065890091158e+00 -6.018953877582488e+00 3.806273184514593e+00 4.611683116190257e+00 9.275327694434283e+03 + 168920 1.009792724936917e+00 -5.933897761473536e+00 -6.023027112055599e+00 3.987468277193405e+00 4.475673753428771e+00 9.287879260354513e+03 + 168940 1.042526314606135e+00 -5.977525561089611e+00 -6.039338781828504e+00 3.812557982951335e+00 4.457616903903617e+00 9.338180956516635e+03 + 168960 9.912492024317425e-01 -5.900963974162535e+00 -6.017162275934007e+00 4.188479309170055e+00 4.521250678769172e+00 9.269807087838246e+03 + 168980 1.061410575942813e+00 -6.006548959964072e+00 -6.030150070656759e+00 3.685533657815345e+00 4.550012427957860e+00 9.309824080215629e+03 + 169000 1.080985460187876e+00 -6.042753678448036e+00 -6.011864382803369e+00 3.453888062287601e+00 4.631259177982336e+00 9.253517986685900e+03 + 169020 1.033638719948892e+00 -5.985789553842850e+00 -6.034942283257405e+00 3.749638935939329e+00 4.467396357280659e+00 9.324597778040294e+03 + 169040 1.000379080094399e+00 -5.951628635772606e+00 -5.995185093438185e+00 3.997419446924790e+00 4.747311526668989e+00 9.202274511619285e+03 + 169060 1.039150676148027e+00 -6.025518074332592e+00 -6.010269875863942e+00 3.568077693997275e+00 4.655635209255350e+00 9.248617804825160e+03 + 169080 1.030619402876652e+00 -6.032638472950861e+00 -6.016036651012687e+00 3.491614691630834e+00 4.586944922323469e+00 9.266379507801366e+03 + 169100 9.950484197391044e-01 -6.002315518126736e+00 -6.009158598343881e+00 3.698292025024159e+00 4.658997999454071e+00 9.245192530279157e+03 + 169120 1.003887602339846e+00 -6.037590050919004e+00 -5.978368502684877e+00 3.564882009057151e+00 4.904941303522476e+00 9.150762572145253e+03 + 169140 1.059468915878609e+00 -6.142155117325781e+00 -5.944840150445326e+00 2.949364653201345e+00 5.082377727421362e+00 9.048525251287339e+03 + 169160 9.991555581882451e-01 -6.072471246424792e+00 -5.994126251195656e+00 3.397623095690538e+00 4.847492182145063e+00 9.199036778577145e+03 + 169180 9.694489570831617e-01 -6.045523255722547e+00 -5.992547956676155e+00 3.515447572932870e+00 4.819639937958287e+00 9.194190024250112e+03 + 169200 9.898417446870906e-01 -6.090344309066446e+00 -5.964969267326335e+00 3.241216711180919e+00 4.961139602577640e+00 9.109824912184633e+03 + 169220 9.620952516347171e-01 -6.059771906115283e+00 -5.966687124554939e+00 3.389823876920818e+00 4.924331097463703e+00 9.115055674271365e+03 + 169240 9.694654039818967e-01 -6.076208074357113e+00 -5.974944192440557e+00 3.288786430952067e+00 4.870259311452013e+00 9.140304694149445e+03 + 169260 9.734106108900487e-01 -6.084199309027094e+00 -5.994666209301532e+00 3.296835846444939e+00 4.810948760271522e+00 9.200642893491869e+03 + 169280 9.325223631875836e-01 -6.021453369980403e+00 -6.011600779158541e+00 3.600810198341237e+00 4.657385299523871e+00 9.252693721073181e+03 + 169300 9.609681009651780e-01 -6.053646828352426e+00 -6.012370946631914e+00 3.403540760576754e+00 4.640553260837986e+00 9.255077262143581e+03 + 169320 9.880126012820191e-01 -6.071846744778904e+00 -6.026053332303361e+00 3.266362035464952e+00 4.529314896407201e+00 9.297208384230673e+03 + 169340 9.251030700560248e-01 -5.943213281720544e+00 -6.006876810964818e+00 4.008699380601946e+00 4.643133543782013e+00 9.238158851077211e+03 + 169360 9.688463638493808e-01 -5.960694619686832e+00 -5.989847502295073e+00 3.932118634266373e+00 4.764718270935846e+00 9.185881095311350e+03 + 169380 1.035632126802773e+00 -6.006136279078014e+00 -6.020563950865945e+00 3.678800638191140e+00 4.595954714109844e+00 9.280284680271569e+03 + 169400 1.031948963252832e+00 -5.954238853048322e+00 -6.046082004288253e+00 3.926299905442797e+00 4.398922318341387e+00 9.359059697959192e+03 + 169420 9.836899199891413e-01 -5.851578297127750e+00 -6.051752812348653e+00 4.458339986860842e+00 4.308906943556298e+00 9.376574989437635e+03 + 169440 9.975989847946768e-01 -5.851987778500742e+00 -6.044531869115407e+00 4.490589197960336e+00 4.384971233549204e+00 9.354189126083489e+03 + 169460 1.088849002527564e+00 -5.974482012198449e+00 -5.999240928785714e+00 3.871613515039481e+00 4.729443984565444e+00 9.214712217733657e+03 + 169480 1.039575963639487e+00 -5.897321788403902e+00 -6.014872887236861e+00 4.260614159269900e+00 4.585617558797295e+00 9.262726929984759e+03 + 169500 1.111737693690222e+00 -6.008977241299908e+00 -5.952071362752218e+00 3.658420616128578e+00 4.985182976905660e+00 9.070500824880033e+03 + 169520 1.100718096168355e+00 -6.001278220080768e+00 -5.989587378913010e+00 3.696965381134939e+00 4.764096000272033e+00 9.185107543196527e+03 + 169540 1.006406421064793e+00 -5.878849435339262e+00 -6.042215239183952e+00 4.274083078911200e+00 4.336011352458549e+00 9.347107881399956e+03 + 169560 1.071437048711733e+00 -6.000820453001209e+00 -5.996058448253518e+00 3.685803148557329e+00 4.713147316736425e+00 9.204933104764525e+03 + 169580 9.767551306375043e-01 -5.887782617852316e+00 -6.029480947960923e+00 4.220441645817146e+00 4.406787906587804e+00 9.307719869210190e+03 + 169600 1.095865946743768e+00 -6.093194537847676e+00 -5.952355747706914e+00 3.218671676415595e+00 5.027389804136186e+00 9.071369844141205e+03 + 169620 9.922102926649395e-01 -5.969753283157125e+00 -6.005111323316995e+00 3.905833587204286e+00 4.702802248967283e+00 9.232741400903531e+03 + 169640 1.027886943769917e+00 -6.051936125447833e+00 -5.996677563830591e+00 3.401263846097801e+00 4.718567058138779e+00 9.206866287587252e+03 + 169660 1.015270687207266e+00 -6.060216336731480e+00 -6.003685123244937e+00 3.366104040975069e+00 4.690715016991810e+00 9.228383429377704e+03 + 169680 9.583584552526668e-01 -5.997648166539186e+00 -5.993415346087563e+00 3.734693699994446e+00 4.758999210054516e+00 9.196831422150062e+03 + 169700 8.814374183560253e-01 -5.896709484400326e+00 -6.017569080704042e+00 4.204999834971860e+00 4.511005330033844e+00 9.271057918955123e+03 + 169720 1.002354447126447e+00 -6.083451542134706e+00 -5.960775780241400e+00 3.241668375158200e+00 4.946091583962364e+00 9.097025019061424e+03 + 169740 9.800100549066005e-01 -6.052537389145223e+00 -5.961235767598550e+00 3.446135878630047e+00 4.970403918431314e+00 9.098428644750000e+03 + 169760 9.399023376703267e-01 -5.990741989306374e+00 -6.024191677897829e+00 3.689128627740699e+00 4.497055339525989e+00 9.291469720768617e+03 + 169780 9.992416801208411e-01 -6.075068614256406e+00 -5.998050229516107e+00 3.273667353631898e+00 4.715918837367217e+00 9.211070430953154e+03 + 169800 9.823309347586578e-01 -6.044285304883560e+00 -6.002670626346523e+00 3.429936262357627e+00 4.668894186367982e+00 9.225259625188341e+03 + 169820 9.661372734507073e-01 -6.013513597967610e+00 -5.996039437741839e+00 3.588767163371952e+00 4.689106495505887e+00 9.204902023562327e+03 + 169840 9.016075617759874e-01 -5.908695576683233e+00 -6.001794456188049e+00 4.215078456682802e+00 4.680490283561105e+00 9.222545242346599e+03 + 169860 9.984263155824883e-01 -6.040231351148529e+00 -6.019906904910684e+00 3.422213355966835e+00 4.538919471462437e+00 9.278268787473553e+03 + 169880 9.750401159914284e-01 -5.993476449682745e+00 -6.025010455226798e+00 3.687548345755095e+00 4.506475206049553e+00 9.294002227376619e+03 + 169900 9.906153955373167e-01 -6.007525773419571e+00 -5.977957571158984e+00 3.688377370256769e+00 4.858162563301574e+00 9.149487915154841e+03 + 169920 1.010931329067255e+00 -6.028366839983063e+00 -5.985135101501476e+00 3.584065158539265e+00 4.832308490990444e+00 9.171455644613499e+03 + 169940 1.002171630692229e+00 -6.006583708615265e+00 -6.003972312255345e+00 3.649562003785862e+00 4.664557045796801e+00 9.229259032828717e+03 + 169960 1.009528245738229e+00 -6.011197381598198e+00 -5.958334246806613e+00 3.594621046798536e+00 4.898169347315488e+00 9.089593722029183e+03 + 169980 9.934678395553863e-01 -5.981057860098879e+00 -6.018821763945614e+00 3.769432315109447e+00 4.552586135276259e+00 9.274924280096493e+03 + 170000 9.643797590840050e-01 -5.932363202079293e+00 -6.008258965178160e+00 4.106875170895925e+00 4.671069954350852e+00 9.242404644298567e+03 + 170020 1.034868216782194e+00 -6.032832202611027e+00 -5.938802289129314e+00 3.560482655974604e+00 5.100416970268686e+00 9.030098795312973e+03 + 170040 9.660772565341149e-01 -5.926740983854126e+00 -5.988774330421126e+00 4.092689775017770e+00 4.736484699400699e+00 9.182599000702623e+03 + 170060 9.424347095776406e-01 -5.887313267937267e+00 -6.061546610968998e+00 4.314178110859880e+00 4.313703292648984e+00 9.406935737568021e+03 + 170080 9.932186417945106e-01 -5.961442117530333e+00 -6.023825234756191e+00 3.942404046046826e+00 4.584190533179761e+00 9.290325596068200e+03 + 170100 1.026179274678806e+00 -6.009935630093080e+00 -6.020782311072656e+00 3.667324372087532e+00 4.605041051384348e+00 9.280956340620338e+03 + 170120 1.025539165060953e+00 -6.011080571102890e+00 -6.021540158373923e+00 3.696624025587909e+00 4.636563456861741e+00 9.283284643520172e+03 + 170140 9.795577687366973e-01 -5.947343844031010e+00 -6.031585610100498e+00 3.941189064660740e+00 4.457459807518569e+00 9.314244262366035e+03 + 170160 1.056700176049770e+00 -6.064584031531657e+00 -5.987062967781903e+00 3.405527222646565e+00 4.850665167043505e+00 9.177369951902667e+03 + 170180 1.025528614600322e+00 -6.022838550203346e+00 -5.998144099943062e+00 3.566804654287117e+00 4.708604009135495e+00 9.211385509496413e+03 + 170200 1.028045498652423e+00 -6.033247267885280e+00 -6.015680740013789e+00 3.510471445515627e+00 4.611341166965135e+00 9.265248284931880e+03 + 170220 9.661324631078133e-01 -5.947283602819051e+00 -6.006738495231341e+00 4.012134447859003e+00 4.670735255012774e+00 9.237738630272956e+03 + 170240 9.228527648445937e-01 -5.886678427627704e+00 -5.997270572657571e+00 4.377074162350583e+00 4.742036951509951e+00 9.208652394419651e+03 + 170260 9.916406128709299e-01 -5.990699385039692e+00 -5.972784592791598e+00 3.815034786713130e+00 4.917904296106828e+00 9.133664354607054e+03 + 170280 1.012434846524056e+00 -6.022223298197826e+00 -5.986792758879913e+00 3.563599777753468e+00 4.767047417375163e+00 9.176556912911527e+03 + 170300 1.017852840109710e+00 -6.031417448984766e+00 -6.003829987869699e+00 3.502768896111980e+00 4.661180366980505e+00 9.228822571187291e+03 + 170320 9.901453144353372e-01 -5.993341882671093e+00 -6.001568622875125e+00 3.705228928798038e+00 4.657989713462553e+00 9.221861274424569e+03 + 170340 1.009375110835687e+00 -6.022748591971467e+00 -5.957271224475421e+00 3.564536631014192e+00 4.940517807766364e+00 9.086343635334411e+03 + 170360 9.863401621134336e-01 -5.987148740973277e+00 -5.997851734300003e+00 3.791410111972408e+00 4.729951868007485e+00 9.210453897530228e+03 + 170380 1.055373474286365e+00 -6.087619729054341e+00 -5.968732762980673e+00 3.318818250890247e+00 5.001485607783788e+00 9.121315807436826e+03 + 170400 9.896899386518493e-01 -5.988357165202401e+00 -6.024364670483925e+00 3.736977937466862e+00 4.530217269996920e+00 9.291972387291231e+03 + 170420 9.813420049202334e-01 -5.973513648178885e+00 -6.032540223669620e+00 3.873729482259483e+00 4.534789751458650e+00 9.317211633673163e+03 + 170440 1.008577676152275e+00 -6.008764747465349e+00 -6.011390306258970e+00 3.694979350016443e+00 4.679902985119566e+00 9.252051209349764e+03 + 170460 9.793866655886480e-01 -5.960251486398899e+00 -6.042209735009721e+00 3.885680479105672e+00 4.415063532584351e+00 9.347072524183268e+03 + 170480 9.734919413677160e-01 -5.945318800400297e+00 -5.987370239448702e+00 3.948461453454954e+00 4.706995582999855e+00 9.178303929476469e+03 + 170500 1.010955107718629e+00 -5.989934221086841e+00 -5.994445826990805e+00 3.772291925738952e+00 4.746385586469638e+00 9.199991944484978e+03 + 170520 1.049706059087194e+00 -6.036806301019123e+00 -5.951662253335695e+00 3.518748411324114e+00 5.007658709121150e+00 9.069256430846148e+03 + 170540 1.034838486846277e+00 -6.005243162761539e+00 -5.997800166680191e+00 3.655003335868053e+00 4.697742171167076e+00 9.210265608967711e+03 + 170560 1.007547177768787e+00 -5.955101768362383e+00 -5.994907638220459e+00 3.915346504227887e+00 4.686775039564367e+00 9.201406273564053e+03 + 170580 1.055546324415076e+00 -6.017990336722996e+00 -5.949995026734666e+00 3.630288677427767e+00 5.020728269620978e+00 9.064163509887672e+03 + 170600 9.999773186418766e-01 -5.928009182464370e+00 -5.983553077265558e+00 4.075090082001987e+00 4.756148442663627e+00 9.166611330621965e+03 + 170620 1.006695466947057e+00 -5.930912313524150e+00 -6.007710872686597e+00 4.076396671756227e+00 4.635407460506834e+00 9.240728903099680e+03 + 170640 1.045450800674862e+00 -5.983928880697783e+00 -5.972923737009420e+00 3.798267680638328e+00 4.861460918737389e+00 9.134130832313947e+03 + 170660 1.057329688760471e+00 -5.999095871624740e+00 -6.007006674702184e+00 3.719911552067431e+00 4.674486496603929e+00 9.238563773052105e+03 + 170680 1.038355720335202e+00 -5.972294477682075e+00 -6.042562190004876e+00 3.878444804117965e+00 4.474956726067102e+00 9.348175524707411e+03 + 170700 1.082784500663266e+00 -6.048317627638418e+00 -6.013067405168802e+00 3.482512911242416e+00 4.684925143617246e+00 9.257200960009566e+03 + 170720 9.836398783554349e-01 -5.917365401802329e+00 -6.014685159306641e+00 4.145642143861292e+00 4.586817036087736e+00 9.262188786837280e+03 + 170740 9.884245069363407e-01 -5.942865941863843e+00 -6.017981934698451e+00 3.979808744151664e+00 4.548481089133023e+00 9.272317177238940e+03 + 170760 1.083769212845659e+00 -6.103566254457836e+00 -5.992120786612444e+00 3.113872139978044e+00 4.753809262476697e+00 9.192894777099840e+03 + 170780 1.018904968244766e+00 -6.033694929927331e+00 -6.001852837702122e+00 3.543325176560730e+00 4.726167397665725e+00 9.222744418901504e+03 + 170800 9.322317969823218e-01 -5.934005765197714e+00 -5.978914249511707e+00 4.073885149679052e+00 4.816013683182617e+00 9.152413123786735e+03 + 170820 9.734445940150313e-01 -6.018223589840959e+00 -5.972949752348622e+00 3.604869465405922e+00 4.864838846390631e+00 9.134170287763463e+03 + 170840 9.338396409762513e-01 -5.979801544081721e+00 -6.015846572445904e+00 3.776224791722167e+00 4.569248660904917e+00 9.265751839936718e+03 + 170860 1.007241636597744e+00 -6.104880698479732e+00 -5.976711871613114e+00 3.181747755375571e+00 4.917712993305553e+00 9.145679344939001e+03 + 170880 9.353007093559882e-01 -6.011752863793090e+00 -5.993927571834623e+00 3.624554063736940e+00 4.726909648617474e+00 9.198404742269644e+03 + 170900 8.669303148752174e-01 -5.919128904324069e+00 -5.975529144719998e+00 4.133650798059749e+00 4.809791889797334e+00 9.142062728849889e+03 + 170920 9.375900372207764e-01 -6.024542123916757e+00 -5.940338971672216e+00 3.578253569403636e+00 5.061761099987486e+00 9.034801652707298e+03 + 170940 9.224804326797671e-01 -5.994735668499260e+00 -5.998581416885013e+00 3.673606164830768e+00 4.651523282472129e+00 9.212698055469828e+03 + 170960 9.738488740015886e-01 -6.057406738970749e+00 -5.956570201441150e+00 3.435383102906228e+00 5.014402105804937e+00 9.084194463132757e+03 + 170980 9.827702327813992e-01 -6.048808287152438e+00 -5.984259562073184e+00 3.438909448451674e+00 4.809558216739676e+00 9.168774007716609e+03 + 171000 9.614423512938622e-01 -5.981990308498846e+00 -5.974995795590846e+00 3.811020523583601e+00 4.851184099098707e+00 9.140456850604076e+03 + 171020 9.341419167311333e-01 -5.896657692082381e+00 -6.021411496235404e+00 4.248442118340607e+00 4.532086469305148e+00 9.282867550791127e+03 + 171040 1.089763750808032e+00 -6.074887733031060e+00 -5.977868011709748e+00 3.322412666460733e+00 4.879514920041063e+00 9.149229325908907e+03 + 171060 1.044678018437807e+00 -5.961473579236479e+00 -6.016016163455745e+00 3.870466562664103e+00 4.557274603639446e+00 9.266279238112509e+03 + 171080 1.069231173015828e+00 -5.965719268980839e+00 -6.017941781443076e+00 3.805721243486496e+00 4.505851495520650e+00 9.272217741240036e+03 + 171100 1.025524496174299e+00 -5.884285867738590e+00 -6.046656458256355e+00 4.318655496230336e+00 4.386298438709649e+00 9.360830372647195e+03 + 171120 1.115871940338693e+00 -6.013897004910620e+00 -6.009492752754130e+00 3.593712485224819e+00 4.619002382663206e+00 9.246231919818452e+03 + 171140 9.997884202307962e-01 -5.844973782291404e+00 -6.067080061929643e+00 4.468658421282161e+00 4.193289792763696e+00 9.424131166529325e+03 + 171160 1.108098097226425e+00 -6.014010462478983e+00 -6.041129629152362e+00 3.588990246665126e+00 4.433267794949104e+00 9.343749309514262e+03 + 171180 1.045955267576649e+00 -5.937503359696183e+00 -6.026491980618074e+00 4.047895045488536e+00 4.536908613210460e+00 9.298544408561100e+03 + 171200 1.116229317824131e+00 -6.061229884228023e+00 -5.978284483423574e+00 3.373262078163369e+00 4.849547405341807e+00 9.150510840939558e+03 + 171220 1.035812631040356e+00 -5.965144065129761e+00 -6.018420223396846e+00 3.830947377845474e+00 4.525027432617026e+00 9.273701015607920e+03 + 171240 1.033854411005143e+00 -5.987474142654667e+00 -5.991106287462664e+00 3.759423089879033e+00 4.738566752318925e+00 9.189758291723963e+03 + 171260 9.670509209815820e-01 -5.911377559133582e+00 -5.991826532202758e+00 4.134444876835493e+00 4.672494424033936e+00 9.191973283630621e+03 + 171280 1.036671925235268e+00 -6.033269859382447e+00 -5.955537140355809e+00 3.537833449724508e+00 4.984186751474854e+00 9.081053940477766e+03 + 171300 9.927072009102836e-01 -5.982931278158822e+00 -6.014208475483221e+00 3.765310312369080e+00 4.585711805201737e+00 9.260716968593795e+03 + 171320 1.061415823148270e+00 -6.100119356264079e+00 -5.957006318452284e+00 3.129238250709453e+00 4.951015460495805e+00 9.085557308758733e+03 + 171340 9.969164359611890e-01 -6.018752584102920e+00 -5.957449922804393e+00 3.633630632531200e+00 4.985640000263516e+00 9.086873697315972e+03 + 171360 1.044004787694057e+00 -6.097923516113910e+00 -5.951652563471976e+00 3.213026306616766e+00 5.052936752043518e+00 9.069228989271547e+03 + 171380 1.014981139126053e+00 -6.062970687613119e+00 -5.988649879078780e+00 3.422530603249237e+00 4.849292186961367e+00 9.182231478711474e+03 + 171400 9.688600526909591e-01 -5.999908700079660e+00 -6.014189474997020e+00 3.702193532561448e+00 4.620191113043195e+00 9.260643730773270e+03 + 171420 9.607611520037407e-01 -5.990937031087308e+00 -6.005719117309654e+00 3.713768455126276e+00 4.628887428517118e+00 9.234591428973687e+03 + 171440 9.801590721344541e-01 -6.019389247016242e+00 -5.980641073382660e+00 3.596314592192450e+00 4.818812601456965e+00 9.157682909028850e+03 + 171460 9.837897527670453e-01 -6.021340905086048e+00 -5.971589994275901e+00 3.603394202424087e+00 4.889071631224519e+00 9.130040214543207e+03 + 171480 9.489604625291226e-01 -5.963223507142723e+00 -6.016459823620766e+00 3.879939466225578e+00 4.574248298715304e+00 9.267658791086538e+03 + 171500 1.038029574164246e+00 -6.084776312750206e+00 -6.022645959825747e+00 3.205475059020658e+00 4.562237160153944e+00 9.286706175235404e+03 + 171520 1.006568680396404e+00 -6.024784925648107e+00 -6.024256900674940e+00 3.600742330041794e+00 4.603774331149316e+00 9.291671351317202e+03 + 171540 9.972797754582072e-01 -5.991907218478854e+00 -6.039958420612166e+00 3.720141617121902e+00 4.444224178572926e+00 9.340108126787209e+03 + 171560 9.590660408209971e-01 -5.906420970528697e+00 -6.056011457953046e+00 4.181785770578569e+00 4.322814042734849e+00 9.389772062217142e+03 + 171580 1.015226474841625e+00 -5.947882389703611e+00 -6.025070445113712e+00 3.923061171321612e+00 4.479835412343835e+00 9.294153320384967e+03 + 171600 1.063859318783091e+00 -5.964229923437229e+00 -6.024654308972276e+00 3.876122677772234e+00 4.529156505386553e+00 9.292886394059598e+03 + 171620 1.093267583587449e+00 -5.954904443138620e+00 -5.992793868416239e+00 3.959613482032049e+00 4.742046538718348e+00 9.194947377596498e+03 + 171640 1.060179687644635e+00 -5.867020420577555e+00 -5.989292101513357e+00 4.422262538691510e+00 4.720159625276668e+00 9.184195436607362e+03 + 171660 1.084422288791476e+00 -5.877993881675875e+00 -6.025831763374813e+00 4.299047502046447e+00 4.450139507492891e+00 9.296472968430555e+03 + 171680 1.055594947371593e+00 -5.823576016010756e+00 -6.012949432264341e+00 4.633049851799982e+00 4.545638390230450e+00 9.256806394080702e+03 + 171700 1.035222907768172e+00 -5.792722407709438e+00 -6.006714118208413e+00 4.822384659749773e+00 4.593611142954481e+00 9.237622849291329e+03 + 171720 1.125565914992021e+00 -5.934585076510309e+00 -5.978027145245576e+00 4.046656211113723e+00 4.797205129797411e+00 9.149702163839533e+03 + 171740 1.110167018941457e+00 -5.930956960805832e+00 -5.978402385366794e+00 4.104904431962148e+00 4.832465461977381e+00 9.150845539796894e+03 + 171760 1.096837594586954e+00 -5.940014445792213e+00 -5.985736381940547e+00 4.013951841749620e+00 4.751409408939138e+00 9.173297717409276e+03 + 171780 1.061028002547277e+00 -5.922137195029791e+00 -5.984528861118182e+00 4.115405426809351e+00 4.757142825050682e+00 9.169587544150787e+03 + 171800 1.026251104279131e+00 -5.909735562651350e+00 -5.956285827471440e+00 4.156925612696300e+00 4.889626788469141e+00 9.083358684262339e+03 + 171820 1.050899550924081e+00 -5.982239538268079e+00 -6.003089091030812e+00 3.757031498850283e+00 4.637310140428806e+00 9.226517261747937e+03 + 171840 1.005518249893278e+00 -5.946581905354568e+00 -5.960766272962466e+00 3.965856206751424e+00 4.884407372923087e+00 9.096980149061403e+03 + 171860 1.006226919054962e+00 -5.970292721974282e+00 -5.981861712007944e+00 3.858791544297044e+00 4.792360613228329e+00 9.161406709181772e+03 + 171880 1.003407021767245e+00 -5.984167483736634e+00 -5.964392744752828e+00 3.815179154949326e+00 4.928728766325305e+00 9.108044906913101e+03 + 171900 9.714299356646670e-01 -5.949328923854448e+00 -6.003290165807435e+00 3.933111850258842e+00 4.623258048489587e+00 9.227108806781325e+03 + 171920 1.010813905533065e+00 -6.016480264765061e+00 -5.975281707309240e+00 3.621717375299899e+00 4.858285867667384e+00 9.141343148853861e+03 + 171940 1.063986269059849e+00 -6.102707973533846e+00 -5.967910538510069e+00 3.165346948424411e+00 4.939374680166592e+00 9.118805535831509e+03 + 171960 1.040037438579652e+00 -6.075516329248450e+00 -5.929474088669818e+00 3.302778049307411e+00 5.141375194673605e+00 9.001816571928401e+03 + 171980 1.008604501542496e+00 -6.034214346624529e+00 -5.959415272400460e+00 3.498875682415707e+00 4.928383541729640e+00 9.092875782294839e+03 + 172000 1.021278818231547e+00 -6.055278862477794e+00 -5.988968323480544e+00 3.358454804955045e+00 4.739220181400004e+00 9.183228894732885e+03 + 172020 1.023511452890147e+00 -6.060720022355659e+00 -5.999197129928102e+00 3.358172885976177e+00 4.711446854932042e+00 9.214589996752911e+03 + 172040 9.502329000628527e-01 -5.954555242794927e+00 -5.995799493720359e+00 3.962775627261482e+00 4.725944755920455e+00 9.204151550428247e+03 + 172060 9.465938909261682e-01 -5.949515909456838e+00 -6.048214210120602e+00 3.926778193581540e+00 4.360037277657542e+00 9.365622330266286e+03 + 172080 9.757288808331365e-01 -5.992714343967151e+00 -5.955892669497317e+00 3.767798180500432e+00 4.979233933441931e+00 9.082109897300978e+03 + 172100 9.680880334721694e-01 -5.977259144623698e+00 -6.023132753360902e+00 3.733034311798320e+00 4.469620951511287e+00 9.288171551916736e+03 + 172120 9.613518871879845e-01 -5.959637889366848e+00 -5.971420939468560e+00 3.924977977887008e+00 4.857317880781865e+00 9.129481067592789e+03 + 172140 1.053364221338451e+00 -6.083329425596241e+00 -5.966993022594636e+00 3.267634422520076e+00 4.935656051555473e+00 9.115999090442654e+03 + 172160 9.641438236399102e-01 -5.931655030314246e+00 -6.047038859772361e+00 4.002807445523938e+00 4.340255641185541e+00 9.362040664131495e+03 + 172180 1.003123599919656e+00 -5.963444039357844e+00 -6.036465582456242e+00 3.866098087074900e+00 4.446797086556623e+00 9.329346693127007e+03 + 172200 9.936808426682591e-01 -5.918180752513441e+00 -5.999689373620462e+00 4.137127664479366e+00 4.669092548664506e+00 9.216109308820811e+03 + 172220 9.874484933335420e-01 -5.873444292512225e+00 -6.030115785511875e+00 4.391144137920489e+00 4.491512180281314e+00 9.309721999498544e+03 + 172240 1.102442361230882e+00 -6.006573975267710e+00 -6.003754932403208e+00 3.689525599701950e+00 4.705712980075395e+00 9.228592705453126e+03 + 172260 1.042541089189107e+00 -5.885497895054067e+00 -6.061041995165239e+00 4.336814005843109e+00 4.328812617643067e+00 9.405379168719626e+03 + 172280 1.084976361778584e+00 -5.926525282700452e+00 -6.059711655422442e+00 4.077802365217355e+00 4.313025602523124e+00 9.401261332152915e+03 + 172300 1.109355939282497e+00 -5.950350254199269e+00 -6.038279078602029e+00 3.950222492390845e+00 4.445321575728597e+00 9.334929711219807e+03 + 172320 1.003584708105690e+00 -5.793739216062012e+00 -6.038003707175055e+00 4.776135602726221e+00 4.373531094947293e+00 9.334086350674639e+03 + 172340 1.108898055603473e+00 -5.958096424724505e+00 -5.978891885837462e+00 4.000223422557277e+00 4.880812666759469e+00 9.152358030893638e+03 + 172360 1.082092906968975e+00 -5.935229388084096e+00 -6.014932543672260e+00 4.060217806355488e+00 4.602549952944787e+00 9.262944310231367e+03 + 172380 1.078438691370033e+00 -5.960240458318766e+00 -5.994779314802082e+00 3.925555532362223e+00 4.727228073564254e+00 9.201027995988139e+03 + 172400 9.814009334062834e-01 -5.855395790522992e+00 -6.007851282551651e+00 4.387462185213970e+00 4.512039157574264e+00 9.241172084690805e+03 + 172420 1.021743129277072e+00 -5.956837513807445e+00 -5.994116653489170e+00 3.974839393251570e+00 4.760776804270879e+00 9.198910455215106e+03 + 172440 1.053920389505867e+00 -6.045607330263085e+00 -5.991479826826130e+00 3.475262217715492e+00 4.786070718654573e+00 9.190918417116220e+03 + 172460 1.082915963835048e+00 -6.124412456062573e+00 -5.999329392200013e+00 3.013133983891955e+00 4.731380293132347e+00 9.214982112917138e+03 + 172480 8.827385838888753e-01 -5.854611635975007e+00 -6.039715753941731e+00 4.478855506695748e+00 4.415959016561141e+00 9.339360430917295e+03 + 172500 9.395221064289503e-01 -5.954537162025894e+00 -5.987377572901988e+00 3.941865705173236e+00 4.753290983885543e+00 9.178332038922812e+03 + 172520 9.562492133338030e-01 -5.986477440667693e+00 -5.995587853207351e+00 3.797155238482059e+00 4.744841839847560e+00 9.203477255287717e+03 + 172540 1.013172301241755e+00 -6.073392857772878e+00 -5.936215519266264e+00 3.334503815708587e+00 5.122197321538090e+00 9.022288696002517e+03 + 172560 1.025892863433420e+00 -6.092426587794312e+00 -5.971723612824439e+00 3.242427085038059e+00 4.935522246040082e+00 9.130463384862524e+03 + 172580 1.016416706699466e+00 -6.077774864556412e+00 -5.984222703100864e+00 3.276260993055796e+00 4.813451981283751e+00 9.168680074976264e+03 + 172600 9.909712897099451e-01 -6.037434783814548e+00 -5.981090574205504e+00 3.496337152278371e+00 4.819874323091756e+00 9.159105597165002e+03 + 172620 9.702376154232129e-01 -5.999655584291099e+00 -5.997118574376934e+00 3.737892513388313e+00 4.752460416916463e+00 9.208208253426084e+03 + 172640 9.879027141280502e-01 -6.017261575208793e+00 -6.023397485733884e+00 3.581840284111784e+00 4.546606936347621e+00 9.289011565890265e+03 + 172660 9.337106385124090e-01 -5.928758674840387e+00 -6.020769115739597e+00 4.031162328747874e+00 4.502824138534897e+00 9.280917108341760e+03 + 172680 9.970695467790591e-01 -6.012375779174469e+00 -6.017411625196958e+00 3.569168348261318e+00 4.540251741105532e+00 9.270573511260933e+03 + 172700 9.907264065483334e-01 -5.990047253747540e+00 -5.998736010953619e+00 3.728718289729752e+00 4.678826101271612e+00 9.213163413807137e+03 + 172720 1.018256036372882e+00 -6.015906867707852e+00 -5.973573412703888e+00 3.601792805038770e+00 4.844878054752525e+00 9.136096343829127e+03 + 172740 1.023750449451012e+00 -6.006687076612080e+00 -5.997007228027146e+00 3.576425378509376e+00 4.632008567035791e+00 9.207877679881378e+03 + 172760 1.008988904995452e+00 -5.965890041967508e+00 -5.975621856805157e+00 3.892625307785823e+00 4.836743720994559e+00 9.142339660903255e+03 + 172780 1.063130395155624e+00 -6.023827980803579e+00 -5.957331239822098e+00 3.596785520191515e+00 4.978620097244585e+00 9.086518488234364e+03 + 172800 1.022393587675879e+00 -5.937507932669403e+00 -6.017985457603124e+00 4.052584438616729e+00 4.590470036590571e+00 9.272331223898891e+03 + 172820 1.031611687280333e+00 -5.921413699347695e+00 -6.021036527112228e+00 4.108306822277820e+00 4.536257128671095e+00 9.281715665023614e+03 + 172840 1.031007636383035e+00 -5.891006058018329e+00 -6.011215109186184e+00 4.253991878342570e+00 4.563732904246199e+00 9.251469535469074e+03 + 172860 9.683699205661638e-01 -5.766711627701183e+00 -6.056583016110435e+00 4.907500057269260e+00 4.243013687570953e+00 9.391474114734932e+03 + 172880 1.071366663507554e+00 -5.889067926579171e+00 -5.969185888378441e+00 4.222685639699995e+00 4.762635904834062e+00 9.122681510932109e+03 + 172900 1.078655521201729e+00 -5.870543494892486e+00 -5.993229272601227e+00 4.428339668542163e+00 4.723858947375829e+00 9.196243799953598e+03 + 172920 1.115431075665988e+00 -5.903221687787881e+00 -6.005051491989077e+00 4.213316223216818e+00 4.628593729382279e+00 9.232531162642696e+03 + 172940 1.125800411141910e+00 -5.905989603825843e+00 -5.984387081838152e+00 4.156197379597584e+00 4.706026928880390e+00 9.169138127188025e+03 + 172960 1.054018295839549e+00 -5.795964890106038e+00 -6.019522461966774e+00 4.795822749179632e+00 4.512120576132845e+00 9.277014991634098e+03 + 172980 1.118908432724137e+00 -5.902360832194248e+00 -5.967497673964703e+00 4.203612894101524e+00 4.829587068761882e+00 9.117541079121560e+03 + 173000 1.107445668595430e+00 -5.914268772818446e+00 -5.928971585201426e+00 4.189897859940557e+00 5.105472035984628e+00 9.000267493343028e+03 + 173020 1.091958137261895e+00 -5.938685733781594e+00 -5.966512324980659e+00 4.041620853392430e+00 4.881836260576327e+00 9.114469158573092e+03 + 173040 1.001323380955421e+00 -5.865958757884489e+00 -5.978348956085010e+00 4.351236669978316e+00 4.705874759583967e+00 9.150664597268353e+03 + 173060 1.004755324962607e+00 -5.926512009099835e+00 -5.980960821552534e+00 4.093733533306475e+00 4.781080026276582e+00 9.158660922792677e+03 + 173080 1.017692612200240e+00 -5.988083199150920e+00 -5.979495073414678e+00 3.770128040512883e+00 4.819442387498548e+00 9.154216515370597e+03 + 173100 1.000777478443841e+00 -5.993195002474382e+00 -5.966110282693140e+00 3.783534134544125e+00 4.939058786874858e+00 9.113300123699335e+03 + 173120 1.003924431822632e+00 -6.018530320867154e+00 -5.962239186926102e+00 3.610487496672246e+00 4.933719898786598e+00 9.101490355683713e+03 + 173140 9.790852529238024e-01 -5.996006337456165e+00 -5.979403564121951e+00 3.720947353321449e+00 4.816283047077381e+00 9.153943694089201e+03 + 173160 9.839379202268819e-01 -6.012801539639699e+00 -6.034388013370886e+00 3.617825294260405e+00 4.493872421599911e+00 9.322922496189836e+03 + 173180 1.004973072884249e+00 -6.054372488696514e+00 -6.002843070080139e+00 3.406589144734990e+00 4.702479040581979e+00 9.225780924046707e+03 + 173200 9.353664544418824e-01 -5.958574081268814e+00 -6.005472642007595e+00 3.912698897704575e+00 4.643400104413680e+00 9.233841823163724e+03 + 173220 9.458394286645943e-01 -5.977909528610584e+00 -5.983922726724805e+00 3.796548247257893e+00 4.762019533146637e+00 9.167759504923144e+03 + 173240 1.020340065600994e+00 -6.088276100598461e+00 -5.982690468672452e+00 3.236925779513019e+00 4.843214817355895e+00 9.163970584689092e+03 + 173260 9.952805205955944e-01 -6.047870193045654e+00 -5.982104273282050e+00 3.392524005817335e+00 4.770162094343141e+00 9.162206716484268e+03 + 173280 9.980990834454792e-01 -6.046276427030458e+00 -5.990106496779951e+00 3.459547080193107e+00 4.782083511960128e+00 9.186658637295684e+03 + 173300 9.878746402879192e-01 -6.023019641490797e+00 -5.971610792524971e+00 3.592277158150344e+00 4.887474724405783e+00 9.130107710597140e+03 + 173320 9.541462466870148e-01 -5.960943052553656e+00 -6.026500111943178e+00 3.903923172214026e+00 4.527484392277239e+00 9.298585789503839e+03 + 173340 1.026501507859694e+00 -6.051681680776657e+00 -6.006362799384036e+00 3.422512820541773e+00 4.682740850572434e+00 9.236618645914488e+03 + 173360 9.932104061462316e-01 -5.984038573203277e+00 -6.005824685013628e+00 3.744182362364341e+00 4.619083136959398e+00 9.234934776763557e+03 + 173380 1.009984802041753e+00 -5.988081768675634e+00 -5.987520753202867e+00 3.785748189215987e+00 4.788969626877478e+00 9.178770620875497e+03 + 173400 1.030449786738089e+00 -5.991692157322114e+00 -6.035116002669131e+00 3.698287010934624e+00 4.448940571133704e+00 9.325177053550073e+03 + 173420 1.066024739325461e+00 -6.018493236209102e+00 -5.995082133604891e+00 3.647136655411122e+00 4.781566829420924e+00 9.201958403328243e+03 + 173440 1.067642134111627e+00 -5.995588105235458e+00 -6.024666128332058e+00 3.707093135237975e+00 4.540122626807772e+00 9.292931066361034e+03 + 173460 1.081816509633934e+00 -5.994489195240281e+00 -5.998103024201956e+00 3.736771067361874e+00 4.716019902225714e+00 9.211229032503517e+03 + 173480 9.975506406078951e-01 -5.852591496843242e+00 -6.014782523956264e+00 4.481409050255010e+00 4.550083073591712e+00 9.262450570656778e+03 + 173500 1.023690360739035e+00 -5.874914622582520e+00 -6.005005017867528e+00 4.329290909431641e+00 4.582291728281515e+00 9.232395034829417e+03 + 173520 1.077785366570953e+00 -5.941516833277189e+00 -5.944231789419466e+00 4.060915825770490e+00 5.045326127463431e+00 9.046608646803092e+03 + 173540 1.063941819075422e+00 -5.908713050364923e+00 -5.973317951040684e+00 4.132818994103865e+00 4.761847656847579e+00 9.135310131215530e+03 + 173560 1.086531510936248e+00 -5.931421269085421e+00 -6.017235363468231e+00 4.055836925374791e+00 4.563079115740507e+00 9.270037745465261e+03 + 173580 1.136390693591882e+00 -6.004689280755624e+00 -5.985869610927346e+00 3.657306895415380e+00 4.765372351903845e+00 9.173719318163470e+03 + 173600 1.039754461713528e+00 -5.873932130552928e+00 -6.010342184849663e+00 4.361348956092039e+00 4.578061314932507e+00 9.248821906350566e+03 + 173620 1.008390423740151e+00 -5.851757625912639e+00 -6.004260601569459e+00 4.481933222817341e+00 4.606237536836671e+00 9.230102541229438e+03 + 173640 1.039116729923969e+00 -5.935777510019093e+00 -5.938119858087401e+00 4.057147123761267e+00 5.043696998675858e+00 9.028018438654699e+03 + 173660 1.005080409730513e+00 -5.930981436532204e+00 -5.944001730556888e+00 4.106243247702714e+00 5.031478704528996e+00 9.045861741230661e+03 + 173680 1.026237204647207e+00 -6.004957621005611e+00 -5.965811205241733e+00 3.672510520041122e+00 4.897295297245574e+00 9.112359608715806e+03 + 173700 1.031923939354743e+00 -6.053307303009847e+00 -5.937029403374755e+00 3.383668469451927e+00 5.051354163103442e+00 9.024759772791909e+03 + 173720 9.948527102879733e-01 -6.030552376706215e+00 -5.964037991927033e+00 3.516307112003030e+00 4.898243002472871e+00 9.106960148247514e+03 + 173740 9.608551193693246e-01 -6.002535728539605e+00 -5.997078934799910e+00 3.622117323984375e+00 4.653451078073806e+00 9.208066856175088e+03 + 173760 9.824669174407913e-01 -6.050888907466445e+00 -5.981449718654126e+00 3.418130891294903e+00 4.816861459134979e+00 9.160182123608276e+03 + 173780 9.336155689611729e-01 -5.989020632331643e+00 -5.991028017417711e+00 3.736174416065628e+00 4.724647700259590e+00 9.189507097738082e+03 + 173800 9.602355099042567e-01 -6.032734439713542e+00 -6.001287127277745e+00 3.490079744786138e+00 4.670655079248352e+00 9.221001568201002e+03 + 173820 9.498960638773298e-01 -6.016748969875607e+00 -6.007134733944648e+00 3.579543621536020e+00 4.634750052049791e+00 9.238956772395615e+03 + 173840 9.852900264695768e-01 -6.066069902766070e+00 -5.988076444817199e+00 3.318665080445857e+00 4.766515585436892e+00 9.180490857477598e+03 + 173860 9.836570038385419e-01 -6.057878676131812e+00 -5.982346587509959e+00 3.406807887134686e+00 4.840524828554305e+00 9.162948800168608e+03 + 173880 9.929565190773034e-01 -6.061366800179039e+00 -5.996711578548871e+00 3.418202363373149e+00 4.789462651336786e+00 9.206969518717147e+03 + 173900 9.927590825756769e-01 -6.048161076826857e+00 -5.979034372994226e+00 3.434696779978238e+00 4.831633010708048e+00 9.152805912378397e+03 + 173920 9.726517316414648e-01 -6.001755806988286e+00 -5.974703333446178e+00 3.678005843949589e+00 4.833345333385124e+00 9.139543416864919e+03 + 173940 9.715420896759521e-01 -5.973865771339408e+00 -6.004807932767068e+00 3.796847563728977e+00 4.619172884527347e+00 9.231826433439666e+03 + 173960 1.074008428969160e+00 -6.093068164648981e+00 -5.984248716772878e+00 3.204004947548575e+00 4.828863057008292e+00 9.168786398101072e+03 + 173980 9.882841338057282e-01 -5.930802096529248e+00 -6.046339331314269e+00 4.047490297750650e+00 4.384057616285756e+00 9.359864883541753e+03 + 174000 1.044937198571008e+00 -5.980716647654766e+00 -6.055387944104370e+00 3.864568680772850e+00 4.435794541213438e+00 9.387869687633191e+03 + 174020 1.012179894145418e+00 -5.903757709824338e+00 -6.024859148329945e+00 4.218581743029880e+00 4.523198542743641e+00 9.293535338431930e+03 + 174040 1.014681212084544e+00 -5.883616213917592e+00 -6.052646090808726e+00 4.315133762289497e+00 4.344538051891694e+00 9.379359789027403e+03 + 174060 1.010626986648662e+00 -5.858911741943656e+00 -5.992121408611119e+00 4.460163313402711e+00 4.695252793268845e+00 9.192849155053716e+03 + 174080 1.095429786318195e+00 -5.968927528544659e+00 -5.998074410764060e+00 3.832388522292853e+00 4.665022614123612e+00 9.211121070891251e+03 + 174100 1.102434908975461e+00 -5.968333066368058e+00 -5.983151786471380e+00 3.875600601891949e+00 4.790509217869152e+00 9.165409210050813e+03 + 174120 1.110705581278694e+00 -5.979628017800168e+00 -5.994194532541202e+00 3.817077958518305e+00 4.733434776714418e+00 9.199216664045731e+03 + 174140 9.645728663838430e-01 -5.771965871407673e+00 -6.033703787274841e+00 4.919387169870882e+00 4.416447553150028e+00 9.320796192123315e+03 + 174160 1.143471012735451e+00 -6.057201242260327e+00 -5.984222310123451e+00 3.384495954356815e+00 4.803552276140001e+00 9.168692667622588e+03 + 174180 1.114228194416204e+00 -6.060018984704160e+00 -6.034010040842800e+00 3.359952294580819e+00 4.509299675103809e+00 9.321768637924351e+03 + 174200 1.035545675851006e+00 -6.019835581615722e+00 -5.984858016856825e+00 3.604487537278268e+00 4.805334126884508e+00 9.170619398829798e+03 + 174220 9.519149595492782e-01 -5.963254127919057e+00 -5.943614391122633e+00 3.944308211322939e+00 5.057082619247447e+00 9.044744192008386e+03 + 174240 9.906746425471189e-01 -6.063801351276808e+00 -5.963637807940319e+00 3.340751943489447e+00 4.915906509585810e+00 9.105700105342768e+03 + 174260 9.267405335466790e-01 -5.993076214347078e+00 -5.986359538088935e+00 3.735504874343718e+00 4.774073068820272e+00 9.175183850634010e+03 + 174280 9.241900134792869e-01 -6.003454537177995e+00 -5.960222566679866e+00 3.694962471519037e+00 4.943207136245107e+00 9.095338415824601e+03 + 174300 9.665557829592610e-01 -6.073240158781647e+00 -5.951876815238919e+00 3.306008545952532e+00 5.002895645491590e+00 9.069899559460257e+03 + 174320 9.128699189045938e-01 -5.993826631248002e+00 -5.961654280244311e+00 3.724014941510094e+00 4.908753559628513e+00 9.099691484580217e+03 + 174340 9.707981487654367e-01 -6.072337761985562e+00 -5.968453451519562e+00 3.288364882809992e+00 4.884884669550850e+00 9.120433725647670e+03 + 174360 9.380757919619065e-01 -6.011142889904589e+00 -5.995907737564730e+00 3.601282728418124e+00 4.688765330785798e+00 9.204488029253091e+03 + 174380 9.618260475116973e-01 -6.028796559083496e+00 -5.988557491870419e+00 3.559552094322779e+00 4.790611045235792e+00 9.181946389808234e+03 + 174400 9.499519782289373e-01 -5.988295221087204e+00 -6.002647141934475e+00 3.727950521118987e+00 4.645539570661384e+00 9.225157664108969e+03 + 174420 1.000556501339247e+00 -6.036773534869895e+00 -5.973367565628996e+00 3.511871545864321e+00 4.875958433287594e+00 9.135461308473074e+03 + 174440 1.028999140666390e+00 -6.048934936596396e+00 -5.965449106713238e+00 3.467942832285403e+00 4.947331386864918e+00 9.111294174406876e+03 + 174460 1.026822782836855e+00 -6.018111825296588e+00 -6.000903780554323e+00 3.559449099306790e+00 4.658260355153195e+00 9.219820027532754e+03 + 174480 1.026940028507454e+00 -5.991359740555537e+00 -5.956477164030031e+00 3.788282887187052e+00 4.988584039657780e+00 9.083920803218996e+03 + 174500 1.068577183163967e+00 -6.030315505609322e+00 -5.969489104837730e+00 3.531841358709154e+00 4.881115964794738e+00 9.123603449442782e+03 + 174520 1.028732500171579e+00 -5.952032096973272e+00 -5.982452602415385e+00 3.958532566755477e+00 4.783853316948865e+00 9.163254033535399e+03 + 174540 1.016028408732502e+00 -5.916559863845978e+00 -6.029517412928802e+00 4.131699999946326e+00 4.483080272988528e+00 9.307860362809872e+03 + 174560 1.034085296672262e+00 -5.931916042652173e+00 -6.016824447758401e+00 4.030769129582472e+00 4.543211927929286e+00 9.268741340334504e+03 + 174580 1.069464036652090e+00 -5.978519402719918e+00 -5.990808444442746e+00 3.856528446197731e+00 4.785962866902192e+00 9.188853241433259e+03 + 174600 1.063524134247026e+00 -5.968353384538040e+00 -6.016356464764080e+00 3.874540738504850e+00 4.598899623394276e+00 9.267357696617173e+03 + 174620 1.039866634172809e+00 -5.940056701058808e+00 -6.074248910985186e+00 4.032055292353467e+00 4.261502856778834e+00 9.446378748339603e+03 + 174640 1.040236495224821e+00 -5.956058351892226e+00 -6.046009755812667e+00 3.941184200427036e+00 4.424669319181093e+00 9.358844098545360e+03 + 174660 1.022772460457805e+00 -5.954827700981319e+00 -6.064390411189723e+00 3.933167986575437e+00 4.304041949784172e+00 9.415783472026056e+03 + 174680 9.829749500444194e-01 -5.928453727341313e+00 -6.075091434664500e+00 4.071501609808770e+00 4.229485202247162e+00 9.449007394609172e+03 + 174700 1.039401120925224e+00 -6.055205302996512e+00 -6.034188289339775e+00 3.439254560482783e+00 4.559937505272123e+00 9.322286708465619e+03 + 174720 1.010095901966845e+00 -6.061446469071280e+00 -6.002030015548879e+00 3.401846740286702e+00 4.743025211078795e+00 9.223270501057315e+03 + 174740 9.502785796361295e-01 -6.014551668114291e+00 -6.052748465608851e+00 3.565733532396602e+00 4.346401610247526e+00 9.379684029717993e+03 + 174760 9.148974451783527e-01 -5.991516504991664e+00 -6.017562649981153e+00 3.736539573277869e+00 4.586978578120315e+00 9.271051591568870e+03 + 174780 9.644508808957944e-01 -6.083305898606405e+00 -5.957925160263165e+00 3.249366061164889e+00 4.969321663338325e+00 9.088348347607980e+03 + 174800 9.474565283054365e-01 -6.064146406379244e+00 -5.968466930851296e+00 3.363633574853645e+00 4.913039929686112e+00 9.120498957537216e+03 + 174820 9.584785123366982e-01 -6.079695095214923e+00 -6.019083318558723e+00 3.226359157619604e+00 4.574401358821628e+00 9.275730655104362e+03 + 174840 9.369789673075278e-01 -6.043330303644593e+00 -5.982817463858819e+00 3.477547181685590e+00 4.825021272067199e+00 9.164378797812968e+03 + 174860 9.769982730338885e-01 -6.093589801816066e+00 -5.956418635640756e+00 3.186452675082323e+00 4.974110738430312e+00 9.083763930830319e+03 + 174880 9.828502457769762e-01 -6.088181401454269e+00 -6.029697895360165e+00 3.213353799341999e+00 4.549175141627667e+00 9.308467828434899e+03 + 174900 9.227160312064646e-01 -5.984811348096058e+00 -6.015620290314531e+00 3.815183806870710e+00 4.638274092983840e+00 9.265072405298237e+03 + 174920 1.020733655416700e+00 -6.115446304811709e+00 -5.921068679912113e+00 3.100765621387073e+00 5.216912023400788e+00 8.976340908249087e+03 + 174940 9.426754452770276e-01 -5.979957764736304e+00 -5.991167518744058e+00 3.777623704912783e+00 4.713255562696434e+00 9.189949475669659e+03 + 174960 9.555339846482395e-01 -5.974677060231760e+00 -6.029876213829874e+00 3.850370421698661e+00 4.533408339696872e+00 9.308981464220138e+03 + 174980 1.030033169254394e+00 -6.061333850483272e+00 -5.997139547067653e+00 3.347476708517317e+00 4.716090332766147e+00 9.208283541949057e+03 + 175000 9.883273369644735e-01 -5.978444481262841e+00 -6.020783585992502e+00 3.772134472082301e+00 4.529016780769306e+00 9.280955281783554e+03 + 175020 1.038641352396164e+00 -6.035211204689436e+00 -5.980535423233059e+00 3.473240555955543e+00 4.787197354127897e+00 9.157396379972011e+03 + 175040 1.028122379584812e+00 -6.002668782255830e+00 -5.951079771758026e+00 3.701897343032095e+00 4.998129424684054e+00 9.067488678539250e+03 + 175060 1.019149068156492e+00 -5.976165819239180e+00 -5.955720356298011e+00 3.853303022049817e+00 4.970704034183179e+00 9.081567959619360e+03 + 175080 9.924343167451991e-01 -5.922424534526516e+00 -5.951252692220498e+00 4.151558692082870e+00 4.986022949461037e+00 9.067984405528090e+03 + 175100 1.125442130559867e+00 -6.105009591307002e+00 -5.953366530379454e+00 3.156056867608716e+00 5.026814790142535e+00 9.074431789188950e+03 + 175120 1.010888449395482e+00 -5.926248361631479e+00 -6.028755645572832e+00 4.077592079223833e+00 4.488979391881661e+00 9.305516886890644e+03 + 175140 9.825931912286066e-01 -5.879507161473648e+00 -6.024734186418986e+00 4.313678701641070e+00 4.479762650595466e+00 9.293126945564973e+03 + 175160 1.098058489820219e+00 -6.049171312785719e+00 -5.989741803710071e+00 3.440773975064071e+00 4.782027412863247e+00 9.185557676083341e+03 + 175180 1.004178065746951e+00 -5.914705300404457e+00 -5.964959074224990e+00 4.193701522940900e+00 4.905136576917037e+00 9.109783933699291e+03 + 175200 1.032299672848394e+00 -5.963647468880897e+00 -5.996015250861229e+00 3.846429513910107e+00 4.660568700880963e+00 9.204796190128158e+03 + 175220 1.124963962969908e+00 -6.114751773246700e+00 -5.973022661825462e+00 3.068949720988168e+00 4.882780211278023e+00 9.134431799259555e+03 + 175240 1.004726615297099e+00 -5.963339920802834e+00 -6.011618351873967e+00 3.886593628856656e+00 4.609371406583150e+00 9.252753396854248e+03 + 175260 1.012539278011511e+00 -6.020787744590081e+00 -6.032876507505645e+00 3.613681026374775e+00 4.544265478983585e+00 9.318227492271531e+03 + 175280 9.501784681326232e-01 -5.991428162104357e+00 -6.015229739835565e+00 3.730677228110832e+00 4.594004885495989e+00 9.263862655312767e+03 + 175300 9.049495538954495e-01 -5.980230419858019e+00 -5.984744184390006e+00 3.835503967834212e+00 4.809585233388736e+00 9.170267776481365e+03 + 175320 9.625946801857106e-01 -6.105587042548430e+00 -5.987654708479709e+00 3.138060553067871e+00 4.815246265260182e+00 9.179192441136040e+03 + 175340 9.611593842436630e-01 -6.127386314682732e+00 -5.984304603259023e+00 3.033423891235361e+00 4.855021220053585e+00 9.168943811878677e+03 + 175360 9.577346070435174e-01 -6.134221393353250e+00 -6.000072659892959e+00 2.955859204247411e+00 4.726161991225809e+00 9.217274447504249e+03 + 175380 8.751222882102426e-01 -6.015479252713113e+00 -6.012881599399479e+00 3.560427355293016e+00 4.575343482605453e+00 9.256630427610622e+03 + 175400 9.246382488262139e-01 -6.083994020160435e+00 -5.992809807604388e+00 3.212651535361954e+00 4.736245394570064e+00 9.195002857403058e+03 + 175420 9.578104429722245e-01 -6.119923039606261e+00 -5.995326223644550e+00 3.044701364611058e+00 4.760155563158159e+00 9.202731234831344e+03 + 175440 9.126630700904075e-01 -6.034342717355619e+00 -5.997586723817907e+00 3.530319457994218e+00 4.741378060859378e+00 9.209653952085946e+03 + 175460 9.071313665414691e-01 -6.001581429118350e+00 -6.025779365966012e+00 3.692687901389883e+00 4.553739603391985e+00 9.296351493891840e+03 + 175480 9.539260855425356e-01 -6.040866856613547e+00 -6.011784556819912e+00 3.493690039983741e+00 4.660685105870144e+00 9.253270824667034e+03 + 175500 9.420454072380610e-01 -5.991052537005707e+00 -6.003149742830227e+00 3.754976679016329e+00 4.685512651135384e+00 9.226704512782173e+03 + 175520 9.762994786071494e-01 -6.012763873430769e+00 -5.968833790371192e+00 3.635163389770772e+00 4.887416724857249e+00 9.121616803134493e+03 + 175540 9.616361829561672e-01 -5.960699281058593e+00 -5.987252050692313e+00 3.872882600166490e+00 4.720412487901851e+00 9.177952620005324e+03 + 175560 9.962229184111530e-01 -5.985654402755954e+00 -6.026830958039572e+00 3.752744433501419e+00 4.516302281011550e+00 9.299584955504601e+03 + 175580 1.020391756936409e+00 -5.999981018438340e+00 -6.023941903012725e+00 3.699175638967934e+00 4.561588531806914e+00 9.290703401874423e+03 + 175600 1.018718030926390e+00 -5.984610244921231e+00 -6.038889867868517e+00 3.768434351434888e+00 4.456752356727067e+00 9.336821110565888e+03 + 175620 9.926230477787235e-01 -5.937961192252602e+00 -6.067229629035874e+00 3.991537352333521e+00 4.249257984098032e+00 9.424565506684852e+03 + 175640 1.033822840681058e+00 -5.994281468421066e+00 -5.996775853934509e+00 3.751128326344914e+00 4.736805178721813e+00 9.207148824832640e+03 + 175660 1.028089092567386e+00 -5.982791618342983e+00 -6.013732890955994e+00 3.801152836336515e+00 4.623483260846141e+00 9.259261676336724e+03 + 175680 1.023727874557679e+00 -5.978885299606310e+00 -6.047836031670769e+00 3.826052356122163e+00 4.430126582516730e+00 9.364475572118150e+03 + 175700 9.624539768250001e-01 -5.892658679982171e+00 -6.030466179838964e+00 4.289713609083069e+00 4.498401619263684e+00 9.310797376608863e+03 + 175720 1.077874436185885e+00 -6.071523628354904e+00 -5.963936067317414e+00 3.313912977252087e+00 4.931697401850619e+00 9.106671789646864e+03 + 175740 9.737934490336826e-01 -5.926520549055900e+00 -5.978397808529782e+00 4.114949458012934e+00 4.817062206133946e+00 9.150828800036576e+03 + 175760 1.063377281562902e+00 -6.067420596081009e+00 -5.957377159110511e+00 3.406370761021432e+00 5.038257205272866e+00 9.086649531203431e+03 + 175780 9.973759186878994e-01 -5.978475862365390e+00 -5.967586787797789e+00 3.866842059886845e+00 4.929368811132861e+00 9.117808817092229e+03 + 175800 9.937225696531075e-01 -5.984754953701366e+00 -6.036361768570295e+00 3.695246966955813e+00 4.398912649849633e+00 9.328995809250117e+03 + 175820 9.481475596367271e-01 -5.934626529840555e+00 -6.030441643773690e+00 4.098568313024088e+00 4.548383101479065e+00 9.310702726506537e+03 + 175840 1.021398864396286e+00 -6.065268897546405e+00 -6.006396132020552e+00 3.330244113772832e+00 4.668300643953297e+00 9.236696583043087e+03 + 175860 9.866447579928614e-01 -6.044519873185536e+00 -5.992466028979715e+00 3.475129945553504e+00 4.774031174289683e+00 9.193940125489687e+03 + 175880 9.557781570554120e-01 -6.036866114417260e+00 -6.002945794925373e+00 3.507983837252379e+00 4.702759560927269e+00 9.226098204897035e+03 + 175900 9.062997221478712e-01 -6.006264456937022e+00 -6.006513269432029e+00 3.652059465704973e+00 4.650630745855038e+00 9.237080392159220e+03 + 175920 9.966955023445492e-01 -6.180201067561790e+00 -5.981269596721669e+00 2.746563421232051e+00 4.888858711341650e+00 9.159666904970629e+03 + 175940 9.232025988797197e-01 -6.104299080106553e+00 -5.995880646841077e+00 3.146462774567491e+00 4.769018196076177e+00 9.204423337922226e+03 + 175960 8.924156985265349e-01 -6.078897953954409e+00 -6.008056715616781e+00 3.234402710373457e+00 4.641184063554322e+00 9.241784167871418e+03 + 175980 8.935724669128199e-01 -6.089881677619999e+00 -6.004825381999945e+00 3.185614857094834e+00 4.674021268964398e+00 9.231888496852451e+03 + 176000 8.986062907857139e-01 -6.098119826707854e+00 -6.001796191389563e+00 3.183902381815586e+00 4.737007601847600e+00 9.222586025195222e+03 + 176020 8.809374512636972e-01 -6.063547503828098e+00 -5.993072247026541e+00 3.356446616058313e+00 4.761126446623599e+00 9.195800357714566e+03 + 176040 8.869267582129664e-01 -6.054347851817991e+00 -5.976652140701734e+00 3.447558870474169e+00 4.893699667076151e+00 9.145497003263183e+03 + 176060 8.517390374290222e-01 -5.975061785526035e+00 -5.965006216386549e+00 3.880883472142874e+00 4.938624106236091e+00 9.109933093821301e+03 + 176080 9.888422529061435e-01 -6.144861792259138e+00 -5.940574695069701e+00 2.934357200050217e+00 5.107405325438087e+00 9.035539417770127e+03 + 176100 9.719936354504375e-01 -6.081871345377892e+00 -5.993829286556139e+00 3.294900366030117e+00 4.800451492249199e+00 9.198128418574939e+03 + 176120 9.750761513999207e-01 -6.055629297554794e+00 -6.008654331640664e+00 3.330691143906253e+00 4.600428667537667e+00 9.243641554936870e+03 + 176140 9.950954801328914e-01 -6.063177410180696e+00 -5.989417154191916e+00 3.364338382029859e+00 4.787881186280158e+00 9.184592754270490e+03 + 176160 1.019001179667554e+00 -6.082920494703306e+00 -5.979809548370751e+00 3.256246276600879e+00 4.848325286809786e+00 9.155174326174762e+03 + 176180 9.695599784671377e-01 -5.997869925035133e+00 -6.004023605798888e+00 3.717874924456759e+00 4.682539537232256e+00 9.229400224934390e+03 + 176200 9.812862146168398e-01 -6.005398539180472e+00 -5.977175327252737e+00 3.687593365061628e+00 4.849655415478617e+00 9.147117144571128e+03 + 176220 9.546311878538136e-01 -5.954260723838222e+00 -6.004918139647143e+00 3.949271258579334e+00 4.658388537794751e+00 9.232133439262472e+03 + 176240 1.064196193697975e+00 -6.102202866149449e+00 -5.963141566320380e+00 3.183098018833873e+00 4.981609522118989e+00 9.104236028811119e+03 + 176260 1.001909443368228e+00 -5.996606940179253e+00 -5.969439062973599e+00 3.690425411328300e+00 4.846427566458574e+00 9.123472921973358e+03 + 176280 1.019788995966022e+00 -6.012279028898646e+00 -5.959615756243861e+00 3.618241765982385e+00 4.920642427181264e+00 9.093475865964230e+03 + 176300 9.409695068619488e-01 -5.884201469837969e+00 -5.982088685039401e+00 4.328061944860868e+00 4.765978407176649e+00 9.162123023337886e+03 + 176320 9.937297150749048e-01 -5.947935788037548e+00 -6.008272992940279e+00 3.913298382383327e+00 4.566832814679566e+00 9.242406703626539e+03 + 176340 1.064494683642742e+00 -6.037466323073327e+00 -5.975996791104336e+00 3.518857420705624e+00 4.871824985650900e+00 9.143507901222927e+03 + 176360 1.005086581668455e+00 -5.935548915079872e+00 -6.011474496050011e+00 4.018238139454020e+00 4.582261704077798e+00 9.252274594176804e+03 + 176380 1.047603000349351e+00 -5.985950172717834e+00 -5.944701174825263e+00 3.870336106282152e+00 5.107194235443087e+00 9.048048036583168e+03 + 176400 1.089181455360497e+00 -6.034772752875433e+00 -6.040385476654031e+00 3.480229078633911e+00 4.447999950131011e+00 9.341437390662282e+03 + 176420 1.030926696299160e+00 -5.944886461470995e+00 -6.047468046240445e+00 3.981767530488987e+00 4.392728196293872e+00 9.363379995960631e+03 + 176440 1.026934887762462e+00 -5.942564152241033e+00 -6.024869152928494e+00 3.946795811042042e+00 4.474187760436951e+00 9.293537667693627e+03 + 176460 9.643262746744488e-01 -5.856640823299201e+00 -6.043243524375518e+00 4.452964050574058e+00 4.381462464319180e+00 9.350232978009708e+03 + 176480 9.622228501928415e-01 -5.866432140946119e+00 -5.979351165315364e+00 4.465351359180620e+00 4.816952847089865e+00 9.153720817276519e+03 + 176500 1.017832116967643e+00 -5.965125606831761e+00 -5.957745530532303e+00 3.868856059206451e+00 4.911233599381052e+00 9.087752570202163e+03 + 176520 1.017433567174433e+00 -5.986150759726931e+00 -5.996574840893778e+00 3.756004067836588e+00 4.696147380655206e+00 9.206535205818709e+03 + 176540 9.930222311278950e-01 -5.982292797011112e+00 -6.001675132099680e+00 3.776330908978138e+00 4.665034541492919e+00 9.222189405992169e+03 + 176560 9.861831545577099e-01 -6.009778514613711e+00 -6.000547596959232e+00 3.591360911498064e+00 4.644366269149975e+00 9.218732567223518e+03 + 176580 9.316597009560512e-01 -5.966753575799440e+00 -6.010419396320726e+00 3.914271442015075e+00 4.663535543317963e+00 9.249064656808265e+03 + 176600 1.025526785905236e+00 -6.142466004627759e+00 -5.973454646269502e+00 2.997753623759771e+00 4.968242997876060e+00 9.135750588770365e+03 + 176620 9.462601616276066e-01 -6.056752967978743e+00 -5.975517748618122e+00 3.393724623838188e+00 4.860189824516440e+00 9.142045560214367e+03 + 176640 9.011670619671394e-01 -6.008564630661673e+00 -5.987050318340939e+00 3.638765972320290e+00 4.762304482995012e+00 9.177336292623029e+03 + 176660 9.966796216470689e-01 -6.159672891574279e+00 -5.957535956026446e+00 2.893677776457225e+00 5.054379340962562e+00 9.087148268757579e+03 + 176680 9.219297311592743e-01 -6.051616383862637e+00 -5.988385733942934e+00 3.456130164757842e+00 4.819210341508226e+00 9.181419248035869e+03 + 176700 9.413551756788491e-01 -6.076573091528524e+00 -5.982775272770724e+00 3.285393033750096e+00 4.823994624222927e+00 9.164258344655449e+03 + 176720 9.366085423911275e-01 -6.059982859481717e+00 -5.984452788398366e+00 3.378563335425142e+00 4.812268691826462e+00 9.169389978002695e+03 + 176740 9.900897333085992e-01 -6.121477370547104e+00 -6.034307174838750e+00 3.019045418634611e+00 4.519590171936171e+00 9.322674231664401e+03 + 176760 1.016208626664217e+00 -6.138684352411471e+00 -5.976034731547335e+00 2.945690904257302e+00 4.879650197206656e+00 9.143666810559218e+03 + 176780 9.530338097516060e-01 -6.020351127806330e+00 -5.996183317734912e+00 3.620057121595960e+00 4.758832426982567e+00 9.205355316303736e+03 + 176800 9.682745571435608e-01 -6.013069326042160e+00 -6.014277226468020e+00 3.582290433607024e+00 4.575354482439747e+00 9.260961113265390e+03 + 176820 1.034964985437818e+00 -6.083523966701486e+00 -5.976270747699402e+00 3.228375445815947e+00 4.844240026707915e+00 9.144366941808841e+03 + 176840 1.046706980269812e+00 -6.074922323994896e+00 -5.958727702953662e+00 3.344797698668679e+00 5.012005193746935e+00 9.090784587108121e+03 + 176860 9.729612257408558e-01 -5.939948894763692e+00 -5.992114144511187e+00 4.092132258961424e+00 4.792591322365001e+00 9.192833997985492e+03 + 176880 1.045808219335535e+00 -6.028965555909846e+00 -6.022157791351494e+00 3.570869455421531e+00 4.609960693013750e+00 9.285178298920750e+03 + 176900 1.010008580955347e+00 -5.965408432171372e+00 -6.015207980388746e+00 3.896641422386298e+00 4.610684710066951e+00 9.263789287458745e+03 + 176920 1.005127640641504e+00 -5.954505938723486e+00 -6.027085227934097e+00 3.884370831716405e+00 4.467609321460371e+00 9.300384487016729e+03 + 176940 9.555627544458064e-01 -5.878923530376210e+00 -6.029517061893988e+00 4.362844428330418e+00 4.498113066081651e+00 9.307887484672141e+03 + 176960 1.031878666322668e+00 -5.992092723648729e+00 -6.026301731582747e+00 3.720566678130754e+00 4.524133260746755e+00 9.297983062890315e+03 + 176980 1.030501468493919e+00 -5.993810080607679e+00 -6.027687932134070e+00 3.720949259846150e+00 4.526417393801029e+00 9.302253100255897e+03 + 177000 1.011861710735242e+00 -5.971174015409585e+00 -6.015192220348965e+00 3.843089222303855e+00 4.590329877746741e+00 9.263756662825645e+03 + 177020 1.077283415903592e+00 -6.077144595856915e+00 -5.983548868693687e+00 3.287487968117705e+00 4.824929117380934e+00 9.166630095207081e+03 + 177040 9.992791234590713e-01 -5.970257654188434e+00 -6.018758247482945e+00 3.801876922589872e+00 4.523379010450235e+00 9.274745401708929e+03 + 177060 1.018547771974707e+00 -6.008403756146746e+00 -6.048564050568668e+00 3.667033954165444e+00 4.436427328809294e+00 9.366745261832275e+03 + 177080 1.047721774777730e+00 -6.064981210931400e+00 -5.981518061771327e+00 3.386722692244029e+00 4.865981010601759e+00 9.160395649981214e+03 + 177100 1.006422912339376e+00 -6.017832153544813e+00 -5.972037374924797e+00 3.676509755686134e+00 4.939470461241347e+00 9.131390357603161e+03 + 177120 9.534574193096707e-01 -5.953815965971993e+00 -6.003581134927177e+00 3.955494046618929e+00 4.669734745343256e+00 9.228013643765782e+03 + 177140 9.908752202858442e-01 -6.021622809665597e+00 -5.967980052017126e+00 3.615750830627108e+00 4.923775846234551e+00 9.118999245214931e+03 + 177160 9.614031930210879e-01 -5.988527454839986e+00 -6.031834810140364e+00 3.711860041814782e+00 4.463182505888440e+00 9.315038549134284e+03 + 177180 1.002326644091698e+00 -6.059513041006094e+00 -5.971920514750349e+00 3.330810086142860e+00 4.833779926802976e+00 9.131070630262184e+03 + 177200 9.866280742585251e-01 -6.046822787454454e+00 -5.999362828351520e+00 3.464494749147344e+00 4.737017178721324e+00 9.215091025672480e+03 + 177220 9.543133279273504e-01 -6.008833504444504e+00 -6.040366643931398e+00 3.669213383390875e+00 4.488145216719567e+00 9.341382275682156e+03 + 177240 9.826891880629230e-01 -6.063025955178062e+00 -6.019676239398929e+00 3.306663628962859e+00 4.555584405313477e+00 9.277552963327373e+03 + 177260 9.520512127287534e-01 -6.030582628373042e+00 -5.979741654746134e+00 3.569799457794526e+00 4.861736195975477e+00 9.154960439018592e+03 + 177280 9.761273176342086e-01 -6.078354996247361e+00 -6.004397002560967e+00 3.246110445327665e+00 4.670788690037478e+00 9.230556963124951e+03 + 177300 9.463689636241770e-01 -6.045977586164057e+00 -6.019887383478678e+00 3.428035972481918e+00 4.577849953747184e+00 9.278216930187195e+03 + 177320 9.105099355536990e-01 -6.003289513324095e+00 -6.031303729577803e+00 3.659687333202133e+00 4.498825368287389e+00 9.313380585053781e+03 + 177340 9.660354995946909e-01 -6.094436162943923e+00 -5.986877173060761e+00 3.175177971922463e+00 4.792798336531473e+00 9.176818688544845e+03 + 177360 9.677452712961405e-01 -6.101277659220135e+00 -5.960199926664378e+00 3.162853069368813e+00 4.972943241412526e+00 9.095278552114276e+03 + 177380 9.695065632663575e-01 -6.100387625561450e+00 -5.993591795554059e+00 3.155587499180826e+00 4.768825681684550e+00 9.197396083585842e+03 + 177400 9.184628351099136e-01 -6.015468022805097e+00 -6.006232444012744e+00 3.596421893801756e+00 4.649454016428649e+00 9.236199188012950e+03 + 177420 9.757323513045072e-01 -6.083381388651985e+00 -5.995543822581549e+00 3.247039161745378e+00 4.751416058941239e+00 9.203374321615860e+03 + 177440 9.738627608994629e-01 -6.055509332898874e+00 -6.006491603997840e+00 3.433834112417169e+00 4.715301497235937e+00 9.236997630411264e+03 + 177460 9.729432767466634e-01 -6.022174434204733e+00 -6.019835788191788e+00 3.568574074442331e+00 4.582002941752966e+00 9.278049816596711e+03 + 177480 1.010567097004502e+00 -6.043844188261650e+00 -6.002020081086783e+00 3.472729128711060e+00 4.712889624368815e+00 9.223258009128143e+03 + 177500 1.046838689790379e+00 -6.063707549993555e+00 -6.020401433609310e+00 3.318503981268742e+00 4.567174403146924e+00 9.279796936174422e+03 + 177520 1.047895207828843e+00 -6.034157552712553e+00 -6.018955515200203e+00 3.526813423430003e+00 4.614105875333617e+00 9.275328728681496e+03 + 177540 9.747947864616407e-01 -5.901819467142194e+00 -6.013777390753243e+00 4.225418158742682e+00 4.582538435935354e+00 9.259390730265681e+03 + 177560 1.044435484446132e+00 -5.984734454140878e+00 -6.020966056074871e+00 3.754853604802647e+00 4.546806139675381e+00 9.281520098666371e+03 + 177580 9.825187369789184e-01 -5.878139564957324e+00 -6.055614758426344e+00 4.330652679767782e+00 4.311562654671236e+00 9.388514483779221e+03 + 177600 1.033610640802592e+00 -5.946117046457956e+00 -5.975562821386276e+00 3.986851329209644e+00 4.817769132852284e+00 9.142174020956209e+03 + 177620 1.051401740162681e+00 -5.966030114102947e+00 -6.002444266957772e+00 3.854821376102510e+00 4.645725675338161e+00 9.224556684122923e+03 + 177640 1.049381713451125e+00 -5.962132633288412e+00 -6.007581548986621e+00 3.886520938935460e+00 4.625546231799373e+00 9.240332169293963e+03 + 177660 9.805190896069492e-01 -5.863881568056750e+00 -6.048943882728227e+00 4.385172514448403e+00 4.322516065304143e+00 9.367899778239173e+03 + 177680 1.007773931141368e+00 -5.913363828159510e+00 -6.033864980931240e+00 4.161484440444921e+00 4.469548173736524e+00 9.321288782362280e+03 + 177700 1.081299008670981e+00 -6.036451634224500e+00 -5.980814272368226e+00 3.536074928287603e+00 4.855553269920245e+00 9.158259885254047e+03 + 177720 1.016925395234491e+00 -5.963196646737559e+00 -6.021911802465483e+00 3.925874198909861e+00 4.588722688579136e+00 9.284416891603592e+03 + 177740 1.000621605424866e+00 -5.969350885595855e+00 -5.995232699057502e+00 3.855965248210628e+00 4.707347870116161e+00 9.202411273201798e+03 + 177760 1.024212464613263e+00 -6.040286711156051e+00 -5.997837615956288e+00 3.496128393997294e+00 4.739877667610587e+00 9.210416704063970e+03 + 177780 1.049957507498452e+00 -6.121866831766280e+00 -5.988080962447684e+00 3.079712504565480e+00 4.847931669489220e+00 9.180509297216224e+03 + 177800 9.469484199446444e-01 -6.015540840861155e+00 -5.997922419961623e+00 3.622152742640934e+00 4.723320441887872e+00 9.210675361429527e+03 + 177820 9.874079922084479e-01 -6.114482008659087e+00 -5.987281024217284e+00 3.099968749392686e+00 4.830376486346243e+00 9.178053829385133e+03 + 177840 9.275643880409704e-01 -6.054070019104115e+00 -6.009851815184737e+00 3.386322808841023e+00 4.640230578491032e+00 9.247323056627471e+03 + 177860 9.608875470349093e-01 -6.117274389678698e+00 -6.006509681033987e+00 3.058446332238035e+00 4.694474430059236e+00 9.237064270475688e+03 + 177880 9.159610740944811e-01 -6.055447235481718e+00 -5.986380168609575e+00 3.419799282941844e+00 4.816393069015744e+00 9.175309377685726e+03 + 177900 9.378535979777097e-01 -6.086088984682631e+00 -5.971057204520895e+00 3.276390046755703e+00 4.936920329554843e+00 9.128420723134981e+03 + 177920 9.193098434925079e-01 -6.050352181949292e+00 -5.994164043441574e+00 3.446633100253055e+00 4.769274086650702e+00 9.199120006284540e+03 + 177940 9.112216245037928e-01 -6.026070025543798e+00 -6.024605273279377e+00 3.498533446290490e+00 4.506944280462474e+00 9.292731475498413e+03 + 177960 9.215426931825211e-01 -6.025501908228765e+00 -5.989818044867556e+00 3.540886668794511e+00 4.745788934274581e+00 9.185822314302852e+03 + 177980 8.988539311918621e-01 -5.973455859922202e+00 -6.003939407055233e+00 3.810574928913037e+00 4.635533683961500e+00 9.229156028783927e+03 + 178000 9.752132252513728e-01 -6.065807283074414e+00 -5.987346342104764e+00 3.290476884064467e+00 4.741011748903576e+00 9.178245292291795e+03 + 178020 9.837997295469654e-01 -6.055414253407513e+00 -6.019895647101516e+00 3.344732778090987e+00 4.548686111986584e+00 9.278219938160206e+03 + 178040 9.979511480230382e-01 -6.055907473934412e+00 -5.992507185032440e+00 3.392618405927625e+00 4.756672675965749e+00 9.194047545988080e+03 + 178060 9.257600250475497e-01 -5.928643085750463e+00 -6.007843489299198e+00 4.060796923950452e+00 4.606015950550780e+00 9.241116353272499e+03 + 178080 9.337190056765867e-01 -5.920695979805094e+00 -5.984305246792397e+00 4.154367193484552e+00 4.789112938941205e+00 9.168913120700063e+03 + 178100 1.017258640189517e+00 -6.023583284042605e+00 -5.974620436726044e+00 3.567660598039432e+00 4.848812844307260e+00 9.139310587030535e+03 + 178120 1.057495262438576e+00 -6.064280196418083e+00 -5.990672262192798e+00 3.369350051437696e+00 4.792018200550288e+00 9.188443270304868e+03 + 178140 9.302431617042208e-01 -5.860302543759597e+00 -6.090146968428724e+00 4.434471149717234e+00 4.114668894957345e+00 9.495832969047173e+03 + 178160 1.083403816864987e+00 -6.076452107656603e+00 -5.992060666042850e+00 3.278194676834656e+00 4.762783394114216e+00 9.192710153517357e+03 + 178180 9.836250588032699e-01 -5.920564148485058e+00 -6.048031734906729e+00 4.133269736438100e+00 4.401331129659618e+00 9.365083894600730e+03 + 178200 9.930946722779177e-01 -5.931614341212926e+00 -6.031878383742103e+00 4.041484805618371e+00 4.465753157605402e+00 9.315147230036260e+03 + 178220 9.951756995533535e-01 -5.932841274021201e+00 -6.032423554222772e+00 4.007180080578848e+00 4.435363217353368e+00 9.316838803478622e+03 + 178240 1.006975644249011e+00 -5.949478656472123e+00 -6.045019751628504e+00 3.943852218521189e+00 4.395240465196553e+00 9.355780377296418e+03 + 178260 9.916664789592852e-01 -5.931450970399820e+00 -6.009553804992096e+00 4.077166373104860e+00 4.628687810501419e+00 9.246412904839626e+03 + 178280 9.975215051463683e-01 -5.946031456802832e+00 -6.032187152515867e+00 3.953181424560299e+00 4.458462087225229e+00 9.316115416104250e+03 + 178300 1.039595268086907e+00 -6.018172249998901e+00 -6.023762397481839e+00 3.592931461269476e+00 4.560831969349918e+00 9.290131527458898e+03 + 178320 9.980172613266477e-01 -5.973707844745709e+00 -5.961214164238558e+00 3.849331567125344e+00 4.921072213988217e+00 9.098341130389916e+03 + 178340 9.887939718963190e-01 -5.984500457472275e+00 -5.945712267851960e+00 3.739737357977650e+00 4.962465145230447e+00 9.051137954810132e+03 + 178360 9.871481057211928e-01 -6.013930802956386e+00 -5.962212983664378e+00 3.580505917604592e+00 4.877477639285969e+00 9.101400749810924e+03 + 178380 9.727381187262096e-01 -6.033944115851936e+00 -5.951784093572853e+00 3.506953511904297e+00 4.978729074053154e+00 9.069614086120684e+03 + 178400 9.477746673907185e-01 -6.042881243320062e+00 -5.967279121289091e+00 3.482175331854116e+00 4.916294415946526e+00 9.116877039067213e+03 + 178420 9.292865912329386e-01 -6.057907926142990e+00 -5.997289389578915e+00 3.410884126275685e+00 4.758965143914817e+00 9.208733992010342e+03 + 178440 9.208593381717737e-01 -6.078175077567024e+00 -5.990538329809087e+00 3.282819732505419e+00 4.786043499874379e+00 9.188032085093866e+03 + 178460 9.022327472579774e-01 -6.071015445929968e+00 -6.046466498301334e+00 3.247871153175036e+00 4.388835009396017e+00 9.360250485062043e+03 + 178480 8.872720837383771e-01 -6.060623813723814e+00 -6.006174493410626e+00 3.363315868385820e+00 4.675972291629234e+00 9.236017270276376e+03 + 178500 9.110628306468648e-01 -6.097210943416791e+00 -5.980898330223722e+00 3.183626933057273e+00 4.851511957330601e+00 9.158502695275882e+03 + 178520 9.346979709965093e-01 -6.124605874697580e+00 -5.973970115512733e+00 3.051756718846815e+00 4.916730558894601e+00 9.137327862879289e+03 + 178540 9.017508805187439e-01 -6.060825972231974e+00 -5.991775198946760e+00 3.365662245935380e+00 4.762162471711714e+00 9.191808175867889e+03 + 178560 9.626212204154936e-01 -6.129138331424397e+00 -5.946570727580172e+00 2.992227684957942e+00 5.040559118476876e+00 9.053759385410724e+03 + 178580 9.367896250181373e-01 -6.061227818257970e+00 -5.954541162025910e+00 3.393246433097285e+00 5.005857722888469e+00 9.078023294809644e+03 + 178600 9.768803052964884e-01 -6.087517118945788e+00 -5.969433702915037e+00 3.257790933056741e+00 4.935844181254888e+00 9.123460088080217e+03 + 178620 9.672124210046233e-01 -6.043061596373003e+00 -5.979214357346669e+00 3.483923019488819e+00 4.850543746306337e+00 9.153362906925991e+03 + 178640 9.491985784725766e-01 -5.991267570492515e+00 -5.982162752076092e+00 3.754660196283434e+00 4.806941472596632e+00 9.162380396606037e+03 + 178660 1.001549348545947e+00 -6.049425843812911e+00 -5.990697437612562e+00 3.437255081815271e+00 4.774482678409167e+00 9.188503084400150e+03 + 178680 9.730459136525558e-01 -5.991419880571842e+00 -5.963752812885994e+00 3.700478083316173e+00 4.859346667433201e+00 9.106122171162719e+03 + 178700 1.010300858579606e+00 -6.032993587332658e+00 -5.954144780519288e+00 3.556648975299374e+00 5.009411025835170e+00 9.076794050853048e+03 + 178720 1.058121060290484e+00 -6.091756509058480e+00 -5.926388788916959e+00 3.189650574259390e+00 5.139217613883992e+00 8.992455103290677e+03 + 178740 9.566449514252516e-01 -5.930526685986979e+00 -6.011944271847286e+00 4.061905411665405e+00 4.594393034324832e+00 9.253715199165885e+03 + 178760 9.831735096126760e-01 -5.959020580674279e+00 -5.978488591793916e+00 3.903790093928747e+00 4.792001761414807e+00 9.151099867653829e+03 + 178780 1.007462610216310e+00 -5.982920356313245e+00 -5.986881165954163e+00 3.815419569490058e+00 4.792675987598595e+00 9.176776911325174e+03 + 178800 1.043023195872440e+00 -6.022410827708279e+00 -5.992187197687645e+00 3.570429675428799e+00 4.743978436098907e+00 9.193067834598593e+03 + 178820 1.003676221135294e+00 -5.953126111065577e+00 -6.013168170476298e+00 3.949690102321434e+00 4.604919305706408e+00 9.257516582895763e+03 + 178840 9.958779376691825e-01 -5.933770854408212e+00 -6.056828633338899e+00 4.006125803290432e+00 4.299508993540682e+00 9.392348326357436e+03 + 178860 1.009868684194753e+00 -5.950956142775554e+00 -5.985098770194756e+00 3.960698202332261e+00 4.764645952136685e+00 9.171361412638780e+03 + 178880 9.762769749423450e-01 -5.898784006602943e+00 -6.058612490337696e+00 4.187258563136266e+00 4.269498676153394e+00 9.397858440911003e+03 + 178900 1.006640121235364e+00 -5.944359315340793e+00 -6.060830697584284e+00 3.976504014301752e+00 4.307707313571475e+00 9.404733106452702e+03 + 178920 9.717983411397244e-01 -5.900295718591179e+00 -6.021503190961872e+00 4.191014139051394e+00 4.495022075903144e+00 9.283164598731792e+03 + 178940 1.030659499707377e+00 -5.996625876225156e+00 -5.981431638044052e+00 3.658134626043470e+00 4.745382292980128e+00 9.160131704667461e+03 + 178960 1.011796289291045e+00 -5.982716284680880e+00 -6.012987351698850e+00 3.723997173714047e+00 4.550176022464380e+00 9.256943445712575e+03 + 178980 1.018257619323644e+00 -6.013704217700987e+00 -5.973464872841347e+00 3.628367248878446e+00 4.859427794080993e+00 9.135783833728425e+03 + 179000 1.005538090894788e+00 -6.022087831101407e+00 -5.977779086127667e+00 3.552395327021677e+00 4.806822997417017e+00 9.148962021415457e+03 + 179020 9.871773140059937e-01 -6.028503108937826e+00 -5.984509502906627e+00 3.537739495819350e+00 4.790357589639033e+00 9.169559461192624e+03 + 179040 9.890512577211202e-01 -6.069683592325773e+00 -5.974265169644680e+00 3.367460473203514e+00 4.915367822191534e+00 9.138209740485972e+03 + 179060 9.377698894894231e-01 -6.027600280103387e+00 -6.010229288557836e+00 3.524972712865041e+00 4.624719634471851e+00 9.248485839929061e+03 + 179080 9.508318063647958e-01 -6.075193199059759e+00 -5.989946598641268e+00 3.292002636339630e+00 4.781501807811392e+00 9.186244201559197e+03 + 179100 9.231533208151848e-01 -6.055070885938232e+00 -6.014230034638274e+00 3.422526461153692e+00 4.657040949419361e+00 9.260793235007475e+03 + 179120 9.670173527204713e-01 -6.135990584641366e+00 -5.975899760853457e+00 2.947278554195161e+00 4.866544838360255e+00 9.143235117886206e+03 + 179140 9.231424382349311e-01 -6.079468550606004e+00 -5.964979917689194e+00 3.267363978886650e+00 4.924775426153656e+00 9.109867912921512e+03 + 179160 8.972243785825634e-01 -6.040742675362394e+00 -6.016293343222900e+00 3.420850022581818e+00 4.561241871248716e+00 9.267123491028213e+03 + 179180 9.333702165616738e-01 -6.084953667060239e+00 -5.996722206386099e+00 3.234693947365735e+00 4.741332648331061e+00 9.206989927817067e+03 + 179200 8.887356777233024e-01 -6.000264399202305e+00 -5.990046786677777e+00 3.638971343030065e+00 4.697642455316334e+00 9.186528907809345e+03 + 179220 9.371855584504322e-01 -6.045983406395718e+00 -5.960070389854783e+00 3.438142346960688e+00 4.931468182935078e+00 9.094873876913249e+03 + 179240 9.424316522481940e-01 -6.015384537145374e+00 -6.030580222830965e+00 3.557461797380223e+00 4.470205818648800e+00 9.311161047273165e+03 + 179260 1.024691559280740e+00 -6.096939028048443e+00 -5.983375080803297e+00 3.140664189792147e+00 4.792765948837809e+00 9.166082095115918e+03 + 179280 9.777150200799675e-01 -5.988629774841272e+00 -5.955095023445792e+00 3.821675998350145e+00 5.014237730348997e+00 9.079700331290989e+03 + 179300 1.008927886205068e+00 -6.003358959666291e+00 -5.960030964866531e+00 3.704605956807700e+00 4.953402007933446e+00 9.094781385543050e+03 + 179320 1.058937543266019e+00 -6.056604242083179e+00 -6.007697801278803e+00 3.390539854463767e+00 4.671368205809753e+00 9.240714986475432e+03 + 179340 1.029438621065921e+00 -6.002930940880934e+00 -6.008335628418729e+00 3.735784470820268e+00 4.704749918605553e+00 9.242653323019065e+03 + 179360 9.323305601847687e-01 -5.854876623007066e+00 -5.988868639655203e+00 4.466991728634019e+00 4.697588833842857e+00 9.182904365762872e+03 + 179380 1.027891388580157e+00 -5.992853569818510e+00 -5.991610031377688e+00 3.684136522282514e+00 4.691277112446668e+00 9.191289617666527e+03 + 179400 9.816833079571915e-01 -5.921361948842689e+00 -5.981853514751498e+00 4.137564267948997e+00 4.790212335461043e+00 9.161408582209699e+03 + 179420 1.039203551354381e+00 -6.005047944980960e+00 -5.979298919164639e+00 3.716528525818559e+00 4.864383416704744e+00 9.153617089864681e+03 + 179440 1.024848111434919e+00 -5.984294333058598e+00 -6.035633382749717e+00 3.766534035106983e+00 4.471737267088313e+00 9.326739739346780e+03 + 179460 9.964425804936998e-01 -5.945395427747669e+00 -6.012848512276618e+00 3.982313260833368e+00 4.594987211137051e+00 9.256524325654116e+03 + 179480 1.023485143748230e+00 -5.990653363323336e+00 -6.014480964394620e+00 3.735142709534104e+00 4.598320936873444e+00 9.261565108518471e+03 + 179500 1.019145035002925e+00 -5.992163656984376e+00 -5.982641933271649e+00 3.832732271345608e+00 4.887407482386063e+00 9.163833087530053e+03 + 179520 1.021874916670919e+00 -6.006649160567449e+00 -5.980320686409351e+00 3.693644791106322e+00 4.844826964040322e+00 9.156750300003707e+03 + 179540 1.006258087077832e+00 -5.996510247440908e+00 -5.982869821445139e+00 3.778982520214743e+00 4.857307957131548e+00 9.164529722401407e+03 + 179560 9.579271034967214e-01 -5.941022847127870e+00 -5.988549636047189e+00 4.015106506577621e+00 4.742200329856078e+00 9.181915556479495e+03 + 179580 1.005944902811730e+00 -6.025961629892605e+00 -5.976379800892399e+00 3.531275182540387e+00 4.815981717422812e+00 9.144668624265430e+03 + 179600 9.560055416991273e-01 -5.967044835269899e+00 -5.986194806024526e+00 3.830053556469882e+00 4.720091460948421e+00 9.174709618057143e+03 + 179620 1.002016564192858e+00 -6.050628611469199e+00 -5.944529282037625e+00 3.459724824957692e+00 5.068963593371955e+00 9.047529406118811e+03 + 179640 9.275264593171521e-01 -5.954692606041387e+00 -5.995558704671607e+00 3.932655585318110e+00 4.697996122975065e+00 9.203398252011750e+03 + 179660 9.947450432442272e-01 -6.068989935616901e+00 -5.967144780562403e+00 3.278629757043341e+00 4.863440397853076e+00 9.116458418732631e+03 + 179680 9.628414125133123e-01 -6.035286530964840e+00 -5.984770047064842e+00 3.508980961702016e+00 4.799054429656422e+00 9.170318096442701e+03 + 179700 9.184617308834511e-01 -5.981321522261661e+00 -6.009654223250839e+00 3.757573621802128e+00 4.594882868250962e+00 9.246702149024228e+03 + 179720 9.696047206517507e-01 -6.068112142322871e+00 -5.992258557166714e+00 3.340478219910946e+00 4.776041244181966e+00 9.193304579047266e+03 + 179740 9.827059840701606e-01 -6.098398263427691e+00 -5.951967790338935e+00 3.170177198443020e+00 5.011003634961133e+00 9.070188539496932e+03 + 179760 9.345088298382044e-01 -6.033619293424791e+00 -5.986099712647723e+00 3.520510874241725e+00 4.793375660695006e+00 9.174398317039160e+03 + 179780 9.078825465894179e-01 -5.995169451688890e+00 -5.976390910858860e+00 3.770089147918263e+00 4.877918435334101e+00 9.144699753438297e+03 + 179800 9.840094398934990e-01 -6.101616715723819e+00 -6.013930840786265e+00 3.132570724973893e+00 4.636076588210620e+00 9.259872237248999e+03 + 179820 9.683153559832544e-01 -6.065401234054118e+00 -6.001942708276190e+00 3.336215925307922e+00 4.700604600499908e+00 9.223031953096741e+03 + 179840 9.044883609414539e-01 -5.951506467680859e+00 -6.013466749991403e+00 3.929424326123033e+00 4.573638796773192e+00 9.258453162901389e+03 + 179860 9.745267207657654e-01 -6.027651913954385e+00 -5.973026552302374e+00 3.512244285503057e+00 4.825911565356297e+00 9.134444866508455e+03 + 179880 9.353581158889364e-01 -5.933751050919922e+00 -6.015936596591660e+00 4.038539127325994e+00 4.566617005906793e+00 9.266027967059046e+03 + 179900 1.019350959973823e+00 -6.016851107430098e+00 -6.044048730719568e+00 3.581368127410697e+00 4.425195165663951e+00 9.352777512456874e+03 + 179920 1.046110029502650e+00 -6.021224697310109e+00 -6.010653739949583e+00 3.640411302852100e+00 4.701111375866608e+00 9.249784246075938e+03 + 179940 1.061253136921800e+00 -6.016704509793685e+00 -6.022602480689760e+00 3.544186570535905e+00 4.510319508942597e+00 9.286583549433466e+03 + 179960 9.630192247999988e-01 -5.850242475035231e+00 -6.067149708700074e+00 4.500469484641711e+00 4.254954582652253e+00 9.424341429080398e+03 + 179980 9.797844444306657e-01 -5.861742335694476e+00 -6.082488324250414e+00 4.386958660376444e+00 4.119401033756925e+00 9.471990648827617e+03 + 180000 1.034786354841392e+00 -5.936007848877723e+00 -6.022929515221119e+00 4.048403840447799e+00 4.549286181219628e+00 9.287542255518287e+03 + 180020 1.021964502611247e+00 -5.915192273264887e+00 -5.977865700479429e+00 4.136323202301416e+00 4.776442684553996e+00 9.149185241295132e+03 + 180040 9.913971663599148e-01 -5.871044258698255e+00 -6.065832911568029e+00 4.287052993332116e+00 4.168546405107265e+00 9.420195120295768e+03 + 180060 1.035697380772151e+00 -5.941843679182977e+00 -6.027278295111419e+00 4.012234641611554e+00 4.521655855986352e+00 9.300956189061377e+03 + 180080 1.018935140786330e+00 -5.928795451468694e+00 -6.039111031504174e+00 4.067731467750102e+00 4.434282335905537e+00 9.337504061438123e+03 + 180100 1.010760262180409e+00 -5.934412530656129e+00 -6.041448931487182e+00 4.075035024523258e+00 4.460415447121858e+00 9.344721412534369e+03 + 180120 1.021376235574492e+00 -5.974982648285839e+00 -5.986903888836091e+00 3.821035840641998e+00 4.752582232596443e+00 9.176895032975068e+03 + 180140 1.055138182449216e+00 -6.056332963733523e+00 -5.949852735617117e+00 3.408901288736006e+00 5.020327236342451e+00 9.063726648728303e+03 + 180160 9.627915541490045e-01 -5.953160429210146e+00 -5.978247893955608e+00 3.917014696584656e+00 4.772958591743595e+00 9.150335025198850e+03 + 180180 1.053868765815246e+00 -6.125249043554541e+00 -5.915496207625521e+00 2.993934998562399e+00 5.198368241613286e+00 8.959473277017731e+03 + 180200 9.352082602154845e-01 -5.983727611234171e+00 -6.012549128268754e+00 3.736285148794207e+00 4.570787537866283e+00 9.255609204215447e+03 + 180220 9.303007313691823e-01 -6.005093531989797e+00 -6.038229363864311e+00 3.617557024719403e+00 4.427285950342535e+00 9.334786571325480e+03 + 180240 8.897454525751072e-01 -5.967483225944779e+00 -6.032740080439469e+00 3.866941955732087e+00 4.492226998757985e+00 9.317824489479384e+03 + 180260 9.591163506030060e-01 -6.084811682175545e+00 -6.027357465046377e+00 3.218172571918331e+00 4.548083577685383e+00 9.301243993768687e+03 + 180280 9.813306391577704e-01 -6.128198512844894e+00 -5.972916434146478e+00 3.034131638916488e+00 4.925785364626806e+00 9.134107367971821e+03 + 180300 9.294405989803959e-01 -6.053561753809691e+00 -5.992886904589620e+00 3.460944095540228e+00 4.809348469164444e+00 9.195231573545969e+03 + 180320 9.814610239191737e-01 -6.126289771798487e+00 -5.982460732193657e+00 3.033015264383551e+00 4.858903867266429e+00 9.163289963507241e+03 + 180340 8.859763563462557e-01 -5.976464151159750e+00 -6.008574607287054e+00 3.849780846816632e+00 4.665397638656623e+00 9.243397445467770e+03 + 180360 9.937822301540788e-01 -6.125871504516959e+00 -5.953761009505927e+00 3.077362756662007e+00 5.065647853028382e+00 9.075646805621665e+03 + 180380 9.513988772968641e-01 -6.050947943554001e+00 -5.992729448213415e+00 3.434748916071980e+00 4.769048525600658e+00 9.194743507410172e+03 + 180400 9.720348401335628e-01 -6.069932066837446e+00 -5.965833130725153e+00 3.321297772676080e+00 4.919049973091170e+00 9.112461635631780e+03 + 180420 9.318507708208762e-01 -5.998007362083089e+00 -5.971642521872344e+00 3.749094675624184e+00 4.900485668060123e+00 9.130183590360770e+03 + 180440 9.637426235716429e-01 -6.030678129729671e+00 -5.999909229737474e+00 3.532975616246512e+00 4.709655401473595e+00 9.216740282601842e+03 + 180460 9.474128483537408e-01 -5.990077015741282e+00 -6.020259309910871e+00 3.715000773646942e+00 4.541689369830237e+00 9.279338794072431e+03 + 180480 9.519713512578222e-01 -5.981170207002066e+00 -5.992049720863887e+00 3.817216802694582e+00 4.754744950500677e+00 9.192636281517800e+03 + 180500 9.997220244895449e-01 -6.033960625086773e+00 -5.998149983193220e+00 3.480817749369180e+00 4.686447996800887e+00 9.211350322908525e+03 + 180520 9.773977577984200e-01 -5.981245144075377e+00 -6.048917184257764e+00 3.769842845941346e+00 4.381259518999704e+00 9.367824850745175e+03 + 180540 9.945423629088589e-01 -5.989457279287903e+00 -5.996486524527907e+00 3.769576460176713e+00 4.729213446236423e+00 9.206275913183439e+03 + 180560 9.842490220213659e-01 -5.957960818224442e+00 -6.005897735877062e+00 3.891726185723779e+00 4.616464986348403e+00 9.235163388349241e+03 + 180580 1.010210368020916e+00 -5.980709151072529e+00 -6.010153022099554e+00 3.760891811554489e+00 4.591820547692993e+00 9.248229497802486e+03 + 180600 1.018155795866661e+00 -5.978469711566603e+00 -5.948584929340415e+00 3.808760787553420e+00 4.980363831751299e+00 9.059862867219206e+03 + 180620 9.896673065011419e-01 -5.922801113711766e+00 -5.948700044964703e+00 4.133483363737769e+00 4.984767692636747e+00 9.060188716152341e+03 + 180640 1.040634496558391e+00 -5.982654885227849e+00 -5.931546472023783e+00 3.846027434189356e+00 5.139499851808493e+00 9.008066354660854e+03 + 180660 1.054466098703342e+00 -5.987283417838095e+00 -5.976390766895032e+00 3.769379459644987e+00 4.831926746992342e+00 9.144693828139914e+03 + 180680 1.072121812772743e+00 -5.998508477302567e+00 -6.009372847582433e+00 3.661292629441542e+00 4.598907734038688e+00 9.245864668121043e+03 + 180700 1.029446243351263e+00 -5.925391042147684e+00 -6.030153459261540e+00 4.070408716620914e+00 4.468846705621498e+00 9.309854418099128e+03 + 180720 1.017783625385705e+00 -5.903836249382018e+00 -6.026722451811116e+00 4.219930977266966e+00 4.514299386340717e+00 9.299249180682602e+03 + 180740 1.047962300133713e+00 -5.950878851328903e+00 -5.984033563167922e+00 3.999506148439217e+00 4.809126662384491e+00 9.168069594804532e+03 + 180760 1.021452290013906e+00 -5.917787674345241e+00 -5.979346787758189e+00 4.168255542949527e+00 4.814773587490365e+00 9.153657106734150e+03 + 180780 1.069411874842502e+00 -6.000884360594074e+00 -6.003374397619430e+00 3.644234710694995e+00 4.629936532763420e+00 9.227367217092431e+03 + 180800 1.052178118993749e+00 -5.998189073513588e+00 -6.033366883989587e+00 3.676855684028539e+00 4.474859252526775e+00 9.319763575529145e+03 + 180820 9.999655913702344e-01 -5.960333866323841e+00 -6.024999851625926e+00 3.894886833772555e+00 4.523564739139104e+00 9.293971033985450e+03 + 180840 9.477815705279524e-01 -5.931721242374710e+00 -6.024159962931067e+00 4.004369047686163e+00 4.473571609405782e+00 9.291344154125045e+03 + 180860 9.067995289209830e-01 -5.914762835906449e+00 -5.991048422788839e+00 4.125150687631036e+00 4.687107042595939e+00 9.189563819038076e+03 + 180880 9.178455460076030e-01 -5.964447884656017e+00 -5.965002752491132e+00 3.906444676518987e+00 4.903258539544236e+00 9.109922636371053e+03 + 180900 9.799435348963781e-01 -6.080037042714024e+00 -5.958434110931577e+00 3.284826886974150e+00 4.983089739261835e+00 9.089874206822165e+03 + 180920 1.064910560510838e+00 -6.220574776712455e+00 -5.933675206651498e+00 2.530123336567668e+00 5.177545065422666e+00 9.014583946248693e+03 + 180940 9.060692503607407e-01 -5.994232631079623e+00 -6.035949440150567e+00 3.748875002999614e+00 4.509330629658915e+00 9.327755086621299e+03 + 180960 9.233509983673189e-01 -6.025901219368020e+00 -6.028188475182017e+00 3.553143558193124e+00 4.540009781357462e+00 9.303785272401401e+03 + 180980 9.682015875231426e-01 -6.092225490543352e+00 -6.013201145831619e+00 3.257206037340018e+00 4.710976053652608e+00 9.257620623006997e+03 + 181000 1.018504547750321e+00 -6.162004995173548e+00 -5.972158783986933e+00 2.855533141078936e+00 4.945659464318720e+00 9.131798834548035e+03 + 181020 9.701680392607483e-01 -6.080433280246861e+00 -5.979518683457886e+00 3.273981175184143e+00 4.853448406429822e+00 9.154262739934687e+03 + 181040 9.128067485052869e-01 -5.978898734478824e+00 -5.995233002675540e+00 3.807360898902805e+00 4.713567003197435e+00 9.202416061333541e+03 + 181060 1.004570593788307e+00 -6.091190967988172e+00 -5.982067103083709e+00 3.175022236763096e+00 4.801628355908043e+00 9.162103737942607e+03 + 181080 1.012316984249455e+00 -6.071801671111086e+00 -5.986304234634141e+00 3.306633323695874e+00 4.797572834632027e+00 9.175049379093149e+03 + 181100 1.008274168518649e+00 -6.030960373132744e+00 -5.993919115160687e+00 3.566328688013135e+00 4.779025323404829e+00 9.198392555268409e+03 + 181120 1.014927996834015e+00 -6.008039738705468e+00 -5.974319866054709e+00 3.648278703347180e+00 4.841903430241265e+00 9.138395638564672e+03 + 181140 9.840754200499160e-01 -5.927501650599653e+00 -6.049296315422483e+00 4.095285090908090e+00 4.395921277831934e+00 9.368973477556608e+03 + 181160 1.031279684695693e+00 -5.970283916150835e+00 -6.005401794949570e+00 3.836605113585409e+00 4.634952819048888e+00 9.233641311024739e+03 + 181180 1.006286508171421e+00 -5.914263726271347e+00 -6.041621131880399e+00 4.158951308915015e+00 4.427645377413013e+00 9.345244482935343e+03 + 181200 1.023514089641117e+00 -5.928765921253950e+00 -6.011508444612775e+00 4.111146267240811e+00 4.636025893750329e+00 9.252416473560706e+03 + 181220 1.063272892422102e+00 -5.983801920162226e+00 -6.000292894068529e+00 3.773935427105247e+00 4.679241702965292e+00 9.217943858192886e+03 + 181240 1.011956326173096e+00 -5.908547431586107e+00 -6.013489568175513e+00 4.226937900248498e+00 4.624343912208976e+00 9.258485524364023e+03 + 181260 9.866250551073861e-01 -5.876125302965813e+00 -6.023194845714832e+00 4.321422196289584e+00 4.476926122886536e+00 9.288384349938933e+03 + 181280 1.027143618065350e+00 -5.943022183082362e+00 -5.983707646265501e+00 4.032676889092916e+00 4.799054663440251e+00 9.167103095490966e+03 + 181300 1.012083913897663e+00 -5.928831831996433e+00 -6.002603534510957e+00 4.110802319947798e+00 4.687193787975337e+00 9.225038817200822e+03 + 181320 1.025666181159366e+00 -5.956695652373408e+00 -5.994424052261999e+00 3.907651378289242e+00 4.691009067677943e+00 9.199927434518446e+03 + 181340 1.045972180937544e+00 -5.996111723454984e+00 -5.990664668300277e+00 3.737836641593027e+00 4.769114475220414e+00 9.188394325549456e+03 + 181360 9.764574273876603e-01 -5.904425822425165e+00 -6.005718857258745e+00 4.269492475938604e+00 4.687852194877708e+00 9.234598354100177e+03 + 181380 1.091612123159539e+00 -6.088281757507255e+00 -5.975327740338939e+00 3.250804414603619e+00 4.899403860761762e+00 9.141465230438718e+03 + 181400 9.892569978854406e-01 -5.950661130487217e+00 -5.974389520249618e+00 4.039696503150343e+00 4.903444417178185e+00 9.138573930637020e+03 + 181420 9.965602519826430e-01 -5.973002526749511e+00 -6.014464292203127e+00 3.811565342221249e+00 4.573485468799119e+00 9.261491126913132e+03 + 181440 9.806594498431351e-01 -5.960618993042701e+00 -6.007925585841321e+00 3.920236454761281e+00 4.648594678240023e+00 9.241350152101633e+03 + 181460 9.639201710825499e-01 -5.946025956665160e+00 -6.035719892436476e+00 3.949785333130235e+00 4.434748873839634e+00 9.327034800685546e+03 + 181480 9.898659960385122e-01 -5.997002751450939e+00 -6.011978729749038e+00 3.735061032171536e+00 4.649066647258698e+00 9.253841279035378e+03 + 181500 1.019081878738118e+00 -6.052346730319625e+00 -5.947039479155590e+00 3.450234818326094e+00 5.054925350754438e+00 9.055184820908818e+03 + 181520 9.471894848870266e-01 -5.954985100573234e+00 -5.960410280467213e+00 3.931688534900137e+00 4.900536312405035e+00 9.095923045883712e+03 + 181540 9.645158102101971e-01 -5.986977141201313e+00 -5.957549642916633e+00 3.766383766969418e+00 4.935361016010694e+00 9.087212506021617e+03 + 181560 1.009162946036698e+00 -6.054372210780657e+00 -5.985837615594498e+00 3.383785447637797e+00 4.777321698891047e+00 9.173631161931533e+03 + 181580 1.026040787949162e+00 -6.080601431499735e+00 -6.001384088166795e+00 3.250861485743189e+00 4.705739730005195e+00 9.221314234456337e+03 + 181600 9.818197038578823e-01 -6.018052330433643e+00 -5.998322851922516e+00 3.633428646336736e+00 4.746718365074555e+00 9.211896176602591e+03 + 181620 9.628893040335789e-01 -5.992927832365296e+00 -6.005791180725057e+00 3.731230005158143e+00 4.657366668279667e+00 9.234827636194381e+03 + 181640 1.003982993014364e+00 -6.054138229741735e+00 -6.033054619961514e+00 3.355666582969798e+00 4.476731933005894e+00 9.318821140968934e+03 + 181660 9.727142675398996e-01 -6.008020510485025e+00 -6.020887597527756e+00 3.674808344974523e+00 4.600923539999876e+00 9.281279855941930e+03 + 181680 9.462944864764442e-01 -5.967570993569518e+00 -6.000801972144816e+00 3.827267807945716e+00 4.636450386489038e+00 9.219505517986767e+03 + 181700 1.030273791933878e+00 -6.086919811274250e+00 -5.985254661066538e+00 3.171012012461752e+00 4.754789037585590e+00 9.171857187011457e+03 + 181720 9.905825826729636e-01 -6.019610500052217e+00 -6.017171695440518e+00 3.595052142539841e+00 4.609056136024011e+00 9.269842862509262e+03 + 181740 1.002613845302332e+00 -6.029154923628338e+00 -6.039000815458850e+00 3.520688067682312e+00 4.464151433144679e+00 9.337161466928632e+03 + 181760 9.808623118470851e-01 -5.987281176919955e+00 -6.015581206666042e+00 3.811203192185828e+00 4.648700041968345e+00 9.264931545141821e+03 + 181780 1.006858030373523e+00 -6.014567237880800e+00 -6.016684801417337e+00 3.545889455671579e+00 4.533730078152889e+00 9.268354181145247e+03 + 181800 9.707834853625439e-01 -5.948055536058483e+00 -6.014894104598900e+00 3.999406044982323e+00 4.615608641188194e+00 9.262805408062719e+03 + 181820 1.015050267280861e+00 -5.999572886907787e+00 -6.018093331935707e+00 3.724765529327150e+00 4.618418267947228e+00 9.272680854611132e+03 + 181840 9.874341760438577e-01 -5.945782150646543e+00 -5.989470236874347e+00 3.990672448190378e+00 4.739808696360837e+00 9.184740204843290e+03 + 181860 1.028764960934823e+00 -5.993728989352462e+00 -5.991714181186871e+00 3.737810697251242e+00 4.749380037528624e+00 9.191606693291553e+03 + 181880 1.094871989340855e+00 -6.077376192462176e+00 -6.023687855040802e+00 3.272991245312908e+00 4.581277987029804e+00 9.289902479639015e+03 + 181900 1.061484943226851e+00 -6.018743641128387e+00 -5.997678261901029e+00 3.606192628960282e+00 4.727153296340671e+00 9.209930227679331e+03 + 181920 1.041770129689278e+00 -5.984723358621962e+00 -5.981417142040281e+00 3.855636900533377e+00 4.874621707780751e+00 9.160090388246912e+03 + 181940 1.089693812783205e+00 -6.052619385536496e+00 -5.999148656113325e+00 3.406772059186081e+00 4.713809262102561e+00 9.214438445125801e+03 + 181960 1.057743810563610e+00 -6.005909495032145e+00 -5.990143219052668e+00 3.710765509769440e+00 4.801297906266917e+00 9.186811848488474e+03 + 181980 1.019357929555168e+00 -5.953914669978669e+00 -5.977523997605832e+00 3.955347151034168e+00 4.819778738267356e+00 9.148161395016159e+03 + 182000 1.015788569884573e+00 -5.958131039905917e+00 -5.972259121410397e+00 3.962478390695513e+00 4.881352760383236e+00 9.132029114260142e+03 + 182020 1.064769751724360e+00 -6.041710444403511e+00 -6.000523814358916e+00 3.440238306651224e+00 4.676738309977686e+00 9.218657846795448e+03 + 182040 1.017575686263339e+00 -5.987984033952788e+00 -6.058971198967568e+00 3.718402305095835e+00 4.310783018352685e+00 9.398948948001018e+03 + 182060 9.526618395678402e-01 -5.914395069367944e+00 -6.039496186059900e+00 4.152639695031388e+00 4.434289723650941e+00 9.338678107251872e+03 + 182080 9.885129185707038e-01 -5.993515333089393e+00 -5.974206971427144e+00 3.793987370150671e+00 4.904858970774615e+00 9.138043109810415e+03 + 182100 1.025382237816900e+00 -6.075618811728842e+00 -6.020398045814337e+00 3.311073200813982e+00 4.628159384080975e+00 9.279786079496715e+03 + 182120 1.030362623954514e+00 -6.115355815721492e+00 -6.004645382018563e+00 3.049354077727444e+00 4.685070520433909e+00 9.231331267822487e+03 + 182140 9.566262185284485e-01 -6.038505121121864e+00 -5.993531985218322e+00 3.539655412234968e+00 4.797898118163396e+00 9.197200573994960e+03 + 182160 9.162558026861913e-01 -6.003606004133784e+00 -6.007288976372581e+00 3.654977966857007e+00 4.633829770323722e+00 9.239431585200222e+03 + 182180 9.696037854035258e-01 -6.102125674718873e+00 -6.019935994545732e+00 3.104455553000762e+00 4.576401415366838e+00 9.278353660428995e+03 + 182200 9.880939815007709e-01 -6.145174583963687e+00 -5.952926634122242e+00 2.936739437178391e+00 5.040656915442060e+00 9.073127942151788e+03 + 182220 9.428936785225798e-01 -6.087241863139080e+00 -5.975155516653115e+00 3.228181795963988e+00 4.871798942792462e+00 9.140931217104158e+03 + 182240 9.138093616092147e-01 -6.045415221885472e+00 -5.960576345475547e+00 3.456477976553503e+00 4.943635933672985e+00 9.096403361594543e+03 + 182260 9.487712667746948e-01 -6.090045164192873e+00 -5.954285701984497e+00 3.208953387805698e+00 4.988505228515075e+00 9.077253970347027e+03 + 182280 9.427556601355718e-01 -6.063709840726833e+00 -5.986174803162628e+00 3.297467833015790e+00 4.742686017217740e+00 9.174664970982583e+03 + 182300 8.902619345958647e-01 -5.960782122354770e+00 -5.971262151856626e+00 3.860305120718892e+00 4.800127169539909e+00 9.129032329552932e+03 + 182320 9.750626195912316e-01 -6.047424575175914e+00 -5.969191930254336e+00 3.432176476944995e+00 4.881400430547372e+00 9.122713389470387e+03 + 182340 1.071867747953989e+00 -6.137360215123249e+00 -5.982502580395765e+00 2.962311786894896e+00 4.851528289641639e+00 9.163423512453041e+03 + 182360 1.006009586177461e+00 -5.989125516484894e+00 -6.052758565948650e+00 3.744885861569823e+00 4.379495044366356e+00 9.379731369936144e+03 + 182380 1.053304915955003e+00 -6.024674997382701e+00 -6.027244994813511e+00 3.539827538110176e+00 4.525070215156649e+00 9.300873107805835e+03 + 182400 9.849575935930915e-01 -5.904078422813933e+00 -6.052561078503235e+00 4.221867901915020e+00 4.369257515330344e+00 9.379100441236973e+03 + 182420 1.015316062399475e+00 -5.939904462427696e+00 -6.039133959521897e+00 4.028242866031373e+00 4.458451738001427e+00 9.337562864809912e+03 + 182440 1.072179257331362e+00 -6.021934726972622e+00 -6.002161625374856e+00 3.592829900283994e+00 4.706370109535952e+00 9.223671936789746e+03 + 182460 9.501501885831585e-01 -5.843924629358502e+00 -5.970709826570117e+00 4.585252472113124e+00 4.857232249778170e+00 9.127309220774854e+03 + 182480 9.716649654670941e-01 -5.876658844571335e+00 -5.955358418695038e+00 4.350314800914693e+00 4.898409667576654e+00 9.080490098232032e+03 + 182500 1.105768289425222e+00 -6.077192317261938e+00 -5.977519966482068e+00 3.249871428120305e+00 4.822205490544753e+00 9.148154239991345e+03 + 182520 1.022767804765886e+00 -5.958758662483815e+00 -6.031614862710540e+00 3.882850422084541e+00 4.464498845922138e+00 9.314350662081333e+03 + 182540 1.002489569450779e+00 -5.936652882064885e+00 -6.033063051255612e+00 4.038260676730509e+00 4.484658565811884e+00 9.318844812148560e+03 + 182560 1.084657948399603e+00 -6.072089857274799e+00 -6.002128159727716e+00 3.320091827580915e+00 4.721822721433968e+00 9.223605591811534e+03 + 182580 1.067050310330299e+00 -6.064777866087181e+00 -6.003331510230780e+00 3.359000808374712e+00 4.711835292495010e+00 9.227260104333391e+03 + 182600 9.564823493849928e-01 -5.922446449569024e+00 -6.022011401854908e+00 4.150577474668788e+00 4.578860111016668e+00 9.284751193730981e+03 + 182620 9.441944083056689e-01 -5.927197829985434e+00 -6.006078754417603e+00 4.087493737974933e+00 4.634547263101816e+00 9.235703042022618e+03 + 182640 1.036913740959963e+00 -6.086524645344479e+00 -5.990094939801179e+00 3.202702660057022e+00 4.756416951735356e+00 9.186657670220742e+03 + 182660 9.890626708118589e-01 -6.037048878787637e+00 -6.013357961311989e+00 3.522538927428304e+00 4.658575841731103e+00 9.258108052580928e+03 + 182680 1.000888646270679e+00 -6.075716114045341e+00 -5.962188197127944e+00 3.268042379299279e+00 4.919937246627335e+00 9.101336107667823e+03 + 182700 9.901298427721023e-01 -6.077392185884660e+00 -5.991063240596166e+00 3.278199255167244e+00 4.773913418374891e+00 9.189626347437672e+03 + 182720 9.620443388576426e-01 -6.049509329389321e+00 -6.014866968031617e+00 3.439066830102729e+00 4.637988629906757e+00 9.262718295569270e+03 + 182740 9.784743672164511e-01 -6.085900908955075e+00 -5.992822553757209e+00 3.236005260603938e+00 4.770475579979003e+00 9.195040974855114e+03 + 182760 1.013783831386332e+00 -6.148071141692538e+00 -5.977698717716732e+00 2.887242729718550e+00 4.865547553235023e+00 9.148738400907629e+03 + 182780 9.349864912068125e-01 -6.037534082094063e+00 -5.982225882025431e+00 3.523655873743368e+00 4.841244117453754e+00 9.162580037729231e+03 + 182800 9.580642636603198e-01 -6.073212487971444e+00 -6.024871513690589e+00 3.304646766741784e+00 4.582228121804044e+00 9.293550163716329e+03 + 182820 9.122653868202937e-01 -6.003704314486412e+00 -6.017519820900538e+00 3.697547429595031e+00 4.618216653822413e+00 9.270902707054960e+03 + 182840 1.001245185439745e+00 -6.125796924445758e+00 -5.992812558137458e+00 3.065723516984460e+00 4.829340327590894e+00 9.195002711475150e+03 + 182860 9.141892594135640e-01 -5.974001064899376e+00 -6.022556476900679e+00 3.848357295324167e+00 4.569544605686966e+00 9.286426545563665e+03 + 182880 9.649782369911409e-01 -6.013898396189093e+00 -6.045681252584395e+00 3.610211765630601e+00 4.427709685827645e+00 9.357820965497796e+03 + 182900 1.005357998909439e+00 -6.030490932872071e+00 -6.019693891491767e+00 3.512380345602465e+00 4.574378628044929e+00 9.277612529971177e+03 + 182920 1.044993125806035e+00 -6.043939723735056e+00 -6.023373639212405e+00 3.412366937291548e+00 4.530460577211901e+00 9.288940331911288e+03 + 182940 1.007880320715940e+00 -5.950002520719052e+00 -5.988067674742375e+00 4.002889128744857e+00 4.784313123779392e+00 9.180401423421969e+03 + 182960 9.810044460800680e-01 -5.880192271296242e+00 -5.980900893774838e+00 4.347616401684764e+00 4.769331906803707e+00 9.158454251363086e+03 + 182980 9.877139432990183e-01 -5.861948081038506e+00 -6.005056636967500e+00 4.444030319126291e+00 4.622278845004548e+00 9.232537550085091e+03 + 183000 1.031229386741818e+00 -5.905802247691381e+00 -5.997450745909051e+00 4.202423602417909e+00 4.676163743092786e+00 9.209217950040384e+03 + 183020 1.047363247977307e+00 -5.915034788759170e+00 -5.999890236669732e+00 4.137780978804355e+00 4.650527865563780e+00 9.216710259468198e+03 + 183040 1.063495286684998e+00 -5.933113104036942e+00 -6.015345186340257e+00 4.013418966237922e+00 4.541229624278679e+00 9.264203316159666e+03 + 183060 1.098259251577959e+00 -5.986469755056461e+00 -6.008414234112216e+00 3.743879465399741e+00 4.617870870764438e+00 9.242901862942350e+03 + 183080 1.079597470674723e+00 -5.968037969966009e+00 -5.984881211655237e+00 3.880933937205047e+00 4.784217436942271e+00 9.170697151207953e+03 + 183100 1.057214484272781e+00 -5.950549249047874e+00 -6.013472826848893e+00 3.976040318144328e+00 4.614723397018683e+00 9.258454995796481e+03 + 183120 9.724056520294404e-01 -5.848759222746648e+00 -6.053637943080783e+00 4.516011638471676e+00 4.339566321433564e+00 9.382427135581094e+03 + 183140 1.052014891392743e+00 -5.996467291555065e+00 -5.971281140042882e+00 3.739368031453873e+00 4.883990810981185e+00 9.129105195301594e+03 + 183160 1.057756386629021e+00 -6.036508675357037e+00 -6.007197435855051e+00 3.524941664150271e+00 4.693251337270324e+00 9.239156546206572e+03 + 183180 9.742602203603242e-01 -5.948732191019153e+00 -6.015147038916361e+00 3.988574764757764e+00 4.607210430467499e+00 9.263608406229039e+03 + 183200 9.937897335521763e-01 -6.008690816433447e+00 -6.025848884566182e+00 3.639288250620909e+00 4.540763968200284e+00 9.296575680858035e+03 + 183220 1.002372078518033e+00 -6.048579026278200e+00 -5.974472537706095e+00 3.436993579868363e+00 4.862524505191431e+00 9.138864002451426e+03 + 183240 9.889035100578704e-01 -6.048227378942555e+00 -6.021274427183096e+00 3.393084246765260e+00 4.547852266723885e+00 9.282478524244076e+03 + 183260 9.358445811720060e-01 -5.981752897095433e+00 -6.021045948715351e+00 3.840869365270255e+00 4.615242582288602e+00 9.281774568500243e+03 + 183280 1.026918384235583e+00 -6.125967228017389e+00 -5.976457799517840e+00 3.007648046447226e+00 4.866154321400920e+00 9.144935013734112e+03 + 183300 9.431543541729727e-01 -6.005107932187757e+00 -6.009613177565723e+00 3.609335453441685e+00 4.583465637296936e+00 9.246586767559105e+03 + 183320 9.986003469017705e-01 -6.087238812515289e+00 -5.962137056080940e+00 3.236835390897606e+00 4.955189035777877e+00 9.101183863871953e+03 + 183340 9.240943091646798e-01 -5.971397236574089e+00 -6.009093518172287e+00 3.815592882701114e+00 4.599135000283535e+00 9.244987447826792e+03 + 183360 9.634058891940351e-01 -6.022544356233273e+00 -6.019047237334718e+00 3.524904234256025e+00 4.544985232148933e+00 9.275601239847494e+03 + 183380 9.979258153419266e-01 -6.065047154748023e+00 -6.006163810764862e+00 3.333805533343365e+00 4.671922806662709e+00 9.235994101829301e+03 + 183400 9.290772944652672e-01 -5.953961215398813e+00 -6.044603937415631e+00 3.928271190446292e+00 4.407786653709824e+00 9.354465174071371e+03 + 183420 9.828734309403858e-01 -6.022433893474582e+00 -6.018196850104997e+00 3.622166189551808e+00 4.646495948260311e+00 9.272981358821489e+03 + 183440 1.061379763790595e+00 -6.127692967412578e+00 -5.994632262783430e+00 3.009734417580240e+00 4.773789574638306e+00 9.200590148780888e+03 + 183460 9.466087243126081e-01 -5.947962791738287e+00 -6.020896401306304e+00 4.007031192819722e+00 4.588235120240563e+00 9.281292474063499e+03 + 183480 1.035052804771157e+00 -6.068467030312210e+00 -6.001034314885581e+00 3.295646158708948e+00 4.682855245867636e+00 9.220222892314410e+03 + 183500 1.039798099962219e+00 -6.065391051822946e+00 -5.959410775060739e+00 3.394963293630178e+00 5.003518443193595e+00 9.092867326033655e+03 + 183520 9.474717466935799e-01 -5.919151116899060e+00 -5.974690750219394e+00 4.146111506855162e+00 4.827194337599329e+00 9.139493542302886e+03 + 183540 9.786989012947097e-01 -5.953176634931132e+00 -6.002449213450504e+00 3.956566153123887e+00 4.673635382358766e+00 9.224586037475017e+03 + 183560 1.030116725417436e+00 -6.015351183505921e+00 -6.033169621411803e+00 3.589156666775229e+00 4.486840438925301e+00 9.319190476559248e+03 + 183580 1.006234479606220e+00 -5.971137637983199e+00 -6.033600342917856e+00 3.838165807997568e+00 4.479495290190425e+00 9.320489029967044e+03 + 183600 9.974146461467154e-01 -5.951604023837853e+00 -5.983602734708565e+00 4.001925153389386e+00 4.818183603785251e+00 9.166749244899396e+03 + 183620 9.805326134018771e-01 -5.917996205297022e+00 -6.019128697650789e+00 4.096918912522282e+00 4.516200491224342e+00 9.275873505713076e+03 + 183640 1.032125881422371e+00 -5.982636263840545e+00 -6.016134039425769e+00 3.825607142221499e+00 4.633257731047129e+00 9.266629778163917e+03 + 183660 1.077642571295205e+00 -6.035760827804297e+00 -5.987559113187468e+00 3.589704209447742e+00 4.866485913968800e+00 9.178900441833153e+03 + 183680 1.018386505443185e+00 -5.927402634929761e+00 -6.054145926134913e+00 4.128632756257134e+00 4.400853164696227e+00 9.384015062602222e+03 + 183700 1.008109267276090e+00 -5.887446389066246e+00 -6.093033500847690e+00 4.221181179941819e+00 4.040668169590040e+00 9.504847955762505e+03 + 183720 1.031324340743340e+00 -5.896574851595319e+00 -6.044908072956693e+00 4.247902770546983e+00 4.396150458998155e+00 9.355434269205278e+03 + 183740 1.006784798808802e+00 -5.836705007327609e+00 -6.049473165874452e+00 4.531344627226689e+00 4.309596935084593e+00 9.369529806105747e+03 + 183760 1.101424887944964e+00 -5.956092396097172e+00 -5.977241749824822e+00 3.942899067163566e+00 4.821456205207484e+00 9.147315049578781e+03 + 183780 1.115052803102607e+00 -5.962449670861370e+00 -5.977979025609891e+00 3.851105497534266e+00 4.761933539408380e+00 9.149526703306186e+03 + 183800 1.058038526784510e+00 -5.872337742893871e+00 -5.980981332503998e+00 4.396671082550046e+00 4.772822778467545e+00 9.158733851948051e+03 + 183820 1.113766544673128e+00 -5.958705299936583e+00 -5.951357502871469e+00 3.933554287778860e+00 4.975746475594667e+00 9.068301118622367e+03 + 183840 1.043034808067082e+00 -5.865365421385027e+00 -5.972696111670938e+00 4.385120555224953e+00 4.768811122232610e+00 9.133406410393760e+03 + 183860 1.044918719754484e+00 -5.884952786190659e+00 -5.994835133488733e+00 4.278017228032663e+00 4.647055785608834e+00 9.201182440227418e+03 + 183880 1.093462489546802e+00 -5.983724684974982e+00 -6.007550821780359e+00 3.809986903039649e+00 4.673173538420423e+00 9.240239073837531e+03 + 183900 1.057148807307428e+00 -5.965071148323464e+00 -5.975913232270150e+00 3.970985589981417e+00 4.908728666152477e+00 9.143235005001532e+03 + 183920 9.912250083079684e-01 -5.907250534550263e+00 -6.013445829260425e+00 4.188899917949707e+00 4.579110102055215e+00 9.258356978295453e+03 + 183940 1.031487113506778e+00 -6.006802958831130e+00 -5.985000166665996e+00 3.653518883249906e+00 4.778713889833291e+00 9.171067960716873e+03 + 183960 9.927317643620102e-01 -5.984129767330581e+00 -5.985472801129321e+00 3.749977112294655e+00 4.742265204388483e+00 9.172479544433027e+03 + 183980 9.498852608275915e-01 -5.946807728370525e+00 -5.971967134166327e+00 4.048863090730922e+00 4.904393889245964e+00 9.131168761827077e+03 + 184000 9.868994024346354e-01 -6.019713074155316e+00 -6.009930171706437e+00 3.562542680347696e+00 4.618717620108418e+00 9.247553552423098e+03 + 184020 1.039678731393795e+00 -6.113236783503364e+00 -5.988072468008662e+00 3.083977038422753e+00 4.802689907108556e+00 9.180462392118807e+03 + 184040 1.022886842586167e+00 -6.100339353888593e+00 -5.990249874116433e+00 3.202766747434130e+00 4.834917576577811e+00 9.187149082308233e+03 + 184060 9.879602440484496e-01 -6.058007908874687e+00 -5.997026768033187e+00 3.404975920606850e+00 4.755139068119789e+00 9.207919829383292e+03 + 184080 9.779395332185139e-01 -6.049004257386456e+00 -5.981753717711048e+00 3.522084163151884e+00 4.908247168955457e+00 9.161125205702463e+03 + 184100 1.016464091175654e+00 -6.108707635785919e+00 -5.959932765065052e+00 3.162937082411502e+00 5.017225412927556e+00 9.094469983344146e+03 + 184120 9.764291441895490e-01 -6.047393485704079e+00 -5.990483286670049e+00 3.460995954646740e+00 4.787783124324979e+00 9.187876187436710e+03 + 184140 9.829202884396158e-01 -6.052481356475666e+00 -5.992418660493836e+00 3.446975769520605e+00 4.791865064520436e+00 9.193791702440873e+03 + 184160 9.971653219186806e-01 -6.065312566917989e+00 -5.945362259773045e+00 3.365683429599877e+00 5.054456655476188e+00 9.050093697386697e+03 + 184180 9.846653687718639e-01 -6.032301026344959e+00 -5.999723206910732e+00 3.562380961734957e+00 4.749447842327552e+00 9.216198718039375e+03 + 184200 9.846500602136498e-01 -6.012135630554483e+00 -6.001411636772502e+00 3.617503630078308e+00 4.679082461907116e+00 9.221374946068874e+03 + 184220 9.764643303548862e-01 -5.972629342184030e+00 -5.997819129732612e+00 3.872162438626460e+00 4.727518780415475e+00 9.210333591439694e+03 + 184240 1.011333300997123e+00 -5.988852935303811e+00 -6.009413667786253e+00 3.759582012171433e+00 4.641519104494178e+00 9.245969152286087e+03 + 184260 1.023675915995934e+00 -5.962785403940132e+00 -6.013358081448491e+00 3.948971254830431e+00 4.658575114480886e+00 9.258079462302390e+03 + 184280 1.060054260078496e+00 -5.973740275953009e+00 -6.021090022982408e+00 3.801229851169018e+00 4.529340276376535e+00 9.281886230244621e+03 + 184300 1.063199315893236e+00 -5.940433320437109e+00 -6.015701580592967e+00 3.982386495080835e+00 4.550184497540283e+00 9.265312797343237e+03 + 184320 1.081792110424217e+00 -5.939355144842389e+00 -6.020752014326860e+00 4.031197213760992e+00 4.563803793056320e+00 9.280850261450802e+03 + 184340 1.093272467808163e+00 -5.938266756706020e+00 -6.006595536716134e+00 4.114874666266844e+00 4.722520237604239e+00 9.237296768854121e+03 + 184360 1.110756093719319e+00 -5.960146618950159e+00 -6.026692165120724e+00 3.909264541104779e+00 4.527149717103406e+00 9.299156227246693e+03 + 184380 1.107670286957531e+00 -5.962283487283559e+00 -5.971273719595462e+00 3.915806170034438e+00 4.864182864865535e+00 9.129061861545691e+03 + 184400 1.056238517927874e+00 -5.895843122222988e+00 -5.981723011518270e+00 4.272291545613071e+00 4.779155931409645e+00 9.161011245455908e+03 + 184420 1.043975892627608e+00 -5.892787313531788e+00 -6.031400022184282e+00 4.239210980725054e+00 4.443275357395099e+00 9.313700551585469e+03 + 184440 1.131282813112820e+00 -6.041916775116773e+00 -6.019230552765037e+00 3.422707858189155e+00 4.552975657614386e+00 9.276174590700180e+03 + 184460 1.021584923966032e+00 -5.903170004195438e+00 -6.016263258159931e+00 4.195813987407101e+00 4.546415022018492e+00 9.267027456981394e+03 + 184480 1.046694216894824e+00 -5.960731962998117e+00 -6.000867204681484e+00 3.905443641912329e+00 4.674980873257861e+00 9.219685836947174e+03 + 184500 1.018405997592934e+00 -5.935041190270415e+00 -6.013766445318071e+00 4.024343289521956e+00 4.572290692344469e+00 9.259345065078560e+03 + 184520 1.067671387763121e+00 -6.023400989872116e+00 -5.943746477205917e+00 3.573121991582715e+00 5.030510529808026e+00 9.045157586823949e+03 + 184540 1.042082871822497e+00 -5.998356814095334e+00 -5.959225481080560e+00 3.747368850238591e+00 4.972067019963640e+00 9.092272617861177e+03 + 184560 9.864592649516118e-01 -5.927595537860892e+00 -5.999770788000561e+00 4.081319704345249e+00 4.666878248959408e+00 9.216315967120465e+03 + 184580 1.013281044411565e+00 -5.977649403324318e+00 -5.968669623675581e+00 3.851534899812935e+00 4.903098184172394e+00 9.121087219984693e+03 + 184600 9.484236434955317e-01 -5.890142817557208e+00 -6.011296042223881e+00 4.301009678207553e+00 4.605329113770591e+00 9.251753056364882e+03 + 184620 1.018340227122341e+00 -6.002462022232959e+00 -6.005352566554682e+00 3.635027552320818e+00 4.618429599515198e+00 9.233513819782984e+03 + 184640 1.005991746881530e+00 -5.993274318394762e+00 -5.989568075212894e+00 3.767272080442044e+00 4.788553902331607e+00 9.185048784188382e+03 + 184660 9.900007034189967e-01 -5.978241999524661e+00 -5.981331954620222e+00 3.833057124647236e+00 4.815314124319516e+00 9.159843040035092e+03 + 184680 1.024029947038209e+00 -6.039447766766517e+00 -5.989638253701488e+00 3.498798113547532e+00 4.784812045564166e+00 9.185271227290650e+03 + 184700 1.025932717479758e+00 -6.053042711404411e+00 -5.995958699014500e+00 3.454731382545428e+00 4.782516615410669e+00 9.204642785454624e+03 + 184720 8.709723632678468e-01 -5.834295036451319e+00 -6.068562329702715e+00 4.555410314391826e+00 4.210211263795842e+00 9.428744716468311e+03 + 184740 1.007938921452820e+00 -6.048241926894878e+00 -6.008964481395323e+00 3.412903641270719e+00 4.638440811494212e+00 9.244596118436815e+03 + 184760 1.001163663396630e+00 -6.050343617837003e+00 -6.009379928597156e+00 3.432295655982411e+00 4.667515498708035e+00 9.245846859265743e+03 + 184780 9.602290082104903e-01 -6.003011880796844e+00 -6.004760913444803e+00 3.728742717534523e+00 4.718699501408015e+00 9.231664350205572e+03 + 184800 9.876109397736118e-01 -6.057098727741096e+00 -5.993864615743540e+00 3.422652161125108e+00 4.785752217662281e+00 9.198228195075490e+03 + 184820 9.613140200318818e-01 -6.033783465880657e+00 -6.024371278183887e+00 3.517682590975075e+00 4.571728829261270e+00 9.292017843678716e+03 + 184840 9.403438782999645e-01 -6.023770937127686e+00 -6.005700754900780e+00 3.566877983436505e+00 4.670639766135064e+00 9.234553477119085e+03 + 184860 9.248302508182439e-01 -6.022425305338126e+00 -5.983504546561015e+00 3.595249566558121e+00 4.818738586424250e+00 9.166457808174275e+03 + 184880 9.142287992307874e-01 -6.027034015554238e+00 -5.976283254208735e+00 3.532255862808601e+00 4.823674588109416e+00 9.144373105577295e+03 + 184900 9.702061179794451e-01 -6.126860383147412e+00 -5.939703873956619e+00 2.997719336775240e+00 5.072400974924975e+00 9.032886693729855e+03 + 184920 9.369193761322693e-01 -6.089664121383340e+00 -5.962934734222476e+00 3.242857731157446e+00 4.970557483544405e+00 9.103597926778035e+03 + 184940 9.326974353530773e-01 -6.087693168833210e+00 -5.980633961534583e+00 3.241228982559597e+00 4.855979518227105e+00 9.157680121813359e+03 + 184960 9.436810154952806e-01 -6.102264682657212e+00 -5.996159313225495e+00 3.139942217198551e+00 4.749215668228328e+00 9.205277028662942e+03 + 184980 9.399605712478332e-01 -6.087790072104664e+00 -5.989951697500601e+00 3.245398762470294e+00 4.807201849886360e+00 9.186228882094596e+03 + 185000 9.412967735263311e-01 -6.070893259622386e+00 -5.961625281833065e+00 3.368762830485333e+00 4.996196468116529e+00 9.099643040212581e+03 + 185020 9.987256182182895e-01 -6.126629633624533e+00 -5.974549572853361e+00 3.028531966411728e+00 4.901799209673141e+00 9.139108027254226e+03 + 185040 9.863156396480806e-01 -6.067762409842441e+00 -6.011592356811549e+00 3.358882224714888e+00 4.681419361505881e+00 9.252678003476818e+03 + 185060 9.574272614564947e-01 -5.982801370180530e+00 -6.037690922178650e+00 3.761559526564238e+00 4.446375224860310e+00 9.333129256777444e+03 + 185080 1.012097437572886e+00 -6.026103163211535e+00 -5.986077101381630e+00 3.562328090398865e+00 4.792163931439227e+00 9.174357613822167e+03 + 185100 1.029343463421197e+00 -6.020958590465044e+00 -5.995505655397212e+00 3.580946118620209e+00 4.727100810608679e+00 9.203229916056336e+03 + 185120 1.023393382980984e+00 -5.987637845733543e+00 -5.959377467834615e+00 3.760608702407979e+00 4.922884165582970e+00 9.092751378449322e+03 + 185140 1.002260308617291e+00 -5.936111200692053e+00 -5.992843381901519e+00 4.052502130578477e+00 4.726737166797055e+00 9.195059530618140e+03 + 185160 1.063971401936506e+00 -6.010398598339458e+00 -5.972107507609772e+00 3.692795290854355e+00 4.912668659351354e+00 9.131624680313887e+03 + 185180 9.862668811129939e-01 -5.883840334827548e+00 -6.050561807277160e+00 4.303904515373567e+00 4.346564020503417e+00 9.372915021931532e+03 + 185200 1.005396258302665e+00 -5.908399463733574e+00 -6.037184744884700e+00 4.222250585125001e+00 4.482745571297387e+00 9.331542181607500e+03 + 185220 1.050572007105858e+00 -5.975954949726953e+00 -6.019021738117678e+00 3.798651793264707e+00 4.551355629761201e+00 9.275542472350844e+03 + 185240 9.948202791580726e-01 -5.898560438997340e+00 -6.052553869596414e+00 4.197475833014334e+00 4.313221724108079e+00 9.379079609207227e+03 + 185260 1.054151143865180e+00 -5.996977682555052e+00 -5.989729909135392e+00 3.730934119777992e+00 4.772551956342989e+00 9.185544667918906e+03 + 185280 1.005062924340876e+00 -5.935775057434811e+00 -6.011386534554047e+00 4.033721145269915e+00 4.599548342812993e+00 9.252021314635876e+03 + 185300 1.012829714159185e+00 -5.963495863736303e+00 -6.019933959034971e+00 3.883441647663263e+00 4.559365370691289e+00 9.278343361560732e+03 + 185320 1.030089083503214e+00 -6.010648952852334e+00 -6.024506215894244e+00 3.590209977746933e+00 4.510639428955754e+00 9.292437285956645e+03 + 185340 1.023706316066184e+00 -6.028112577073878e+00 -5.969060213191920e+00 3.541386443186380e+00 4.880474254920356e+00 9.122320151671151e+03 + 185360 1.015569157115144e+00 -6.044855130531360e+00 -5.992276851707185e+00 3.440098586309802e+00 4.742011199780567e+00 9.193370968281557e+03 + 185380 1.038658504349097e+00 -6.112492479135274e+00 -5.965187951376989e+00 3.110771119679198e+00 4.956616513369271e+00 9.110502414452141e+03 + 185400 9.566770268019414e-01 -6.022034298453513e+00 -5.964523867966527e+00 3.626057876048340e+00 4.956291667614972e+00 9.108463353313931e+03 + 185420 9.790308554285170e-01 -6.083166222235739e+00 -5.980854535508378e+00 3.262830706757951e+00 4.850320244628813e+00 9.158366360164333e+03 + 185440 9.644899540033735e-01 -6.085612805784473e+00 -5.997010327208331e+00 3.265396819775616e+00 4.774165962949071e+00 9.207895153653244e+03 + 185460 9.595211790735395e-01 -6.099162230159524e+00 -5.995133765135066e+00 3.192521501831366e+00 4.789869046354736e+00 9.202124195648081e+03 + 185480 9.641705989162596e-01 -6.120469750298537e+00 -5.981707677350906e+00 3.092436107351236e+00 4.889229403577923e+00 9.160993973580624e+03 + 185500 9.361979487937765e-01 -6.088403576109956e+00 -5.974427249895344e+00 3.250376069799699e+00 4.904845772703480e+00 9.138728744490090e+03 + 185520 9.685598288623074e-01 -6.139115618045952e+00 -5.961941765977130e+00 2.915196824856765e+00 4.932556501000937e+00 9.100587217690441e+03 + 185540 9.582122417985277e-01 -6.116972094700881e+00 -5.966966719430085e+00 3.077979874281680e+00 4.939333952343393e+00 9.115950210604811e+03 + 185560 9.733983643631922e-01 -6.118981325159002e+00 -6.012957018162440e+00 3.048150065063006e+00 4.656958043045748e+00 9.256857880800915e+03 + 185580 9.412085791397626e-01 -6.027808908102295e+00 -6.000822570554435e+00 3.552787795761607e+00 4.707747522083659e+00 9.219597280805348e+03 + 185600 9.811113601609597e-01 -6.017866929374473e+00 -6.042545744235124e+00 3.597044067312204e+00 4.455334493348088e+00 9.348139417772250e+03 + 185620 1.024145655819124e+00 -6.007400260436129e+00 -6.042835241971519e+00 3.664341834895736e+00 4.460868687373857e+00 9.349016620269582e+03 + 185640 1.063840794093235e+00 -6.018519330917581e+00 -6.012007213157973e+00 3.597073391057128e+00 4.634466978979766e+00 9.253964667510121e+03 + 185660 1.026581685469844e+00 -5.933969479774971e+00 -5.992481508558945e+00 4.040962477239463e+00 4.704977353254693e+00 9.193984126981428e+03 + 185680 1.078151080967840e+00 -5.992655917886520e+00 -5.986979780925774e+00 3.783560298904948e+00 4.816153555712910e+00 9.177103476127242e+03 + 185700 1.012130971825542e+00 -5.882931594490105e+00 -6.013634249016426e+00 4.292239944343645e+00 4.541725075883095e+00 9.258908118355834e+03 + 185720 9.767909946811538e-01 -5.825171828036736e+00 -6.006547693383329e+00 4.640697336797187e+00 4.599209050152599e+00 9.237119606001008e+03 + 185740 1.084120904607112e+00 -5.981470273271851e+00 -6.024350912626154e+00 3.859400892447963e+00 4.613173625518058e+00 9.291937297898663e+03 + 185760 1.081393785579987e+00 -5.981996150805671e+00 -6.006353003055173e+00 3.783725934061269e+00 4.643865119233923e+00 9.236558439089140e+03 + 185780 1.124813034765929e+00 -6.058442833141447e+00 -5.983189581098347e+00 3.380410629519436e+00 4.812526448154035e+00 9.165537823858129e+03 + 185800 1.034745720731353e+00 -5.946125334820570e+00 -6.043936881977040e+00 3.980638819572957e+00 4.418989779512501e+00 9.352427662321083e+03 + 185820 1.044281049489139e+00 -5.988543699590392e+00 -6.014818720141438e+00 3.814245162115545e+00 4.663369928065150e+00 9.262590934430564e+03 + 185840 1.021537501661532e+00 -5.987219679051372e+00 -5.976575422126455e+00 3.806070995140578e+00 4.867191965596888e+00 9.145260267061798e+03 + 185860 9.999401436761414e-01 -5.982909246713431e+00 -6.009542378452903e+00 3.775874859141211e+00 4.622943295229352e+00 9.246343592305737e+03 + 185880 1.043905595999872e+00 -6.077546084685965e+00 -5.987082356884550e+00 3.291387540057864e+00 4.810844264310218e+00 9.177447767853082e+03 + 185900 9.221254916929871e-01 -5.924226979417692e+00 -6.003045746445409e+00 4.126475878457343e+00 4.673886321019418e+00 9.226395053732394e+03 + 185920 1.003142468481264e+00 -6.065655957980752e+00 -6.002719487651074e+00 3.358080963099984e+00 4.719471915120299e+00 9.225382551469213e+03 + 185940 9.325162515854724e-01 -5.978590068558076e+00 -6.004099606215238e+00 3.812356579206249e+00 4.665876866390632e+00 9.229643567372221e+03 + 185960 9.547779279896200e-01 -6.023932726469558e+00 -6.002328252904176e+00 3.613630652799420e+00 4.737686883293320e+00 9.224197578226207e+03 + 185980 9.364279765049806e-01 -6.005075485003418e+00 -6.014011648735464e+00 3.627102089421121e+00 4.575789254404842e+00 9.260104292026539e+03 + 186000 9.865751709881700e-01 -6.083643441139275e+00 -5.983158535497191e+00 3.247012879748303e+00 4.824012757934042e+00 9.165410241663300e+03 + 186020 9.427207696479050e-01 -6.018307434186882e+00 -6.006279857670863e+00 3.587256311165426e+00 4.656320516781856e+00 9.236265845155620e+03 + 186040 9.837854615514343e-01 -6.075144496130968e+00 -5.968324389339072e+00 3.284742412421733e+00 4.898119995978906e+00 9.120070573153573e+03 + 186060 9.602199563091689e-01 -6.029319983575497e+00 -5.976634493045383e+00 3.547822769645548e+00 4.850351009322774e+00 9.145460165429358e+03 + 186080 9.549544395468589e-01 -6.003892421567865e+00 -6.024083011042957e+00 3.625430782793619e+00 4.509493293544016e+00 9.291125829755327e+03 + 186100 9.919904880721139e-01 -6.034679456245360e+00 -6.011944343269034e+00 3.451170971533744e+00 4.581719508491172e+00 9.253751568126596e+03 + 186120 8.972386619357468e-01 -5.861138466004364e+00 -6.046779941868154e+00 4.397772912572661e+00 4.331790830237236e+00 9.361167621422921e+03 + 186140 1.066835584741982e+00 -6.067030508037554e+00 -6.032338099561853e+00 3.290081544910571e+00 4.489290723010907e+00 9.316600636879757e+03 + 186160 9.783637312710609e-01 -5.888596946369382e+00 -6.028823207459542e+00 4.305621525064534e+00 4.500420633941063e+00 9.305739031190018e+03 + 186180 1.042790483563403e+00 -5.942272569075919e+00 -6.023978483118418e+00 3.958634925545078e+00 4.489466923163712e+00 9.290787834749568e+03 + 186200 1.047885876719849e+00 -5.917563098587251e+00 -5.985681399832464e+00 4.144601213379666e+00 4.753455386356603e+00 9.173115681237759e+03 + 186220 1.000887291035678e+00 -5.825049353540382e+00 -6.019701041766036e+00 4.649541651768573e+00 4.531821535725464e+00 9.277607950377926e+03 + 186240 1.061490981848287e+00 -5.903515660730037e+00 -6.018624154187203e+00 4.253309539503181e+00 4.592338757090343e+00 9.274302123046917e+03 + 186260 1.146557582356523e+00 -6.028287971776903e+00 -5.958965247321975e+00 3.553992149382973e+00 4.952053960860109e+00 9.091505308628930e+03 + 186280 1.037458403977267e+00 -5.872652618397060e+00 -6.034211026881774e+00 4.378332981570358e+00 4.450639598968214e+00 9.322359569283526e+03 + 186300 1.110129109621654e+00 -5.992888313263420e+00 -6.033266600646734e+00 3.714188219976237e+00 4.482329845301471e+00 9.319467642897034e+03 + 186320 1.063607588190618e+00 -5.943180927052186e+00 -6.003066524320833e+00 4.045426681631403e+00 4.701554314848610e+00 9.226458748310422e+03 + 186340 1.045506402369506e+00 -5.936232483535441e+00 -6.006378292160906e+00 4.086846991418937e+00 4.684058903262717e+00 9.236609427116311e+03 + 186360 1.067402994916683e+00 -5.987891560652560e+00 -6.016828911132722e+00 3.717205343365357e+00 4.551042598867753e+00 9.268773584850434e+03 + 186380 1.053472929130548e+00 -5.988618357818217e+00 -6.023131192000714e+00 3.706777484659305e+00 4.508599449939576e+00 9.288069650329569e+03 + 186400 9.830065344854569e-01 -5.905781254255033e+00 -5.957026333283442e+00 4.199796766398856e+00 4.905539592467382e+00 9.085602875952025e+03 + 186420 9.595621033072821e-01 -5.887535015199235e+00 -5.976975495639305e+00 4.279123074992378e+00 4.765541995435881e+00 9.146510569327142e+03 + 186440 1.035719900536216e+00 -6.015167218031865e+00 -5.975423583250131e+00 3.609349210286989e+00 4.837563311511315e+00 9.141766838661257e+03 + 186460 9.998393929808415e-01 -5.975996020275486e+00 -6.021445448033493e+00 3.789288850236937e+00 4.528311202774247e+00 9.283003308486002e+03 + 186480 1.082397043101837e+00 -6.111189441918532e+00 -6.010575403303888e+00 3.097263974412351e+00 4.675005354109794e+00 9.249538089580845e+03 + 186500 9.950817034112857e-01 -5.997316875789464e+00 -6.023586643805307e+00 3.713062865229156e+00 4.562217792048723e+00 9.289591170245161e+03 + 186520 1.009619855998729e+00 -6.035084393305131e+00 -5.946294614868298e+00 3.534567701818747e+00 5.044412349776844e+00 9.052925172165989e+03 + 186540 9.693801222909489e-01 -5.987728109310411e+00 -5.989307027375220e+00 3.743575926327941e+00 4.734509534463026e+00 9.184255163928450e+03 + 186560 9.345799345196549e-01 -5.943813770576265e+00 -6.010959056391489e+00 3.963827656698701e+00 4.578269034848288e+00 9.250744614154721e+03 + 186580 9.574065195068804e-01 -5.985621766488286e+00 -6.034044525124528e+00 3.712754797016869e+00 4.434703823529889e+00 9.321864755451938e+03 + 186600 9.646403998972567e-01 -6.003353766540596e+00 -5.969652816976503e+00 3.659310599055284e+00 4.852826666657395e+00 9.124124868192084e+03 + 186620 9.770127988971109e-01 -6.022970258492482e+00 -5.962854972042094e+00 3.696003591830399e+00 5.041194869439037e+00 9.103340318892089e+03 + 186640 9.519534543394043e-01 -5.980864029766674e+00 -6.021124692670636e+00 3.805734368637304e+00 4.574551411925306e+00 9.282021382029956e+03 + 186660 1.029049614000655e+00 -6.087394873643568e+00 -6.020275065006955e+00 3.240600326641311e+00 4.626012654589561e+00 9.279407363570144e+03 + 186680 1.019624642311598e+00 -6.064986952548659e+00 -5.951067703081215e+00 3.396916260910121e+00 5.051058220299065e+00 9.067444707889634e+03 + 186700 9.041588446419763e-01 -5.882083051248837e+00 -5.997579727206786e+00 4.358799849192316e+00 4.695600062788930e+00 9.209517016182293e+03 + 186720 1.021929701188076e+00 -6.030548569008134e+00 -5.990225214096194e+00 3.502554471490208e+00 4.734097415413570e+00 9.187023625161817e+03 + 186740 9.768861668306952e-01 -5.921411091960417e+00 -6.037748023118157e+00 4.081206228214217e+00 4.413181566424560e+00 9.333289434801667e+03 + 186760 1.067512680047897e+00 -6.007079235070205e+00 -5.954108807545566e+00 3.749564750103683e+00 5.053729142097326e+00 9.076697789916559e+03 + 186780 1.014121181537407e+00 -5.881393811823530e+00 -5.996031176294835e+00 4.301396006672316e+00 4.643130519803266e+00 9.204874425183545e+03 + 186800 1.090933298500881e+00 -5.957762966761258e+00 -5.990254222274790e+00 3.913056420095945e+00 4.726486602931708e+00 9.187097390014562e+03 + 186820 9.833928280783956e-01 -5.771122398210339e+00 -6.042892756408789e+00 4.936070874108800e+00 4.375523421006293e+00 9.349123028317399e+03 + 186840 1.083989239694932e+00 -5.903765690588592e+00 -6.017055797430192e+00 4.190619270390795e+00 4.540089945318958e+00 9.269474307528131e+03 + 186860 1.085898075353681e+00 -5.902453201779672e+00 -6.009887540254247e+00 4.223775324729869e+00 4.606870727798712e+00 9.247383782881960e+03 + 186880 1.101906524831336e+00 -5.931543848688380e+00 -5.962283109389383e+00 4.057245787581426e+00 4.880736195751050e+00 9.101611454362455e+03 + 186900 1.117335723091285e+00 -5.967225375525144e+00 -6.028180493466218e+00 3.872265447178839e+00 4.522251727187176e+00 9.303720340083395e+03 + 186920 1.036011632449771e+00 -5.871159638062257e+00 -6.017383086341606e+00 4.384019082108074e+00 4.544381414082557e+00 9.270486319023559e+03 + 186940 1.011605186859108e+00 -5.866688562059066e+00 -6.041452891575094e+00 4.372887218119118e+00 4.369363393345499e+00 9.344726607624290e+03 + 186960 9.932792895410691e-01 -5.875546808667986e+00 -6.014474168768420e+00 4.316787409158877e+00 4.519045008522687e+00 9.261522397652219e+03 + 186980 1.072248401742994e+00 -6.028800496955707e+00 -5.968815116695609e+00 3.530114617350662e+00 4.874559953511742e+00 9.121548313682042e+03 + 187000 1.011966192968974e+00 -5.971156466508948e+00 -5.985838195380230e+00 3.876873700984139e+00 4.792568941815036e+00 9.173612608044572e+03 + 187020 1.039765020363477e+00 -6.040232487694320e+00 -6.012345989496141e+00 3.454926679996300e+00 4.615055268071895e+00 9.254991713938534e+03 + 187040 1.005572094719602e+00 -6.010814244919445e+00 -6.000825974920766e+00 3.646433555790930e+00 4.703787747803130e+00 9.219560178906941e+03 + 187060 1.027318122452260e+00 -6.058598133194166e+00 -5.994787486236991e+00 3.367513733928683e+00 4.733924343422483e+00 9.201055861384892e+03 + 187080 1.037636337263683e+00 -6.085247372639406e+00 -6.003637593687760e+00 3.242396334279341e+00 4.711012314092171e+00 9.228238795365502e+03 + 187100 9.860793923139735e-01 -6.020183555882539e+00 -6.013621858107854e+00 3.561151233083503e+00 4.598829517125194e+00 9.258924932056028e+03 + 187120 9.110852161589589e-01 -5.917199110797673e+00 -6.009768719825155e+00 4.136490803177767e+00 4.604941783041263e+00 9.247063899018602e+03 + 187140 9.732490339970734e-01 -6.012117080032494e+00 -5.977531137367938e+00 3.661289012736984e+00 4.859886847674198e+00 9.148189712350179e+03 + 187160 9.870372515747904e-01 -6.031421483692184e+00 -5.964185839468122e+00 3.546045895568166e+00 4.932123369385046e+00 9.107434982568118e+03 + 187180 9.912988424946013e-01 -6.034505761136522e+00 -5.973235622258882e+00 3.504830927381230e+00 4.856653546339988e+00 9.135077423023960e+03 + 187200 1.031667514101677e+00 -6.089478396434104e+00 -5.963553439324839e+00 3.249402215056004e+00 4.972482805601540e+00 9.105499043335980e+03 + 187220 9.573835424832821e-01 -5.971448722060335e+00 -6.014905219036551e+00 3.820355840563944e+00 4.570821910055333e+00 9.262870080507235e+03 + 187240 1.021656708233916e+00 -6.057277236057662e+00 -5.993418647247994e+00 3.383137760118035e+00 4.749823659147834e+00 9.196856900038920e+03 + 187260 9.754887916764853e-01 -5.979228358835576e+00 -5.975370131636208e+00 3.809010006779916e+00 4.831164544417415e+00 9.141577336708622e+03 + 187280 9.527498982396159e-01 -5.933574700201921e+00 -5.950782987620823e+00 3.998782923985383e+00 4.899970274652174e+00 9.066556164188725e+03 + 187300 9.445417970818046e-01 -5.902634024657086e+00 -5.970801854428159e+00 4.238535800504369e+00 4.847105573021305e+00 9.127563644477821e+03 + 187320 9.978672047197774e-01 -5.950808355941462e+00 -5.956363590649250e+00 3.957987403677119e+00 4.926088386315201e+00 9.083569923978896e+03 + 187340 1.076836346408877e+00 -6.027610535353595e+00 -6.000401720815070e+00 3.571727905376628e+00 4.727965129007282e+00 9.218286662444410e+03 + 187360 1.090244844189440e+00 -6.005463239722641e+00 -6.019504969334273e+00 3.624339352934656e+00 4.543709568554031e+00 9.277016853933561e+03 + 187380 1.040498882089004e+00 -5.891559984850800e+00 -6.003302845040398e+00 4.251907124732083e+00 4.610262329371682e+00 9.227151285137801e+03 + 187400 1.049641461597717e+00 -5.870926987498423e+00 -5.988825714065054e+00 4.370427273343706e+00 4.693434540629139e+00 9.182725768316694e+03 + 187420 1.125020089897373e+00 -5.952512833337888e+00 -6.019943030788504e+00 3.895773979707287e+00 4.508579351156516e+00 9.278361904098769e+03 + 187440 1.067805839287663e+00 -5.850083871159086e+00 -6.017281724455709e+00 4.491402821524456e+00 4.531326874111066e+00 9.270153158912106e+03 + 187460 1.089674223704599e+00 -5.876976802426681e+00 -6.009177646336478e+00 4.273355924639009e+00 4.514238220894477e+00 9.245210483686344e+03 + 187480 1.112305888169971e+00 -5.914301687524146e+00 -5.998094040410418e+00 4.129991973799774e+00 4.648843316702097e+00 9.211170210729930e+03 + 187500 1.095721476502235e+00 -5.904733067809425e+00 -6.014314002599639e+00 4.175555981661386e+00 4.546325296501120e+00 9.261038343666196e+03 + 187520 1.129890490086196e+00 -5.985158948121041e+00 -6.018572162935287e+00 3.712274565503034e+00 4.520410715361352e+00 9.274129396237866e+03 + 187540 9.713323595519057e-01 -5.792670124267233e+00 -6.059852377916348e+00 4.752023168645737e+00 4.217821321872390e+00 9.401693466788025e+03 + 187560 1.046146708918315e+00 -5.954496709839717e+00 -6.014949240579383e+00 3.956801427131057e+00 4.609673640625001e+00 9.262995384303777e+03 + 187580 1.053583522000687e+00 -6.015921950287440e+00 -6.017044257255536e+00 3.566301632396450e+00 4.559857172109199e+00 9.269461359975287e+03 + 187600 1.021111357887142e+00 -6.004015822435168e+00 -6.005189132504156e+00 3.664692367086573e+00 4.657955039101298e+00 9.233009366767739e+03 + 187620 1.070091147484666e+00 -6.099367418185931e+00 -5.986219531096507e+00 3.133293283131405e+00 4.783005960377816e+00 9.174814143606427e+03 + 187640 9.909494916969200e-01 -5.994189900450438e+00 -6.029776856824252e+00 3.701225719268508e+00 4.496879908706365e+00 9.308695457981990e+03 + 187660 1.006741660425191e+00 -6.025106736568172e+00 -6.007615974835820e+00 3.621173277714114e+00 4.721607938267912e+00 9.240434687102166e+03 + 187680 1.017673701299515e+00 -6.046984416653858e+00 -5.995779832866852e+00 3.420074151784442e+00 4.714098795773165e+00 9.204111196784930e+03 + 187700 9.978196421165930e-01 -6.021642328271223e+00 -6.019090640372303e+00 3.610509981786508e+00 4.625162168574533e+00 9.275732044164977e+03 + 187720 1.028863666277457e+00 -6.071626007418413e+00 -6.021578553580339e+00 3.318715368015426e+00 4.606095592772097e+00 9.283413459940875e+03 + 187740 1.000614264642976e+00 -6.033642092805144e+00 -6.000245456550781e+00 3.537974460191829e+00 4.729743113677142e+00 9.217813968424962e+03 + 187760 9.829999690184826e-01 -6.011413776387128e+00 -6.007798248161731e+00 3.668298778762758e+00 4.689059701334169e+00 9.240999723086245e+03 + 187780 1.020726485952122e+00 -6.069845682520405e+00 -5.999777585014566e+00 3.337229267269158e+00 4.739571126150735e+00 9.216371149257280e+03 + 187800 1.038997182307271e+00 -6.099087884049345e+00 -5.956045643754971e+00 3.224087165003675e+00 5.045457844489114e+00 9.082608084828631e+03 + 187820 9.122305606748948e-01 -5.912466780827520e+00 -5.996536551127279e+00 4.155056953916227e+00 4.672315323100105e+00 9.206402011509692e+03 + 187840 9.461805597296103e-01 -5.959396003073463e+00 -6.038458796807508e+00 3.904998805095451e+00 4.451008008546774e+00 9.335481548661934e+03 + 187860 9.915293822254819e-01 -6.019628496480236e+00 -5.994377644605236e+00 3.650430511535238e+00 4.795424810558187e+00 9.199799963553427e+03 + 187880 9.832554234456775e-01 -5.998077622735107e+00 -6.005493951167119e+00 3.699826677510083e+00 4.657240971980358e+00 9.233920515183372e+03 + 187900 1.055953890645090e+00 -6.094755055561174e+00 -5.995364848382829e+00 3.186801038456484e+00 4.757514988659388e+00 9.202838445921037e+03 + 187920 9.609044700569084e-01 -5.942456359699412e+00 -6.054879862756176e+00 3.972838063239229e+00 4.327284911206422e+00 9.386288001584593e+03 + 187940 1.018681371116864e+00 -6.016587888617467e+00 -6.004937732461141e+00 3.602895924228079e+00 4.669792923733548e+00 9.232204175275132e+03 + 187960 9.665492455221173e-01 -5.924986308865441e+00 -6.004634178897405e+00 4.082828769594828e+00 4.625478374403241e+00 9.231286375574929e+03 + 187980 9.893054303827753e-01 -5.944663252691586e+00 -6.028586165402113e+00 3.988329814357630e+00 4.506431462545017e+00 9.305011393009770e+03 + 188000 9.792544115739478e-01 -5.914243564331886e+00 -6.050182372081820e+00 4.152698011195435e+00 4.372116340632805e+00 9.371715032028504e+03 + 188020 1.029651373912197e+00 -5.972093357999048e+00 -5.999300220129203e+00 3.844551505045167e+00 4.688325492445512e+00 9.214906959499589e+03 + 188040 1.017456422741918e+00 -5.936510671602509e+00 -6.034720020257022e+00 4.087595417516251e+00 4.523662139694450e+00 9.323945883094200e+03 + 188060 9.825377821298039e-01 -5.870637537406160e+00 -6.093722652996654e+00 4.374778401293991e+00 4.093789145263307e+00 9.506995161626894e+03 + 188080 1.064334368842517e+00 -5.983122279282391e+00 -6.007828465717056e+00 3.796870242269896e+00 4.655003496492053e+00 9.241105225799130e+03 + 188100 1.022599810293121e+00 -5.913530087727156e+00 -6.070486852643192e+00 4.160774861383462e+00 4.259504828254713e+00 9.434700815271164e+03 + 188120 1.011364139325243e+00 -5.895194394958018e+00 -6.091208593350279e+00 4.263710175740153e+00 4.138166315472625e+00 9.499156560451122e+03 + 188140 1.035986457190639e+00 -5.939148350760794e+00 -6.022824946553668e+00 4.060715235314700e+00 4.580231273360666e+00 9.287240281002692e+03 + 188160 1.045634256673235e+00 -5.967726891733440e+00 -6.018384906629809e+00 3.869850429187999e+00 4.578964268350578e+00 9.273556946221332e+03 + 188180 9.867575747186296e-01 -5.903766984687859e+00 -6.002685766745776e+00 4.253902426390906e+00 4.685895472182296e+00 9.225282447247666e+03 + 188200 1.050746278721140e+00 -6.030881626775353e+00 -5.978800259456347e+00 3.559816170838876e+00 4.858875441550157e+00 9.152085906821534e+03 + 188220 9.725027936816462e-01 -5.951555416159512e+00 -6.028179832536782e+00 3.946283918626283e+00 4.506294662197886e+00 9.303766564423093e+03 + 188240 1.000239492131249e+00 -6.032988992385877e+00 -5.997386912918585e+00 3.519416843697121e+00 4.723849493402303e+00 9.209032401599914e+03 + 188260 1.022737901850711e+00 -6.101899028332215e+00 -6.006997838851309e+00 3.161837684257663e+00 4.706775000168636e+00 9.238554898411308e+03 + 188280 9.479811796270937e-01 -6.023450353208957e+00 -6.033923741626424e+00 3.604335164987508e+00 4.544195347942795e+00 9.321503658884072e+03 + 188300 9.653452324571075e-01 -6.075181232634119e+00 -5.994615544213258e+00 3.276254252974332e+00 4.738874903386904e+00 9.200540852924523e+03 + 188320 8.881585587407771e-01 -5.977389865899354e+00 -6.003355900306247e+00 3.849267239980338e+00 4.700166252185115e+00 9.227313275406934e+03 + 188340 9.408629267719103e-01 -6.060716093660590e+00 -5.954507138504253e+00 3.352105621085954e+00 4.961973877376330e+00 9.077930164186813e+03 + 188360 9.409613946392548e-01 -6.058191936322547e+00 -6.014096242716897e+00 3.337654194552734e+00 4.590858491022910e+00 9.260381861850979e+03 + 188380 9.734435623812695e-01 -6.100494463464449e+00 -5.969764332682729e+00 3.136970043624076e+00 4.887642684995071e+00 9.124484824421152e+03 + 188400 9.442103763174035e-01 -6.046143825472029e+00 -5.961096844866542e+00 3.507447214833078e+00 4.995800138447498e+00 9.098015439363558e+03 + 188420 9.483521326352081e-01 -6.036413556328778e+00 -5.967879601499162e+00 3.569766671476529e+00 4.963299245703418e+00 9.118709643967435e+03 + 188440 9.841408056194197e-01 -6.068617181120462e+00 -5.981408699872695e+00 3.331478112781652e+00 4.832242707575189e+00 9.160056870412112e+03 + 188460 1.038590149147225e+00 -6.124352440514215e+00 -5.969146883323125e+00 3.064320780650116e+00 4.955535108023708e+00 9.122576868596447e+03 + 188480 9.106374012218605e-01 -5.908724267090371e+00 -6.040524522322999e+00 4.155045750296466e+00 4.398228288727134e+00 9.341837815494860e+03 + 188500 1.006635619529266e+00 -6.027058562019530e+00 -5.996226067974712e+00 3.511308369489478e+00 4.688353321607856e+00 9.205456392409846e+03 + 188520 9.108984356651380e-01 -5.861353833954616e+00 -6.039395671724597e+00 4.382717005822665e+00 4.360373221462084e+00 9.338373555236849e+03 + 188540 9.793185955220237e-01 -5.943514094580059e+00 -5.996912204570042e+00 4.019310960163216e+00 4.712690749269920e+00 9.207562338657846e+03 + 188560 1.059285450156670e+00 -6.045253578178310e+00 -5.998463419504421e+00 3.530201206582955e+00 4.798877538442083e+00 9.212328354552690e+03 + 188580 9.780019189614730e-01 -5.915968498335595e+00 -6.040679745793125e+00 4.133956064696723e+00 4.417844782792415e+00 9.342365564928979e+03 + 188600 1.052717421625437e+00 -6.024709778093428e+00 -6.019137569302348e+00 3.596177237134250e+00 4.628173722309148e+00 9.275889673630018e+03 + 188620 1.090041687140318e+00 -6.081820338402635e+00 -5.980465020361054e+00 3.252599468875911e+00 4.834597389755450e+00 9.157172783157814e+03 + 188640 1.037101260134824e+00 -6.006091602089427e+00 -5.962612465047537e+00 3.621206253184516e+00 4.870870186453761e+00 9.102641859686839e+03 + 188660 1.007964017711743e+00 -5.965309992394196e+00 -5.963488882369886e+00 3.871596510521200e+00 4.882053606096650e+00 9.105291860010650e+03 + 188680 9.997004798608997e-01 -5.954990602194666e+00 -6.001224574187162e+00 3.944446177626584e+00 4.678963555761630e+00 9.220797290901015e+03 + 188700 1.052730405028764e+00 -6.037688539638236e+00 -5.980782124974112e+00 3.535565208126762e+00 4.862330647367372e+00 9.158141109825800e+03 + 188720 9.799635287365537e-01 -5.935272560842371e+00 -6.002376441223687e+00 4.085393607160711e+00 4.700072741719265e+00 9.224335995946813e+03 + 188740 1.003504895610224e+00 -5.976604720684354e+00 -6.013732271241614e+00 3.838236497368292e+00 4.625044356598627e+00 9.259257770084329e+03 + 188760 9.773936762911285e-01 -5.945836137439832e+00 -6.023110368797303e+00 3.985436457174665e+00 4.541715862571411e+00 9.288111579750539e+03 + 188780 1.001361067034065e+00 -5.990798817172465e+00 -5.968663379494609e+00 3.688151166429103e+00 4.815256275023261e+00 9.121067185415508e+03 + 188800 1.004105895272921e+00 -6.001541494445028e+00 -5.981247428493603e+00 3.654164139792173e+00 4.770695806981811e+00 9.159555254690806e+03 + 188820 9.551214596720535e-01 -5.933996559837165e+00 -5.985728631550634e+00 4.041137056368591e+00 4.744083495077623e+00 9.173281192349514e+03 + 188840 1.001067697203345e+00 -6.007374567236664e+00 -6.019782418702512e+00 3.636730003547913e+00 4.565482200322206e+00 9.277847126910137e+03 + 188860 9.173470194606513e-01 -5.887818901328602e+00 -6.052003803059247e+00 4.287322513737160e+00 4.344547400468373e+00 9.377373415329708e+03 + 188880 1.078370357194244e+00 -6.132536769291884e+00 -6.002229388985913e+00 3.018919036710302e+00 4.767164179429122e+00 9.223921261571682e+03 + 188900 1.007755551233746e+00 -6.039333959773012e+00 -6.034413467656064e+00 3.413279354129003e+00 4.441533581308217e+00 9.323022107632230e+03 + 188920 1.091857928185486e+00 -6.182942496275771e+00 -5.964344883000384e+00 2.765879128287330e+00 5.021100451585927e+00 9.107935742804970e+03 + 188940 9.234267420491796e-01 -5.959100041556242e+00 -6.021597311595134e+00 3.882678572252410e+00 4.523809576267809e+00 9.283459071229830e+03 + 188960 9.657424196704705e-01 -6.052577759038441e+00 -5.946749137271805e+00 3.386876792910526e+00 4.994561116020842e+00 9.054298778876513e+03 + 188980 9.320610789565064e-01 -6.030826180788404e+00 -5.934559086855344e+00 3.509257140923759e+00 5.062037691572026e+00 9.017241093081047e+03 + 189000 8.672804574472469e-01 -5.956794080713724e+00 -6.004995950372959e+00 3.896357997259608e+00 4.619575402461058e+00 9.232376709842252e+03 + 189020 9.544869406151526e-01 -6.101850760774086e+00 -5.969304168787883e+00 3.168868641412536e+00 4.929971684116140e+00 9.123067999327202e+03 + 189040 9.739095755578714e-01 -6.141351321602954e+00 -5.975188769564815e+00 2.947132772202851e+00 4.901263859577673e+00 9.141040584173928e+03 + 189060 9.375815953801838e-01 -6.093446265786305e+00 -5.988100835648619e+00 3.178469935724336e+00 4.783379697727558e+00 9.180590216633966e+03 + 189080 9.450438942663600e-01 -6.104144767541471e+00 -5.975224899152375e+00 3.179917557473389e+00 4.920195392048740e+00 9.141155802861516e+03 + 189100 9.242465210845818e-01 -6.064784573567142e+00 -5.983392453232580e+00 3.338643537153801e+00 4.806009687504773e+00 9.166141883930759e+03 + 189120 9.371846001243667e-01 -6.065783778769316e+00 -5.981311024237955e+00 3.379362749454327e+00 4.864418378089920e+00 9.159762544255416e+03 + 189140 9.209652503509672e-01 -6.011634946921604e+00 -6.005729670851983e+00 3.644654323237719e+00 4.678563332268004e+00 9.234656887785408e+03 + 189160 9.938091577818602e-01 -6.077573012428418e+00 -6.036954294565664e+00 3.218611586939800e+00 4.451850550634008e+00 9.330851421968919e+03 + 189180 9.672589397674841e-01 -5.994579517237863e+00 -6.006381423294198e+00 3.719959145864531e+00 4.652190774949997e+00 9.236666199376017e+03 + 189200 1.015013515586272e+00 -6.026247846630299e+00 -5.998741722911931e+00 3.588155438434998e+00 4.746099857384755e+00 9.213182032025512e+03 + 189220 1.034144720611114e+00 -6.023254463983983e+00 -5.990529642229261e+00 3.584405443769672e+00 4.772316434435085e+00 9.187977786805335e+03 + 189240 1.044016364993099e+00 -6.013568381301496e+00 -5.998151979182812e+00 3.582189349730727e+00 4.670712716376726e+00 9.211389704008836e+03 + 189260 1.027498641841579e+00 -5.973576836432010e+00 -6.000872124529335e+00 3.865112614062334e+00 4.708378845875316e+00 9.219727352639014e+03 + 189280 1.038165707553652e+00 -5.980059684325155e+00 -5.983450501185790e+00 3.824455100333259e+00 4.804984505192282e+00 9.166304242453652e+03 + 189300 1.060858683028968e+00 -6.007331906008186e+00 -6.001198467115297e+00 3.668771919796146e+00 4.703991075065717e+00 9.220724062543997e+03 + 189320 9.929866358021024e-01 -5.905388812080290e+00 -6.006286999381382e+00 4.201531940854392e+00 4.622158935427497e+00 9.236355090529003e+03 + 189340 9.779280124576570e-01 -5.886599608094234e+00 -5.966538972058198e+00 4.328713869572582e+00 4.869689671114905e+00 9.114585231217832e+03 + 189360 1.036748673736210e+00 -5.976159061171371e+00 -5.976482595594208e+00 3.772184889230258e+00 4.770327104507537e+00 9.144966098491788e+03 + 189380 1.014240702014481e+00 -5.946888485207029e+00 -5.987092747451317e+00 4.019220492380313e+00 4.788361396984132e+00 9.177432605723970e+03 + 189400 1.014071203209337e+00 -5.954188406278993e+00 -5.993949936891656e+00 3.979600085840912e+00 4.751283223986021e+00 9.198458090212796e+03 + 189420 1.004186178058447e+00 -5.947765252829197e+00 -6.026572481098816e+00 3.930653375761982e+00 4.478130075658668e+00 9.298783190064281e+03 + 189440 1.091264643642990e+00 -6.088427591831430e+00 -5.969051017029226e+00 3.239478719675504e+00 4.924957485655007e+00 9.122286778126359e+03 + 189460 9.709705637157013e-01 -5.926091046621782e+00 -6.010543348663234e+00 4.115862056481033e+00 4.630923869207508e+00 9.249419038964639e+03 + 189480 1.009896260383370e+00 -6.004664916548604e+00 -5.998424249538518e+00 3.689035950212216e+00 4.724870825924229e+00 9.212202145946354e+03 + 189500 9.847105927014280e-01 -5.992514580038136e+00 -6.015984724161422e+00 3.705086960700759e+00 4.570317761151784e+00 9.266193162091187e+03 + 189520 9.891008818229059e-01 -6.029893479565382e+00 -5.986498378612109e+00 3.546983882860181e+00 4.796165267904048e+00 9.175668118022691e+03 + 189540 9.700387811560235e-01 -6.038141472481678e+00 -6.014729839379546e+00 3.461439564291220e+00 4.595872784502175e+00 9.262329736949519e+03 + 189560 9.187065739797919e-01 -6.000114755271084e+00 -5.975652520992858e+00 3.752511408976021e+00 4.892977343720114e+00 9.142454782615670e+03 + 189580 9.826372192171458e-01 -6.129661460813762e+00 -5.984035006265776e+00 2.982062210166316e+00 4.818271847801863e+00 9.168129969672213e+03 + 189600 9.256146485600103e-01 -6.076517738924355e+00 -6.004892021139657e+00 3.303604193141366e+00 4.714890148705102e+00 9.232094978472824e+03 + 189620 9.125610129429221e-01 -6.082255193986525e+00 -5.977072859807848e+00 3.247302359865775e+00 4.851275599633352e+00 9.146805748445950e+03 + 189640 8.956321091981019e-01 -6.070589951173189e+00 -5.955925371539328e+00 3.413342066310738e+00 5.071763826854722e+00 9.082230540484694e+03 + 189660 1.011626863101136e+00 -6.244756785893398e+00 -5.963892725008185e+00 2.402831381742082e+00 5.015596282917930e+00 9.106578068341967e+03 + 189680 9.355513694653862e-01 -6.127754247264849e+00 -5.999202091960938e+00 3.022687466500769e+00 4.760853835637569e+00 9.214622528801197e+03 + 189700 9.116328353524825e-01 -6.080440598541761e+00 -5.970227126018383e+00 3.263762564864783e+00 4.896625379573775e+00 9.125866264698730e+03 + 189720 8.826480550729751e-01 -6.015484970350329e+00 -5.993517199781119e+00 3.648804181694583e+00 4.774946519804496e+00 9.197142992368988e+03 + 189740 9.591745498985730e-01 -6.093180245780527e+00 -5.982743710118360e+00 3.232878680787813e+00 4.867022358558636e+00 9.164161858991709e+03 + 189760 9.516012715418856e-01 -6.038374032812517e+00 -6.001802737489411e+00 3.525260468117910e+00 4.735258505252848e+00 9.222572685277664e+03 + 189780 1.007024119564611e+00 -6.076674968945555e+00 -5.989996694089540e+00 3.287398853403228e+00 4.785118921046154e+00 9.186376447344481e+03 + 189800 9.323509455336298e-01 -5.931312243791061e+00 -5.997625811601975e+00 4.079233020266152e+00 4.698450251904434e+00 9.209749263639487e+03 + 189820 9.582523924494802e-01 -5.948209692361762e+00 -5.963848691931989e+00 4.020767323665949e+00 4.930965768006344e+00 9.106397951159039e+03 + 189840 1.021652401074239e+00 -6.028723744040034e+00 -5.987189510197891e+00 3.573624979731654e+00 4.812120977855159e+00 9.177763907077340e+03 + 189860 1.047239867341324e+00 -6.059002912372088e+00 -5.974745568788780e+00 3.420505748026585e+00 4.904324453663717e+00 9.139692409629180e+03 + 189880 1.023213751124093e+00 -6.019124349089250e+00 -5.975346613796274e+00 3.634352361653716e+00 4.885730892288623e+00 9.141529456263195e+03 + 189900 1.003307969230358e+00 -5.986316835824987e+00 -5.996202416849924e+00 3.761629053792192e+00 4.704864517758287e+00 9.205414467201637e+03 + 189920 1.036233114266616e+00 -6.031416955781196e+00 -6.022099011223807e+00 3.560788018573433e+00 4.614293098169222e+00 9.285020308674813e+03 + 189940 1.003952441829978e+00 -5.982188284031203e+00 -6.030606660864757e+00 3.768991069900208e+00 4.490965257402339e+00 9.311264432146792e+03 + 189960 1.036263077993498e+00 -6.032585408715040e+00 -5.993729452474438e+00 3.558960630982596e+00 4.782077544655929e+00 9.197817041367318e+03 + 189980 1.059259280515890e+00 -6.069641564287687e+00 -5.981315179867200e+00 3.329379502087259e+00 4.836563269893511e+00 9.159794923374971e+03 + 190000 1.002000343812157e+00 -5.988410060782896e+00 -5.988560886335374e+00 3.821622855285393e+00 4.820756791622890e+00 9.181959014582308e+03 + 190020 1.041702268620511e+00 -6.053007634060574e+00 -5.982211360530052e+00 3.446027445315846e+00 4.852550603616023e+00 9.162516727011876e+03 + 190040 9.823300423336282e-01 -5.972388292651483e+00 -5.982700433335363e+00 3.864348655866578e+00 4.805134748261128e+00 9.164035314345982e+03 + 190060 9.566651526499863e-01 -5.939933337160141e+00 -6.035210143955053e+00 4.012826209314950e+00 4.465732040660362e+00 9.325448452588407e+03 + 190080 9.576092041552912e-01 -5.947598374514730e+00 -6.061384005582275e+00 3.954643515810290e+00 4.301268813950942e+00 9.406444480677808e+03 + 190100 1.040261073260992e+00 -6.078855061919229e+00 -5.972103295831728e+00 3.298194736413429e+00 4.911179897070275e+00 9.131608395828671e+03 + 190120 1.006710923122538e+00 -6.037657615603883e+00 -5.979278012384514e+00 3.528344376282516e+00 4.863569092182531e+00 9.153535480878607e+03 + 190140 9.560250694306736e-01 -5.971512581133732e+00 -5.994555242512783e+00 3.857351086743968e+00 4.725036559265135e+00 9.200338223595281e+03 + 190160 9.747167472025371e-01 -6.006615582876423e+00 -5.969039848794996e+00 3.734865257294858e+00 4.950630937216466e+00 9.122235167308296e+03 + 190180 9.581189011083978e-01 -5.986897061364489e+00 -5.971111668974573e+00 3.833050840704989e+00 4.923693006589466e+00 9.128558407696410e+03 + 190200 9.865637571576783e-01 -6.031819088796250e+00 -5.978777671488865e+00 3.596572180254893e+00 4.901144206566699e+00 9.151992193348762e+03 + 190220 9.763796951015768e-01 -6.015686077699007e+00 -6.001006895103124e+00 3.583722779822932e+00 4.668012917884655e+00 9.220148322282585e+03 + 190240 9.631005264470269e-01 -5.993041403880172e+00 -6.005058197746798e+00 3.720348634107060e+00 4.651346344132048e+00 9.232584987399505e+03 + 190260 9.545734508626229e-01 -5.975814402477456e+00 -6.019814642996149e+00 3.815481933965266e+00 4.562825743891720e+00 9.277959982329210e+03 + 190280 9.815805038027789e-01 -6.007846082357604e+00 -6.018213133871492e+00 3.678554965895673e+00 4.619025751806893e+00 9.273033224732862e+03 + 190300 9.896107273989241e-01 -6.004852267900675e+00 -6.023840343848775e+00 3.667413842213147e+00 4.558381371723900e+00 9.290382719510642e+03 + 190320 1.070697843779483e+00 -6.108023296021521e+00 -6.008664100441186e+00 3.077492013531892e+00 4.648027890340003e+00 9.243668900167826e+03 + 190340 1.016689062457228e+00 -6.010679130767457e+00 -5.971487280930207e+00 3.714785121925001e+00 4.939830788609655e+00 9.129728015999715e+03 + 190360 1.004649412357485e+00 -5.971897282616390e+00 -6.004404541407405e+00 3.863483434306393e+00 4.676821723846345e+00 9.230589399117905e+03 + 190380 1.018563188091038e+00 -5.967117242327284e+00 -6.026446639889587e+00 3.819751294128822e+00 4.479072712131480e+00 9.298403960740767e+03 + 190400 1.042705343183053e+00 -5.977241676309036e+00 -5.993757284225943e+00 3.840443127557852e+00 4.745607951116907e+00 9.197892816674586e+03 + 190420 1.014070933629324e+00 -5.910056236345643e+00 -6.073111191459941e+00 4.124275405175911e+00 4.187988620236853e+00 9.442848327005117e+03 + 190440 1.110322036690122e+00 -6.033805788266423e+00 -6.002826506766937e+00 3.495303911296413e+00 4.673191739694779e+00 9.225742758261154e+03 + 190460 1.045646065068417e+00 -5.923128427943123e+00 -6.026094333398999e+00 4.118181628451645e+00 4.526935465401633e+00 9.297318712759305e+03 + 190480 9.978241201854654e-01 -5.845424973672015e+00 -6.023864469268741e+00 4.523314735764464e+00 4.498687538625364e+00 9.290439633606158e+03 + 190500 1.058826773083271e+00 -5.931256335567634e+00 -6.035162004841672e+00 4.055344687374828e+00 4.458702255052947e+00 9.325296385255930e+03 + 190520 1.041653626735848e+00 -5.909217065334498e+00 -6.032417881760611e+00 4.239182197603425e+00 4.531744044419956e+00 9.316828890195045e+03 + 190540 1.066274924649685e+00 -5.957559356974743e+00 -6.012116899159263e+00 3.969358989988431e+00 4.656081140012544e+00 9.254269392373943e+03 + 190560 1.106622883495302e+00 -6.041470793916690e+00 -6.011150524388858e+00 3.481798014044122e+00 4.655901693719480e+00 9.251311010591506e+03 + 190580 1.038954503655643e+00 -5.978408599467051e+00 -6.036675873368168e+00 3.847486327282831e+00 4.512906623711122e+00 9.329967479692195e+03 + 190600 1.060154066116299e+00 -6.060854626762197e+00 -5.980382831050607e+00 3.350677073572117e+00 4.812758577518211e+00 9.156936656578242e+03 + 190620 9.512076578601641e-01 -5.946932570149857e+00 -5.963349828673189e+00 3.990004879742953e+00 4.895734440739433e+00 9.104855847940189e+03 + 190640 9.493197679997870e-01 -5.980503164294089e+00 -5.974501127406373e+00 3.792738711558295e+00 4.827203336179769e+00 9.138903335761162e+03 + 190660 9.663279165366178e-01 -6.030487528394742e+00 -5.984229411321823e+00 3.573544036669124e+00 4.839165303322308e+00 9.168701933426415e+03 + 190680 9.544780462033906e-01 -6.028360135481010e+00 -6.050009605457242e+00 3.498469334480327e+00 4.374154727632152e+00 9.371235920797439e+03 + 190700 9.599815635012572e-01 -6.048235279745158e+00 -6.015650892435908e+00 3.465837537821318e+00 4.652942132168668e+00 9.265174428458482e+03 + 190720 9.741658849007470e-01 -6.076243019262829e+00 -5.975104026718848e+00 3.314844308433392e+00 4.895600054829453e+00 9.140804607508078e+03 + 190740 9.209044396640363e-01 -5.997482234273251e+00 -5.990893621421936e+00 3.734592484163027e+00 4.772425318739822e+00 9.189107540833946e+03 + 190760 9.167679485284640e-01 -5.986432497301693e+00 -6.010098725024983e+00 3.800892732716176e+00 4.664997590792141e+00 9.248020649270115e+03 + 190780 1.024247423660809e+00 -6.136913795728070e+00 -5.965610036696949e+00 3.038006391389240e+00 5.021659084916973e+00 9.111718345354451e+03 + 190800 9.402516168482492e-01 -5.998624698274003e+00 -5.968988415371907e+00 3.790472475072030e+00 4.960648597695817e+00 9.122077679742873e+03 + 190820 9.479366002874461e-01 -5.991477976202970e+00 -5.998311635433904e+00 3.759490779648969e+00 4.720250850839600e+00 9.211851968453526e+03 + 190840 1.047796139977899e+00 -6.117613017216276e+00 -5.970833218386895e+00 3.126260146764354e+00 4.969092465743120e+00 9.127739986782561e+03 + 190860 1.066115415116186e+00 -6.121010936658070e+00 -6.021118025542735e+00 3.007060135258536e+00 4.580660689260828e+00 9.282011213171299e+03 + 190880 1.025113190400180e+00 -6.040131149350029e+00 -5.988530196853709e+00 3.486136411487577e+00 4.782437065943038e+00 9.181889814338312e+03 + 190900 1.020948912948637e+00 -6.015557544170445e+00 -5.963786311029964e+00 3.651157798120269e+00 4.948436230385346e+00 9.106206474593115e+03 + 190920 1.020886268970268e+00 -5.995928391909649e+00 -5.984760933877678e+00 3.756726850328695e+00 4.820852122506817e+00 9.170314783122525e+03 + 190940 1.012431235554254e+00 -5.963671813796256e+00 -6.039918927798000e+00 3.880969125489838e+00 4.443146397689065e+00 9.340007683742455e+03 + 190960 1.097645444753711e+00 -6.076383825086185e+00 -5.997568870460207e+00 3.295883829905931e+00 4.748451495943105e+00 9.209584439368147e+03 + 190980 1.010259804318700e+00 -5.938031973335732e+00 -6.002427722414703e+00 4.045724472038551e+00 4.675954115617135e+00 9.224481272665093e+03 + 191000 1.018704041858450e+00 -5.942327428571978e+00 -5.998376034055347e+00 4.037026208890730e+00 4.715186442711558e+00 9.212062380653251e+03 + 191020 1.073936169087454e+00 -6.018112277676075e+00 -6.002650345017425e+00 3.583925685473588e+00 4.672710495525903e+00 9.225208030569225e+03 + 191040 1.003168606148687e+00 -5.912507101982788e+00 -6.068142384992453e+00 4.157610749362245e+00 4.263928869838541e+00 9.427417313987655e+03 + 191060 9.586184551214803e-01 -5.854148189669719e+00 -6.043914933272790e+00 4.502861109211237e+00 4.413191101133735e+00 9.352337817204163e+03 + 191080 1.028232595182057e+00 -5.974894903632490e+00 -5.977387184024499e+00 3.901984454413006e+00 4.887673394722947e+00 9.147728088548018e+03 + 191100 1.013235484032532e+00 -5.984500477419813e+00 -6.007576320011090e+00 3.763061885800089e+00 4.630556826665875e+00 9.240309812252091e+03 + 191120 9.521529224436910e-01 -5.946570268397061e+00 -5.970743734958461e+00 4.099376813889192e+00 4.960569028061777e+00 9.127415320420534e+03 + 191140 9.550399982758525e-01 -6.005767110517900e+00 -5.985333864950523e+00 3.686518383175263e+00 4.803849241257677e+00 9.172061069122714e+03 + 191160 9.510409627650923e-01 -6.046545179085324e+00 -5.992833822469372e+00 3.390042459374403e+00 4.698461380868775e+00 9.195068898074893e+03 + 191180 9.501315620752302e-01 -6.079975530612507e+00 -5.987169428839056e+00 3.308493758843910e+00 4.841400756924904e+00 9.177673180047750e+03 + 191200 9.045989450352149e-01 -6.035534260807115e+00 -6.029542803065583e+00 3.500523306224039e+00 4.534927183751005e+00 9.307954338391251e+03 + 191220 9.373486369008189e-01 -6.095746817487751e+00 -6.017117692242503e+00 3.160766283579474e+00 4.612266888555496e+00 9.269689350100856e+03 + 191240 9.349828891591804e-01 -6.096876881131269e+00 -5.977857689217425e+00 3.238605888397710e+00 4.922032506527430e+00 9.149195301573200e+03 + 191260 8.940781172580391e-01 -6.035654379450566e+00 -5.960340011842199e+00 3.566607058656234e+00 4.999073812324198e+00 9.095684633115519e+03 + 191280 8.736757694868976e-01 -5.994349401786306e+00 -6.013387808080138e+00 3.766767738836653e+00 4.657446263713622e+00 9.258176671332803e+03 + 191300 9.763740196483891e-01 -6.124460672010238e+00 -5.988817041677562e+00 3.051728780227339e+00 4.830615496381519e+00 9.182766385155906e+03 + 191320 9.815752218585243e-01 -6.105897408239872e+00 -5.971164419161475e+00 3.116758688014547e+00 4.890416361165378e+00 9.128745760243517e+03 + 191340 9.809850755669589e-01 -6.073450605929524e+00 -5.983542686580833e+00 3.316633935270348e+00 4.832899121376082e+00 9.166595602867323e+03 + 191360 9.977228183558724e-01 -6.062998791340311e+00 -6.005273469318062e+00 3.359950036342977e+00 4.691417768359445e+00 9.233259470601648e+03 + 191380 1.017970702159216e+00 -6.060081095466974e+00 -6.004226138794278e+00 3.430848902287466e+00 4.751576707028693e+00 9.230030565223289e+03 + 191400 1.015469537524013e+00 -6.028367111236157e+00 -5.994194195571880e+00 3.578383931146198e+00 4.774610101132089e+00 9.199221699988308e+03 + 191420 9.835383367285012e-01 -5.957859037928421e+00 -5.948957198717197e+00 3.914400487972997e+00 4.965516226279012e+00 9.061015358952969e+03 + 191440 1.019570921293598e+00 -5.991417318027834e+00 -5.961376909352484e+00 3.756020528763462e+00 4.928517204115540e+00 9.098853143508890e+03 + 191460 1.003479357216277e+00 -5.948494673059741e+00 -6.013939109310937e+00 3.931850989913131e+00 4.556058909464985e+00 9.259876649025848e+03 + 191480 1.051470343724972e+00 -6.005530277166252e+00 -5.998888960185941e+00 3.670870033090198e+00 4.709005502931628e+00 9.213644416775191e+03 + 191500 1.009274430061284e+00 -5.932434247530918e+00 -6.044543730823118e+00 4.112272000310284e+00 4.468521998360005e+00 9.354298243761985e+03 + 191520 1.058113455630465e+00 -6.002937325224207e+00 -6.023234113411297e+00 3.714156944915155e+00 4.597609646227067e+00 9.288502838323171e+03 + 191540 9.945245520899875e-01 -5.911555351276329e+00 -6.018762983858352e+00 4.108611183304932e+00 4.493008366691430e+00 9.274743925277704e+03 + 191560 1.010352817990935e+00 -5.940572551021598e+00 -6.009143566307461e+00 3.981526400810686e+00 4.587781019708936e+00 9.245133850948221e+03 + 191580 1.017874163232890e+00 -5.958163846636958e+00 -6.033085260178677e+00 3.900026065822345e+00 4.469815715214523e+00 9.318885098974570e+03 + 191600 1.052072743483916e+00 -6.018342463532246e+00 -6.015429065273006e+00 3.596682812100352e+00 4.613411995751830e+00 9.264454206710596e+03 + 191620 1.033582014517184e+00 -6.006244183265349e+00 -5.979113426399386e+00 3.676689978313955e+00 4.832478982709372e+00 9.153036386894692e+03 + 191640 9.783459178955162e-01 -5.944303370307665e+00 -5.996279380945139e+00 3.974380911839639e+00 4.675926615497612e+00 9.205607882972066e+03 + 191660 9.495605591885232e-01 -5.922646190290551e+00 -5.980351816715322e+00 4.160824540255213e+00 4.829469903407352e+00 9.156820024740990e+03 + 191680 1.073278135576532e+00 -6.131808122476375e+00 -5.963799293317770e+00 2.962638447736812e+00 4.927371144047812e+00 9.106264747772977e+03 + 191700 1.019904030798344e+00 -6.084539211203764e+00 -5.979937340649491e+00 3.233326052044087e+00 4.833966179853875e+00 9.155564173048439e+03 + 191720 1.003580227232314e+00 -6.097715189088562e+00 -5.973374924366634e+00 3.228128919491218e+00 4.942109961118311e+00 9.135501062137542e+03 + 191740 9.623827344372552e-01 -6.079941057435414e+00 -6.031768791670542e+00 3.281121125446143e+00 4.557733730102068e+00 9.314830370931300e+03 + 191760 9.541383746607742e-01 -6.112825226105445e+00 -5.981236433237981e+00 3.134580833584481e+00 4.890184045529351e+00 9.159527744020006e+03 + 191780 9.136424430679708e-01 -6.086815869207977e+00 -5.964120515641339e+00 3.266687622341837e+00 4.971223329566079e+00 9.107240365268188e+03 + 191800 9.016746540508660e-01 -6.091471018046007e+00 -5.987490404732738e+00 3.207811553867312e+00 4.804884326460009e+00 9.178702730301608e+03 + 191820 9.382766986989368e-01 -6.156465463297501e+00 -5.982982351852922e+00 2.845991209673524e+00 4.842158082013032e+00 9.164901414733786e+03 + 191840 8.772620646725818e-01 -6.066907258646674e+00 -5.998734176745101e+00 3.377608236353926e+00 4.769068622383089e+00 9.213146570738658e+03 + 191860 9.102359678844832e-01 -6.108228874497914e+00 -5.978214124349288e+00 3.131208744811996e+00 4.877773559882970e+00 9.150290623292751e+03 + 191880 9.130914466306342e-01 -6.097742579919884e+00 -5.954023133831194e+00 3.196115511968611e+00 5.021374811922272e+00 9.076439251745565e+03 + 191900 8.938525386101819e-01 -6.049296524990670e+00 -5.965909445672166e+00 3.388659391471166e+00 4.867480905026844e+00 9.112702287526863e+03 + 191920 8.936389474865665e-01 -6.025819417077584e+00 -5.988406242107807e+00 3.566857510541190e+00 4.781689750887770e+00 9.181482971096410e+03 + 191940 9.197943474258892e-01 -6.041861018588466e+00 -5.973154903716193e+00 3.456953368780187e+00 4.851474512613695e+00 9.134817149127686e+03 + 191960 9.678635059504289e-01 -6.092653386390560e+00 -5.985167912130876e+00 3.199637609045962e+00 4.816835835568451e+00 9.171565340244420e+03 + 191980 9.431687246303684e-01 -6.037935444933433e+00 -5.964313983484297e+00 3.530869535999547e+00 4.953615360524828e+00 9.107817187256251e+03 + 192000 9.576251207916190e-01 -6.040255296306430e+00 -5.982904442310485e+00 3.478806372176783e+00 4.808123850837474e+00 9.164623958095663e+03 + 192020 9.593518930677277e-01 -6.021170125105177e+00 -6.033032409394900e+00 3.542533497062882e+00 4.474418424988730e+00 9.318738188676089e+03 + 192040 1.007020196346745e+00 -6.072579985899557e+00 -5.993588078922735e+00 3.283115101393803e+00 4.736698855212814e+00 9.197383980548619e+03 + 192060 9.555891805065074e-01 -5.976963811548091e+00 -6.032205551743185e+00 3.772729423712545e+00 4.455522802880646e+00 9.316186789004389e+03 + 192080 9.733215524975060e-01 -5.983572408840113e+00 -5.976541698493543e+00 3.796867436938792e+00 4.837238863747702e+00 9.145178533190827e+03 + 192100 9.679647377956010e-01 -5.955598685348470e+00 -5.962530490556784e+00 3.948947199077776e+00 4.909143700878250e+00 9.102379837467881e+03 + 192120 1.045525563242220e+00 -6.048192643245182e+00 -5.986666318709317e+00 3.466589525217151e+00 4.819883201870034e+00 9.176157172220881e+03 + 192140 9.406567299728716e-01 -5.873374389452994e+00 -6.060692939495844e+00 4.326640703886595e+00 4.251028602088614e+00 9.404268866703327e+03 + 192160 1.012779331627218e+00 -5.963601088370486e+00 -6.002007241332899e+00 3.840035796750179e+00 4.619501723107041e+00 9.223217252894934e+03 + 192180 9.790478402541377e-01 -5.895157056663507e+00 -6.012591727570991e+00 4.316078822356825e+00 4.641750769049466e+00 9.255690722751136e+03 + 192200 1.029879957366478e+00 -5.956134396368607e+00 -6.023410296771222e+00 3.933979119652544e+00 4.547670488628789e+00 9.289055937230540e+03 + 192220 9.931537580234043e-01 -5.891391563264853e+00 -6.035254263086532e+00 4.215054845482317e+00 4.388972960425386e+00 9.325572284766355e+03 + 192240 1.040612308030105e+00 -5.954706802396915e+00 -5.954489189313839e+00 3.968073982647547e+00 4.969323550646086e+00 9.077832608937457e+03 + 192260 1.005221444621524e+00 -5.896126220228802e+00 -6.016982323913732e+00 4.199935601406573e+00 4.505961151626103e+00 9.269234238250092e+03 + 192280 1.083546802658243e+00 -6.008360630947656e+00 -6.018197940938515e+00 3.697869643067642e+00 4.641382286781329e+00 9.273001052357928e+03 + 192300 1.010336581954323e+00 -5.902107497643581e+00 -6.091841795284350e+00 4.170741115659305e+00 4.081257417318340e+00 9.501131350256646e+03 + 192320 1.041805277740136e+00 -5.963323932798932e+00 -6.024687655049785e+00 3.906363257754418e+00 4.554003268584692e+00 9.292997470367978e+03 + 192340 9.768973282589276e-01 -5.891088042206332e+00 -6.036793257865988e+00 4.309409872944383e+00 4.472747976817387e+00 9.330319001741347e+03 + 192360 1.033542857166404e+00 -6.012537748361447e+00 -5.978474859878798e+00 3.638689716029130e+00 4.834284092911458e+00 9.151080468582000e+03 + 192380 9.659139271004019e-01 -5.956860038445155e+00 -6.018565432697192e+00 3.893963652798107e+00 4.539641730124008e+00 9.274111979144322e+03 + 192400 8.967879880967317e-01 -5.901928702877667e+00 -6.007455282442073e+00 4.237230082021938e+00 4.631280131977704e+00 9.239928377635053e+03 + 192420 9.746097922455307e-01 -6.057216609161243e+00 -5.948687250149206e+00 3.410272714158284e+00 5.033465088469429e+00 9.060188070740265e+03 + 192440 9.471052988486731e-01 -6.046407878073064e+00 -5.958533476656565e+00 3.489497225984359e+00 4.994085637437570e+00 9.090173394915937e+03 + 192460 9.353684383857561e-01 -6.045718236663029e+00 -5.976989110661730e+00 3.450545043794382e+00 4.845198321091716e+00 9.146541970821156e+03 + 192480 9.939048077375074e-01 -6.140243172837104e+00 -5.986964513291386e+00 2.947500593138268e+00 4.827650376045687e+00 9.177092559008019e+03 + 192500 9.146719508165742e-01 -6.024212076760592e+00 -6.033263444065296e+00 3.549520273209473e+00 4.497545921451296e+00 9.319460559552594e+03 + 192520 9.807177052988922e-01 -6.120995865590154e+00 -5.957907512484915e+00 3.055455646461861e+00 4.991934207833220e+00 9.088299572814507e+03 + 192540 9.221259462994515e-01 -6.025519473796090e+00 -5.976846745676211e+00 3.549930414251555e+00 4.829416751196232e+00 9.146111074578694e+03 + 192560 9.217870751269673e-01 -6.009199929391844e+00 -6.017217326278747e+00 3.614289956644090e+00 4.568252823031339e+00 9.269995336460124e+03 + 192580 9.662691560521297e-01 -6.056371653367839e+00 -5.980723435820643e+00 3.433798893766838e+00 4.868182665446671e+00 9.157984651873956e+03 + 192600 9.503504370838111e-01 -6.011653250127982e+00 -5.996713584569786e+00 3.641178158681920e+00 4.726964030222855e+00 9.206937145557937e+03 + 192620 9.373358815981214e-01 -5.967289547031760e+00 -6.023447087822232e+00 3.809162348862350e+00 4.486697059292106e+00 9.289161989993619e+03 + 192640 1.030187041733637e+00 -6.080931738237631e+00 -5.956211515256458e+00 3.241635194319849e+00 4.957798015069875e+00 9.083111978218405e+03 + 192660 1.013829522811777e+00 -6.034178034372769e+00 -5.953385923476665e+00 3.523578088241455e+00 4.987498891545645e+00 9.074467594379037e+03 + 192680 9.407627319835281e-01 -5.905594912104410e+00 -5.992221483333143e+00 4.236005681895677e+00 4.738582504481717e+00 9.193148284639608e+03 + 192700 1.003212142847814e+00 -5.980829427637343e+00 -6.016094575607014e+00 3.738342084543816e+00 4.535844147637956e+00 9.266481902903404e+03 + 192720 1.007889770097951e+00 -5.975588895918214e+00 -5.991723967987950e+00 3.787167498561387e+00 4.694517417842631e+00 9.191656019528140e+03 + 192740 1.024881593061589e+00 -5.992288930007204e+00 -5.996692697481517e+00 3.675655287312233e+00 4.650368172993914e+00 9.206893867309969e+03 + 192760 1.039707542063000e+00 -6.007727488520697e+00 -6.054344794272981e+00 3.617069498750900e+00 4.349385715116535e+00 9.384636750520622e+03 + 192780 1.006709212962323e+00 -5.959881708491642e+00 -6.015425609087472e+00 3.929179648379150e+00 4.610237975767054e+00 9.264476050978265e+03 + 192800 9.854824735506763e-01 -5.933020091932467e+00 -5.985219210218506e+00 4.024287870581253e+00 4.724552455595364e+00 9.171714522878097e+03 + 192820 1.023832631215471e+00 -5.991921278501300e+00 -5.977792236617633e+00 3.784263118426029e+00 4.865394263384211e+00 9.148986376082168e+03 + 192840 1.052000262815415e+00 -6.037455528421045e+00 -5.990360118257201e+00 3.450820639447785e+00 4.721249772599746e+00 9.187483286954999e+03 + 192860 1.029843776873423e+00 -6.008314338260278e+00 -5.941443746166821e+00 3.739097718352827e+00 5.123079006344138e+00 9.038125338709613e+03 + 192880 1.008424253319556e+00 -5.979981659584528e+00 -6.012986777994043e+00 3.806749737742957e+00 4.617229240309952e+00 9.256890562970551e+03 + 192900 1.006484228571428e+00 -5.982238498500737e+00 -6.003669187810764e+00 3.725817986958154e+00 4.602759652551528e+00 9.228317093979820e+03 + 192920 9.552758763545041e-01 -5.910204749626405e+00 -6.043167225553050e+00 4.126402932903841e+00 4.362911820256389e+00 9.350013837800443e+03 + 192940 1.032030353125798e+00 -6.029332970594379e+00 -6.041192063631321e+00 3.506869975760779e+00 4.438773228353941e+00 9.343930476620228e+03 + 192960 1.028642868277555e+00 -6.033996839059620e+00 -6.023399274163221e+00 3.492719415259459e+00 4.553572272862453e+00 9.289032635909294e+03 + 192980 9.516282139765604e-01 -5.932174617125932e+00 -6.022984277936913e+00 4.048216472291362e+00 4.526773347165120e+00 9.287719065222647e+03 + 193000 9.221747874392042e-01 -5.901948938264630e+00 -5.972287271837005e+00 4.296536958136088e+00 4.892643361941571e+00 9.132145968463776e+03 + 193020 9.967620906617108e-01 -6.024434171772220e+00 -6.008409717074946e+00 3.487407009000026e+00 4.579421907648120e+00 9.242892891105204e+03 + 193040 9.453373255909743e-01 -5.964202147077200e+00 -6.010474077541184e+00 3.939647686705684e+00 4.673947101423395e+00 9.249242173418534e+03 + 193060 9.609140540355077e-01 -6.007102328049189e+00 -6.035018225517256e+00 3.618892007921688e+00 4.458594604688876e+00 9.324864642014463e+03 + 193080 9.561465559938862e-01 -6.028977961760090e+00 -6.031410303002341e+00 3.512037138254525e+00 4.498070258437931e+00 9.313743946658156e+03 + 193100 9.566715363582162e-01 -6.066414189457478e+00 -5.999729544895190e+00 3.330795694133351e+00 4.713709242625406e+00 9.216229603957807e+03 + 193120 9.333866191278156e-01 -6.069982557625226e+00 -5.970855157729405e+00 3.340031449054857e+00 4.909236319172214e+00 9.127805621720665e+03 + 193140 9.134541874023875e-01 -6.072814792974334e+00 -5.982541077263695e+00 3.290500238948896e+00 4.808865884371741e+00 9.163539020822553e+03 + 193160 9.576172466378968e-01 -6.161933811703527e+00 -5.960396325893591e+00 2.835435688610958e+00 4.992695119956750e+00 9.095875731634671e+03 + 193180 8.670986831403696e-01 -6.041524937722428e+00 -5.985440169616753e+00 3.466095037167460e+00 4.788142454720065e+00 9.172410711022309e+03 + 193200 9.053845020733399e-01 -6.102267418017212e+00 -6.016420104683939e+00 3.105011243185027e+00 4.597959801173484e+00 9.267535513569921e+03 + 193220 8.980117527856828e-01 -6.086830582377294e+00 -5.999572075103172e+00 3.227013274466935e+00 4.728065126445300e+00 9.215733819370422e+03 + 193240 9.410914474458053e-01 -6.135473115789558e+00 -5.998930077312314e+00 2.952376071807813e+00 4.736427328711065e+00 9.213785280443230e+03 + 193260 9.601176850693679e-01 -6.137312698012403e+00 -6.011367316933711e+00 2.949862175113902e+00 4.673060043252484e+00 9.251990484759672e+03 + 193280 9.166411273789244e-01 -6.040337267665028e+00 -6.006284162429790e+00 3.475516789453556e+00 4.671054989415296e+00 9.236362997994192e+03 + 193300 9.270422170559988e-01 -6.016904814733277e+00 -5.995357343659677e+00 3.617885212865659e+00 4.741614126230640e+00 9.202806997259806e+03 + 193320 9.655667914312422e-01 -6.030578136774420e+00 -5.987442640271071e+00 3.568934820418284e+00 4.816625516537023e+00 9.178528748468669e+03 + 193340 9.820138122671324e-01 -6.016296243480034e+00 -6.018572543766212e+00 3.595566292725177e+00 4.582495424225613e+00 9.274163776895248e+03 + 193360 9.692003756745533e-01 -5.971191859835379e+00 -6.049280713406879e+00 3.787932905128748e+00 4.339534623710161e+00 9.368964038164671e+03 + 193380 1.002257820711203e+00 -6.003792747994935e+00 -6.018722761083982e+00 3.629905806765611e+00 4.544175361196244e+00 9.274622882985874e+03 + 193400 1.048449079955170e+00 -6.061515350559915e+00 -6.005200751983695e+00 3.325003602414117e+00 4.648370742094739e+00 9.233023174105296e+03 + 193420 1.025792989482752e+00 -6.020378786169019e+00 -5.937770120602330e+00 3.609684534313829e+00 5.084036275647439e+00 9.027005516265350e+03 + 193440 9.598117108338120e-01 -5.914258456734489e+00 -6.015925575603523e+00 4.121599330049314e+00 4.537811000567523e+00 9.265969287100012e+03 + 193460 9.471950022608682e-01 -5.887847802848131e+00 -6.023034033504663e+00 4.288814462863103e+00 4.512554206431712e+00 9.287872772075083e+03 + 193480 1.048279665534575e+00 -6.031503082231900e+00 -5.977419259777339e+00 3.461589019377868e+00 4.772146697356437e+00 9.147849180578820e+03 + 193500 9.949953597411039e-01 -5.947098720124854e+00 -6.032610169971354e+00 4.006223698789862e+00 4.515203720917161e+00 9.317417636061589e+03 + 193520 9.942678565652801e-01 -5.942597684598464e+00 -6.075065388873304e+00 3.989843196429985e+00 4.229193139172873e+00 9.448932173960282e+03 + 193540 1.074236918599756e+00 -6.062408444122731e+00 -5.998578223520866e+00 3.404078300582758e+00 4.770601304973379e+00 9.212700003471789e+03 + 193560 1.008016265052329e+00 -5.969427675045067e+00 -6.012377811564146e+00 3.817414929479055e+00 4.570788599074351e+00 9.255094595661074e+03 + 193580 9.692217185312093e-01 -5.919583548496787e+00 -5.991877961582524e+00 4.158906384111495e+00 4.743780676648922e+00 9.192135438797513e+03 + 193600 1.030487255384755e+00 -6.020175320177704e+00 -5.963956682905048e+00 3.556715471030745e+00 4.879531586056338e+00 9.106721005341877e+03 + 193620 9.902610268112152e-01 -5.972326687209407e+00 -5.998043373042836e+00 3.898846346045933e+00 4.751177156346116e+00 9.211016583797722e+03 + 193640 1.012585871431132e+00 -6.019606478852444e+00 -6.000994151799338e+00 3.612091322234165e+00 4.718966184421403e+00 9.220074309532871e+03 + 193660 9.951820073350311e-01 -6.011990981008261e+00 -5.987661294357156e+00 3.654635199446539e+00 4.794340025204028e+00 9.179200461549322e+03 + 193680 9.440051165897440e-01 -5.956440565358391e+00 -5.983905003578301e+00 3.897299854159983e+00 4.739594799793178e+00 9.167707530233289e+03 + 193700 9.510300164625005e-01 -5.990100864424569e+00 -6.001597578453840e+00 3.770140545450684e+00 4.704124634383869e+00 9.221945828509024e+03 + 193720 9.508551718695956e-01 -6.015159660741341e+00 -6.030752653391935e+00 3.564339334264950e+00 4.474801957457430e+00 9.311702694451800e+03 + 193740 9.717774222513653e-01 -6.072986463311710e+00 -6.037421352216301e+00 3.266937151335431e+00 4.471157522928429e+00 9.332296476942043e+03 + 193760 9.340553451268199e-01 -6.045264166567318e+00 -6.000632930351231e+00 3.459578220853651e+00 4.715857685867905e+00 9.219008563351808e+03 + 193780 9.595354352992714e-01 -6.109002742075771e+00 -5.978551705032745e+00 3.129046094695315e+00 4.878116136629110e+00 9.151318752953488e+03 + 193800 9.046420520675820e-01 -6.045195877916576e+00 -5.983989895134261e+00 3.436939771202169e+00 4.788393995933442e+00 9.167989653881526e+03 + 193820 9.243055451462868e-01 -6.086217394207283e+00 -6.020108949575155e+00 3.196600840449380e+00 4.576205759775801e+00 9.278891373635590e+03 + 193840 8.892897230436768e-01 -6.041169044673222e+00 -6.005300917494747e+00 3.490601287084406e+00 4.696561623917956e+00 9.233344950048257e+03 + 193860 9.307563021372819e-01 -6.101448265492746e+00 -5.979017286367676e+00 3.100641545019982e+00 4.803659173288921e+00 9.152758490983766e+03 + 193880 8.986729992885011e-01 -6.040522267533941e+00 -6.023014959248859e+00 3.492900735821956e+00 4.593430409242100e+00 9.287815919061168e+03 + 193900 9.525957807427563e-01 -6.097053215686828e+00 -6.013036163302107e+00 3.137074002218578e+00 4.619512918608479e+00 9.257129516350107e+03 + 193920 9.823341661429406e-01 -6.102576369619105e+00 -6.005233682518390e+00 3.110681440872853e+00 4.669638213937304e+00 9.233130567580258e+03 + 193940 9.502053605734744e-01 -6.007160131129385e+00 -5.984914969238337e+00 3.671274383595851e+00 4.799009545601926e+00 9.170786122394105e+03 + 193960 9.816071685293634e-01 -6.001864277112706e+00 -6.004062432620557e+00 3.681765827791661e+00 4.669143678702111e+00 9.229521579930230e+03 + 193980 9.617886614250544e-01 -5.926559730116336e+00 -6.026979307151656e+00 4.104473769145425e+00 4.527849017929296e+00 9.300014722334588e+03 + 194000 1.024485437360066e+00 -5.989106826575084e+00 -5.974766972883923e+00 3.710923629298715e+00 4.793265288278548e+00 9.139739549608748e+03 + 194020 9.957750828356648e-01 -5.926974619591436e+00 -5.965476532018317e+00 4.065848860112366e+00 4.844764920805525e+00 9.111334187289571e+03 + 194040 1.018235906778185e+00 -5.945672992547292e+00 -5.955136216633873e+00 3.998605878017963e+00 4.944266580883618e+00 9.079813809930081e+03 + 194060 1.014995399663806e+00 -5.929033498387922e+00 -6.034039174219503e+00 4.055360899364022e+00 4.452402059163267e+00 9.321827148095863e+03 + 194080 1.037497960937172e+00 -5.957884679447076e+00 -5.992709031296734e+00 3.967686639620832e+00 4.767719822249067e+00 9.194658179659207e+03 + 194100 1.066448146130094e+00 -6.001610338615022e+00 -5.987259092836767e+00 3.723432050154174e+00 4.805839124261017e+00 9.177965028885823e+03 + 194120 1.026214527613712e+00 -5.946215891079811e+00 -5.965285702263070e+00 4.045438732375304e+00 4.935936925517292e+00 9.110790023717551e+03 + 194140 1.016298081411599e+00 -5.938494320631506e+00 -6.024149887827736e+00 4.040102274056103e+00 4.548254752059165e+00 9.291314603744044e+03 + 194160 1.011249067204034e+00 -5.942844304575742e+00 -6.024447142633424e+00 4.001995973263663e+00 4.533419849138083e+00 9.292244228918116e+03 + 194180 1.022851902090925e+00 -5.975531183768096e+00 -6.000079073453587e+00 3.832595210026639e+00 4.691637428678900e+00 9.217285085005435e+03 + 194200 9.983077110015581e-01 -5.958916442946118e+00 -5.974545211740619e+00 3.956805636930254e+00 4.867062827968081e+00 9.139065387502940e+03 + 194220 9.440526392907095e-01 -5.898869083982945e+00 -6.012101755000233e+00 4.203962052461295e+00 4.553762532780815e+00 9.254239337947702e+03 + 194240 1.080733567929887e+00 -6.123108556622436e+00 -5.956959231573098e+00 3.071134877844902e+00 5.025190013803160e+00 9.085402790020411e+03 + 194260 9.737382111031422e-01 -5.987954219844417e+00 -6.034891547820374e+00 3.780944501644778e+00 4.511423100878802e+00 9.324494928199780e+03 + 194280 9.975125169201211e-01 -6.048527197364016e+00 -6.047516666689599e+00 3.397607459257824e+00 4.403410082769443e+00 9.363508670400774e+03 + 194300 9.435485097442139e-01 -5.996945341425461e+00 -6.017536271615102e+00 3.694615427813358e+00 4.576379120228294e+00 9.270972830985793e+03 + 194320 9.204297750056399e-01 -5.987071711519894e+00 -5.986566621725789e+00 3.760758544203275e+00 4.763658847963422e+00 9.175853457539728e+03 + 194340 1.003210044440870e+00 -6.130690528335132e+00 -5.956268441211414e+00 3.010826201303048e+00 5.012384817298184e+00 9.083293145898378e+03 + 194360 9.157749371875800e-01 -6.016876617991064e+00 -5.977752225361162e+00 3.632476746752585e+00 4.857135063713677e+00 9.148871575894396e+03 + 194380 9.422466776727291e-01 -6.065991085352614e+00 -5.951736782879858e+00 3.365884260767706e+00 5.021950146362438e+00 9.069480703882353e+03 + 194400 9.834099985349986e-01 -6.128197824941129e+00 -5.968689460576061e+00 3.009957681764494e+00 4.925879393788323e+00 9.121192488892601e+03 + 194420 1.013194410556246e+00 -6.168028187055096e+00 -5.989075184118316e+00 2.819521942417330e+00 4.847097778168029e+00 9.183565406100037e+03 + 194440 9.263761478519698e-01 -6.028116146302384e+00 -6.014379881236366e+00 3.551344053990355e+00 4.630219813679584e+00 9.261274956772035e+03 + 194460 9.932393852035065e-01 -6.102947606769537e+00 -6.002921594692144e+00 3.158454931911577e+00 4.732819772235310e+00 9.226015704464431e+03 + 194480 9.052023386377490e-01 -5.931051922937816e+00 -5.976226459981921e+00 4.086994849516230e+00 4.827595667071963e+00 9.144190248297869e+03 + 194500 1.012931860130209e+00 -6.033583329171025e+00 -5.997407906947040e+00 3.532696392883950e+00 4.740421265422566e+00 9.209092100004480e+03 + 194520 1.033559082153970e+00 -6.001570048807977e+00 -6.057796717928790e+00 3.670350128827394e+00 4.347487893686763e+00 9.395319184637421e+03 + 194540 1.028348159236356e+00 -5.947652199109034e+00 -6.045998907887073e+00 3.968236307289352e+00 4.403514286381855e+00 9.358801335055672e+03 + 194560 1.027064710840331e+00 -5.919291799315753e+00 -5.984431546451627e+00 4.181549311585931e+00 4.807506803188454e+00 9.169295673072071e+03 + 194580 1.075027888614115e+00 -5.972728785536670e+00 -5.986214838204464e+00 3.829659051295233e+00 4.752220049916857e+00 9.174768441531387e+03 + 194600 1.022956580169680e+00 -5.885642196346944e+00 -6.023362084192408e+00 4.319913427800806e+00 4.529104519708381e+00 9.288881675335770e+03 + 194620 1.066661883179943e+00 -5.946325844652015e+00 -6.045522819927838e+00 4.001326191943191e+00 4.431721809227106e+00 9.357332257445103e+03 + 194640 1.067359001206917e+00 -5.953188307826789e+00 -6.021220964332403e+00 3.970457938654704e+00 4.579803896979898e+00 9.282310030681263e+03 + 194660 1.083364446139227e+00 -5.988988145575913e+00 -6.001230620021657e+00 3.753056731725506e+00 4.682758548941248e+00 9.220833828615414e+03 + 194680 1.047244718865614e+00 -5.954091308926347e+00 -6.034789731538917e+00 3.959971631682409e+00 4.496588801000494e+00 9.324149460401417e+03 + 194700 1.052979102711896e+00 -5.987863284096330e+00 -6.025970732819832e+00 3.724092554417755e+00 4.505273686738779e+00 9.296942096064631e+03 + 194720 9.881345128073428e-01 -5.922073336040594e+00 -6.011198699346856e+00 4.098234154707811e+00 4.586462526497857e+00 9.251440209953935e+03 + 194740 9.139238765405863e-01 -5.842445433571315e+00 -5.988806999312830e+00 4.538474984321857e+00 4.698044224454974e+00 9.182711584226841e+03 + 194760 9.719882212122737e-01 -5.953830033859441e+00 -5.998372005098083e+00 3.962831056063020e+00 4.707064164362966e+00 9.212026532227837e+03 + 194780 9.879078353243927e-01 -6.000741597265784e+00 -6.005537336361003e+00 3.725425105541702e+00 4.697887229518728e+00 9.234070536604015e+03 + 194800 1.048372767288372e+00 -6.111335194929350e+00 -5.990977878113209e+00 3.112639695783624e+00 4.803750034176486e+00 9.189383895490930e+03 + 194820 9.023908454245887e-01 -5.913862804081949e+00 -6.047341438039045e+00 4.115172425347900e+00 4.348717453414403e+00 9.362942535794453e+03 + 194840 9.678881488642577e-01 -6.024791997355376e+00 -6.030376897551854e+00 3.567873045821821e+00 4.535803684633130e+00 9.310556916745858e+03 + 194860 9.768458078943340e-01 -6.049588727759937e+00 -6.023704187237696e+00 3.376928294040593e+00 4.525561331339002e+00 9.289972940342110e+03 + 194880 9.841797597778549e-01 -6.068375498000267e+00 -5.970690640810600e+00 3.328667067139163e+00 4.889588633805030e+00 9.127299678094048e+03 + 194900 8.861678225018721e-01 -5.925691185358503e+00 -6.026610466418308e+00 4.120952137337278e+00 4.541458008283607e+00 9.298901005237185e+03 + 194920 9.882653012354137e-01 -6.075168715346120e+00 -6.007539761653294e+00 3.333316616203706e+00 4.721652533854672e+00 9.240218388524016e+03 + 194940 9.728430377410036e-01 -6.047346213529561e+00 -6.009859286438171e+00 3.426636607093120e+00 4.641892343535104e+00 9.247328503005765e+03 + 194960 1.027546616732236e+00 -6.119761806917442e+00 -5.978634450710405e+00 3.073148520484556e+00 4.883523639213148e+00 9.151590376779071e+03 + 194980 1.041196346045546e+00 -6.125185260115226e+00 -5.982440548013432e+00 3.043682442937001e+00 4.863344669498316e+00 9.163233859463489e+03 + 195000 9.785209658312166e-01 -6.013311194767229e+00 -5.991178606353222e+00 3.643419687696193e+00 4.770508435376408e+00 9.189990221036411e+03 + 195020 1.031850945958863e+00 -6.060141834429955e+00 -5.997741544392487e+00 3.370562782501036e+00 4.728874904309855e+00 9.210120233020480e+03 + 195040 9.674849870548101e-01 -5.914024189934994e+00 -6.062666667541665e+00 4.153171222006355e+00 4.299643113239786e+00 9.410423935718543e+03 + 195060 1.068454047061228e+00 -6.005147404645366e+00 -6.015492827478642e+00 3.687796575085263e+00 4.628391556227585e+00 9.264679901629477e+03 + 195080 1.037943724067844e+00 -5.899010103776524e+00 -6.040824753676988e+00 4.178818332966619e+00 4.364496667492006e+00 9.342805482543628e+03 + 195100 1.091265130443541e+00 -5.938149955470487e+00 -6.029362263779415e+00 3.984252802744566e+00 4.460497613375606e+00 9.307417203504157e+03 + 195120 1.108284774380668e+00 -5.942593429551157e+00 -5.993509001114340e+00 4.016629242373025e+00 4.724264151297993e+00 9.197109775128896e+03 + 195140 1.109040097042377e+00 -5.935260810410387e+00 -5.973344572545153e+00 4.056600576285014e+00 4.837917720664044e+00 9.135375014709356e+03 + 195160 1.130877413555004e+00 -5.968515068558276e+00 -5.983932052923331e+00 3.895517653181329e+00 4.806990943186566e+00 9.167778861471577e+03 + 195180 1.093156306920436e+00 -5.924013211308193e+00 -6.015034188968398e+00 4.088440760733825e+00 4.565784221558154e+00 9.263262636146044e+03 + 195200 1.060974291882846e+00 -5.897189168434219e+00 -6.018880272875743e+00 4.233464178690634e+00 4.534695025349853e+00 9.275065084393518e+03 + 195220 9.912683735722263e-01 -5.818286867332745e+00 -5.984878420680416e+00 4.691277184128419e+00 4.734682704846530e+00 9.170652403217671e+03 + 195240 1.061569483046638e+00 -5.945269013670535e+00 -6.003468030436856e+00 3.953539616962259e+00 4.619351856421302e+00 9.227703402245008e+03 + 195260 1.052929034895196e+00 -5.959018203543150e+00 -6.040539511455994e+00 3.927154746577597e+00 4.459046781160421e+00 9.341922857284288e+03 + 195280 1.068965843257288e+00 -6.012291705589042e+00 -6.031506911292057e+00 3.663420359669321e+00 4.553083674979134e+00 9.314032432931792e+03 + 195300 1.006538632832713e+00 -5.951142656852239e+00 -6.060921493991385e+00 3.974206568028704e+00 4.343839496955582e+00 9.404991852671619e+03 + 195320 9.589021443974243e-01 -5.908552200412034e+00 -6.034819334084642e+00 4.170740760733112e+00 4.445695339409208e+00 9.324252076091745e+03 + 195340 1.014784999861582e+00 -6.013782000627955e+00 -6.023138856429611e+00 3.577512675293565e+00 4.523784161311701e+00 9.288246778114179e+03 + 195360 9.309996316952405e-01 -5.908420272505087e+00 -6.032282432857651e+00 4.157953833463136e+00 4.446718141111350e+00 9.316406182725261e+03 + 195380 9.506303619349689e-01 -5.950742460884308e+00 -6.020554207916141e+00 3.920210987587033e+00 4.519341132797308e+00 9.280231516032365e+03 + 195400 9.835865752125958e-01 -6.010114104572669e+00 -6.016454658511489e+00 3.610638034472048e+00 4.574229592557794e+00 9.267637771107546e+03 + 195420 9.681555571854904e-01 -5.993707766344327e+00 -5.991330050371896e+00 3.715043616429753e+00 4.728696829493813e+00 9.190457844040404e+03 + 195440 9.457743779534938e-01 -5.964516945934775e+00 -6.010340929138503e+00 3.794709959652249e+00 4.531581556857955e+00 9.248802205308046e+03 + 195460 9.143861506562426e-01 -5.918681211623412e+00 -6.002772481927474e+00 4.089532518748589e+00 4.606667431580642e+00 9.225554956729096e+03 + 195480 9.207583258790997e-01 -5.924559705955359e+00 -6.039331327616480e+00 4.062298502164776e+00 4.403262089735566e+00 9.338167053082436e+03 + 195500 9.827210939434317e-01 -6.012454450566005e+00 -5.982069597266509e+00 3.648443097354031e+00 4.822917627040589e+00 9.162093967311053e+03 + 195520 1.024595005560078e+00 -6.066649411953991e+00 -5.993960229857764e+00 3.313287145186318e+00 4.730679677397426e+00 9.198502096097025e+03 + 195540 9.173785224805937e-01 -5.897563283022935e+00 -6.040675656019531e+00 4.248174252437241e+00 4.426400860122637e+00 9.342309243884254e+03 + 195560 1.021339652449600e+00 -6.039506100194989e+00 -5.992296297768468e+00 3.539318353838091e+00 4.810404345064493e+00 9.193417395302449e+03 + 195580 1.008308403358865e+00 -6.005014189512828e+00 -6.022612079538067e+00 3.667228377750170e+00 4.566178569960561e+00 9.286592408233244e+03 + 195600 9.997542728009768e-01 -5.975234476987739e+00 -6.006136734916364e+00 3.852923816297130e+00 4.675478269162010e+00 9.235891951254935e+03 + 195620 9.701013589336697e-01 -5.907328543935792e+00 -6.035656252123649e+00 4.206990065799034e+00 4.470112506735700e+00 9.326807595097669e+03 + 195640 1.031570390624593e+00 -5.966916493330304e+00 -5.986856272710686e+00 3.927037705866337e+00 4.812540406993302e+00 9.176704351323720e+03 + 195660 1.034838000530701e+00 -5.930061006415778e+00 -5.988050464289927e+00 4.092731136759607e+00 4.759746695806641e+00 9.180386945439654e+03 + 195680 1.103343436778477e+00 -5.984126496259647e+00 -6.014309587487356e+00 3.733321237132906e+00 4.560005256485133e+00 9.261010948805497e+03 + 195700 1.030117971391306e+00 -5.830488207587748e+00 -6.028131357459952e+00 4.622435055405390e+00 4.487537503660601e+00 9.303607295531910e+03 + 195720 1.043771650334911e+00 -5.817489488557357e+00 -6.037159433526663e+00 4.646014578681230e+00 4.384635760853353e+00 9.331474432674315e+03 + 195740 1.109502239448264e+00 -5.893142462046918e+00 -5.975932573416783e+00 4.327816865736255e+00 4.852423234522168e+00 9.143289087547106e+03 + 195760 1.203622420289884e+00 -6.023647047468567e+00 -5.958471813207203e+00 3.554590934528555e+00 4.928837215492212e+00 9.089991127436406e+03 + 195780 1.025763282680875e+00 -5.762924165083025e+00 -6.064199170860745e+00 4.970966442472552e+00 4.240998737140416e+00 9.415157422421986e+03 + 195800 1.150305917748389e+00 -5.963624691095585e+00 -5.997845526089270e+00 3.884980961008975e+00 4.688479630818135e+00 9.210411907480182e+03 + 195820 1.029302771349974e+00 -5.813863527385857e+00 -6.088792848711325e+00 4.655490259945367e+00 4.076803551719556e+00 9.491610443941916e+03 + 195840 1.061079312409690e+00 -5.899083819617505e+00 -6.049104365717444e+00 4.155500437328173e+00 4.294059246017851e+00 9.368421708130536e+03 + 195860 1.084799665186829e+00 -5.977167034915016e+00 -6.014921058876938e+00 3.846474853025037e+00 4.629685405019358e+00 9.262906998870449e+03 + 195880 1.045054978832134e+00 -5.956683928026305e+00 -5.973701236154893e+00 3.963260584830127e+00 4.865544568135847e+00 9.136452701478986e+03 + 195900 9.980838992881256e-01 -5.912094188057544e+00 -5.994176397667002e+00 4.248177378764812e+00 4.776848629006422e+00 9.199116434182821e+03 + 195920 9.788310446986191e-01 -5.900461278441330e+00 -5.957523871722727e+00 4.244823983343492e+00 4.917161742313935e+00 9.087121051044682e+03 + 195940 1.109424694478011e+00 -6.106819290213096e+00 -5.943808738518188e+00 3.112346909323401e+00 5.048378722956913e+00 9.045364271006429e+03 + 195960 9.868670999573856e-01 -5.935082963025387e+00 -6.039264653131007e+00 4.065093522041795e+00 4.466866135390885e+00 9.337950493773402e+03 + 195980 1.015353267431872e+00 -5.988512136884857e+00 -6.011998002858749e+00 3.785098745219610e+00 4.650239268371513e+00 9.253914337205419e+03 + 196000 9.762518212461302e-01 -5.941699130558347e+00 -6.028064418808317e+00 3.985377079326182e+00 4.489454229209694e+00 9.303382289104353e+03 + 196020 1.025268059393474e+00 -6.025907688671422e+00 -6.027068140442571e+00 3.556115788427973e+00 4.549452294778707e+00 9.300326118308833e+03 + 196040 9.789862474855155e-01 -5.970312459544172e+00 -6.027891854381036e+00 3.826568380206134e+00 4.495938584670310e+00 9.302857492504578e+03 + 196060 1.038765041711593e+00 -6.071759861808702e+00 -5.974056621483405e+00 3.332654705778670e+00 4.893681831254100e+00 9.137574059475333e+03 + 196080 9.613493345037628e-01 -5.969826094817813e+00 -5.994581489826163e+00 3.891112399080832e+00 4.748963090057893e+00 9.200423549726422e+03 + 196100 9.632818152527783e-01 -5.984751422027773e+00 -6.016077682465077e+00 3.761701017156386e+00 4.581820782002248e+00 9.266468825874474e+03 + 196120 9.814433536943094e-01 -6.021385953118086e+00 -6.003045320514879e+00 3.529852630281688e+00 4.635167380893028e+00 9.226407349847639e+03 + 196140 9.542280245903060e-01 -5.990684331666362e+00 -6.020197539135954e+00 3.743985997424326e+00 4.574516592979832e+00 9.279149865497217e+03 + 196160 9.796670291339024e-01 -6.036575551269958e+00 -6.023644622958218e+00 3.448822486249040e+00 4.523073877669736e+00 9.289768095886840e+03 + 196180 1.004913699703821e+00 -6.081103446843636e+00 -6.020846000717034e+00 3.193787857256879e+00 4.539795437725479e+00 9.281166969847038e+03 + 196200 9.072807497277826e-01 -5.943133793041028e+00 -6.030456325565718e+00 3.985557362852485e+00 4.484137867977481e+00 9.310772677102919e+03 + 196220 1.017485087939072e+00 -6.111008502014367e+00 -5.973459383217977e+00 3.100866455646824e+00 4.890694781433037e+00 9.135751702356602e+03 + 196240 9.966495689880164e-01 -6.080819096042160e+00 -5.986772628335506e+00 3.183573419150070e+00 4.723602790365520e+00 9.176501344713612e+03 + 196260 9.674832197506874e-01 -6.034669329523607e+00 -5.971869761704508e+00 3.537578394363829e+00 4.898183230982805e+00 9.130900852390239e+03 + 196280 9.839026416470281e-01 -6.052098536100198e+00 -5.960533136511234e+00 3.423336561425150e+00 4.949119255564772e+00 9.096291441605750e+03 + 196300 9.726166914996156e-01 -6.018638323206472e+00 -6.026142702725586e+00 3.545403355364974e+00 4.502312046867243e+00 9.297495271429132e+03 + 196320 9.801225092071612e-01 -6.006808617812212e+00 -6.049173246633879e+00 3.619101363066059e+00 4.375837108466922e+00 9.368621649990835e+03 + 196340 9.563569203546441e-01 -5.943050198906358e+00 -6.048469812939507e+00 3.976700445333563e+00 4.371364707922671e+00 9.366446359388423e+03 + 196360 1.016728831749194e+00 -6.001168492801508e+00 -6.012307883485610e+00 3.654546650826205e+00 4.590582545702953e+00 9.254876651820887e+03 + 196380 1.008156594513306e+00 -5.954048034756957e+00 -6.023822192688198e+00 3.943586010787734e+00 4.542931998430503e+00 9.290333386865057e+03 + 196400 1.041124516804299e+00 -5.970271545252571e+00 -6.044143450797173e+00 3.842178728542472e+00 4.417994815264929e+00 9.353054540713165e+03 + 196420 1.086576681300038e+00 -6.011560463914763e+00 -6.024765669467967e+00 3.589886430235164e+00 4.514060096449715e+00 9.293242786800582e+03 + 196440 1.063279643299886e+00 -5.958440407334984e+00 -6.012366558837368e+00 3.913189380883155e+00 4.603537073911491e+00 9.255045380419879e+03 + 196460 1.097943994054016e+00 -5.997964065017324e+00 -5.999119533977978e+00 3.718612839764888e+00 4.711977958184568e+00 9.214333194476187e+03 + 196480 1.104999436025522e+00 -6.003260341139711e+00 -5.987425606832627e+00 3.728764886970749e+00 4.819690381779241e+00 9.178479116638713e+03 + 196500 1.157593607922789e+00 -6.083708436207534e+00 -5.949969614095542e+00 3.307321772338487e+00 5.075270784921381e+00 9.064111759971396e+03 + 196520 1.015622505444549e+00 -5.884498037167493e+00 -6.012648919237864e+00 4.353883725711413e+00 4.618021529578432e+00 9.255907775082427e+03 + 196540 1.034827590909407e+00 -5.931003680236585e+00 -5.990301880990764e+00 4.053676541565276e+00 4.713177096467867e+00 9.187281873121270e+03 + 196560 1.090095937186121e+00 -6.037090085142685e+00 -5.981296819889002e+00 3.549257062086189e+00 4.869630625152731e+00 9.159729771859715e+03 + 196580 1.015615315155922e+00 -5.961011072904907e+00 -6.011173602004468e+00 3.885343947489878e+00 4.597302942773910e+00 9.251383080898193e+03 + 196600 9.805102370214637e-01 -5.946776819149309e+00 -6.069265175581814e+00 3.958615766271772e+00 4.255268668624435e+00 9.430879170386048e+03 + 196620 1.029964652562008e+00 -6.063341047901074e+00 -6.037461349333261e+00 3.354036757738375e+00 4.502641991785164e+00 9.332423949758762e+03 + 196640 1.007854952122786e+00 -6.073271327198606e+00 -6.023129330707247e+00 3.295624910160848e+00 4.583548013463110e+00 9.288205109033779e+03 + 196660 9.863193990583288e-01 -6.074665220235833e+00 -6.024149668923817e+00 3.250603602435604e+00 4.540671715325496e+00 9.291361080810797e+03 + 196680 9.112782263198529e-01 -5.984865063030747e+00 -6.010485917086636e+00 3.823316633633444e+00 4.676197724830176e+00 9.249269505523172e+03 + 196700 9.767864350966584e-01 -6.092836893426465e+00 -6.021345396612986e+00 3.173173728191611e+00 4.583688966167979e+00 9.282699101437358e+03 + 196720 9.252090462546205e-01 -6.019818772993522e+00 -5.985480012798076e+00 3.627309679390998e+00 4.824488154339212e+00 9.172509918057183e+03 + 196740 9.692097874625549e-01 -6.082938119993261e+00 -5.928433517626152e+00 3.277735657938218e+00 5.164924994240101e+00 8.998645847964159e+03 + 196760 9.615295905077944e-01 -6.062552192151873e+00 -5.928436945389441e+00 3.402403288970505e+00 5.172513790147756e+00 8.998657873479819e+03 + 196780 9.977560858939010e-01 -6.102184763880998e+00 -5.980059792862673e+00 3.114914034033379e+00 4.816174516398789e+00 9.155934902051180e+03 + 196800 9.675207016624822e-01 -6.039843280306894e+00 -6.002095199909910e+00 3.474149675627556e+00 4.690904994763605e+00 9.223485481145588e+03 + 196820 9.638818696861348e-01 -6.017246308335776e+00 -6.041356952476862e+00 3.635968278757683e+00 4.497521228989442e+00 9.344453432519334e+03 + 196840 9.845313428514493e-01 -6.032814341817515e+00 -5.994484748412670e+00 3.491016320259656e+00 4.711110777075685e+00 9.200125620177883e+03 + 196860 9.775141694748302e-01 -6.004681469969341e+00 -5.941306427321474e+00 3.679382826208122e+00 5.043292128348329e+00 9.037743006840519e+03 + 196880 9.470717791762979e-01 -5.937092312029226e+00 -6.003340955140673e+00 4.015598765879453e+00 4.635188805189141e+00 9.227283704393325e+03 + 196900 1.041305202265814e+00 -6.052782919192036e+00 -5.977833175729330e+00 3.354954828065854e+00 4.785327853464030e+00 9.149116339519176e+03 + 196920 1.006554410730470e+00 -5.982003884302880e+00 -6.027482130148678e+00 3.782827148589351e+00 4.521684023206984e+00 9.301591837631777e+03 + 196940 1.036517480273102e+00 -6.009718335793380e+00 -6.000085040720283e+00 3.678765604840485e+00 4.734081475897803e+00 9.217303855736047e+03 + 196960 1.019830546584941e+00 -5.971056096146942e+00 -5.998844138747987e+00 3.872200881737766e+00 4.712637640936871e+00 9.213494715759080e+03 + 196980 1.059778467145453e+00 -6.017628757349546e+00 -6.009881207823598e+00 3.638145379491315e+00 4.682633007798721e+00 9.247410350768210e+03 + 197000 1.087866225725763e+00 -6.050110833842114e+00 -6.052689843081360e+00 3.401598535427826e+00 4.386789465275683e+00 9.379522645689653e+03 + 197020 9.952247096938055e-01 -5.912448110081366e+00 -6.058346125850791e+00 4.090589548265740e+00 4.252820564072723e+00 9.397022947566409e+03 + 197040 1.036299814653037e+00 -5.976396498780574e+00 -6.009026458459568e+00 3.852580110947072e+00 4.665213833000347e+00 9.244759199028014e+03 + 197060 1.062549535261439e+00 -6.022710484788391e+00 -5.988841610995904e+00 3.581569170025671e+00 4.776049484533408e+00 9.182813412472669e+03 + 197080 9.821659609422909e-01 -5.914985821582271e+00 -6.030221719868052e+00 4.146131838998538e+00 4.484429478343958e+00 9.310049213503347e+03 + 197100 9.833750573263563e-01 -5.936797837007573e+00 -6.012680831294200e+00 4.042183425266504e+00 4.606451529217276e+00 9.256014601442441e+03 + 197120 1.018590784121291e+00 -6.021542108669974e+00 -6.010925624776585e+00 3.575696881275249e+00 4.636658374686663e+00 9.250621654186678e+03 + 197140 9.970257086326541e-01 -6.038824266224516e+00 -5.980147130418392e+00 3.479536808579721e+00 4.816470002635906e+00 9.156210517239904e+03 + 197160 9.447318746727433e-01 -6.017195603286956e+00 -6.016745222234792e+00 3.584175642107418e+00 4.586761799805185e+00 9.268496888240523e+03 + 197180 9.211466053213765e-01 -6.028823342983472e+00 -5.979792192031918e+00 3.532058871993285e+00 4.813603328303194e+00 9.155123515840092e+03 + 197200 8.972494171421812e-01 -6.024642149058459e+00 -6.016584316939118e+00 3.595895901142344e+00 4.642165220117089e+00 9.268038235118700e+03 + 197220 9.450035844020773e-01 -6.113877129568417e+00 -6.015179657889069e+00 3.076326509148350e+00 4.643062664915547e+00 9.263711814178168e+03 + 197240 9.248491484687311e-01 -6.092100876280478e+00 -5.994803091156780e+00 3.214246804306167e+00 4.772945743270028e+00 9.201123057850760e+03 + 197260 8.928805766595573e-01 -6.044804932982550e+00 -5.996976111315328e+00 3.449084093700811e+00 4.723724589200234e+00 9.207777746159645e+03 + 197280 9.429077659103208e-01 -6.111393848038091e+00 -5.993536001255046e+00 3.132634409886822e+00 4.809392404557910e+00 9.197225727154786e+03 + 197300 9.337250573038549e-01 -6.083429067092582e+00 -6.016055751978173e+00 3.243997730927900e+00 4.630865732301656e+00 9.266405399200301e+03 + 197320 9.347213220383986e-01 -6.065103715947722e+00 -5.991102165433047e+00 3.375319516833337e+00 4.800247871591535e+00 9.189769108818811e+03 + 197340 9.107954466508693e-01 -6.004173921937875e+00 -6.043437290057229e+00 3.664521986304679e+00 4.439065650576774e+00 9.350867034514349e+03 + 197360 1.000959050434747e+00 -6.109636352317988e+00 -5.969448327709875e+00 3.152836216235806e+00 4.957817547562286e+00 9.123488371583759e+03 + 197380 9.181909692959097e-01 -5.957218413043210e+00 -5.974844745099697e+00 3.886926324612274e+00 4.785713198277863e+00 9.140015350136366e+03 + 197400 1.013551262009398e+00 -6.069090447568509e+00 -5.969577980785264e+00 3.325859474138235e+00 4.897275457912093e+00 9.123903635765693e+03 + 197420 9.665649579516111e-01 -5.973397562741050e+00 -6.009234123900441e+00 3.825272487953096e+00 4.619493408085955e+00 9.245390633875952e+03 + 197440 9.616431774203565e-01 -5.947113579012772e+00 -5.975488376721257e+00 3.988659396710443e+00 4.825726917282568e+00 9.141934569131077e+03 + 197460 1.007990109517695e+00 -5.998586268605723e+00 -5.987620754028715e+00 3.668982175962272e+00 4.731947857571353e+00 9.179065280914945e+03 + 197480 9.938987022393959e-01 -5.963728969179312e+00 -5.984372193422512e+00 3.915857761961960e+00 4.797321173828871e+00 9.169121130510450e+03 + 197500 9.952069392280736e-01 -5.954430211427869e+00 -5.994279088491001e+00 3.946957165347160e+00 4.718138746656861e+00 9.199491723787800e+03 + 197520 1.025447261308761e+00 -5.989867834344991e+00 -6.049223240490740e+00 3.684163329045925e+00 4.343335401737615e+00 9.368770378888914e+03 + 197540 1.027316325832084e+00 -5.987938049405289e+00 -6.058175237343848e+00 3.728658440719781e+00 4.325345638406865e+00 9.396492475419753e+03 + 197560 1.045769849547193e+00 -6.016628055253443e+00 -6.009281311388126e+00 3.604949197449734e+00 4.647135337629328e+00 9.245565493440867e+03 + 197580 1.024641324665733e+00 -5.989857020866583e+00 -6.031799823317945e+00 3.719888006544131e+00 4.479045944240707e+00 9.314894048358636e+03 + 197600 9.948405832165920e-01 -5.951510362109664e+00 -5.983714879364257e+00 4.008625524539507e+00 4.823702202830694e+00 9.167116640824519e+03 + 197620 1.043726248494387e+00 -6.029377088965027e+00 -6.009141941235067e+00 3.534119241531021e+00 4.650312591175439e+00 9.245127395663467e+03 + 197640 1.059417637946556e+00 -6.062234915669706e+00 -6.037257552720386e+00 3.322290079912379e+00 4.465713963201797e+00 9.331790239706390e+03 + 197660 1.000538947446706e+00 -5.988161779770518e+00 -6.014546815993135e+00 3.780166266949874e+00 4.628659305888449e+00 9.261765968774540e+03 + 197680 9.505265149528022e-01 -5.930454508792954e+00 -6.047518601362722e+00 4.091196182037317e+00 4.418996046891930e+00 9.363474167439092e+03 + 197700 9.136420130454131e-01 -5.893941253697677e+00 -6.076443531832822e+00 4.212581030291268e+00 4.164624707103003e+00 9.453203614226817e+03 + 197720 9.716452206084153e-01 -6.001406764287977e+00 -6.011959986280830e+00 3.704474574078925e+00 4.643876340290136e+00 9.253811256246727e+03 + 197740 9.537756770372696e-01 -6.000305991416917e+00 -5.982823644112180e+00 3.743477037882249e+00 4.843863381490547e+00 9.164386603497553e+03 + 197760 9.672931133405581e-01 -6.049787007711215e+00 -5.943046923041340e+00 3.463941548993556e+00 5.076859633142698e+00 9.043017810722262e+03 + 197780 9.504061808160099e-01 -6.055533068388716e+00 -5.953924918764353e+00 3.415189109732583e+00 4.998638828686008e+00 9.076135766432890e+03 + 197800 9.350545847192464e-01 -6.066147910984273e+00 -6.022650869675914e+00 3.324287857839802e+00 4.574054600177790e+00 9.286708597365907e+03 + 197820 9.064920753727723e-01 -6.057608790851518e+00 -5.992625730262431e+00 3.364237131816541e+00 4.737379921815201e+00 9.194438381228259e+03 + 197840 9.562194732190428e-01 -6.160755711073429e+00 -5.992896580723779e+00 2.850849871290338e+00 4.814722973874501e+00 9.195268774079248e+03 + 197860 9.619619601774402e-01 -6.196128941061715e+00 -5.961194702955090e+00 2.664129871842813e+00 5.013158623006900e+00 9.098324974539973e+03 + 197880 8.747175519464750e-01 -6.087925850515919e+00 -5.955731405007326e+00 3.247647565235023e+00 5.006728528369695e+00 9.081644008419016e+03 + 197900 8.321548273458380e-01 -6.033995138826964e+00 -5.970506748500067e+00 3.487542083424376e+00 4.852102245478072e+00 9.126741618580003e+03 + 197920 9.421788162219494e-01 -6.194522337021407e+00 -5.950983428183675e+00 2.688808259573325e+00 5.087246361643926e+00 9.067190741583783e+03 + 197940 8.489872485602420e-01 -6.039832441017881e+00 -5.982096814521033e+00 3.462743177183030e+00 4.794270079087252e+00 9.162178741936470e+03 + 197960 8.975913981917948e-01 -6.078772082083197e+00 -5.990837072444972e+00 3.266814006259232e+00 4.771750439500682e+00 9.188945307323582e+03 + 197980 9.596673566466472e-01 -6.114853329752729e+00 -6.000387258635163e+00 3.053105729529817e+00 4.710387623454138e+00 9.218251550122932e+03 + 198000 9.628984841871359e-01 -6.060647187915722e+00 -5.992346759922613e+00 3.375175481157961e+00 4.767367108151464e+00 9.193597551092174e+03 + 198020 1.063591312428472e+00 -6.165053985873827e+00 -5.956633223368648e+00 2.842111542876408e+00 5.038895814189910e+00 9.084404677348039e+03 + 198040 9.742946147218073e-01 -6.002920189415740e+00 -5.979075146049471e+00 3.701343329704074e+00 4.838265258721728e+00 9.152914723735114e+03 + 198060 9.452556951838758e-01 -5.939057668446917e+00 -5.947859659620867e+00 4.087651155160527e+00 5.037108759735974e+00 9.057655138683424e+03 + 198080 9.914354251396262e-01 -5.990274338935600e+00 -5.944957353616624e+00 3.710150568762728e+00 4.970367711245100e+00 9.048804454086483e+03 + 198100 1.007891810846757e+00 -5.997347872770734e+00 -5.957401625806985e+00 3.718511323509456e+00 4.947888855237045e+00 9.086724847525280e+03 + 198120 1.008519921498139e+00 -5.980795036971089e+00 -6.031200768488663e+00 3.785618653620818e+00 4.496181142985165e+00 9.313060908025178e+03 + 198140 9.944802289907780e-01 -5.946512166478981e+00 -6.017712871472882e+00 3.941535363791742e+00 4.532689897443277e+00 9.271509865359794e+03 + 198160 1.022048680283345e+00 -5.976725881186028e+00 -6.040523217264704e+00 3.803852970221724e+00 4.437518793852112e+00 9.341858431105984e+03 + 198180 1.036483595567536e+00 -5.992347394508426e+00 -6.022640183692157e+00 3.737179221867581e+00 4.563233338580622e+00 9.286675140810505e+03 + 198200 9.939294650977639e-01 -5.925743091689836e+00 -6.061828054030014e+00 4.099657585813675e+00 4.318236672976504e+00 9.407819078104629e+03 + 198220 1.091431651609032e+00 -6.070752880516344e+00 -5.994901750431593e+00 3.338653979521939e+00 4.774202906393027e+00 9.201404798889002e+03 + 198240 1.039312334683389e+00 -5.997317976924388e+00 -6.012213407178908e+00 3.671092920689600e+00 4.585561055107765e+00 9.254574954326979e+03 + 198260 9.946654879860215e-01 -5.937556788342109e+00 -6.017969073194935e+00 4.048190805331084e+00 4.586451021945291e+00 9.272309153497896e+03 + 198280 1.047995695570773e+00 -6.027713034648081e+00 -5.980230758999721e+00 3.549674652511009e+00 4.822325227142307e+00 9.156452465927299e+03 + 198300 1.052699430025746e+00 -6.048210784471575e+00 -6.002955659074358e+00 3.438769528001926e+00 4.698631461240765e+00 9.226138722723614e+03 + 198320 9.688758296127389e-01 -5.943687689467716e+00 -6.035649344141804e+00 3.955034344800880e+00 4.426976292642203e+00 9.326809866036298e+03 + 198340 1.022541098185601e+00 -6.045296620529220e+00 -5.997659455026600e+00 3.426051619224081e+00 4.699591595367659e+00 9.209866805734659e+03 + 198360 1.013587727822711e+00 -6.058047565674674e+00 -6.000653992623605e+00 3.416232029702295e+00 4.745794807788259e+00 9.219044880343310e+03 + 198380 8.776914810592665e-01 -5.882968025979028e+00 -5.989177805756103e+00 4.344733032506587e+00 4.734860041116318e+00 9.183845579291268e+03 + 198400 9.399338613663344e-01 -5.997770260904317e+00 -5.992222023774770e+00 3.751767757420519e+00 4.783626593605300e+00 9.193130451538545e+03 + 198420 9.510216201676326e-01 -6.033516721460382e+00 -5.977919904724008e+00 3.492706126195917e+00 4.811951651475763e+00 9.149355214785730e+03 + 198440 9.575596482066964e-01 -6.058404249342193e+00 -5.983210802085194e+00 3.364234028941637e+00 4.796006439239680e+00 9.165567632623439e+03 + 198460 9.469661833664313e-01 -6.054741440885420e+00 -5.976860033841709e+00 3.360735382725997e+00 4.807942474079773e+00 9.146148795525183e+03 + 198480 9.205644693643100e-01 -6.022211942311505e+00 -5.959006992353511e+00 3.615358766017073e+00 4.978291369610268e+00 9.091630336856837e+03 + 198500 9.602195321752535e-01 -6.081418407666621e+00 -5.965534480537926e+00 3.231907593933849e+00 4.897331036486582e+00 9.111539150733250e+03 + 198520 9.543685781069688e-01 -6.065733982061526e+00 -5.964457639495851e+00 3.353882744850391e+00 4.935427176325859e+00 9.108254309173606e+03 + 198540 9.801376563841013e-01 -6.086339648807977e+00 -5.955002958667776e+00 3.267190307167815e+00 5.021345906239965e+00 9.079426948620256e+03 + 198560 1.001353231299162e+00 -6.086001600918469e+00 -5.960014484700064e+00 3.255404758568124e+00 4.978842276337428e+00 9.094705499276521e+03 + 198580 1.013793436303187e+00 -6.058868512751597e+00 -5.972271750157815e+00 3.360089578870077e+00 4.857341590489274e+00 9.132112982330653e+03 + 198600 9.382127627346599e-01 -5.893120743656720e+00 -6.014385922564192e+00 4.274078131770974e+00 4.577754708758484e+00 9.261233267652397e+03 + 198620 9.791896129990146e-01 -5.903203817361431e+00 -6.012041428944842e+00 4.230321405827615e+00 4.605358997549710e+00 9.254049742054543e+03 + 198640 1.040101711211262e+00 -5.953584458515397e+00 -6.030114421632332e+00 3.890609529334399e+00 4.451162638143447e+00 9.309735123585824e+03 + 198660 1.073502489133408e+00 -5.979645541362601e+00 -6.028466916866151e+00 3.787901410208299e+00 4.507561516983468e+00 9.304653633407443e+03 + 198680 1.001488517381944e+00 -5.862965709341985e+00 -6.054229813650651e+00 4.433528991787151e+00 4.335260906822306e+00 9.384267693906222e+03 + 198700 9.653453709591486e-01 -5.806466718580577e+00 -6.027741523755282e+00 4.798667655332317e+00 4.528073481853730e+00 9.302372722921566e+03 + 198720 1.089862916088797e+00 -5.991362551258456e+00 -6.016559573828363e+00 3.719237708213714e+00 4.574552505390663e+00 9.267947241663262e+03 + 198740 1.074647670704674e+00 -5.976759224544218e+00 -5.984856686447376e+00 3.926595778449924e+00 4.880098899123810e+00 9.170601153538933e+03 + 198760 1.024595553801952e+00 -5.914481543029816e+00 -6.016363424759256e+00 4.220843950815384e+00 4.635822419754695e+00 9.267351675361424e+03 + 198780 1.040301868687808e+00 -5.954516164642564e+00 -6.041887285459937e+00 3.985707012350834e+00 4.484008515980230e+00 9.346091115018129e+03 + 198800 9.268248803264314e-01 -5.808683593327189e+00 -6.112668968366199e+00 4.702460105542665e+00 3.956929040483913e+00 9.566173314461343e+03 + 198820 1.043616179987061e+00 -6.010909924152204e+00 -6.056828965085332e+00 3.624734943758010e+00 4.361060704771374e+00 9.392323771006913e+03 + 198840 9.974703210282363e-01 -5.974531900468828e+00 -6.032309698045626e+00 3.784751083812432e+00 4.452982029041180e+00 9.316500753800274e+03 + 198860 9.617204533033882e-01 -5.950176758615055e+00 -6.024771060544092e+00 3.966742215316064e+00 4.538410190208619e+00 9.293239746157942e+03 + 198880 1.034272446172191e+00 -6.083498506444230e+00 -6.028682210535152e+00 3.221812872191052e+00 4.536576526095356e+00 9.305319608293303e+03 + 198900 9.567657983667074e-01 -5.992234741776585e+00 -6.023004768288084e+00 3.752637231384829e+00 4.575950977509589e+00 9.287810897233385e+03 + 198920 9.909439114340390e-01 -6.061833063974454e+00 -5.998561966772941e+00 3.413380083067317e+00 4.776692514369053e+00 9.212640604686629e+03 + 198940 9.318876708270594e-01 -5.986333209714253e+00 -5.995538533531874e+00 3.816403987877523e+00 4.763545593997485e+00 9.203335943978669e+03 + 198960 9.493821758106603e-01 -6.017935314200439e+00 -5.953408611112618e+00 3.636239332759810e+00 5.006761647365112e+00 9.074566218469419e+03 + 198980 1.018262657232479e+00 -6.118467218452872e+00 -5.983468966554721e+00 3.029045754606628e+00 4.804226607917773e+00 9.166374247732587e+03 + 199000 9.875875896218168e-01 -6.070905504619651e+00 -5.991426913529296e+00 3.323071242153216e+00 4.779449611466251e+00 9.190739817208707e+03 + 199020 9.721058819122163e-01 -6.042830617463405e+00 -5.986960266738362e+00 3.481263408070497e+00 4.802079607842529e+00 9.177072401986643e+03 + 199040 9.432280529116500e-01 -5.990196636472671e+00 -6.002557270580770e+00 3.751946998049983e+00 4.680970324199335e+00 9.224902679578991e+03 + 199060 9.807031422093141e-01 -6.035444028219263e+00 -5.985968417328162e+00 3.498720865357976e+00 4.782817479420718e+00 9.174031659324395e+03 + 199080 1.013545234686219e+00 -6.071576513127721e+00 -5.984687614569946e+00 3.396238919531455e+00 4.895168421063799e+00 9.170095166078969e+03 + 199100 9.995317748829399e-01 -6.038863456165707e+00 -5.994796339527912e+00 3.496224762611806e+00 4.749264965710287e+00 9.201073811324275e+03 + 199120 9.569438605606729e-01 -5.964863724097417e+00 -6.024148632539451e+00 3.879141459637709e+00 4.538718341053616e+00 9.291335059569286e+03 + 199140 1.043465808305374e+00 -6.084151197292503e+00 -5.970877625541311e+00 3.261252026653834e+00 4.911686404677758e+00 9.127871927196889e+03 + 199160 9.888466304859235e-01 -5.994698494594202e+00 -5.991821042735012e+00 3.779486533287518e+00 4.796009307147220e+00 9.191946821979931e+03 + 199180 1.038351433769356e+00 -6.060032889345124e+00 -5.972903461152788e+00 3.408641365130578e+00 4.908952025046413e+00 9.134075074344624e+03 + 199200 1.087042705658193e+00 -6.126547666689510e+00 -5.997310221469487e+00 3.061651520331414e+00 4.803752930214802e+00 9.208801849511990e+03 + 199220 9.357196934661954e-01 -5.899896573906688e+00 -6.041714389185898e+00 4.237988114199084e+00 4.423648272629880e+00 9.345548159151345e+03 + 199240 1.001999391504507e+00 -5.997688614709538e+00 -5.998886253556439e+00 3.744453246274875e+00 4.737576218681958e+00 9.213616955286139e+03 + 199260 9.741222560019579e-01 -5.954428673184900e+00 -6.009091823588172e+00 3.949633254469517e+00 4.635748985758749e+00 9.244958459576705e+03 + 199280 1.018995046919940e+00 -6.018645580825041e+00 -5.981151237033027e+00 3.665707003744082e+00 4.881005328028778e+00 9.159263627748211e+03 + 199300 9.523798101299401e-01 -5.918232667453390e+00 -5.998723135883461e+00 4.163542274049221e+00 4.701353548464017e+00 9.213109595715912e+03 + 199320 1.047474480588589e+00 -6.056307448133158e+00 -5.990589763484913e+00 3.443288105590085e+00 4.820649220619144e+00 9.188171568825132e+03 + 199340 1.052063333482815e+00 -6.061954723129742e+00 -5.995274675364363e+00 3.360298110510838e+00 4.743185263483689e+00 9.202556647255178e+03 + 199360 9.899399315649036e-01 -5.969841175554527e+00 -6.031105574437271e+00 3.837881644118959e+00 4.486091985099155e+00 9.312795952955328e+03 + 199380 1.045345255275729e+00 -6.054903517585581e+00 -6.000275517756035e+00 3.428601172163945e+00 4.742283600840854e+00 9.217917022324442e+03 + 199400 9.780104923920887e-01 -5.958423420917970e+00 -6.016396141193878e+00 3.865736483935700e+00 4.532848152861964e+00 9.267458321744127e+03 + 199420 9.694306975833765e-01 -5.949393899958658e+00 -6.034676514495618e+00 3.942958172837187e+00 4.453252202724016e+00 9.323803532354184e+03 + 199440 1.011138230619257e+00 -6.015121038088004e+00 -6.009321354178946e+00 3.625230601241597e+00 4.658533283745596e+00 9.245682356743368e+03 + 199460 9.823835158722997e-01 -5.976377539506453e+00 -6.001894201937834e+00 3.798620426431028e+00 4.652099802059292e+00 9.222862453835854e+03 + 199480 1.074562355574544e+00 -6.118486926125487e+00 -5.995296473648373e+00 3.016297520865714e+00 4.723676162650218e+00 9.202624643333613e+03 + 199500 9.926831596967829e-01 -6.005199868966562e+00 -6.000357663445108e+00 3.700903545492443e+00 4.728708238925513e+00 9.218133858751144e+03 + 199520 9.528151168241586e-01 -5.959418705000071e+00 -5.963065830859622e+00 3.901076693474031e+00 4.880134332397586e+00 9.104004014073711e+03 + 199540 9.557829809703990e-01 -5.977637161975556e+00 -5.991671870257975e+00 3.799602485859072e+00 4.719013019037336e+00 9.191491214806965e+03 + 199560 9.838846370790553e-01 -6.036655642150919e+00 -6.003509719541851e+00 3.458439215320582e+00 4.648768232256796e+00 9.227830722879620e+03 + 199580 9.843932648042784e-01 -6.058662065699025e+00 -6.020554801397395e+00 3.374629497019970e+00 4.593447305720019e+00 9.280268165956993e+03 + 199600 1.065184573658751e+00 -6.206851690895959e+00 -5.968086425263754e+00 2.610633649932813e+00 4.981660753998377e+00 9.119370099006041e+03 + 199620 9.388817486791809e-01 -6.048259703771625e+00 -6.004812660448888e+00 3.444013103007198e+00 4.693492749174577e+00 9.231822964740768e+03 + 199640 9.473654082682319e-01 -6.087966531003856e+00 -5.979134478052076e+00 3.195402416940680e+00 4.820332906695564e+00 9.153129876030411e+03 + 199660 9.210577256459164e-01 -6.068236326393697e+00 -5.967782053655758e+00 3.335152873111248e+00 4.911976852420958e+00 9.118414230427796e+03 + 199680 9.497229600007705e-01 -6.121910609110069e+00 -5.971990252219380e+00 3.092920192420396e+00 4.953786081786985e+00 9.131271875339731e+03 + 199700 9.516524276659803e-01 -6.127906301058084e+00 -6.000100462469979e+00 2.979286429490728e+00 4.713167332553232e+00 9.217372102518229e+03 + 199720 9.443608833647245e-01 -6.114016019953694e+00 -6.000580190700743e+00 3.091035310234930e+00 4.742401395943221e+00 9.218828712551509e+03 + 199740 8.681959517945045e-01 -5.990991490549361e+00 -5.977120027277696e+00 3.797772807366312e+00 4.877424896074221e+00 9.146908120580996e+03 + 199760 9.625155118642070e-01 -6.110458936060956e+00 -5.978494259332300e+00 3.124357089378134e+00 4.882118684621803e+00 9.151154400341169e+03 + 199780 9.848261985222230e-01 -6.112095588872020e+00 -5.980370944143631e+00 3.096964062230267e+00 4.853347356583562e+00 9.156887038258950e+03 + 199800 9.658504385268453e-01 -6.044741959287682e+00 -5.983150214559801e+00 3.514935168261291e+00 4.868604497780478e+00 9.165405595380049e+03 + 199820 9.830751481829464e-01 -6.030277382849008e+00 -6.003547531492968e+00 3.595906231692601e+00 4.749393174610113e+00 9.227958060577354e+03 + 199840 1.019195363692946e+00 -6.047159382563301e+00 -6.018232273751166e+00 3.484691277977978e+00 4.650795213232877e+00 9.273127872675630e+03 + 199860 1.009814556481902e+00 -6.004451936660288e+00 -6.029796701673096e+00 3.664786858860082e+00 4.519253296066829e+00 9.308739911114350e+03 + 199880 1.004112823631311e+00 -5.975808665464897e+00 -5.994508893678078e+00 3.866906624242725e+00 4.759527019991680e+00 9.200211087352904e+03 + 199900 1.017006687798344e+00 -5.979166475348716e+00 -6.024287631510320e+00 3.884200204963863e+00 4.625107543807584e+00 9.291749564292193e+03 + 199920 1.029645300704506e+00 -5.988407957108219e+00 -6.015604824463416e+00 3.792038397567344e+00 4.635869776512177e+00 9.265017077501841e+03 + 199940 1.016090771897235e+00 -5.963111834339648e+00 -5.964819076856839e+00 3.924983490607407e+00 4.915180239878768e+00 9.109359800541135e+03 + 199960 1.089150523107765e+00 -6.068080542656683e+00 -5.972503306663688e+00 3.396420435709163e+00 4.945239715310409e+00 9.132824214410233e+03 + 199980 9.700833243472550e-01 -5.891585904890412e+00 -6.005450837672986e+00 4.354796401538968e+00 4.700966336960025e+00 9.233789429481529e+03 + 200000 1.036656071639917e+00 -5.992403506639822e+00 -5.993257960485003e+00 3.764547892583718e+00 4.759641486378383e+00 9.196316925648398e+03 +Loop time of 380.886 on 1 procs for 200000 steps with 256 atoms + +Performance: 226839.823 tau/day, 525.092 timesteps/s +99.9% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 308.99 | 308.99 | 308.99 | 0.0 | 81.12 +Neigh | 22.559 | 22.559 | 22.559 | 0.0 | 5.92 +Comm | 5.1164 | 5.1164 | 5.1164 | 0.0 | 1.34 +Output | 41.166 | 41.166 | 41.166 | 0.0 | 10.81 +Modify | 2.379 | 2.379 | 2.379 | 0.0 | 0.62 +Other | | 0.6754 | | | 0.18 + +Nlocal: 256 ave 256 max 256 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 2125 ave 2125 max 2125 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 19131 ave 19131 max 19131 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 19131 +Ave neighs/atom = 74.7305 +Neighbor list builds = 19989 +Dangerous builds = 19886 +Total wall time: 0:06:54 diff --git a/examples/USER/hma/log.6Nov18.hma.g++.4 b/examples/USER/hma/log.6Nov18.hma.g++.4 new file mode 100644 index 0000000000..5b25fa5cf5 --- /dev/null +++ b/examples/USER/hma/log.6Nov18.hma.g++.4 @@ -0,0 +1,10159 @@ +LAMMPS (31 Aug 2018) +# Harmonically mapped average example + +units lj +dimension 3 +boundary p p p +atom_style atomic +atom_modify map array +# ---------- Create Atoms ---------------------------- +lattice fcc 1.0 +Lattice spacing in x,y,z = 1.5874 1.5874 1.5874 +region box block 0 4 0 4 0 4 units lattice +create_box 1 box +Created orthogonal box = (0 0 0) to (6.3496 6.3496 6.3496) + 1 by 2 by 2 MPI processor grid +lattice fcc 1.0 orient x 1 0 0 orient y 0 1 0 orient z 0 0 1 +Lattice spacing in x,y,z = 1.5874 1.5874 1.5874 +create_atoms 1 region box +Created 256 atoms + Time spent = 0.000636816 secs +# ---------- Define Interatomic Potential --------------------- +pair_style lj/smooth/linear 3 +pair_coeff * * 1.0 1.0 +mass 1 1.0 + +atom_modify sort 0 1 +velocity all create 0.1 45678 dist gaussian + +compute u all pe + +compute p all pressure NULL pair + +compute hma all HMA settemp u p 9.579586686264458 cv + +timestep 0.005 + +fix settemp all nvt temp 1.0 1.0 0.5 +thermo_style custom elapsed temp c_u c_hma[1] c_p c_hma[2] c_hma[3] +thermo_modify format float '%22.15e' +thermo 500 +run 20000 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 3.3 + ghost atom cutoff = 3.3 + binsize = 1.65, bins = 4 4 4 + 2 neighbor lists, perpetual/occasional/extra = 1 1 0 + (1) pair lj/smooth/linear, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard + (2) compute HMA, occasional, copy from (1) + attributes: half, newton on + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 3.389 | 3.389 | 3.389 Mbytes +Elapsed Temp c_u c_hma[1] c_p c_hma[2] c_hma[3] + 0 9.999999999999999e-02 -7.321210550030622e+00 -5.827069925030622e+00 -3.541123363606526e+00 6.038463322657932e+00 8.693908581891272e+03 + 500 2.319904532047116e-01 -7.021814067268549e+00 -5.841520703728273e+00 -1.859554996730893e+00 5.917872146525079e+00 8.737041016754241e+03 + 1000 1.104889191155021e+00 -6.005326544560477e+00 -6.005300065747159e+00 3.645694884120414e+00 4.645846929564070e+00 9.233336265503700e+03 + 1500 9.475049376144361e-01 -6.133389836457317e+00 -5.983811791861923e+00 2.980778280706599e+00 4.839678559900945e+00 9.167450093661304e+03 + 2000 9.009354935012601e-01 -6.066361566415782e+00 -5.975649385751911e+00 3.331919983683387e+00 4.852803362719920e+00 9.142450653666589e+03 + 2500 1.002748731362028e+00 -6.037709705055500e+00 -5.998660236350431e+00 3.517524667487255e+00 4.741752759677512e+00 9.212938381713899e+03 + 3000 1.123087652951704e+00 -6.025819107168451e+00 -5.970493239986080e+00 3.598743028856235e+00 4.916432719867683e+00 9.126676463986189e+03 + 3500 1.115128009750835e+00 -6.000529470165528e+00 -5.980015761414576e+00 3.665878335379198e+00 4.783671225513338e+00 9.155782280210480e+03 + 4000 9.904879689205039e-01 -5.990830917252424e+00 -6.007049321999301e+00 3.700324729502504e+00 4.607196139655914e+00 9.238716127101230e+03 + 4500 9.696423790018132e-01 -6.095364960235830e+00 -5.949103254372231e+00 3.188999551316120e+00 5.028856900310743e+00 9.061471896280929e+03 + 5000 1.005681297563624e+00 -6.094938179693363e+00 -6.014945551672039e+00 3.140253069724724e+00 4.599583118642348e+00 9.263005212755274e+03 + 5500 1.067821663160412e+00 -6.055271652935048e+00 -6.039553220002009e+00 3.350955211546091e+00 4.441212885867230e+00 9.338870121131475e+03 + 6000 1.019349023817732e+00 -5.912735006243721e+00 -6.010199997355059e+00 4.160148455119939e+00 4.600489393500003e+00 9.248369562541713e+03 + 6500 1.033977564076081e+00 -5.962511500402099e+00 -5.953097811556573e+00 3.913955620678704e+00 4.968010478793357e+00 9.073605525336026e+03 + 7000 1.035036973336388e+00 -6.011513860495915e+00 -5.988661036457318e+00 3.570585392636366e+00 4.701809844729083e+00 9.182284012600518e+03 + 7500 9.759766417830451e-01 -6.011014245515786e+00 -5.997095489328838e+00 3.659421763886547e+00 4.739345415832561e+00 9.208142257833988e+03 + 8000 9.701274032979823e-01 -6.070706464001116e+00 -5.987899394187518e+00 3.293522632549048e+00 4.769013641771370e+00 9.179944973040452e+03 + 8500 1.002959574283594e+00 -6.000331246180245e+00 -6.022939013616290e+00 3.707537441996905e+00 4.577720142838428e+00 9.287619492673581e+03 + 9000 9.541471061067928e-01 -5.891837375294362e+00 -6.000893913894259e+00 4.214373867383508e+00 4.588154346298096e+00 9.219760426705488e+03 + 9500 1.005476043930556e+00 -6.054397260431607e+00 -5.963822185829731e+00 3.425817325831102e+00 4.945913420642570e+00 9.106317976320150e+03 + 10000 9.834510517532772e-01 -5.979858570968017e+00 -6.007829122692488e+00 3.832487507111145e+00 4.671876270680338e+00 9.241093007564954e+03 + 10500 1.053423257346257e+00 -5.984863687481322e+00 -5.990560458118040e+00 3.742155897948207e+00 4.709444159379769e+00 9.188099433599265e+03 + 11000 1.027766819783240e+00 -5.964303012082833e+00 -5.987340607292543e+00 3.942276092974025e+00 4.809990656223532e+00 9.178213465454402e+03 + 11500 1.030919611642090e+00 -5.996031790431708e+00 -6.010813071174461e+00 3.713452645350145e+00 4.628576243929453e+00 9.250277317464830e+03 + 12000 1.015499044847646e+00 -5.983611533298556e+00 -6.000577066405612e+00 3.747611330243804e+00 4.650192613735324e+00 9.218807640515772e+03 + 12500 9.260784226173562e-01 -5.995616138164384e+00 -6.024603077235440e+00 3.708688522431407e+00 4.542241032571079e+00 9.292727745364478e+03 + 13000 9.581084725650251e-01 -6.095817502268568e+00 -5.989303506622369e+00 3.230806633332333e+00 4.842426479320365e+00 9.184229513868806e+03 + 13500 9.246476920572243e-01 -5.986197290479123e+00 -5.980486024616446e+00 3.778398028002328e+00 4.811193000401358e+00 9.157208321147285e+03 + 14000 9.018834156590910e-01 -5.891981523518482e+00 -5.961281643266227e+00 4.310640039569481e+00 4.912708027819059e+00 9.098571305044385e+03 + 14500 9.458192412990540e-01 -5.924212527125402e+00 -5.974831040418032e+00 4.099524287456710e+00 4.808864950940809e+00 9.139925423823777e+03 + 15000 1.079258475602827e+00 -5.842389291052847e+00 -5.997594135488276e+00 4.542013464261510e+00 4.650803229641226e+00 9.209631946001080e+03 + 15500 1.003773905363782e+00 -5.990536501227417e+00 -5.978949148782005e+00 3.711448614654375e+00 4.777984985532921e+00 9.152543385133793e+03 + 16000 9.589971646383746e-01 -6.022404990638810e+00 -6.013121691584658e+00 3.591520611305744e+00 4.644826751060574e+00 9.257382394405931e+03 + 16500 1.027873542611377e+00 -6.062068879792612e+00 -5.995808570227100e+00 3.344041739290934e+00 4.724518690565871e+00 9.204185610519249e+03 + 17000 9.721883229756479e-01 -6.076377536863534e+00 -5.995495525201934e+00 3.317173564950596e+00 4.781610592362355e+00 9.203227919920830e+03 + 17500 9.870692120707141e-01 -5.965983792560558e+00 -6.036111701999152e+00 3.838886592024325e+00 4.436201283769008e+00 9.328234074356338e+03 + 18000 1.004272604822617e+00 -5.960763698221652e+00 -5.980795290630440e+00 3.950710186832507e+00 4.835685683342340e+00 9.158184493996429e+03 + 18500 9.381056200232580e-01 -5.953631223909241e+00 -6.011057530919335e+00 3.898044457090124e+00 4.568293715545873e+00 9.251034889270257e+03 + 19000 9.369931263537112e-01 -6.012014674095721e+00 -5.987682214265706e+00 3.582518713971043e+00 4.722239463750979e+00 9.179299635700279e+03 + 19500 9.837184187823201e-01 -5.957066902345472e+00 -6.012125787465584e+00 3.937810342708973e+00 4.621653704014352e+00 9.254320960371275e+03 + 20000 1.079101865720838e+00 -6.089503178102808e+00 -5.960131548856806e+00 3.215696838220799e+00 4.958568753546265e+00 9.095068306811330e+03 +Loop time of 4.841 on 4 procs for 20000 steps with 256 atoms + +Performance: 1784755.120 tau/day, 4131.378 timesteps/s +98.7% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 2.3889 | 2.6923 | 3.0228 | 14.4 | 55.62 +Neigh | 0.52899 | 0.5489 | 0.57081 | 2.3 | 11.34 +Comm | 1.0419 | 1.3856 | 1.697 | 20.8 | 28.62 +Output | 0.022234 | 0.022308 | 0.022518 | 0.1 | 0.46 +Modify | 0.13626 | 0.14418 | 0.15704 | 2.2 | 2.98 +Other | | 0.04763 | | | 0.98 + +Nlocal: 64 ave 68 max 60 min +Histogram: 1 1 0 0 0 0 0 0 1 1 +Nghost: 1344.25 ave 1352 max 1339 min +Histogram: 1 0 0 2 0 0 0 0 0 1 +Neighs: 4758 ave 5243 max 3935 min +Histogram: 1 0 0 0 0 0 1 0 1 1 + +Total # of neighbors = 19032 +Ave neighs/atom = 74.3438 +Neighbor list builds = 1938 +Dangerous builds = 1898 +thermo 20 +run 200000 +Per MPI rank memory allocation (min/avg/max) = 3.771 | 3.771 | 3.771 Mbytes +Elapsed Temp c_u c_hma[1] c_p c_hma[2] c_hma[3] + 0 1.079101865720838e+00 -6.089503178102806e+00 -5.960131548856804e+00 3.215696838220800e+00 4.958568753546269e+00 9.095068306811325e+03 + 20 1.045882952900159e+00 -6.018338283555533e+00 -5.972366139305224e+00 3.616958874311578e+00 4.880938040763178e+00 9.132383004784513e+03 + 40 1.023416907678504e+00 -5.967053445329114e+00 -5.982864893458127e+00 3.888481015323551e+00 4.797689233353067e+00 9.164513217016609e+03 + 60 9.899033883056040e-01 -5.902992198654239e+00 -5.995283741619580e+00 4.218205169077458e+00 4.688252847300357e+00 9.202566117085955e+03 + 80 1.077050480328796e+00 -6.019809533578615e+00 -6.001598077962455e+00 3.565599069062933e+00 4.670172065424577e+00 9.221945457239293e+03 + 100 1.080384560249323e+00 -6.016438905244236e+00 -6.024415917706303e+00 3.607676959151043e+00 4.561871719155161e+00 9.292169644904860e+03 + 120 9.997046598216068e-01 -5.896119196502427e+00 -6.046186059637260e+00 4.218098095544917e+00 4.356390944652691e+00 9.359373348945550e+03 + 140 1.078735984732703e+00 -6.019266040588759e+00 -6.034332020308546e+00 3.590176101522915e+00 4.503664914519074e+00 9.322748132452190e+03 + 160 9.760415116951116e-01 -5.879721306575083e+00 -6.054494533913690e+00 4.331789309870658e+00 4.328214392422853e+00 9.385084700332845e+03 + 180 1.031538652705958e+00 -5.980163604486879e+00 -6.034579522560372e+00 3.780608517952989e+00 4.468143895538888e+00 9.323487886411000e+03 + 200 1.056471731975392e+00 -6.039286251806756e+00 -5.961205747060128e+00 3.529192708205122e+00 4.977543049379323e+00 9.098340498472173e+03 + 220 1.018770273422817e+00 -6.011576467489766e+00 -5.956325424998603e+00 3.639782521372246e+00 4.957042557427693e+00 9.083454391480973e+03 + 240 1.042819636360988e+00 -6.078833887266810e+00 -5.924026301164385e+00 3.316341825846475e+00 5.205270941643121e+00 8.985297958019297e+03 + 260 9.827038416572660e-01 -6.025801008390236e+00 -5.973596229242497e+00 3.552269333175087e+00 4.852037253704874e+00 9.136147448449266e+03 + 280 9.330683939380402e-01 -5.987241712695330e+00 -5.981808536495530e+00 3.776217634541064e+00 4.807415773061615e+00 9.161283472448169e+03 + 300 9.367212503823726e-01 -6.023294771844806e+00 -5.980308288453488e+00 3.522452586519692e+00 4.769287626289448e+00 9.156676177175032e+03 + 320 8.866502119132115e-01 -5.971552725763028e+00 -5.999883540078049e+00 3.832954064130393e+00 4.670274144154201e+00 9.216690919308339e+03 + 340 9.812173419090766e-01 -6.127345466738726e+00 -5.971758235372432e+00 3.042675332936083e+00 4.936081292487585e+00 9.130565671999488e+03 + 360 9.701678838757176e-01 -6.123214162223682e+00 -5.956471391747523e+00 3.024346518793122e+00 4.981809310227565e+00 9.083925283172193e+03 + 380 9.530521608125605e-01 -6.101948718277182e+00 -5.969346784103942e+00 3.160159309894476e+00 4.921580136000209e+00 9.123183696589322e+03 + 400 9.257718531546387e-01 -6.058094727447953e+00 -6.005990817706857e+00 3.375612369879977e+00 4.674801082667322e+00 9.235454101684938e+03 + 420 9.378475032879857e-01 -6.063808619486702e+00 -6.039127865978216e+00 3.321015355026043e+00 4.462736061006034e+00 9.337565742684808e+03 + 440 9.868229541930312e-01 -6.115563509613311e+00 -6.006885830025272e+00 3.048783352987000e+00 4.672827406998083e+00 9.238210334985924e+03 + 460 9.566601962627783e-01 -6.040790766879258e+00 -5.996276961059726e+00 3.432349289595275e+00 4.687954451100221e+00 9.205623814062721e+03 + 480 9.859778191204607e-01 -6.032992456497698e+00 -6.004207130185696e+00 3.562741803657827e+00 4.728031601856195e+00 9.229978972138921e+03 + 500 1.051590614980880e+00 -6.055418879049184e+00 -5.975387332570744e+00 3.412139370691222e+00 4.871692895412218e+00 9.141625620994606e+03 + 520 1.016928028177617e+00 -5.934484344864495e+00 -5.988482020119943e+00 4.036280150584107e+00 4.726217143154087e+00 9.181703401118843e+03 + 540 1.021626621375652e+00 -5.896726491861172e+00 -6.042286195219953e+00 4.211849774755440e+00 4.376023432778024e+00 9.347266091640566e+03 + 560 1.057963649785121e+00 -5.930514935075140e+00 -5.994193066656623e+00 4.133424884461160e+00 4.767775198761271e+00 9.199220503239567e+03 + 580 1.126457484615616e+00 -6.025302767770825e+00 -6.002248753792481e+00 3.577314302596564e+00 4.709694018457352e+00 9.223950233643571e+03 + 600 1.053775583014867e+00 -5.920880666414229e+00 -6.025321044401184e+00 4.089562432812162e+00 4.489849620314809e+00 9.294932166324394e+03 + 620 1.068125791364220e+00 -5.952048336294525e+00 -5.991548889906705e+00 3.948582501628295e+00 4.721764210096242e+00 9.191125075855618e+03 + 640 1.001917999683921e+00 -5.868889196279280e+00 -6.078442481513278e+00 4.387667520056008e+00 4.184380127976309e+00 9.459397710993178e+03 + 660 1.013785745023234e+00 -5.908440588408116e+00 -6.021185701862593e+00 4.194475718233535e+00 4.547075829528006e+00 9.282200503824031e+03 + 680 1.006272102195670e+00 -5.922361783809079e+00 -6.015315424402591e+00 4.108572526673648e+00 4.574818337856310e+00 9.264102856651089e+03 + 700 1.050062861284214e+00 -6.012992437584885e+00 -6.015529119993223e+00 3.635097335980956e+00 4.620531313041945e+00 9.264804219762771e+03 + 720 1.045358840625471e+00 -6.037807695505035e+00 -6.027135304464126e+00 3.474817177730830e+00 4.536099698634905e+00 9.300555520485419e+03 + 740 9.642925485448076e-01 -5.948158503381118e+00 -6.034972091799299e+00 4.003503145179767e+00 4.505006086123185e+00 9.324713510866124e+03 + 760 9.675102936861227e-01 -5.982924400760570e+00 -6.015096232174412e+00 3.870382414802911e+00 4.685646780249812e+00 9.263451837988561e+03 + 780 9.790720662584512e-01 -6.026047065185467e+00 -5.979529232557102e+00 3.625058207440162e+00 4.892170801003571e+00 9.154322435131195e+03 + 800 1.004123930050531e+00 -6.082912408400262e+00 -5.968506093674343e+00 3.259659032213952e+00 4.916597795690173e+00 9.120630367341679e+03 + 820 1.004543182217278e+00 -6.098101606885474e+00 -5.980350258056370e+00 3.164901910898681e+00 4.841048377837739e+00 9.156849592436240e+03 + 840 9.630748088451148e-01 -6.048903166205694e+00 -5.994027918620555e+00 3.392810786130890e+00 4.707912949681882e+00 9.198714740374367e+03 + 860 9.228861378211657e-01 -5.996861888124024e+00 -6.008496153064605e+00 3.703560501505661e+00 4.636754751820165e+00 9.243110577356250e+03 + 880 9.651481015705456e-01 -6.061582878325297e+00 -5.953924133351292e+00 3.391579294709795e+00 5.009772468487476e+00 9.076133332861597e+03 + 900 9.348983371800531e-01 -6.011608836096201e+00 -5.995661702368822e+00 3.600911181002898e+00 4.692482090676478e+00 9.203743757888953e+03 + 920 1.036896738232031e+00 -6.151779143268755e+00 -5.937278934425017e+00 2.942196267685299e+00 5.173889660666077e+00 9.025521017635112e+03 + 940 9.705242919454212e-01 -6.036396171757210e+00 -6.007701602226906e+00 3.498512079639252e+00 4.663280738352547e+00 9.240700537524001e+03 + 960 9.703590513777164e-01 -6.015671221414300e+00 -5.958550157140520e+00 3.653576696163561e+00 4.981574686679732e+00 9.090248498660674e+03 + 980 1.022109298884103e+00 -6.064126871372943e+00 -5.994058900431912e+00 3.333754888286173e+00 4.736096020413037e+00 9.198811725431875e+03 + 1000 9.685007477272927e-01 -5.947157585823188e+00 -6.028697640132853e+00 3.910210723383799e+00 4.441995113255079e+00 9.305381841761822e+03 + 1020 1.008136117042101e+00 -5.967693663042624e+00 -6.031031238423907e+00 3.855538252977954e+00 4.491844093680513e+00 9.312561366234242e+03 + 1040 1.107445497004232e+00 -6.079939803816606e+00 -5.987270852102483e+00 3.255889721065741e+00 4.788009182282165e+00 9.178015036361758e+03 + 1060 1.044758630971925e+00 -5.958437495305702e+00 -6.013937506863499e+00 3.914339676403526e+00 4.595650021439628e+00 9.259867433592528e+03 + 1080 1.035880587544461e+00 -5.922449944887129e+00 -6.033637939351922e+00 4.066129013791143e+00 4.427670343287764e+00 9.320588435674486e+03 + 1100 9.751140198525383e-01 -5.818558920459956e+00 -6.080906309495900e+00 4.694663995350776e+00 4.188224689379140e+00 9.467068759704607e+03 + 1120 1.067993684112638e+00 -5.951955232026927e+00 -6.021480919464405e+00 3.976881891871271e+00 4.577654635539909e+00 9.283099457617489e+03 + 1140 1.035716301260880e+00 -5.907061488350916e+00 -5.987039157900400e+00 4.180855135543586e+00 4.721610980486084e+00 9.177290886449660e+03 + 1160 1.019375948323584e+00 -5.886370518000196e+00 -6.028553863042942e+00 4.262813756746125e+00 4.446374986709141e+00 9.304925235198898e+03 + 1180 1.093380159162734e+00 -6.005503518747864e+00 -6.027072672089359e+00 3.641764885299509e+00 4.517911468996958e+00 9.300367982427439e+03 + 1200 1.042582047788811e+00 -5.946489662612521e+00 -6.037144910525036e+00 4.039402242433351e+00 4.518845780065416e+00 9.331413378313986e+03 + 1220 9.663542177685119e-01 -5.850641497244586e+00 -6.039704867708192e+00 4.486145434613865e+00 4.400514303949820e+00 9.339315441642380e+03 + 1240 1.029347247685795e+00 -5.959706239835747e+00 -5.999980184600757e+00 3.952447527563560e+00 4.721188304350065e+00 9.216989638017812e+03 + 1260 1.056078831132393e+00 -6.013384114236571e+00 -6.006253875724207e+00 3.560314479129267e+00 4.601257412068100e+00 9.236281130215775e+03 + 1280 9.804605261528435e-01 -5.913173019151906e+00 -6.048673912743030e+00 4.129404127893233e+00 4.351337028197486e+00 9.367090226916964e+03 + 1300 1.002428567847763e+00 -5.956218706909874e+00 -6.026214030433431e+00 3.948146858765891e+00 4.546222879352323e+00 9.297669545173119e+03 + 1320 9.770121717042179e-01 -5.928459695639935e+00 -6.054311638894687e+00 4.059717030184133e+00 4.337055696490075e+00 9.384514061962318e+03 + 1340 1.010334021233879e+00 -5.989226656323354e+00 -6.045065983070645e+00 3.736771279435648e+00 4.416133224144823e+00 9.355907696214039e+03 + 1360 1.015572014704490e+00 -6.009053674086513e+00 -6.012142286665330e+00 3.643636318592968e+00 4.625901027204147e+00 9.254363506332575e+03 + 1380 1.020423639644608e+00 -6.027930181386951e+00 -5.977965193222040e+00 3.543866434942286e+00 4.830773129042132e+00 9.149538312252938e+03 + 1400 9.683530022348545e-01 -5.959739001021481e+00 -6.037775362729338e+00 3.892719200438814e+00 4.444622335424349e+00 9.333373098016767e+03 + 1420 1.061363887238329e+00 -6.107202372992392e+00 -5.986695431269363e+00 3.125532375241542e+00 4.817501883004134e+00 9.176250195089011e+03 + 1440 9.629301181714207e-01 -5.970065775172462e+00 -6.007557664457972e+00 3.880295862869057e+00 4.665011632740542e+00 9.240258153641324e+03 + 1460 9.635359109549591e-01 -5.979073289500995e+00 -5.993303451814675e+00 3.866832622748392e+00 4.785120828632738e+00 9.196511815318074e+03 + 1480 9.567370930802896e-01 -5.977043341669617e+00 -6.001458456586717e+00 3.843778320819849e+00 4.703582952739037e+00 9.221532949075470e+03 + 1500 9.900361347227478e-01 -6.031792149531222e+00 -5.978707340260190e+00 3.506946225863090e+00 4.811767415545044e+00 9.151805317615643e+03 + 1520 9.938001600708007e-01 -6.039815351178462e+00 -5.991857013957798e+00 3.509960601875635e+00 4.785344795725385e+00 9.192066992791384e+03 + 1540 9.953112874815186e-01 -6.042719174169688e+00 -6.005353097187282e+00 3.450947940436433e+00 4.665509736851135e+00 9.233495244612268e+03 + 1560 1.069271904932656e+00 -6.152073224941286e+00 -5.969125473261437e+00 2.902794673513004e+00 4.953308974731771e+00 9.122518662457122e+03 + 1580 9.501493252167980e-01 -5.973938733141406e+00 -6.000864862162931e+00 3.840243568541768e+00 4.685629568895167e+00 9.219698694560499e+03 + 1600 9.589556423068437e-01 -5.981441670093458e+00 -5.997147587285640e+00 3.775158017965434e+00 4.684972210965098e+00 9.208288701353231e+03 + 1620 1.006291995863496e+00 -6.039790244792102e+00 -5.997886280316983e+00 3.510158752278993e+00 4.750777800912672e+00 9.210569812571066e+03 + 1640 9.806403775285769e-01 -5.983382951803718e+00 -6.026193959638568e+00 3.749644127205098e+00 4.503816695235340e+00 9.297642102207012e+03 + 1660 9.960868367948952e-01 -5.984566094202703e+00 -6.008397964351241e+00 3.822908175157749e+00 4.686061888794857e+00 9.242848512513441e+03 + 1680 9.505830390822479e-01 -5.891050024485596e+00 -6.049352098638883e+00 4.204519529126921e+00 4.295524522171942e+00 9.369180422451216e+03 + 1700 1.016998032951114e+00 -5.961998321104554e+00 -6.036169082272856e+00 3.869686127281646e+00 4.443786138765061e+00 9.328432280716304e+03 + 1720 9.140780237941266e-01 -5.779748720443006e+00 -6.132739644266486e+00 4.806172771311286e+00 3.779244261547943e+00 9.629014795126626e+03 + 1740 1.021525743250995e+00 -5.915200249926897e+00 -6.067511755916038e+00 4.138223841906265e+00 4.263627604387245e+00 9.425471443436001e+03 + 1760 1.056258655220493e+00 -5.948052653311422e+00 -5.994831308132557e+00 4.015012130619880e+00 4.746401855663484e+00 9.201170045659454e+03 + 1780 1.091760533190582e+00 -5.988967165690083e+00 -6.005106813609913e+00 3.749688782186766e+00 4.657012426228656e+00 9.232735305379583e+03 + 1800 1.056844747086857e+00 -5.929879681313796e+00 -6.037475961365871e+00 4.078193170902743e+00 4.460358680373206e+00 9.332458516430353e+03 + 1820 1.051672648702115e+00 -5.923554403937755e+00 -6.035937325815052e+00 4.114528236311266e+00 4.469208107690868e+00 9.327690787933538e+03 + 1840 1.079191787915328e+00 -5.974647120335245e+00 -6.031330024822035e+00 3.772111845151964e+00 4.446629835937700e+00 9.313492955648153e+03 + 1860 1.100065683075181e+00 -6.026110253503338e+00 -5.977894555395919e+00 3.612546010636712e+00 4.889408010524683e+00 9.149326728161452e+03 + 1880 1.049314676910492e+00 -5.979511344177174e+00 -6.008981366727259e+00 3.819927821828574e+00 4.650706391874736e+00 9.244641974401233e+03 + 1900 1.036184806597899e+00 -5.997668388798338e+00 -5.980165503078808e+00 3.750662416783600e+00 4.851166695147951e+00 9.156241696330460e+03 + 1920 1.005535619010941e+00 -5.989666607848737e+00 -5.979483632166835e+00 3.791000171996873e+00 4.849472394172748e+00 9.154171845743464e+03 + 1940 1.005750784090165e+00 -6.027399163835307e+00 -6.033277752287585e+00 3.510098996283014e+00 4.476343231681413e+00 9.319475245493330e+03 + 1960 1.033242556008971e+00 -6.101125728237266e+00 -5.965821687674877e+00 3.181007642040000e+00 4.957944381181844e+00 9.112435021612959e+03 + 1980 9.690750026426086e-01 -6.030404089771947e+00 -5.965755592818375e+00 3.604559043262781e+00 4.975780717092768e+00 9.112214479823842e+03 + 2000 9.573730217782468e-01 -6.027212106364522e+00 -5.975251913179205e+00 3.536899098041686e+00 4.835262568125687e+00 9.141197427790356e+03 + 2020 9.580965930334331e-01 -6.035090785097059e+00 -5.982669904413302e+00 3.529901381040305e+00 4.830910190031504e+00 9.163899364309213e+03 + 2040 9.660262002751682e-01 -6.048666659007282e+00 -5.974940385248316e+00 3.407366200012847e+00 4.830713873040818e+00 9.140302196515371e+03 + 2060 9.595238897940745e-01 -6.035918296845781e+00 -5.995067147797715e+00 3.522627130509846e+00 4.757200750038729e+00 9.201927798556333e+03 + 2080 9.661463423743272e-01 -6.040141946598026e+00 -5.974654975432848e+00 3.537300360750312e+00 4.913336683256795e+00 9.139403566643907e+03 + 2100 1.000737593509061e+00 -6.083070298292498e+00 -5.981508654049288e+00 3.301870240239810e+00 4.885052918097971e+00 9.160384300410915e+03 + 2120 1.003290524959656e+00 -6.076963276900972e+00 -5.996724631137527e+00 3.267021808580333e+00 4.727764529444345e+00 9.206983820623636e+03 + 2140 1.007272603225144e+00 -6.072101933930028e+00 -6.002236011835721e+00 3.336549560204369e+00 4.737730496586387e+00 9.223895452315091e+03 + 2160 9.818101233336093e-01 -6.021976171896148e+00 -5.973717484374421e+00 3.570816311975517e+00 4.847925163733031e+00 9.136548609801810e+03 + 2180 1.000151459290246e+00 -6.035791855429288e+00 -5.983648452238181e+00 3.461164862337852e+00 4.760580352626755e+00 9.166930243754949e+03 + 2200 9.554121253276487e-01 -5.953809904471409e+00 -5.997391068390868e+00 3.989846806393845e+00 4.739597019004995e+00 9.209044134300921e+03 + 2220 9.839307642154455e-01 -5.980435775872271e+00 -6.021082810199923e+00 3.805083503591285e+00 4.571681942373672e+00 9.281886750620795e+03 + 2240 1.002960186749692e+00 -5.995430900010174e+00 -6.023260190551815e+00 3.710502562964110e+00 4.550702470105212e+00 9.288593336517781e+03 + 2260 1.004767606786110e+00 -5.985537956324077e+00 -6.045660500958030e+00 3.756604139229965e+00 4.411371184008087e+00 9.357759338904747e+03 + 2280 1.027991188691278e+00 -6.009888852210896e+00 -6.029728511350481e+00 3.694370641299767e+00 4.580448248342943e+00 9.308542224423340e+03 + 2300 9.604690161306196e-01 -5.903919967771139e+00 -6.021619395360090e+00 4.221870042258548e+00 4.546021715115236e+00 9.283529012272789e+03 + 2320 9.946467322845283e-01 -5.949491168189271e+00 -6.001321789945751e+00 3.985664349476699e+00 4.688044898588194e+00 9.221101422118352e+03 + 2340 1.031418105782714e+00 -5.999037826700263e+00 -6.015810873249690e+00 3.712547809461479e+00 4.616234380554106e+00 9.265645565660403e+03 + 2360 1.049610677981517e+00 -6.024346266801204e+00 -6.004432597265719e+00 3.561393145671440e+00 4.675740517774594e+00 9.230668695670809e+03 + 2380 9.914143832608640e-01 -5.939099363307784e+00 -6.018592866977644e+00 4.017360671250756e+00 4.560896671598486e+00 9.274215260865354e+03 + 2400 1.012991710877029e+00 -5.974665694252671e+00 -5.998910952792016e+00 3.855916194011024e+00 4.716696167536472e+00 9.213669904923117e+03 + 2420 1.058602658768619e+00 -6.048244304439085e+00 -5.984697603248392e+00 3.462541409542367e+00 4.827436401599554e+00 9.170128929181448e+03 + 2440 1.109174134477418e+00 -6.136390280741399e+00 -5.992316036744899e+00 2.926837265224963e+00 4.754133869670067e+00 9.193511792371128e+03 + 2460 9.746235130019915e-01 -5.968140791495582e+00 -6.012617563886733e+00 3.937490663295441e+00 4.682098153467168e+00 9.255821060287928e+03 + 2480 9.650319105898962e-01 -6.002441576881545e+00 -5.978626243559641e+00 3.699446377866919e+00 4.836197707212214e+00 9.151542428373863e+03 + 2500 9.562145253501082e-01 -6.042757398039974e+00 -5.998266775327734e+00 3.460543874070221e+00 4.716015914585518e+00 9.211731616562987e+03 + 2520 9.392688056445878e-01 -6.065333014050135e+00 -5.989345446958505e+00 3.316274866757337e+00 4.752607236035481e+00 9.184379853073106e+03 + 2540 9.406177693886535e-01 -6.100166140233386e+00 -5.968893953695828e+00 3.155325092288356e+00 4.909110301692236e+00 9.121812727403245e+03 + 2560 9.537238463889391e-01 -6.140016309834929e+00 -5.982886306498713e+00 2.944294917721612e+00 4.846559712667592e+00 9.164603346280961e+03 + 2580 8.810188432457828e-01 -6.042725236824022e+00 -6.007667748565008e+00 3.490684281974295e+00 4.691989804686326e+00 9.240594978367333e+03 + 2600 9.094600770632164e-01 -6.086683812285889e+00 -5.998017013092426e+00 3.244363042440130e+00 4.753501524551827e+00 9.210971236299811e+03 + 2620 9.014685641839246e-01 -6.066208464713696e+00 -6.020726280185013e+00 3.337757233546257e+00 4.598922975455263e+00 9.280792410484673e+03 + 2640 8.996095265007245e-01 -6.047294977170358e+00 -6.036558941908634e+00 3.432204809079916e+00 4.493852784948821e+00 9.329628755554510e+03 + 2660 9.264650946544774e-01 -6.063693217577973e+00 -5.993544923139384e+00 3.361926625139612e+00 4.764728987219474e+00 9.197264368662391e+03 + 2680 9.607489566346843e-01 -6.083333443466573e+00 -6.019685213109618e+00 3.273614216083375e+00 4.639092204324826e+00 9.277587125123229e+03 + 2700 9.446857719108780e-01 -6.025299013812226e+00 -6.003942020769401e+00 3.622922879040403e+00 4.745558038076301e+00 9.229153636927742e+03 + 2720 9.758232641651808e-01 -6.036071511335988e+00 -6.004508109933705e+00 3.523269141476572e+00 4.704511076749059e+00 9.230873025302106e+03 + 2740 9.631955302082444e-01 -5.984144335667126e+00 -5.997033965351227e+00 3.739817464366789e+00 4.665803216056938e+00 9.207951610907328e+03 + 2760 1.038657344532288e+00 -6.066715514131998e+00 -5.941164815416744e+00 3.364525789782332e+00 5.085457330713151e+00 9.037303005750202e+03 + 2780 9.720294437836885e-01 -5.940555041413755e+00 -6.020825789263021e+00 4.039637789034717e+00 4.578710733026142e+00 9.281050385575518e+03 + 2800 1.063602106253152e+00 -6.053879744546151e+00 -5.996175753453945e+00 3.390894208431495e+00 4.722239454946707e+00 9.205305939813175e+03 + 2820 1.045554226520253e+00 -6.011434130210202e+00 -5.986523863901667e+00 3.642798180238799e+00 4.785836784233663e+00 9.175733653912088e+03 + 2840 1.018604147027625e+00 -5.962079091285482e+00 -5.997161666327792e+00 3.848279269649105e+00 4.646829694745222e+00 9.208322947426321e+03 + 2860 9.674294147173387e-01 -5.878116439520070e+00 -5.979415440483137e+00 4.371307046421917e+00 4.789632506922255e+00 9.153956985671797e+03 + 2880 1.068227645295234e+00 -6.022416081732619e+00 -5.970996395176160e+00 3.558576852878756e+00 4.853836650256722e+00 9.128221660084995e+03 + 2900 9.876236212699944e-01 -5.900765484775541e+00 -5.978866996978657e+00 4.178181843319684e+00 4.729710874079442e+00 9.152264151159983e+03 + 2920 9.989385608189564e-01 -5.915223530828172e+00 -5.990431948654901e+00 4.093737047958474e+00 4.661878674332344e+00 9.187661757397405e+03 + 2940 1.086915531475070e+00 -6.045051127794636e+00 -5.975984572636248e+00 3.435146786277699e+00 4.831737634012029e+00 9.143486209654353e+03 + 2960 9.915887757158284e-01 -5.908029039101748e+00 -6.000420308696699e+00 4.178425840892116e+00 4.647900873375139e+00 9.218318860614439e+03 + 2980 1.014253575230600e+00 -5.948986033304946e+00 -6.025530613274452e+00 4.004932939925229e+00 4.565402116504858e+00 9.295552859091133e+03 + 3000 1.082983966669505e+00 -6.064532511715673e+00 -5.992898859252366e+00 3.355725039220080e+00 4.767056556936281e+00 9.195252684831547e+03 + 3020 9.736603307772786e-01 -5.923534685683446e+00 -6.020888484883230e+00 4.082042940712521e+00 4.523022360255628e+00 9.281289840296087e+03 + 3040 1.014020183822986e+00 -6.012578043699898e+00 -6.007861142396603e+00 3.584969816148293e+00 4.612054993369931e+00 9.241208675832058e+03 + 3060 9.680052995194210e-01 -5.981695359378753e+00 -6.018510452806395e+00 3.842717385884264e+00 4.631319422305445e+00 9.273938567905921e+03 + 3080 9.557725275502270e-01 -6.004785341913009e+00 -6.002541778103556e+00 3.629366551404802e+00 4.642249441989062e+00 9.224867470491785e+03 + 3100 9.302031263612272e-01 -6.009272271114598e+00 -6.055701088184148e+00 3.590218736284929e+00 4.323617283835349e+00 9.388850948703917e+03 + 3120 9.483141574862957e-01 -6.073099379329267e+00 -6.006024068763062e+00 3.367998801191937e+00 4.753155614333849e+00 9.235554446350028e+03 + 3140 9.582860564150950e-01 -6.114673504425299e+00 -5.980828423392261e+00 3.082750058479112e+00 4.851309226230168e+00 9.158312256220290e+03 + 3160 9.324044247077475e-01 -6.093018737326735e+00 -5.992248345004642e+00 3.198757491367820e+00 4.777396678249088e+00 9.193274085134834e+03 + 3180 9.196977860658837e-01 -6.080838754049616e+00 -5.946181626391017e+00 3.281657636389512e+00 5.054879701528347e+00 9.052570912787898e+03 + 3200 8.828086680776239e-01 -6.022172336618174e+00 -5.968404862232271e+00 3.585991623970842e+00 4.894732782384466e+00 9.120313121980313e+03 + 3220 9.552772631648037e-01 -6.117068917095198e+00 -5.997909123999969e+00 2.999307069061937e+00 4.683541040933129e+00 9.210652362418152e+03 + 3240 9.215162564957043e-01 -6.049003702899177e+00 -6.053184578525918e+00 3.394457994419126e+00 4.370450759581967e+00 9.381029438716432e+03 + 3260 8.679224326862217e-01 -5.951227853736288e+00 -6.030090004804739e+00 3.966746250267494e+00 4.513907574954013e+00 9.309651928219242e+03 + 3280 9.559946536674298e-01 -6.062558606339359e+00 -5.962292652969051e+00 3.331788850212740e+00 4.907531470571191e+00 9.101662771243704e+03 + 3300 9.784302446374680e-01 -6.072964680969816e+00 -5.948200022635401e+00 3.332206433175636e+00 5.048624408600331e+00 9.058733949040237e+03 + 3320 9.765467561225118e-01 -6.047872186736956e+00 -6.012236111807583e+00 3.425821534012516e+00 4.630449390921743e+00 9.254676912259902e+03 + 3340 9.843568938032443e-01 -6.042071972895625e+00 -5.985766888542596e+00 3.448932451265526e+00 4.772244958804269e+00 9.173417072005017e+03 + 3360 9.215840893918434e-01 -5.932926288823767e+00 -5.969984742388449e+00 4.091854578806972e+00 4.879059203661414e+00 9.125135119348153e+03 + 3380 9.687394925973194e-01 -5.987212840513108e+00 -5.986014210073209e+00 3.759741059776169e+00 4.766623781249524e+00 9.174160364689043e+03 + 3400 9.772432286983908e-01 -5.983555965976329e+00 -6.011488073192909e+00 3.784267986789303e+00 4.623877504672083e+00 9.252329517471078e+03 + 3420 9.824193308806957e-01 -5.979030385430723e+00 -5.999283156345692e+00 3.801353519335255e+00 4.685058974635331e+00 9.214844883438287e+03 + 3440 1.024170024685142e+00 -6.029930207017909e+00 -5.979341842704698e+00 3.516411120637934e+00 4.806897337048470e+00 9.153739100175311e+03 + 3460 9.428977919711881e-01 -5.900490716818319e+00 -5.994298857082136e+00 4.226958306873071e+00 4.688297448715448e+00 9.199531958086702e+03 + 3480 1.058402989307893e+00 -6.061926264859768e+00 -5.953815791832962e+00 3.373038631280029e+00 4.993825697441572e+00 9.075825160520708e+03 + 3500 1.040416102185497e+00 -6.025872360221016e+00 -6.004864641054125e+00 3.499583190507550e+00 4.620212764897878e+00 9.231992229701502e+03 + 3520 9.822629923594154e-01 -5.931150643530076e+00 -6.013119066061455e+00 4.042294452287814e+00 4.571619085540245e+00 9.257378892511784e+03 + 3540 1.104699379231245e+00 -6.106214672284169e+00 -5.993878726932016e+00 3.136869061109301e+00 4.781919443252727e+00 9.198266622901281e+03 + 3560 1.066019360687542e+00 -6.048029056360878e+00 -5.981361282226180e+00 3.455804329076229e+00 4.838621004962368e+00 9.159921746463959e+03 + 3580 1.050208236203343e+00 -6.025117293531656e+00 -6.024849472762165e+00 3.508092521065522e+00 4.509630389369065e+00 9.293485643367150e+03 + 3600 1.012760468395914e+00 -5.974264473569868e+00 -5.990684756408938e+00 3.871765544721085e+00 4.777477739628587e+00 9.188484901476568e+03 + 3620 9.568049504734903e-01 -5.899234040046347e+00 -6.026094810555316e+00 4.174547864256597e+00 4.446093688353309e+00 9.297313203764568e+03 + 3640 1.014590848537890e+00 -5.995848543922659e+00 -5.987918997166485e+00 3.782945247357538e+00 4.828477931924889e+00 9.179988557423707e+03 + 3660 1.019818488351462e+00 -6.019886063631723e+00 -5.995688200182876e+00 3.575106391588004e+00 4.714054268118549e+00 9.203827806971716e+03 + 3680 1.034310235893273e+00 -6.066901641123715e+00 -6.001890069297374e+00 3.335789841135917e+00 4.709096347070989e+00 9.222843555969139e+03 + 3700 9.295870244544072e-01 -5.946054215591680e+00 -6.021906310456092e+00 3.910904585589538e+00 4.475350118804338e+00 9.284411686400106e+03 + 3720 1.019820518976140e+00 -6.119249170514344e+00 -5.933181843848311e+00 3.065708137068993e+00 5.134135520611096e+00 9.013091374588774e+03 + 3740 9.649417389083867e-01 -6.075255342288441e+00 -5.965685008386437e+00 3.296457619388129e+00 4.925627432607814e+00 9.112011472372647e+03 + 3760 9.656492123442376e-01 -6.108323359664857e+00 -5.961262170971308e+00 3.177983054064289e+00 5.022431157188044e+00 9.098523642699138e+03 + 3780 9.226331693168127e-01 -6.069068674337219e+00 -5.961266221463664e+00 3.358173456886388e+00 4.977191823662004e+00 9.098509935225944e+03 + 3800 9.179814788206815e-01 -6.075896239459354e+00 -5.996930751612742e+00 3.261442468765725e+00 4.714874519850725e+00 9.207617680425241e+03 + 3820 9.146704203067683e-01 -6.076008380244993e+00 -5.979199191999661e+00 3.360966131036247e+00 4.916859471114403e+00 9.153285539843302e+03 + 3840 9.293070156998194e-01 -6.093995862231288e+00 -5.976315876588238e+00 3.184851467074354e+00 4.860588155555666e+00 9.144480147702692e+03 + 3860 9.750351274215672e-01 -6.148797045914271e+00 -5.954640048422515e+00 2.910949903352011e+00 5.025829428647930e+00 9.078349857389134e+03 + 3880 9.665731152462683e-01 -6.114563170224449e+00 -6.008411982785262e+00 3.057472206289281e+00 4.667008751408260e+00 9.242906847124481e+03 + 3900 9.618591694594970e-01 -6.080690003863024e+00 -6.028690066613374e+00 3.258025406652431e+00 4.556617093304205e+00 9.305327881061823e+03 + 3920 9.850576990394742e-01 -6.083629108609698e+00 -5.997148290708218e+00 3.319008230400256e+00 4.815594469653875e+00 9.208306886724573e+03 + 3940 9.519355084770160e-01 -5.998946822943996e+00 -6.057332441579519e+00 3.723835697708302e+00 4.388576440357840e+00 9.393889062292306e+03 + 3960 9.928625005003138e-01 -6.027687220812267e+00 -5.979472623285224e+00 3.581515234175218e+00 4.858370914360356e+00 9.154146114075158e+03 + 3980 1.055409700060590e+00 -6.091892687229631e+00 -5.944742680032918e+00 3.196020081352717e+00 5.040978194066264e+00 9.048200716946576e+03 + 4000 9.565073768551122e-01 -5.922477431880549e+00 -6.002506314457438e+00 4.089672732762155e+00 4.630134504576104e+00 9.224744972512171e+03 + 4020 9.482449255463001e-01 -5.892942723009963e+00 -6.012418510833687e+00 4.301665125875270e+00 4.615616663373036e+00 9.255220171608911e+03 + 4040 1.038919706062922e+00 -6.016488548995719e+00 -6.013168998614837e+00 3.614127977111805e+00 4.633189349097592e+00 9.257495276112901e+03 + 4060 9.866871132477888e-01 -5.933813133139401e+00 -5.993039149756936e+00 4.051875847118295e+00 4.711790894503955e+00 9.195683471498565e+03 + 4080 1.067952099559177e+00 -6.052005374521505e+00 -5.974400479437518e+00 3.430874135502294e+00 4.876493452393244e+00 9.138636414630148e+03 + 4100 9.724287476088145e-01 -5.909615973497374e+00 -5.986123172460852e+00 4.238191376219045e+00 4.798875200319977e+00 9.174483263533950e+03 + 4120 9.873162730934302e-01 -5.932192122910184e+00 -6.001484002555977e+00 4.033516701247188e+00 4.635632005437324e+00 9.221576816329141e+03 + 4140 1.017515710046528e+00 -5.977808592754990e+00 -5.979893255212614e+00 3.805653289351545e+00 4.793682834919393e+00 9.155418998053992e+03 + 4160 9.810727434084010e-01 -5.925878778169631e+00 -6.033748909737148e+00 4.123690354249779e+00 4.504283365940185e+00 9.320940767673927e+03 + 4180 1.025310615732101e+00 -5.994451869004166e+00 -6.013841917271868e+00 3.669341165752669e+00 4.558000507999251e+00 9.259601629061828e+03 + 4200 1.047551917624051e+00 -6.033225032087906e+00 -6.012374171520302e+00 3.529008830986295e+00 4.648737699025722e+00 9.255082879587231e+03 + 4220 1.033243752978466e+00 -6.021079660245851e+00 -5.975379441500917e+00 3.602384625607859e+00 4.864802353727264e+00 9.141653033504830e+03 + 4240 1.064274118788744e+00 -6.079052469845770e+00 -5.998764317204787e+00 3.257991202047767e+00 4.719018199063757e+00 9.213279829096937e+03 + 4260 9.789312428336630e-01 -5.968383445114686e+00 -6.036947988876489e+00 3.871206189852660e+00 4.477497969243530e+00 9.330845613389345e+03 + 4280 1.032852904379636e+00 -6.070726954591553e+00 -6.035343479940346e+00 3.265118140888453e+00 4.468295527910687e+00 9.325874801191769e+03 + 4300 9.778152650389655e-01 -6.015214863448747e+00 -6.000708752028511e+00 3.660478706973720e+00 4.743775043562206e+00 9.219222541627527e+03 + 4320 9.589419751360239e-01 -6.015541832463819e+00 -5.988049408475147e+00 3.596787196364251e+00 4.754652949346069e+00 9.180418000326265e+03 + 4340 9.742631118579683e-01 -6.067969577464320e+00 -5.975101656229723e+00 3.357180635224962e+00 4.890442610218381e+00 9.140777439948526e+03 + 4360 9.388606888885961e-01 -6.044641775262376e+00 -6.003562930105986e+00 3.479739695999048e+00 4.715620781817780e+00 9.227985117652817e+03 + 4380 9.327510532852272e-01 -6.063810570993684e+00 -6.016670300051674e+00 3.321018721172865e+00 4.591705451855246e+00 9.268308835067632e+03 + 4400 9.475128995284288e-01 -6.109923442956447e+00 -6.005632668864542e+00 3.115509659228004e+00 4.714363423008857e+00 9.234360114557157e+03 + 4420 9.407268721708809e-01 -6.121750779416526e+00 -5.980060381863261e+00 3.053667934764019e+00 4.867276124033030e+00 9.155960625530452e+03 + 4440 9.086542439537799e-01 -6.089416999609051e+00 -5.969043225172886e+00 3.199069814867110e+00 4.890274655460967e+00 9.122266762512392e+03 + 4460 9.015957999123217e-01 -6.086010388442796e+00 -5.949103442388193e+00 3.255114702838553e+00 5.041255573365514e+00 9.061479721210455e+03 + 4480 9.229320685175242e-01 -6.115002206643276e+00 -5.977632686619868e+00 3.059741463484381e+00 4.848538505323308e+00 9.148516360305031e+03 + 4500 8.870793222288843e-01 -6.045778776716148e+00 -5.998831920549165e+00 3.470765002643376e+00 4.740341115756701e+00 9.213473874249768e+03 + 4520 9.316908274076666e-01 -6.079351963502633e+00 -6.015815008557974e+00 3.238916986973568e+00 4.603756014577807e+00 9.265683667494772e+03 + 4540 9.855433644824192e-01 -6.103654672621630e+00 -5.971741310873790e+00 3.123144143418572e+00 4.880611080101430e+00 9.130520177236956e+03 + 4560 8.993318263813408e-01 -5.912564141308755e+00 -6.001118462330025e+00 4.156969645224192e+00 4.648477030183167e+00 9.220489494267606e+03 + 4580 1.024751460878388e+00 -6.043608276669022e+00 -5.988424823210932e+00 3.427755778765943e+00 4.744627708134121e+00 9.181575906060809e+03 + 4600 1.019606211956627e+00 -6.001106283398768e+00 -6.015599922023636e+00 3.617872693866590e+00 4.534647977999267e+00 9.264979652321685e+03 + 4620 9.692737915977039e-01 -5.905116860256100e+00 -5.964380532388331e+00 4.235512512694811e+00 4.895211336287916e+00 9.107987053211973e+03 + 4640 1.047656798164206e+00 -6.002300921254660e+00 -5.955877262541110e+00 3.679409545505914e+00 4.945981377877086e+00 9.082085402058434e+03 + 4660 9.885234376510259e-01 -5.897918258197231e+00 -6.031404417153833e+00 4.169472063481171e+00 4.402973881836021e+00 9.313711123181569e+03 + 4680 1.022278941163547e+00 -5.938445010260647e+00 -6.024691798323269e+00 4.015237487673716e+00 4.519995083970824e+00 9.292983778547399e+03 + 4700 1.067033892588570e+00 -5.999699379873799e+00 -5.993911318776776e+00 3.715744664359256e+00 4.748980606877922e+00 9.198362066352935e+03 + 4720 1.041627997978736e+00 -5.962258504412741e+00 -6.014422411600076e+00 3.876085999228677e+00 4.576552771820452e+00 9.261383503587735e+03 + 4740 1.011130039027457e+00 -5.921220635519050e+00 -6.040501004946947e+00 4.115335207862723e+00 4.430408868030227e+00 9.341799380762961e+03 + 4760 1.022760206709960e+00 -5.949771659580606e+00 -6.028614164081205e+00 3.885669341545859e+00 4.432943479865285e+00 9.305102300257813e+03 + 4780 1.040726179942608e+00 -5.990696009652583e+00 -5.983925765460149e+00 3.733227943966438e+00 4.772103733811296e+00 9.167749357146846e+03 + 4800 1.037817162747346e+00 -6.004014262033660e+00 -5.947473867054223e+00 3.654797555592501e+00 4.979461253162279e+00 9.056492416314461e+03 + 4820 1.068131340636593e+00 -6.070120511489455e+00 -5.923555829352535e+00 3.334820523877982e+00 5.176417609519442e+00 8.983861210898671e+03 + 4840 9.931985305451585e-01 -5.979873140149472e+00 -5.986668235115590e+00 3.801132498641155e+00 4.762114011808157e+00 9.176160540100684e+03 + 4860 1.044276044209831e+00 -6.077152872141601e+00 -5.982141662161400e+00 3.292541305710907e+00 4.838110376354454e+00 9.162319829898215e+03 + 4880 9.317087355420148e-01 -5.933894768735680e+00 -6.061976830665452e+00 3.995829215424912e+00 4.260362195189130e+00 9.408291148300863e+03 + 4900 1.017518093548281e+00 -6.086956814941328e+00 -5.986050181895459e+00 3.213617086157798e+00 4.793038588358177e+00 9.174282985029069e+03 + 4920 9.296240603403478e-01 -5.980512727946044e+00 -5.980809321608535e+00 3.802249777384747e+00 4.800546690677001e+00 9.158218107132570e+03 + 4940 9.015791720315198e-01 -5.956662015883299e+00 -6.049070006043820e+00 3.847287446094596e+00 4.316666466502621e+00 9.368284916611934e+03 + 4960 9.699703008756473e-01 -6.072676526520175e+00 -5.956918803592605e+00 3.295773275536687e+00 4.960472034036526e+00 9.085292789411473e+03 + 4980 9.806448847543581e-01 -6.098682579389591e+00 -5.975858576429935e+00 3.159167707151245e+00 4.864442139098621e+00 9.143087445044757e+03 + 5000 8.974225085129036e-01 -5.981929734215370e+00 -5.944437959670164e+00 3.855171960101127e+00 5.070455531373065e+00 9.047265017811827e+03 + 5020 9.561935623503454e-01 -6.066398428607554e+00 -5.974322747013768e+00 3.368205880326709e+00 4.896918692703906e+00 9.138392955426314e+03 + 5040 1.004057308601558e+00 -6.126299620761916e+00 -5.997131009198861e+00 3.015008481311754e+00 4.756714637684855e+00 9.208259997822264e+03 + 5060 9.849117169081997e-01 -6.080103489458722e+00 -5.984878116326396e+00 3.273925233524659e+00 4.820724062129339e+00 9.170698262826898e+03 + 5080 9.908366071930947e-01 -6.057706528075720e+00 -5.974847124983457e+00 3.377985840811509e+00 4.853777355818469e+00 9.140006178063155e+03 + 5100 9.771539815822897e-01 -5.990942021953365e+00 -6.004536978605548e+00 3.691675147012577e+00 4.613610802102993e+00 9.230983745830979e+03 + 5120 1.032278736232676e+00 -6.015841198156314e+00 -5.972458088059938e+00 3.638714940090964e+00 4.887827471778941e+00 9.132698353053305e+03 + 5140 1.028627974621518e+00 -5.956891379563531e+00 -5.972320538878256e+00 3.927573588385711e+00 4.838976967945879e+00 9.132257658021521e+03 + 5160 1.007232133238073e+00 -5.886095159907374e+00 -6.029701925442451e+00 4.282524846519369e+00 4.457912575741810e+00 9.308449122893173e+03 + 5180 1.090491748089998e+00 -5.984036999334295e+00 -6.015730470933634e+00 3.788786464180200e+00 4.606797645707918e+00 9.265397439485851e+03 + 5200 1.050708258974349e+00 -5.913419335026415e+00 -6.010847321836398e+00 4.174659400299506e+00 4.615212823104346e+00 9.250370066750167e+03 + 5220 1.016352524573795e+00 -5.860023479565696e+00 -6.041187352588485e+00 4.415616800814671e+00 4.375345806899070e+00 9.343909630690034e+03 + 5240 1.074992555704176e+00 -5.950940983467232e+00 -6.055368124593319e+00 3.945476945763994e+00 4.345840141370141e+00 9.387804902449074e+03 + 5260 1.027721092513089e+00 -5.893777525903121e+00 -6.031979672027708e+00 4.236544494326052e+00 4.442966384565680e+00 9.315484540254663e+03 + 5280 1.079176464061436e+00 -5.989267529607163e+00 -5.974560415334167e+00 3.789786289676842e+00 4.874236815750962e+00 9.139119673688196e+03 + 5300 1.059999716891454e+00 -5.983469650277590e+00 -6.043242209496077e+00 3.784423903340143e+00 4.441200618533951e+00 9.350264272680171e+03 + 5320 1.029361575629399e+00 -5.967862815101084e+00 -5.980497410155740e+00 3.933418407141061e+00 4.860868607139956e+00 9.157273690876304e+03 + 5340 9.939829445005901e-01 -5.944265808186808e+00 -6.001372744035221e+00 3.941834624443284e+00 4.613917761531937e+00 9.221231392115746e+03 + 5360 1.002347141807476e+00 -5.981766963077394e+00 -5.982409571908413e+00 3.834214042105230e+00 4.830524082754128e+00 9.163109792510033e+03 + 5380 9.922709497894977e-01 -5.990774557502838e+00 -6.025026422721659e+00 3.750138861042017e+00 4.553459350496536e+00 9.294028311952472e+03 + 5400 9.508013318942231e-01 -5.951953771769782e+00 -6.008154724056148e+00 3.904216998544369e+00 4.581502433446799e+00 9.242100493211838e+03 + 5420 9.804559441734161e-01 -6.011243487471830e+00 -5.970239145135222e+00 3.673641929012173e+00 4.909095208110443e+00 9.125894173494014e+03 + 5440 1.004942721263019e+00 -6.058813121797945e+00 -5.976525362827058e+00 3.413890302526983e+00 4.886399348527364e+00 9.145100181239737e+03 + 5460 1.061547705765180e+00 -6.150779631457584e+00 -5.953309016851688e+00 2.872544941834724e+00 5.006451769380628e+00 9.074287370967444e+03 + 5480 9.297799736091874e-01 -5.959891555236977e+00 -6.009254856772337e+00 3.896502191446372e+00 4.613050475084114e+00 9.245483392329066e+03 + 5500 9.361742094286684e-01 -5.969752623865404e+00 -6.049262797858599e+00 3.811683572762313e+00 4.355123849533723e+00 9.368916955620309e+03 + 5520 9.858600198733015e-01 -6.041654800972768e+00 -6.043056089465784e+00 3.478372831998727e+00 4.470326416623138e+00 9.349707388124003e+03 + 5540 1.003069533423004e+00 -6.066204985263413e+00 -6.032614961300689e+00 3.319617876539157e+00 4.512496992172522e+00 9.317459630966303e+03 + 5560 9.316648413133540e-01 -5.958525880637334e+00 -6.004372647590115e+00 3.955060615420489e+00 4.691801384813365e+00 9.230479922348693e+03 + 5580 9.507656042053820e-01 -5.980640465489707e+00 -6.027010626065092e+00 3.785234937976507e+00 4.518970300193487e+00 9.300153003629017e+03 + 5600 9.860409688741618e-01 -6.021738425153599e+00 -6.011213456068123e+00 3.606997492223968e+00 4.667433493446472e+00 9.251499424952544e+03 + 5620 9.645523403348569e-01 -5.976906707758470e+00 -5.985601357224780e+00 3.820284958720100e+00 4.770358935991887e+00 9.172913404955720e+03 + 5640 9.858535755648066e-01 -5.987286215858703e+00 -6.004868064897952e+00 3.747833994349626e+00 4.646876296383908e+00 9.232006529207254e+03 + 5660 1.047512573076879e+00 -6.047377952769070e+00 -5.970501155426838e+00 3.480678631434559e+00 4.922117098419593e+00 9.126717327386912e+03 + 5680 1.007161517675931e+00 -5.938629001535418e+00 -5.950875996505930e+00 3.995137633433824e+00 4.924813493096795e+00 9.066819803877379e+03 + 5700 9.937902825741408e-01 -5.856681332590008e+00 -5.935599748798062e+00 4.513101529458910e+00 5.059939771006826e+00 9.020360707662177e+03 + 5720 1.050834366181098e+00 -5.874422435989541e+00 -6.025831156209742e+00 4.324021279215323e+00 4.454608977287198e+00 9.296521581399067e+03 + 5740 1.101525194162983e+00 -5.905787041933178e+00 -6.030948677867882e+00 4.156251876258815e+00 4.437554394021180e+00 9.312275590688911e+03 + 5760 1.039972423741618e+00 -5.796233619049751e+00 -6.056418903703963e+00 4.692678800748967e+00 4.198654632721809e+00 9.391024973702413e+03 + 5780 1.114542697914913e+00 -5.901829574616368e+00 -6.071327914859436e+00 4.149102485331635e+00 4.175816785872553e+00 9.437273650968817e+03 + 5800 1.045710538384237e+00 -5.808509062210256e+00 -6.079078501710234e+00 4.646830887537621e+00 4.093179295443306e+00 9.461361277715969e+03 + 5820 1.068381737833680e+00 -5.863737026566657e+00 -6.058924895229969e+00 4.371261291274465e+00 4.250462344184675e+00 9.398808290275932e+03 + 5840 9.988759948329279e-01 -5.787975240495646e+00 -6.028797202463188e+00 4.778894947305101e+00 4.396057974609304e+00 9.305664667454823e+03 + 5860 9.942441500367526e-01 -5.810996239899330e+00 -6.072444645525382e+00 4.707023346966302e+00 4.205746142851503e+00 9.440768158165072e+03 + 5880 1.130752371061504e+00 -6.051483634977819e+00 -5.984531494534464e+00 3.437891123731533e+00 4.822340674967530e+00 9.169636868705893e+03 + 5900 1.058167279416327e+00 -5.983073016547560e+00 -5.998884071635485e+00 3.786762308116388e+00 4.695972783048654e+00 9.213615079346297e+03 + 5920 1.021645499093240e+00 -5.964768444494412e+00 -5.990279211182726e+00 3.893987917909978e+00 4.747501147807299e+00 9.187188752909122e+03 + 5940 9.955602938411011e-01 -5.954737780459459e+00 -5.978099533833019e+00 3.916231484241579e+00 4.782084681150947e+00 9.149918122200836e+03 + 5960 9.832028117884604e-01 -5.956990417530747e+00 -6.017851883698061e+00 3.925603001062145e+00 4.576127044047981e+00 9.271911965102374e+03 + 5980 1.056804691345300e+00 -6.085534823424322e+00 -5.996063959191838e+00 3.226880970980619e+00 4.740636518975036e+00 9.204975944688573e+03 + 6000 9.827816972307938e-01 -5.993114706541585e+00 -6.006057820440198e+00 3.736188829857133e+00 4.661867466910893e+00 9.235645890356222e+03 + 6020 9.927825241335750e-01 -6.024386147788722e+00 -5.960518907125483e+00 3.558190729332620e+00 4.924926308644492e+00 9.096238139120040e+03 + 6040 9.550228211123102e-01 -5.978439675616897e+00 -5.996893398891559e+00 3.824079821402093e+00 4.718115686654538e+00 9.207502029306059e+03 + 6060 9.885194331368943e-01 -6.034704845719184e+00 -6.026646182732798e+00 3.447658443674084e+00 4.493932533615978e+00 9.299034538166110e+03 + 6080 1.017383922439883e+00 -6.083954427828170e+00 -5.972156660873335e+00 3.282862932933779e+00 4.924823011436962e+00 9.131779829706002e+03 + 6100 1.007185226422580e+00 -6.074494674679825e+00 -5.956634827429297e+00 3.280227929166410e+00 4.956997410831359e+00 9.084406693866094e+03 + 6120 9.200505619146969e-01 -5.946177449864086e+00 -5.975467384227859e+00 3.964012248614480e+00 4.795824912894997e+00 9.141879300941420e+03 + 6140 9.904711936561045e-01 -6.046266535416278e+00 -5.975527594389998e+00 3.399672310613563e+00 4.805866256802203e+00 9.142056554514576e+03 + 6160 9.359448260532386e-01 -5.957899043092437e+00 -5.947745705204099e+00 3.958058964404593e+00 5.016361001783394e+00 9.057324578759306e+03 + 6180 9.516829458501335e-01 -5.967443360590737e+00 -6.004647461304478e+00 3.817101854207913e+00 4.603470150593632e+00 9.231299474331759e+03 + 6200 1.032817955582340e+00 -6.067816473790483e+00 -5.962609612070656e+00 3.288650634854922e+00 4.892764715559402e+00 9.102641273032164e+03 + 6220 9.902282671615050e-01 -5.975694393581183e+00 -5.999875045683858e+00 3.857054508744313e+00 4.718205462426931e+00 9.216649235523946e+03 + 6240 1.048440895607203e+00 -6.023814741506930e+00 -6.022839448909082e+00 3.529394856350803e+00 4.534995137373694e+00 9.287312082407818e+03 + 6260 1.058210726141701e+00 -5.995734163488008e+00 -6.013943938101269e+00 3.694048177620358e+00 4.589484833837497e+00 9.259903568025162e+03 + 6280 1.011167896953987e+00 -5.888018825924141e+00 -6.061232316227425e+00 4.261065841294839e+00 4.266447175272389e+00 9.405973226168264e+03 + 6300 1.121875130168260e+00 -6.019450192259485e+00 -6.002587871642650e+00 3.621358152423874e+00 4.718184206841420e+00 9.224979488573748e+03 + 6320 1.056933162678728e+00 -5.897642024118499e+00 -6.049309127276980e+00 4.234540587707433e+00 4.363644610963072e+00 9.369014970866787e+03 + 6340 1.082161702236923e+00 -5.919284400986758e+00 -6.025559242440309e+00 4.125533988566872e+00 4.515287402962017e+00 9.295684196235683e+03 + 6360 1.094795651046679e+00 -5.933773511445818e+00 -6.081407768954552e+00 3.977518900160365e+00 4.129780147217696e+00 9.468633453612098e+03 + 6380 1.036781926328056e+00 -5.857104111546207e+00 -6.073112898127896e+00 4.418219654330143e+00 4.177863774526396e+00 9.442795118709108e+03 + 6400 9.901618803514718e-01 -5.805224182879377e+00 -6.015792151638482e+00 4.761022635144186e+00 4.551908773241555e+00 9.265554282845605e+03 + 6420 1.029595153230245e+00 -5.885651028033211e+00 -6.073447752616358e+00 4.220201838492843e+00 4.141843984487208e+00 9.443876232434268e+03 + 6440 1.072288460916004e+00 -5.981702690081717e+00 -5.994266580341420e+00 3.866012053048963e+00 4.793868250922018e+00 9.199426360480013e+03 + 6460 1.063587072725687e+00 -6.007512654510931e+00 -5.987780624415180e+00 3.710665847130440e+00 4.823970217462031e+00 9.179569132008515e+03 + 6480 1.008417233703150e+00 -5.962709065019967e+00 -5.957105982372020e+00 3.914215188154749e+00 4.946388955793497e+00 9.085826160781588e+03 + 6500 9.946654699164605e-01 -5.969018543972053e+00 -5.991151555586138e+00 3.826040284060052e+00 4.698949106299500e+00 9.189906226444627e+03 + 6520 1.028063289928327e+00 -6.038671862440445e+00 -6.021910973632878e+00 3.478844196022966e+00 4.575087813295180e+00 9.284435866786205e+03 + 6540 1.014605148110911e+00 -6.032464495894615e+00 -6.011077706451258e+00 3.509192067743895e+00 4.631998322322623e+00 9.251082588727302e+03 + 6560 9.635061968787028e-01 -5.964764380753449e+00 -6.017067215211133e+00 3.873894583172384e+00 4.573563613878886e+00 9.269503667898596e+03 + 6580 9.718687633755881e-01 -5.981736519797508e+00 -5.997465202882282e+00 3.756303155370881e+00 4.665986623092265e+00 9.209284514355026e+03 + 6600 1.061683940152056e+00 -6.117589987185446e+00 -5.948048643585839e+00 3.060286430224825e+00 5.033819061611899e+00 9.058266975099343e+03 + 6620 9.274267642679134e-01 -5.918790025936023e+00 -6.000727300331480e+00 4.078278501062465e+00 4.607781991731518e+00 9.219262459612988e+03 + 6640 9.954932698429221e-01 -6.016810857664492e+00 -6.005476785630377e+00 3.623732484431428e+00 4.688814479993295e+00 9.233860943338510e+03 + 6660 1.110676758119130e+00 -6.182961608711219e+00 -5.964060671985285e+00 2.718941905649896e+00 4.975904959140691e+00 9.107060632415163e+03 + 6680 1.008328476849361e+00 -6.027087061917306e+00 -6.008173933104363e+00 3.553472523247021e+00 4.662074635688166e+00 9.242190885011580e+03 + 6700 1.013898210746834e+00 -6.032018060539982e+00 -6.011170639247409e+00 3.538087130269019e+00 4.657796249458992e+00 9.251399418341643e+03 + 6720 9.562030201255899e-01 -5.942261957930596e+00 -6.073230620771294e+00 4.017125894259062e+00 4.265083564892699e+00 9.443243680528773e+03 + 6740 9.783672866065568e-01 -5.973919375388831e+00 -6.065897184432872e+00 3.858279970770491e+00 4.330129157719658e+00 9.420443645399815e+03 + 6760 1.053308276321733e+00 -6.085200414009361e+00 -5.974464101858132e+00 3.288470192655914e+00 4.924335233417191e+00 9.138842529785892e+03 + 6780 9.661514957810220e-01 -5.955907970278579e+00 -6.030042910510641e+00 3.979014112462032e+00 4.553319813304610e+00 9.309480964345175e+03 + 6800 1.017670790722191e+00 -6.031139927527134e+00 -5.999776771454921e+00 3.531350061460125e+00 4.711442157059488e+00 9.216366723367106e+03 + 6820 9.958657760981524e-01 -5.996910435275414e+00 -6.016753438793784e+00 3.720320047545983e+00 4.606378450648632e+00 9.268555175870073e+03 + 6840 1.020559975823928e+00 -6.033509998339319e+00 -5.983109390973723e+00 3.510552081532023e+00 4.799960168494056e+00 9.165263509764311e+03 + 6860 9.737651095029531e-01 -5.962873824177495e+00 -5.976166356349753e+00 3.893590173868428e+00 4.817262397122616e+00 9.144027603336624e+03 + 6880 9.903211776014194e-01 -5.983169958249334e+00 -5.995811957243391e+00 3.834163594505035e+00 4.761571279938140e+00 9.204168540732442e+03 + 6900 9.934968546055921e-01 -5.980261669037813e+00 -6.048374519331410e+00 3.792246019650054e+00 4.401131492834706e+00 9.366144552206764e+03 + 6920 1.024996183601244e+00 -6.020325760182681e+00 -6.010823032064735e+00 3.598592105678598e+00 4.653158241074264e+00 9.250311781338753e+03 + 6940 1.017604094682016e+00 -6.004274070797440e+00 -5.961279643239948e+00 3.646003805266135e+00 4.892884461667418e+00 9.098569424944342e+03 + 6960 9.949482101534036e-01 -5.964610663649457e+00 -5.955277375507672e+00 3.872226033252690e+00 4.925819218084492e+00 9.080258503656165e+03 + 6980 9.903229173836756e-01 -5.950019474298431e+00 -5.952398120639085e+00 3.998524590637901e+00 4.984866035255533e+00 9.071423764470448e+03 + 7000 9.916889971875306e-01 -5.939546068791379e+00 -5.944170629681906e+00 3.992152392009156e+00 4.965597447727262e+00 9.046433493432276e+03 + 7020 1.025135671977226e+00 -5.971484183415836e+00 -6.026676766047819e+00 3.787216104860340e+00 4.470291754362933e+00 9.299108882933162e+03 + 7040 1.031615147079532e+00 -5.964882897510957e+00 -6.013081409958710e+00 3.824432600791719e+00 4.547669283621028e+00 9.257257656093245e+03 + 7060 1.033749059542605e+00 -5.955939846591569e+00 -5.983998390740918e+00 3.962696184835532e+00 4.801579682284300e+00 9.167962185071008e+03 + 7080 1.008376994228577e+00 -5.905957342447813e+00 -5.996384867878945e+00 4.182514522888098e+00 4.663265678248207e+00 9.205939252830076e+03 + 7100 1.113979398187659e+00 -6.050727425320332e+00 -5.974805977101429e+00 3.433628603170633e+00 4.869581307649718e+00 9.139859891016687e+03 + 7120 9.483727834629774e-01 -5.797545580776678e+00 -6.029016616446878e+00 4.740304958567982e+00 4.411162451722686e+00 9.306310777296268e+03 + 7140 1.024391346513533e+00 -5.905649927889755e+00 -6.000003528563532e+00 4.166418104602656e+00 4.624625128361315e+00 9.217049603429366e+03 + 7160 1.067502694858423e+00 -5.969564001863686e+00 -6.034240775328664e+00 3.791291989688327e+00 4.419907947754079e+00 9.322465615485669e+03 + 7180 1.069782942683294e+00 -5.982413761560339e+00 -6.005813393943151e+00 3.751523557829650e+00 4.617159247606132e+00 9.234902157555271e+03 + 7200 1.001636856988447e+00 -5.896890669031081e+00 -5.992270030852033e+00 4.278970200332358e+00 4.731287144847909e+00 9.193316518531097e+03 + 7220 1.041955257376149e+00 -5.979040947105043e+00 -5.987832900613595e+00 3.828443004816374e+00 4.777958247219855e+00 9.179726438631405e+03 + 7240 1.021159284843875e+00 -5.980890929528915e+00 -5.986841300932499e+00 3.800532234521315e+00 4.766364281104932e+00 9.176707525315020e+03 + 7260 9.841741776995032e-01 -5.961638066619208e+00 -6.007186841507625e+00 3.909030434707887e+00 4.647482320648459e+00 9.239103887416764e+03 + 7280 9.692632583118538e-01 -5.976284283478131e+00 -5.981627433650576e+00 3.888518644971742e+00 4.857837449831747e+00 9.160712968640501e+03 + 7300 1.000852152666041e+00 -6.056851208780508e+00 -5.974248467144246e+00 3.382448779341675e+00 4.856766504550048e+00 9.138154400706651e+03 + 7320 9.272274690871283e-01 -5.973631518311374e+00 -5.981058131635247e+00 3.805868649333959e+00 4.763223886363583e+00 9.159000834697565e+03 + 7340 9.695978387501567e-01 -6.052998963621831e+00 -6.017268368235714e+00 3.365647074538355e+00 4.570817682537204e+00 9.270134722428336e+03 + 7360 1.029609462429732e+00 -6.156591341652917e+00 -5.960792255693071e+00 2.838815248097193e+00 4.963123899489258e+00 9.097104350016809e+03 + 7380 9.424387377146329e-01 -6.037320325121494e+00 -6.002363637621662e+00 3.428750458628788e+00 4.629477167782734e+00 9.224313406843272e+03 + 7400 9.481095286209023e-01 -6.049135836612690e+00 -5.990588243243112e+00 3.410971447553949e+00 4.747160788892857e+00 9.188184502962427e+03 + 7420 9.455148003004439e-01 -6.042177479954564e+00 -5.958390648227891e+00 3.446402615640576e+00 4.927519569385439e+00 9.089770219793187e+03 + 7440 9.661849777789109e-01 -6.064351906325400e+00 -5.954270093113720e+00 3.383349096664117e+00 5.015455903231122e+00 9.077200724269193e+03 + 7460 9.404673670693910e-01 -6.012415353754005e+00 -5.986050610806424e+00 3.616137936942440e+00 4.767528370878242e+00 9.174269267443105e+03 + 7480 9.655095547602536e-01 -6.027548896938033e+00 -6.030536754836675e+00 3.552400217955231e+00 4.535243475531717e+00 9.311026397073203e+03 + 7500 9.768851330149607e-01 -6.019611787873226e+00 -6.008352734774491e+00 3.562847264953782e+00 4.627498490179552e+00 9.242730317607527e+03 + 7520 1.007935542505234e+00 -6.039719267446659e+00 -5.986176263582580e+00 3.502760974358537e+00 4.810213188299150e+00 9.174676434389083e+03 + 7540 9.892652778197105e-01 -5.982965490701243e+00 -6.032804611515336e+00 3.807449266120674e+00 4.521265321827135e+00 9.318019284935517e+03 + 7560 1.002703142624787e+00 -5.975599857304917e+00 -6.027293261383916e+00 3.807045167665055e+00 4.510213641915015e+00 9.301039633487062e+03 + 7580 1.065240646693610e+00 -6.043802505753950e+00 -5.985339149709022e+00 3.449117374420996e+00 4.784823012006084e+00 9.172111639278279e+03 + 7600 1.022495809024182e+00 -5.962093851293497e+00 -5.974220601208099e+00 3.876391276020052e+00 4.806757601401922e+00 9.138058000750785e+03 + 7620 9.917271173913326e-01 -5.901939749586052e+00 -5.968673748724665e+00 4.264198985619513e+00 4.881002035512609e+00 9.121108579094054e+03 + 7640 1.003486175946281e+00 -5.908618864270528e+00 -6.007592810348852e+00 4.162378469999749e+00 4.594054755449357e+00 9.240334486155800e+03 + 7660 1.045412717037611e+00 -5.964504479716386e+00 -5.993769821270725e+00 3.864042099041694e+00 4.695995979039707e+00 9.197924017990506e+03 + 7680 1.027437642020808e+00 -5.937264452844249e+00 -6.000246805143464e+00 3.999526753106084e+00 4.637872339716475e+00 9.217773085669816e+03 + 7700 1.061570173742260e+00 -5.989652994552815e+00 -5.979587545068409e+00 3.710585298104648e+00 4.768382666667384e+00 9.154488817430729e+03 + 7720 1.063242532008590e+00 -5.997974559566547e+00 -6.021575360997013e+00 3.649728379660084e+00 4.514208925634131e+00 9.283383505038137e+03 + 7740 9.636213022851071e-01 -5.858818592387362e+00 -6.024070644061817e+00 4.464778579436111e+00 4.515875726049038e+00 9.291078567129565e+03 + 7760 1.016236950224726e+00 -5.945110529882687e+00 -6.015834047874455e+00 3.987023329554243e+00 4.580917944816477e+00 9.265675022270656e+03 + 7780 1.028040754794131e+00 -5.972512907378281e+00 -6.010812628105839e+00 3.845435831879405e+00 4.625512908599141e+00 9.250238689525759e+03 + 7800 1.043608342142548e+00 -6.007012222872336e+00 -6.013831908129344e+00 3.619547890829323e+00 4.580388202740702e+00 9.259552840938031e+03 + 7820 1.085077831410023e+00 -6.084451370855996e+00 -5.975362215363215e+00 3.243586581798044e+00 4.869993394129849e+00 9.141582333186177e+03 + 7840 9.889279781114304e-01 -5.959396374037639e+00 -6.003058706882266e+00 3.924489283027553e+00 4.673773411109535e+00 9.226450349331570e+03 + 7860 1.013711201878013e+00 -6.014485839316144e+00 -6.015728050222421e+00 3.591492665971820e+00 4.584359698716465e+00 9.265409023927101e+03 + 7880 1.034188645842074e+00 -6.064674937463971e+00 -6.001462097708278e+00 3.375118869298491e+00 4.738096777331017e+00 9.221546327434877e+03 + 7900 9.967874986278219e-01 -6.028644481042379e+00 -5.986418148219897e+00 3.551557401548016e+00 4.794027539118591e+00 9.175420370504416e+03 + 7920 1.014403812167638e+00 -6.075383812298158e+00 -5.992703677957975e+00 3.278680010099246e+00 4.753442136190019e+00 9.194657827273149e+03 + 7940 9.247460565844577e-01 -5.960172675370466e+00 -6.018607509330633e+00 3.936256791853897e+00 4.600714932493291e+00 9.274237730875890e+03 + 7960 9.842402127024615e-01 -6.063533257141492e+00 -5.965723547017135e+00 3.406664846557850e+00 4.968303338095629e+00 9.112119052967357e+03 + 7980 9.941496713881786e-01 -6.089272050499535e+00 -5.955804635545148e+00 3.260885009539949e+00 5.027275560223760e+00 9.081876409332344e+03 + 8000 1.014268221016080e+00 -6.126397090503144e+00 -5.946599383216699e+00 3.084322197540495e+00 5.116748456384545e+00 9.053841258564025e+03 + 8020 9.084787635395473e-01 -5.973183595537950e+00 -6.004645608687474e+00 3.852612143429630e+00 4.671952395194264e+00 9.231289246612310e+03 + 8040 9.457229160853107e-01 -6.028098458301938e+00 -5.976175010390559e+00 3.573685418253183e+00 4.871837891287915e+00 9.144032996970482e+03 + 8060 9.217790178844402e-01 -5.985432287980048e+00 -6.016795406707681e+00 3.773062681226091e+00 4.592970800065088e+00 9.268674914087276e+03 + 8080 9.928709681515657e-01 -6.073771480244977e+00 -5.984437405888368e+00 3.331112038688137e+00 4.844082118047115e+00 9.169331707527293e+03 + 8100 9.602619489853486e-01 -5.997167072809022e+00 -6.007618656862315e+00 3.722060924185867e+00 4.662046311174453e+00 9.240466555260395e+03 + 8120 1.023400174337499e+00 -6.052740926542024e+00 -5.966207031011225e+00 3.465419502095283e+00 4.962310521310190e+00 9.113612370358282e+03 + 8140 1.039190543711173e+00 -6.030692550510784e+00 -5.966007599561972e+00 3.552640364729506e+00 4.924071363041394e+00 9.112975093863261e+03 + 8160 9.754133026862892e-01 -5.891039106097580e+00 -5.977826254216075e+00 4.313803501420507e+00 4.815458266656340e+00 9.149072788319401e+03 + 8180 1.015801642791104e+00 -5.907451112856613e+00 -6.000367226709385e+00 4.143426944451869e+00 4.609888239987098e+00 9.218164970110764e+03 + 8200 1.021688871640516e+00 -5.882073080260526e+00 -6.043878947115670e+00 4.284105777791714e+00 4.354991450932510e+00 9.352234022907280e+03 + 8220 1.080301675909575e+00 -5.948723809209726e+00 -6.040341534358636e+00 3.943937499191578e+00 4.417854343589392e+00 9.341305968443316e+03 + 8240 1.108382660967092e+00 -5.984492876110729e+00 -5.982067012789423e+00 3.764387527347858e+00 4.778317209939934e+00 9.162061960736852e+03 + 8260 1.045503993036920e+00 -5.893075006996722e+00 -6.008987443355833e+00 4.274628361711495e+00 4.609041214745924e+00 9.244635190211489e+03 + 8280 1.069644424321301e+00 -5.936854412499327e+00 -5.984993049009274e+00 3.989824002094092e+00 4.713404501824050e+00 9.171045672589971e+03 + 8300 1.038806367684439e+00 -5.904820776209504e+00 -6.021667069963057e+00 4.200395326479708e+00 4.529445825841286e+00 9.283658853671044e+03 + 8320 1.050280684495871e+00 -5.942145328192187e+00 -5.970552227891130e+00 3.967978799030100e+00 4.804861985005249e+00 9.126856923972080e+03 + 8340 9.950251347572576e-01 -5.880309089343729e+00 -5.959533980608529e+00 4.325005565715962e+00 4.870083980061183e+00 9.093242673808831e+03 + 8360 1.041626682637950e+00 -5.970855810800938e+00 -5.978517077592771e+00 3.820017031197647e+00 4.776024851701735e+00 9.151203358062694e+03 + 8380 1.004124815092561e+00 -5.937556618195869e+00 -5.968003788122336e+00 4.005086850455758e+00 4.830254489053670e+00 9.119080216536127e+03 + 8400 1.030785410544355e+00 -5.999044846975131e+00 -5.975767944378014e+00 3.683074873158704e+00 4.816734449960385e+00 9.142801050732520e+03 + 8420 9.760472254088591e-01 -5.938647137708887e+00 -6.009635482662998e+00 4.025075970972286e+00 4.617449908834904e+00 9.246646937955480e+03 + 8440 9.811586737657725e-01 -5.967864705083958e+00 -5.988583641794389e+00 3.795403875673599e+00 4.676432534837214e+00 9.182033592884563e+03 + 8460 9.818938801712748e-01 -5.985833380564230e+00 -5.958540446383595e+00 3.776411463146998e+00 4.933131714780119e+00 9.090180370122020e+03 + 8480 9.665609780835528e-01 -5.971968880586969e+00 -5.996242064708357e+00 3.904693555687026e+00 4.765313176198918e+00 9.205499974128566e+03 + 8500 1.018619771488148e+00 -6.056435876823723e+00 -5.940112224449670e+00 3.457401655212753e+00 5.125350068171593e+00 9.034126317569646e+03 + 8520 9.526710325316246e-01 -5.962098014157290e+00 -5.954922970433390e+00 3.937525395210844e+00 4.978725606607903e+00 9.079151585649128e+03 + 8540 1.011437546985064e+00 -6.049004612189174e+00 -5.954297911803649e+00 3.455869094546850e+00 4.999689623975053e+00 9.077269058914992e+03 + 8560 9.923068617028381e-01 -6.018438507246602e+00 -5.992829229807393e+00 3.624579791357629e+00 4.771632225436443e+00 9.195046944676606e+03 + 8580 9.743329077901528e-01 -5.989294301925881e+00 -5.997955201050744e+00 3.739524265204194e+00 4.689792042159421e+00 9.210777417493282e+03 + 8600 1.038933545219520e+00 -6.081563955744997e+00 -5.997223892384987e+00 3.269861181009516e+00 4.754154876405315e+00 9.208538237702434e+03 + 8620 1.004811924004112e+00 -6.028877850677456e+00 -5.995013314879081e+00 3.570292047105434e+00 4.764747452179684e+00 9.201761134775503e+03 + 8640 9.042409371983062e-01 -5.877601545746147e+00 -6.034651157575736e+00 4.343849649522177e+00 4.442046475047794e+00 9.323683328489375e+03 + 8660 9.718515117529635e-01 -5.974053793488278e+00 -6.009060146001669e+00 3.826125968638301e+00 4.625114075290863e+00 9.244857456706844e+03 + 8680 1.016038699402894e+00 -6.035719410748202e+00 -6.009122709991038e+00 3.480858643460031e+00 4.633581015033807e+00 9.245078034264425e+03 + 8700 9.941146580714835e-01 -6.001209525154175e+00 -6.015517562125872e+00 3.647393829228893e+00 4.565234866775848e+00 9.264725546595986e+03 + 8720 1.020850629244716e+00 -6.038482920019320e+00 -5.966927802404495e+00 3.500044423324201e+00 4.910924981787194e+00 9.115771740672224e+03 + 8740 9.827152680494838e-01 -5.977465725698175e+00 -5.998610884721756e+00 3.764528230540248e+00 4.643109455224063e+00 9.212791804753073e+03 + 8760 9.968507621604232e-01 -5.994377224372432e+00 -6.039805528028324e+00 3.730097368203098e+00 4.469241018603689e+00 9.339650961123880e+03 + 8780 8.764117556433408e-01 -5.813904581373118e+00 -6.080300259718758e+00 4.680319570871971e+00 4.150634361213320e+00 9.465181815917984e+03 + 8800 1.018890091346957e+00 -6.024250927257823e+00 -5.988207989347802e+00 3.581025741682792e+00 4.787989868788746e+00 9.180882617943131e+03 + 8820 1.009950037046913e+00 -6.008399317055590e+00 -6.029000789768031e+00 3.669577025388054e+00 4.551280181005616e+00 9.306297915466588e+03 + 8840 9.657074160205878e-01 -5.941935136208945e+00 -6.034786248103749e+00 4.010848803173062e+00 4.477683350009975e+00 9.324153654693951e+03 + 8860 1.017173515156002e+00 -6.019911136688190e+00 -6.008080623081010e+00 3.566105899136201e+00 4.634038539034688e+00 9.241867924631366e+03 + 8880 1.001287290454898e+00 -5.996396447196171e+00 -6.017130346559332e+00 3.703743305639244e+00 4.584686046935414e+00 9.269705346917985e+03 + 8900 1.083519703159325e+00 -6.118841234972435e+00 -5.984385083776121e+00 3.067181130901148e+00 4.839249158092535e+00 9.169201796099618e+03 + 8920 1.031656373245042e+00 -6.044993580790487e+00 -6.042037061766809e+00 3.469482297378607e+00 4.486459087132403e+00 9.346568668921378e+03 + 8940 9.992368937580539e-01 -6.003231992659405e+00 -5.985832084005798e+00 3.664207041824773e+00 4.764120009940944e+00 9.173612903210898e+03 + 8960 9.256933703749293e-01 -5.899335870553142e+00 -5.984592465147309e+00 4.281068818826553e+00 4.791512259251472e+00 9.169782332135363e+03 + 8980 9.934508117826832e-01 -6.001804246681455e+00 -5.941733625996394e+00 3.694421118573314e+00 5.039355918445444e+00 9.039041576431067e+03 + 9000 9.635314000748008e-01 -5.956856421192263e+00 -5.980939344254325e+00 3.967109315802432e+00 4.828821444759770e+00 9.158603176617566e+03 + 9020 9.864768993431361e-01 -5.986170031861555e+00 -5.989608470064649e+00 3.802458272197657e+00 4.782714227938897e+00 9.185149667300690e+03 + 9040 1.055279273689911e+00 -6.080548945254758e+00 -6.011118480123336e+00 3.254017883636210e+00 4.652698358750590e+00 9.251209100135407e+03 + 9060 1.049276594851777e+00 -6.064058947568468e+00 -5.979973919269995e+00 3.442759410417775e+00 4.925588655023684e+00 9.155678309029194e+03 + 9080 9.918661805998126e-01 -5.966781543457326e+00 -5.989011285081634e+00 3.888723022761304e+00 4.761076406313132e+00 9.183340517330136e+03 + 9100 1.043097998987318e+00 -6.019321313890502e+00 -6.013849871457147e+00 3.625738302727086e+00 4.657156171882392e+00 9.259615889429295e+03 + 9120 1.036785088172081e+00 -5.980262880017015e+00 -6.009884505613908e+00 3.840258640696548e+00 4.670166682587443e+00 9.247413539332798e+03 + 9140 9.789414837735084e-01 -5.864837285409031e+00 -6.046999958780339e+00 4.406333413865533e+00 4.360327153784882e+00 9.361885865529463e+03 + 9160 1.032735672841391e+00 -5.914574040801467e+00 -6.046510937536700e+00 4.160783024575714e+00 4.403180946353222e+00 9.360364952724496e+03 + 9180 1.048820574180894e+00 -5.913306563879768e+00 -6.048670364366198e+00 4.136331827703472e+00 4.359051937829967e+00 9.367066883878968e+03 + 9200 1.102916272286579e+00 -5.976446412844500e+00 -6.005362276025407e+00 3.809114410504149e+00 4.643075049404015e+00 9.233512892243549e+03 + 9220 1.020106471684230e+00 -5.842952569818697e+00 -6.055987341861826e+00 4.509948878543689e+00 4.286670250447619e+00 9.389705518197474e+03 + 9240 1.063499030535254e+00 -5.905779325686924e+00 -6.049374439040145e+00 4.196329296411197e+00 4.371783934265024e+00 9.369224244106515e+03 + 9260 9.831228089335664e-01 -5.794820336157807e+00 -6.058288736570042e+00 4.847116780761882e+00 4.334240453991639e+00 9.396825705241983e+03 + 9280 1.067546029595670e+00 -5.937393516846343e+00 -6.012767442625028e+00 4.105451163872145e+00 4.672642417973614e+00 9.256268885243620e+03 + 9300 1.070060199542935e+00 -5.965404811776148e+00 -6.026261696808802e+00 3.859583688312535e+00 4.510134036882516e+00 9.297829181994499e+03 + 9320 1.011676603253283e+00 -5.911827779316992e+00 -6.017160731525385e+00 4.139388535651622e+00 4.534550423849356e+00 9.269783946998074e+03 + 9340 1.004392753977360e+00 -5.936406715757382e+00 -6.005581558932750e+00 4.100563183277258e+00 4.703350528991913e+00 9.234178880473659e+03 + 9360 1.072040378465132e+00 -6.075185475531935e+00 -5.984105573333039e+00 3.252158557648542e+00 4.775153450643913e+00 9.168336450100089e+03 + 9380 1.027991800584641e+00 -6.044690576645766e+00 -5.983403786925880e+00 3.409043321930048e+00 4.760961552601691e+00 9.166177202653271e+03 + 9400 1.015460170146175e+00 -6.055355379100657e+00 -5.967598039759229e+00 3.386797775958455e+00 4.890713998861303e+00 9.117872150062454e+03 + 9420 9.277164053513555e-01 -5.946516163525734e+00 -6.032460310687878e+00 4.009825721860647e+00 4.516321129041834e+00 9.316975296019922e+03 + 9440 1.028688187071396e+00 -6.112842701303800e+00 -5.981429785676115e+00 3.061546210667481e+00 4.816139508284615e+00 9.160138661836780e+03 + 9460 8.823062911491397e-01 -5.907495429295074e+00 -6.035057002222356e+00 4.165093329118388e+00 4.432615037280322e+00 9.324962979642603e+03 + 9480 9.487148977767945e-01 -6.012302741876283e+00 -5.976176060187790e+00 3.587882136842998e+00 4.795327133684247e+00 9.144035256215631e+03 + 9500 9.788746013326195e-01 -6.056998165875655e+00 -5.966584592389978e+00 3.353089749347117e+00 4.872258479757154e+00 9.114743786951982e+03 + 9520 9.462804637740253e-01 -6.004424038086052e+00 -5.990731807575887e+00 3.655124731896214e+00 4.733747638351405e+00 9.188625080820930e+03 + 9540 9.870842078827310e-01 -6.056653307127925e+00 -6.006781522697102e+00 3.356623954916282e+00 4.642995458751768e+00 9.237875496261415e+03 + 9560 9.567080731439971e-01 -6.002127208647144e+00 -5.981233863757245e+00 3.696771376327647e+00 4.816744195920122e+00 9.159499591487505e+03 + 9580 9.126428083279599e-01 -5.921403881952156e+00 -6.001836284559061e+00 4.106722409751839e+00 4.644867107108913e+00 9.222663491142104e+03 + 9600 9.747629701341237e-01 -5.992665615111491e+00 -6.019381939128658e+00 3.711376813681429e+00 4.557967546837073e+00 9.276642740214236e+03 + 9620 1.048171679937623e+00 -6.077481130868685e+00 -5.970460106527288e+00 3.287003408383000e+00 4.901534691601299e+00 9.126605496164279e+03 + 9640 1.002604844972445e+00 -5.985779474754782e+00 -6.008464594358172e+00 3.775672572429824e+00 4.645411105156248e+00 9.243044063358853e+03 + 9660 1.012768162180425e+00 -5.976323284983285e+00 -5.970800828178485e+00 3.863586297685199e+00 4.895297099255785e+00 9.127629574711606e+03 + 9680 9.460434196189967e-01 -5.848809673973721e+00 -6.018393433801712e+00 4.537376521357970e+00 4.563600329423625e+00 9.273579890957326e+03 + 9700 1.040083543218447e+00 -5.957487134633883e+00 -6.006248816293832e+00 3.942551236333663e+00 4.662554114396388e+00 9.236231278178886e+03 + 9720 1.078120582865295e+00 -5.980219920957683e+00 -5.987632979580344e+00 3.745404982499811e+00 4.702838052721379e+00 9.179141009926960e+03 + 9740 1.065959098480569e+00 -5.933100985034915e+00 -5.978317621378944e+00 4.106435965544792e+00 4.846795042405517e+00 9.150599119378992e+03 + 9760 1.041619311912237e+00 -5.868126136015771e+00 -6.038608161697590e+00 4.442553867916603e+00 4.463619694443390e+00 9.335948980511874e+03 + 9780 1.112387100577437e+00 -5.948156711931792e+00 -6.031453981305036e+00 3.986004737345746e+00 4.507698926393800e+00 9.313838479091874e+03 + 9800 1.078116900723983e+00 -5.875907347200986e+00 -5.957942378711030e+00 4.457336772635692e+00 4.986278926824919e+00 9.088378446001607e+03 + 9820 1.096684714146620e+00 -5.883078848821527e+00 -6.001351071871992e+00 4.364102280667699e+00 4.684964873344559e+00 9.221146025201337e+03 + 9840 1.107859076922788e+00 -5.877066314220531e+00 -6.016018352405779e+00 4.273634790471869e+00 4.475750684453764e+00 9.266243552536167e+03 + 9860 1.019892986921529e+00 -5.725521322947404e+00 -6.049404045064248e+00 5.118763019087349e+00 4.258978308003166e+00 9.369296714111288e+03 + 9880 1.162674840810392e+00 -5.918911789561905e+00 -6.021304712648304e+00 4.144656723610029e+00 4.556700713994294e+00 9.282554289293150e+03 + 9900 1.181857539976539e+00 -5.940766526539827e+00 -6.024439476454921e+00 4.020599451829673e+00 4.540136425070052e+00 9.292221161686657e+03 + 9920 1.042830541057546e+00 -5.748972972060615e+00 -6.095022799098583e+00 4.942853002682374e+00 3.955781344792697e+00 9.511062924306727e+03 + 9940 1.057344192286364e+00 -5.804436579073846e+00 -6.027665703086377e+00 4.724533934606615e+00 4.442717759931359e+00 9.302148984327232e+03 + 9960 1.073237774920256e+00 -5.872984821043216e+00 -6.004337585745535e+00 4.397555817930519e+00 4.643307916235162e+00 9.230347088731030e+03 + 9980 1.106753768256607e+00 -5.972024408278690e+00 -5.989821298009029e+00 3.864947826287557e+00 4.762755331396169e+00 9.185814528116402e+03 + 10000 1.062782064138489e+00 -5.957927223060536e+00 -6.027754502803509e+00 3.942889497489095e+00 4.541930451468325e+00 9.302438277605383e+03 + 10020 1.042537879853328e+00 -5.974027835401715e+00 -6.016273109172037e+00 3.871895242664557e+00 4.629316343240381e+00 9.267072695461178e+03 + 10040 9.824528935330273e-01 -5.923353609670399e+00 -5.991845771106131e+00 4.086303248157003e+00 4.693010658065302e+00 9.192039358845515e+03 + 10060 1.009026067214335e+00 -5.993186977710830e+00 -5.961767005443864e+00 3.825805129364932e+00 5.006223472346843e+00 9.100017191871380e+03 + 10080 1.012369647695517e+00 -6.021915851550521e+00 -5.973650075153748e+00 3.628192289885843e+00 4.905341847060869e+00 9.136343337072285e+03 + 10100 9.839540576276056e-01 -6.001448457337824e+00 -6.050142978242833e+00 3.651739740940596e+00 4.372128266451278e+00 9.371575626376309e+03 + 10120 9.874738092876713e-01 -6.024245994287664e+00 -6.018110015127808e+00 3.507016292061510e+00 4.542250033937114e+00 9.272758919002190e+03 + 10140 9.772970721197446e-01 -6.027333634718453e+00 -6.010490467958778e+00 3.536501474921955e+00 4.633217544927636e+00 9.249253759284773e+03 + 10160 9.131511494721745e-01 -5.946162283591611e+00 -6.004402456138424e+00 4.004246556709828e+00 4.669822473308455e+00 9.230553626379216e+03 + 10180 9.801757437641923e-01 -6.054496280302692e+00 -5.949986650364843e+00 3.476768842320137e+00 5.076879310236231e+00 9.064137866066840e+03 + 10200 9.904875027833777e-01 -6.074972341924766e+00 -5.983054466221962e+00 3.331524889168096e+00 4.859331555698887e+00 9.165096892041263e+03 + 10220 9.955464454554274e-01 -6.084836956399575e+00 -6.012829441788008e+00 3.225455306457840e+00 4.638933598484329e+00 9.256484659487238e+03 + 10240 9.075006830368464e-01 -5.954363392774244e+00 -6.025069412893169e+00 3.985646594623759e+00 4.579641685379642e+00 9.294162053585482e+03 + 10260 9.199302775779932e-01 -5.968762266516940e+00 -5.969655614967563e+00 3.887132337200949e+00 4.882002592152249e+00 9.124108915991603e+03 + 10280 1.015454521710652e+00 -6.097950904199731e+00 -5.965431436201008e+00 3.157027543140851e+00 4.917974835710917e+00 9.111242842938962e+03 + 10300 9.904370786584795e-01 -6.044835999991675e+00 -5.982792007482603e+00 3.469308506122033e+00 4.825574712385935e+00 9.164295921759409e+03 + 10320 1.042884323798245e+00 -6.100165225806546e+00 -5.976957246913199e+00 3.137135579975738e+00 4.844614861154449e+00 9.146448308135014e+03 + 10340 9.978575966735166e-01 -6.007263783462824e+00 -5.967242347509822e+00 3.653197492189464e+00 4.883006770728799e+00 9.116738737971184e+03 + 10360 1.017390393751297e+00 -6.006634167465231e+00 -5.934117292484586e+00 3.691911380225945e+00 5.108314498314948e+00 9.015879935005583e+03 + 10380 1.011763668369974e+00 -5.964535864620655e+00 -5.973430823651527e+00 3.854269594797032e+00 4.803193363551301e+00 9.135641207758668e+03 + 10400 1.006294621833472e+00 -5.921058678604258e+00 -5.981444576165668e+00 4.131868630047681e+00 4.785123461562620e+00 9.160141819685843e+03 + 10420 1.088962771933305e+00 -6.011497716545380e+00 -5.998556861239488e+00 3.623467161009761e+00 4.697775554767079e+00 9.212616640389639e+03 + 10440 1.019311325497249e+00 -5.885100156046828e+00 -6.015238600405290e+00 4.310680853664079e+00 4.563405767298616e+00 9.263878567206251e+03 + 10460 9.824141619172314e-01 -5.815566925582319e+00 -6.049166210928774e+00 4.638421436962689e+00 4.297058191130762e+00 9.368553257047512e+03 + 10480 1.039227562698450e+00 -5.890200573021524e+00 -6.017732625877509e+00 4.277915220318094e+00 4.545606437297631e+00 9.271557511978977e+03 + 10500 1.013217216499692e+00 -5.851011735149619e+00 -6.070085553719180e+00 4.446632312656345e+00 4.188676544866071e+00 9.433431767275655e+03 + 10520 1.062279317409516e+00 -5.930592597578407e+00 -6.034238238304610e+00 4.067816578327991e+00 4.472667270167066e+00 9.322438997258418e+03 + 10540 1.037690557252582e+00 -5.908917384402380e+00 -6.034196847415637e+00 4.173344106119112e+00 4.453970042562747e+00 9.322299392743840e+03 + 10560 1.057948486647663e+00 -5.957968130810841e+00 -6.020218881627506e+00 3.888325063975439e+00 4.530871619513592e+00 9.279212568123232e+03 + 10580 1.049447309014212e+00 -5.969579705589926e+00 -6.007406918928693e+00 3.827239809531239e+00 4.610030096797692e+00 9.239830476939771e+03 + 10600 1.081233708254768e+00 -6.044211148743543e+00 -6.005547033495003e+00 3.471817697902211e+00 4.693833030911822e+00 9.234086084549992e+03 + 10620 1.037882007268125e+00 -6.008130085361410e+00 -6.003640545608080e+00 3.651453823006729e+00 4.677233455024378e+00 9.228237773507257e+03 + 10640 1.002011179069096e+00 -5.977919837210095e+00 -5.978827604055644e+00 3.831243770756652e+00 4.826031233053047e+00 9.152156555214324e+03 + 10660 9.191693871012315e-01 -5.868584758489209e+00 -6.023390541535559e+00 4.276069223614195e+00 4.387150461244552e+00 9.288983023738641e+03 + 10680 1.017800701473648e+00 -6.022111649766810e+00 -6.013130530073434e+00 3.527647639787632e+00 4.579218618890773e+00 9.257358255075036e+03 + 10700 9.959971034611009e-01 -5.995642208164071e+00 -5.995025318916811e+00 3.689856193239597e+00 4.693398466760667e+00 9.201791378094571e+03 + 10720 9.652774858413338e-01 -5.953724782843397e+00 -6.013114345438640e+00 3.946560759681575e+00 4.605536700754576e+00 9.257349825790012e+03 + 10740 1.049449200613198e+00 -6.081318918629134e+00 -6.004749357649367e+00 3.262550939653003e+00 4.702225207900090e+00 9.231629294717548e+03 + 10760 1.025841480270781e+00 -6.050044995863201e+00 -6.017178447483561e+00 3.422739345900134e+00 4.611464152777955e+00 9.269850734454205e+03 + 10780 9.262053658743513e-01 -5.905647758659430e+00 -6.032833296806214e+00 4.225555343587694e+00 4.495236301650441e+00 9.318098276851128e+03 + 10800 9.667228040797280e-01 -5.967755568495869e+00 -6.021129911326202e+00 3.868201683391729e+00 4.561717947207101e+00 9.282042410770426e+03 + 10820 9.698155457884314e-01 -5.972584742832305e+00 -6.044154767856118e+00 3.817085213110897e+00 4.406119053998585e+00 9.353093208085902e+03 + 10840 1.009894503388891e+00 -6.032495116073739e+00 -6.018473165562448e+00 3.489091355214843e+00 4.569607564940505e+00 9.273867172695398e+03 + 10860 1.008072085554609e+00 -6.032026729179854e+00 -6.021847075476702e+00 3.498229858248470e+00 4.556683005108287e+00 9.284210446461891e+03 + 10880 1.004708032182679e+00 -6.027669550773167e+00 -5.962792414629952e+00 3.591143956208357e+00 4.963678511647073e+00 9.103146752833105e+03 + 10900 9.884308822651190e-01 -6.001192920280648e+00 -6.010633084591926e+00 3.738417658217239e+00 4.684210773881174e+00 9.249714563650543e+03 + 10920 1.033092893488223e+00 -6.064527962658701e+00 -6.023550677113668e+00 3.330316750412575e+00 4.565614665226600e+00 9.289498191456823e+03 + 10940 1.014486724481529e+00 -6.035096993321953e+00 -6.038072432722831e+00 3.458925579544984e+00 4.441840146057386e+00 9.334295667558827e+03 + 10960 1.028030684552815e+00 -6.054818058945912e+00 -5.994100191086344e+00 3.379552051838103e+00 4.728203445147431e+00 9.198958876149241e+03 + 10980 9.681596892005307e-01 -5.965910145771780e+00 -5.976132434405902e+00 3.874437336999790e+00 4.815739373768604e+00 9.143918056697232e+03 + 11000 9.537240445728551e-01 -5.941843499088440e+00 -5.981042451904003e+00 4.026383306783371e+00 4.801296853698068e+00 9.158930299432537e+03 + 11020 9.922668799709220e-01 -5.991669364431152e+00 -6.026007958332180e+00 3.734315729496472e+00 4.537138209436536e+00 9.297029312125607e+03 + 11040 1.074662614043527e+00 -6.103773264493199e+00 -6.023687271410833e+00 3.113400323166056e+00 4.573266488712378e+00 9.289921366493900e+03 + 11060 1.017535448474088e+00 -6.008984187702763e+00 -6.048439029021065e+00 3.648983701020969e+00 4.422427896554323e+00 9.366354751637838e+03 + 11080 9.841443207394001e-01 -5.951640274586071e+00 -6.025844019806799e+00 3.955730502192746e+00 4.529641114142862e+00 9.296554966282294e+03 + 11100 9.722037192109234e-01 -5.924907390698005e+00 -5.997322136247743e+00 4.094856277254687e+00 4.679039602162432e+00 9.208839049151047e+03 + 11120 1.006787203558836e+00 -5.966142577868007e+00 -5.961218300188949e+00 3.931449262301388e+00 4.959725226764050e+00 9.098352949235779e+03 + 11140 1.023833601903766e+00 -5.981555234537621e+00 -5.986092286292642e+00 3.779374161582284e+00 4.753321708298460e+00 9.174392841116220e+03 + 11160 9.814120578547727e-01 -5.905981103915170e+00 -5.956264299695937e+00 4.264453455636060e+00 4.975719564163499e+00 9.083236079902754e+03 + 11180 1.035507342033103e+00 -5.971384207677268e+00 -5.984630226911241e+00 3.813484284622155e+00 4.737423592365832e+00 9.169899882888370e+03 + 11200 1.014673255722701e+00 -5.924156880947510e+00 -6.036737893060928e+00 4.113232613871728e+00 4.466775020461166e+00 9.330151088269064e+03 + 11220 1.027101674241339e+00 -5.928677878447156e+00 -6.072655555881941e+00 4.057520169928059e+00 4.230778065623954e+00 9.441442466022509e+03 + 11240 1.009535419846097e+00 -5.895916945114865e+00 -6.045643335348117e+00 4.249700095346263e+00 4.389947992542924e+00 9.357681609585836e+03 + 11260 1.056474828979347e+00 -5.962171015147373e+00 -6.035701183637293e+00 3.862866806938879e+00 4.440645200712957e+00 9.326982705941058e+03 + 11280 1.073505805376476e+00 -5.992646152004697e+00 -6.007312965760439e+00 3.759790844205411e+00 4.675571729937843e+00 9.239490550968980e+03 + 11300 1.027837941948915e+00 -5.937895383553011e+00 -5.929020962089674e+00 4.029823941446037e+00 5.080782242800801e+00 9.000428403194948e+03 + 11320 9.679178384492290e-01 -5.863364184537270e+00 -5.987730208531579e+00 4.397029340781053e+00 4.682900385425721e+00 9.179371101404571e+03 + 11340 1.031896210002186e+00 -5.975610495624409e+00 -6.008444604154413e+00 3.886094272446564e+00 4.697555740205408e+00 9.242949487151007e+03 + 11360 9.756252298265461e-01 -5.917320970225714e+00 -6.047507455947283e+00 4.121002814304926e+00 4.373451866998121e+00 9.363469137323824e+03 + 11380 1.012672441073498e+00 -6.005482875820356e+00 -5.997605046344849e+00 3.681545703448684e+00 4.726781419387216e+00 9.209710367818236e+03 + 11400 9.875214243974701e-01 -6.004695378857832e+00 -6.000895329816085e+00 3.629533295244342e+00 4.651353764897743e+00 9.219781692041966e+03 + 11420 9.922960109224869e-01 -6.046560552754995e+00 -5.977040107336223e+00 3.510470391074532e+00 4.909667546923281e+00 9.146680816497288e+03 + 11440 1.012843080183593e+00 -6.105728371683282e+00 -5.981421775193635e+00 3.095607317494015e+00 4.809395030921207e+00 9.160115723110732e+03 + 11460 1.008050047071573e+00 -6.121347042898979e+00 -5.946335228853945e+00 3.085238309416540e+00 5.090183228653821e+00 9.053056570579782e+03 + 11480 9.687681671469743e-01 -6.080525904368686e+00 -5.951750855046871e+00 3.312704036682407e+00 5.052150297762749e+00 9.069540996965261e+03 + 11500 9.088836695462323e-01 -6.001387047600026e+00 -6.009976170629004e+00 3.679052430933058e+00 4.629732357338172e+00 9.247693077136599e+03 + 11520 9.951724902988180e-01 -6.133607397720047e+00 -5.968623800720589e+00 2.990270745564536e+00 4.937632090664543e+00 9.120983355757238e+03 + 11540 9.376707590320388e-01 -6.047205264356971e+00 -5.945620132563029e+00 3.451435012294503e+00 5.034752559303660e+00 9.050857174923454e+03 + 11560 9.748801426975526e-01 -6.094398794535675e+00 -5.929034173124574e+00 3.147932612041331e+00 5.097481858276339e+00 9.000459128102664e+03 + 11580 9.505487071155164e-01 -6.041111040984991e+00 -5.937427674852026e+00 3.510085505506332e+00 5.105451438790873e+00 9.025957331551010e+03 + 11600 9.622138807647858e-01 -6.032977400867259e+00 -5.972399332485563e+00 3.568870778357429e+00 4.916719421430914e+00 9.132497024245227e+03 + 11620 9.808364142709015e-01 -6.031633431503484e+00 -5.969893033923491e+00 3.510737877810404e+00 4.865260795010367e+00 9.124854807914033e+03 + 11640 9.368128661161454e-01 -5.935512719511946e+00 -5.996191897077992e+00 4.050322741992083e+00 4.701893514335465e+00 9.205333547496100e+03 + 11660 9.939384690669947e-01 -5.990149772087907e+00 -5.991804094532365e+00 3.764537199663331e+00 4.755037824181681e+00 9.191889666351990e+03 + 11680 1.031176591633643e+00 -6.018393478922981e+00 -5.992203247543886e+00 3.618726950753056e+00 4.769115312257031e+00 9.193114970175029e+03 + 11700 1.026333415010537e+00 -5.993285983281188e+00 -5.998795351882253e+00 3.714450677654117e+00 4.682815030574766e+00 9.213353653188040e+03 + 11720 1.023903335911007e+00 -5.979767390997818e+00 -6.018795532255941e+00 3.788822601208074e+00 4.564716974518594e+00 9.274847496489676e+03 + 11740 1.063973422247846e+00 -6.036133468204518e+00 -6.007709969872422e+00 3.502055225241880e+00 4.665267351186932e+00 9.240710733767537e+03 + 11760 1.001232523245312e+00 -5.943014891062190e+00 -6.014831546187494e+00 3.934358758622791e+00 4.521976411301829e+00 9.262646407561469e+03 + 11780 1.028605356124832e+00 -5.985580523188041e+00 -6.013435845506908e+00 3.788143090306529e+00 4.628193518954393e+00 9.258339362056562e+03 + 11800 9.829852024559178e-01 -5.924538657734039e+00 -5.990024246040984e+00 4.046232234234598e+00 4.670203852314081e+00 9.186436983498932e+03 + 11820 9.668595446891648e-01 -5.906130730282630e+00 -6.002347042959519e+00 4.189844620207651e+00 4.637355663390687e+00 9.224210300696834e+03 + 11840 9.665569284796279e-01 -5.911368672867480e+00 -6.028853998703951e+00 4.134332382403381e+00 4.459713460654949e+00 9.305815507115014e+03 + 11860 9.420107033072974e-01 -5.879826944255774e+00 -6.013522395740694e+00 4.314613972629463e+00 4.546914000898800e+00 9.258594832639512e+03 + 11880 9.706963715011303e-01 -5.926588993370581e+00 -6.038891680192034e+00 4.014996543168088e+00 4.370137136654689e+00 9.336830676625586e+03 + 11900 1.031829254703316e+00 -6.022143357234981e+00 -6.028180106940601e+00 3.588699978105402e+00 4.554036027111736e+00 9.303747512547789e+03 + 11920 1.083590856041194e+00 -6.109430703077940e+00 -6.000633971358427e+00 3.113669027628229e+00 4.738396697401489e+00 9.219010235958558e+03 + 11940 1.018825931777119e+00 -6.028304836282217e+00 -6.008723607218321e+00 3.499353607664596e+00 4.611792055134894e+00 9.243841220815502e+03 + 11960 9.921154876310159e-01 -6.005916695499235e+00 -5.975317382305399e+00 3.689331855134716e+00 4.865037846722134e+00 9.141414014995440e+03 + 11980 9.128976380662722e-01 -5.906178649011517e+00 -5.985161244697197e+00 4.222389862117776e+00 4.768859575173418e+00 9.171495611095059e+03 + 12000 9.936365493014621e-01 -6.040262978868384e+00 -5.917453138138081e+00 3.487428661589617e+00 5.192621771824454e+00 8.965356477479274e+03 + 12020 1.021082686198270e+00 -6.090201941847695e+00 -5.957874062676535e+00 3.236539089531557e+00 4.996386249405480e+00 9.088192558803965e+03 + 12040 9.446713296686358e-01 -5.987015476276399e+00 -6.022496599392487e+00 3.758680955135377e+00 4.554942855516744e+00 9.286257249072985e+03 + 12060 9.812553265687054e-01 -6.052874638990982e+00 -6.024938546704787e+00 3.381790741361544e+00 4.542204106365189e+00 9.293776781068053e+03 + 12080 9.836325727811694e-01 -6.070668039313007e+00 -5.977087980733996e+00 3.311022080432358e+00 4.848373258260301e+00 9.146847159661207e+03 + 12100 9.733129906534999e-01 -6.068663267479435e+00 -5.948082500370528e+00 3.317252181535941e+00 5.009645606088684e+00 9.058353116841852e+03 + 12120 9.762342734466067e-01 -6.083307343685128e+00 -5.962626527758808e+00 3.236358550962773e+00 4.929326471307617e+00 9.102678583375000e+03 + 12140 8.668529164497186e-01 -5.928090872192326e+00 -6.007146634343116e+00 4.081028772240834e+00 4.627078352131344e+00 9.238980811316243e+03 + 12160 9.409951141521423e-01 -6.041543913746894e+00 -5.939412860996989e+00 3.565883255885642e+00 5.152335565504931e+00 9.031963970251563e+03 + 12180 1.003506225645033e+00 -6.129148366304634e+00 -5.972961870275594e+00 3.012661789625465e+00 4.909508819606355e+00 9.134204292112059e+03 + 12200 9.372706188133398e-01 -6.016424230767914e+00 -6.011501527699544e+00 3.606228798998631e+00 4.634495721803049e+00 9.252396447144802e+03 + 12220 9.871702099326898e-01 -6.068962112158292e+00 -6.011938531717732e+00 3.318941825099819e+00 4.646380048360073e+00 9.253742163710487e+03 + 12240 9.432562850867839e-01 -5.975034766069568e+00 -6.051200510294937e+00 3.825535516664446e+00 4.388180026711553e+00 9.374892515038211e+03 + 12260 1.012356869432345e+00 -6.045711524006354e+00 -5.982311854500773e+00 3.499173786612128e+00 4.863224499980320e+00 9.162837475887362e+03 + 12280 9.667773918214954e-01 -5.944047852540212e+00 -5.984915420871344e+00 4.044049208117990e+00 4.809381306524872e+00 9.170758236034731e+03 + 12300 9.546881029827269e-01 -5.890214345389857e+00 -5.983889520691763e+00 4.317584576667389e+00 4.779687223897312e+00 9.167622820388759e+03 + 12320 1.012688224095185e+00 -5.943441354802263e+00 -6.007257119937497e+00 4.002692846953775e+00 4.636252848089524e+00 9.239325748663687e+03 + 12340 1.046428021950719e+00 -5.966617548869865e+00 -5.973768885203241e+00 3.885459563552900e+00 4.844395483660930e+00 9.136712514234390e+03 + 12360 1.051536522785374e+00 -5.952808502232223e+00 -6.030061118594013e+00 3.963090083986544e+00 4.519493606033399e+00 9.309572125300614e+03 + 12380 1.098800361680690e+00 -6.011120842743171e+00 -6.019548756949925e+00 3.602636604026077e+00 4.554242216435386e+00 9.277141018114015e+03 + 12400 1.004504307056334e+00 -5.867103321160864e+00 -6.080114007420112e+00 4.392282832411368e+00 4.169142508613604e+00 9.464602221534666e+03 + 12420 1.006343669651734e+00 -5.874787232707534e+00 -6.013726158375403e+00 4.395333258605750e+00 4.597524446691586e+00 9.259226184573574e+03 + 12440 1.046288880276163e+00 -5.944309691551034e+00 -5.971828670948153e+00 3.962948013759905e+00 4.804929775513344e+00 9.130753347008769e+03 + 12460 1.054296850413643e+00 -5.968049715350995e+00 -5.979943244797585e+00 3.903791982543229e+00 4.835497495943171e+00 9.155511097616454e+03 + 12480 1.076144745519811e+00 -6.015354301615249e+00 -5.946730052875632e+00 3.616583407464474e+00 5.010634463295528e+00 9.054264731331319e+03 + 12500 1.022943210207720e+00 -5.956244532985490e+00 -6.036877110788494e+00 3.910273739551172e+00 4.447268999955235e+00 9.330593935103736e+03 + 12520 9.887961814755137e-01 -5.931760194440408e+00 -6.006649492040931e+00 4.084398861423808e+00 4.654372925520257e+00 9.237482394115003e+03 + 12540 1.013387562013467e+00 -6.000393955030078e+00 -6.031900478880081e+00 3.705245782069585e+00 4.524330446504058e+00 9.315232455684438e+03 + 12560 9.969098266830383e-01 -6.011190819273282e+00 -6.045660195551387e+00 3.620460240002740e+00 4.422531747295120e+00 9.357749842389620e+03 + 12580 1.002251677571879e+00 -6.055027141064377e+00 -6.010807484109926e+00 3.371762946614229e+00 4.625679059816482e+00 9.250278931036046e+03 + 12600 9.282518067092916e-01 -5.976746757508428e+00 -6.011705716033195e+00 3.798359631798945e+00 4.597619882068383e+00 9.253000279254489e+03 + 12620 9.545766676823163e-01 -6.038570625496161e+00 -5.981404528154663e+00 3.484799664208816e+00 4.813056241568672e+00 9.160050295622394e+03 + 12640 9.429581438290054e-01 -6.033768797923829e+00 -6.001992499391473e+00 3.496457966350360e+00 4.678922389889458e+00 9.223147140809169e+03 + 12660 9.104948121606214e-01 -5.990625215167247e+00 -6.005302438822258e+00 3.744006334926893e+00 4.659727445406801e+00 9.233307758194469e+03 + 12680 9.730728906488229e-01 -6.082248158023729e+00 -5.964043624606446e+00 3.330773163046458e+00 5.009521886020927e+00 9.106981627627800e+03 + 12700 9.448463075761803e-01 -6.034866028153978e+00 -5.991524187305273e+00 3.506120065389001e+00 4.754995622670460e+00 9.191056158710204e+03 + 12720 9.660760426471577e-01 -6.059147830629197e+00 -5.993227885799763e+00 3.392129391067980e+00 4.770651915357087e+00 9.196268447382396e+03 + 12740 1.003859220232606e+00 -6.106130324046015e+00 -5.952697472093877e+00 3.152064989821686e+00 5.033100169387962e+00 9.072409577247410e+03 + 12760 9.723320335523702e-01 -6.047526379932048e+00 -5.981877207007941e+00 3.406881134769545e+00 4.783848844876443e+00 9.161517485923019e+03 + 12780 9.688533895390007e-01 -6.027604122064929e+00 -6.016732815077759e+00 3.537356306704929e+00 4.599781033754578e+00 9.268495774764344e+03 + 12800 9.883777549893901e-01 -6.042874058242262e+00 -6.002351687662585e+00 3.451548945664995e+00 4.684234668350083e+00 9.224287468922868e+03 + 12820 1.018431618328430e+00 -6.074955785427985e+00 -5.966535039394754e+00 3.304381040324913e+00 4.926949742103953e+00 9.114603918316487e+03 + 12840 9.567449284977366e-01 -5.969317766158151e+00 -5.998310271510414e+00 3.896851276666259e+00 4.730371824357865e+00 9.211832061602032e+03 + 12860 9.224980491058583e-01 -5.902560302180225e+00 -5.982873831733098e+00 4.209827498723163e+00 4.748654783552037e+00 9.164548669616894e+03 + 12880 1.008008264748782e+00 -6.009926678683335e+00 -5.996034828786046e+00 3.610291024040890e+00 4.690060175907952e+00 9.204848704307260e+03 + 12900 1.058209656703621e+00 -6.063082317312167e+00 -5.961935120418953e+00 3.352572293274985e+00 4.933375150313951e+00 9.100580677515885e+03 + 12920 9.698236900208641e-01 -5.911592768809861e+00 -6.049807552568206e+00 4.154929178276744e+00 4.361278501267665e+00 9.370581299358122e+03 + 12940 1.052181367921238e+00 -6.017708279389982e+00 -6.007290014837530e+00 3.572592554097738e+00 4.632415841379148e+00 9.239437206502558e+03 + 12960 1.012727559202565e+00 -5.946755943425700e+00 -6.014578640587840e+00 3.970353573233212e+00 4.580905150599737e+00 9.261875673819126e+03 + 12980 1.046639767181839e+00 -5.986892370320407e+00 -6.009292350011466e+00 3.731756609309503e+00 4.603132459537789e+00 9.245573082319206e+03 + 13000 9.862625447977591e-01 -5.890123585110835e+00 -6.027184012338742e+00 4.293561362559682e+00 4.506539179384479e+00 9.300668667748032e+03 + 13020 1.020818141011533e+00 -5.935412169568536e+00 -6.002028041519155e+00 4.047056004216996e+00 4.664537358703673e+00 9.223287750057447e+03 + 13040 9.875746366692447e-01 -5.883273136781042e+00 -6.033228209782699e+00 4.297445107940162e+00 4.436379873292096e+00 9.319302949589714e+03 + 13060 1.032217254715105e+00 -5.949148353462636e+00 -6.017661116001882e+00 3.968626230353882e+00 4.575215345537790e+00 9.271338906193248e+03 + 13080 1.028181637733138e+00 -5.946287890245642e+00 -6.029583358749967e+00 3.996110643475530e+00 4.517815173391603e+00 9.308083981093983e+03 + 13100 1.076523285493425e+00 -6.032669563333755e+00 -6.032518246382167e+00 3.478282244139011e+00 4.479151129491255e+00 9.317163390583468e+03 + 13120 1.066424524098081e+00 -6.045803936336907e+00 -6.005718222311781e+00 3.477047020036573e+00 4.707225393213038e+00 9.234624444904259e+03 + 13140 1.040112053762905e+00 -6.046858256240305e+00 -5.965185991692822e+00 3.500172089255986e+00 4.969146871029723e+00 9.110481541518930e+03 + 13160 9.771776086825158e-01 -5.998414418418232e+00 -5.985249744747446e+00 3.776697246755947e+00 4.852290840200268e+00 9.171734546182493e+03 + 13180 1.029850553093112e+00 -6.118059487021155e+00 -5.967660831628075e+00 3.045597101434379e+00 4.909209454818141e+00 9.118027742727234e+03 + 13200 9.197616144938635e-01 -5.988550785817424e+00 -5.956798991196708e+00 3.819150495713135e+00 5.001474213999619e+00 9.084894977804215e+03 + 13220 8.855935729999710e-01 -5.958424069653322e+00 -5.972232091412314e+00 3.947504284121817e+00 4.868216486397226e+00 9.131999226519147e+03 + 13240 9.794652785409539e-01 -6.108650965950458e+00 -5.968379323494716e+00 3.110119599996902e+00 4.915581077944291e+00 9.120247573611590e+03 + 13260 9.637767044175340e-01 -6.090701838341100e+00 -6.023270520690153e+00 3.171239160811156e+00 4.558440221725574e+00 9.288632148269577e+03 + 13280 9.452164966529814e-01 -6.065098818080330e+00 -5.981138959702298e+00 3.357784877859307e+00 4.839895377412065e+00 9.159259960900450e+03 + 13300 9.278959487064370e-01 -6.035660704295840e+00 -6.009862760202399e+00 3.509630429252612e+00 4.657766216456102e+00 9.247351810164537e+03 + 13320 9.595362917539829e-01 -6.071465399039795e+00 -6.031643569806985e+00 3.294870913142138e+00 4.523534019005088e+00 9.314453704476618e+03 + 13340 9.805624617854728e-01 -6.085190074157312e+00 -5.988327127657031e+00 3.221796621359888e+00 4.777998649657031e+00 9.181293738467939e+03 + 13360 9.564863138806143e-01 -6.028027073372440e+00 -5.990019601011497e+00 3.561791510268483e+00 4.780036298202358e+00 9.186432799782106e+03 + 13380 1.017249245072571e+00 -6.089673368403393e+00 -5.969905569928443e+00 3.239062186477798e+00 4.926787419327875e+00 9.124908149263345e+03 + 13400 9.860846812565249e-01 -6.010790841497132e+00 -6.020038489940672e+00 3.665909761213462e+00 4.612808332781688e+00 9.278692902879280e+03 + 13420 9.617480303310642e-01 -5.941670688533135e+00 -6.075114204473765e+00 3.963182405633642e+00 4.196929086785190e+00 9.449064704569932e+03 + 13440 9.422580794241145e-01 -5.883039193763986e+00 -6.043125360475765e+00 4.325496353967473e+00 4.406256811454210e+00 9.349897510993082e+03 + 13460 1.063611572978500e+00 -6.035655157937191e+00 -6.004283858156993e+00 3.483781313764660e+00 4.663920171795509e+00 9.230202331206068e+03 + 13480 1.019972782762877e+00 -5.949986820005857e+00 -6.035211668302278e+00 3.945866976127029e+00 4.456492708706330e+00 9.325443452036052e+03 + 13500 9.858598643386435e-01 -5.886243240473112e+00 -6.037245731370238e+00 4.267204306987614e+00 4.400124636696376e+00 9.331712727227063e+03 + 13520 1.047216680259085e+00 -5.970525409645569e+00 -5.991014817592088e+00 3.882184408775273e+00 4.764531057620733e+00 9.189486268518549e+03 + 13540 1.012813642199252e+00 -5.917045534507268e+00 -6.016879334860818e+00 4.150392844857342e+00 4.577131713996587e+00 9.268932707567043e+03 + 13560 1.003265927948378e+00 -5.905321558213074e+00 -5.982774922662885e+00 4.201108594815326e+00 4.756359390275097e+00 9.164230230697767e+03 + 13580 9.728317627239790e-01 -5.864141905152371e+00 -5.998456274726784e+00 4.418493197806667e+00 4.647239302628871e+00 9.212263676175953e+03 + 13600 1.062511192606216e+00 -6.000848606645679e+00 -5.963486470013160e+00 3.718001485725216e+00 4.932540656041093e+00 9.105286590344953e+03 + 13620 9.944470366193420e-01 -5.905069242254024e+00 -6.010969941921219e+00 4.187794103876942e+00 4.579695898307602e+00 9.250746900405089e+03 + 13640 1.052983168544651e+00 -5.999674691804699e+00 -6.026482450514163e+00 3.651897312924177e+00 4.497963013927182e+00 9.298527569248752e+03 + 13660 9.948285228931260e-01 -5.923482826028681e+00 -6.048022268965010e+00 4.118721808671049e+00 4.403597054914138e+00 9.365047555838521e+03 + 13680 1.008833465975767e+00 -5.956245161446682e+00 -6.024708353216541e+00 4.016567752412502e+00 4.623441510625284e+00 9.292994359121565e+03 + 13700 1.041611328897764e+00 -6.017120393368925e+00 -5.993182931005585e+00 3.633817548521341e+00 4.771270161721974e+00 9.196123608793143e+03 + 13720 1.097039987299764e+00 -6.110198534360299e+00 -5.971062841274488e+00 3.122278772638490e+00 4.921217453516133e+00 9.128438445485421e+03 + 13740 1.045277027607819e+00 -6.044370630199463e+00 -5.976870550262293e+00 3.478315088227706e+00 4.865910992830545e+00 9.146175162997592e+03 + 13760 1.043205741031296e+00 -6.050534985556409e+00 -5.974205437742651e+00 3.416593462837814e+00 4.854889538343758e+00 9.138028143313251e+03 + 13780 9.063476619276001e-01 -5.856395031904208e+00 -6.002017369452898e+00 4.490747970006066e+00 4.654561972817582e+00 9.223222640258713e+03 + 13800 9.936159624019997e-01 -5.990392703823709e+00 -5.968742964348268e+00 3.722495325514806e+00 4.846811479869147e+00 9.121338368793360e+03 + 13820 1.017297040734155e+00 -6.026751134163661e+00 -6.013074779175863e+00 3.566883226355780e+00 4.645414973104812e+00 9.257227670348386e+03 + 13840 1.028205875824722e+00 -6.045273320395550e+00 -6.016070122164336e+00 3.441137377161181e+00 4.608826660585129e+00 9.266439287610217e+03 + 13860 1.057474035231557e+00 -6.092367041448914e+00 -5.979541503729791e+00 3.176552352949079e+00 4.824414050227821e+00 9.154357577156265e+03 + 13880 9.565213607707287e-01 -5.946596497454079e+00 -6.012588176211166e+00 4.012647435490965e+00 4.633713003888491e+00 9.255727864738592e+03 + 13900 1.009951541446198e+00 -6.027940255328508e+00 -5.991101279353382e+00 3.571363538175433e+00 4.782898639037716e+00 9.189741571120921e+03 + 13920 1.060426624950769e+00 -6.103552218976274e+00 -5.996321247059604e+00 3.157862471567484e+00 4.773599306252279e+00 9.205770188538536e+03 + 13940 1.020796304156536e+00 -6.047973470179844e+00 -6.013833936049226e+00 3.415827590169402e+00 4.611862078223245e+00 9.259573438135360e+03 + 13960 9.688319700885443e-01 -5.975161100952267e+00 -5.949337114740882e+00 3.862059762578487e+00 5.010345087653210e+00 9.062148920818714e+03 + 13980 9.717995189189411e-01 -5.980866352318083e+00 -5.905720321617858e+00 3.810228664818141e+00 5.241728801909503e+00 8.929845348688315e+03 + 14000 9.902082230717405e-01 -6.002557929457116e+00 -5.970815940590418e+00 3.690462572351313e+00 4.872729984480795e+00 9.127584429663788e+03 + 14020 9.774126390981804e-01 -5.972779347995193e+00 -5.982744454146278e+00 3.898781060421271e+00 4.841559878806546e+00 9.164142793343401e+03 + 14040 9.993847287378332e-01 -5.990413789568542e+00 -5.995804987946816e+00 3.832452013032250e+00 4.801494917658952e+00 9.204165978999381e+03 + 14060 1.027455782402183e+00 -6.011902961460427e+00 -6.043802976812951e+00 3.571285238555380e+00 4.388110413889768e+00 9.352012653753844e+03 + 14080 1.021964547008326e+00 -5.973798309097214e+00 -5.995300463360326e+00 3.870814182833477e+00 4.747345485607074e+00 9.202618012136081e+03 + 14100 1.094163790166205e+00 -6.033124954348923e+00 -6.005109087131116e+00 3.554859293389214e+00 4.715730738395306e+00 9.232735439293487e+03 + 14120 1.059002607549278e+00 -5.923278480214687e+00 -6.044181891517956e+00 4.108143630060153e+00 4.413897532614349e+00 9.353199121130050e+03 + 14140 1.091470221148424e+00 -5.919914498084180e+00 -6.037429510331143e+00 4.098453051811305e+00 4.423663666099873e+00 9.332322614204319e+03 + 14160 1.048352675169480e+00 -5.817158433825469e+00 -6.051947481997662e+00 4.687246970658661e+00 4.339051922566150e+00 9.377168776264632e+03 + 14180 1.081165798820521e+00 -5.843514379823632e+00 -6.022180369014292e+00 4.569661881375913e+00 4.543734122970671e+00 9.285236864644210e+03 + 14200 1.103525510205556e+00 -5.866842670330175e+00 -6.043626216785276e+00 4.460193038747022e+00 4.445074557836434e+00 9.351426958736041e+03 + 14220 1.152953746866324e+00 -5.945574789361446e+00 -6.047840224565404e+00 3.959194425341438e+00 4.371970470875358e+00 9.364459573091732e+03 + 14240 1.060571639307739e+00 -5.829887378726657e+00 -6.065838753870069e+00 4.585565469742528e+00 4.230696160311759e+00 9.420209084155020e+03 + 14260 1.081696966328759e+00 -5.892578224014195e+00 -6.000794929711442e+00 4.270831244327438e+00 4.649434173732761e+00 9.219464588312712e+03 + 14280 1.066694503502946e+00 -5.909248160495229e+00 -6.025427035808105e+00 4.172829517647796e+00 4.505712436978418e+00 9.295258017468965e+03 + 14300 1.061024901607693e+00 -5.940428224763174e+00 -6.016502520430822e+00 3.989792052876566e+00 4.552961674693723e+00 9.267775044805019e+03 + 14320 1.021582786743855e+00 -5.917970021489351e+00 -6.034414538896677e+00 4.144527223973610e+00 4.475884785289911e+00 9.322971510600943e+03 + 14340 9.958850001190119e-01 -5.910810869089333e+00 -6.004304456918030e+00 4.217179708370615e+00 4.680325058972279e+00 9.230248723293766e+03 + 14360 1.053437587973987e+00 -6.019898538737448e+00 -6.005299600318861e+00 3.671625235613868e+00 4.755454599191813e+00 9.233308853978338e+03 + 14380 9.541316908247983e-01 -5.893535860182322e+00 -6.076319082577913e+00 4.306072069066847e+00 4.256502520459110e+00 9.452824332325059e+03 + 14400 1.029215163989680e+00 -6.024522662461229e+00 -5.961539659937682e+00 3.565507050431850e+00 4.927165197510196e+00 9.099361753477606e+03 + 14420 9.534903521577018e-01 -5.925875767554153e+00 -5.981375502600432e+00 4.085683058501636e+00 4.766994991309660e+00 9.159938465661013e+03 + 14440 9.698858380002957e-01 -5.958209379860687e+00 -6.010389751569601e+00 3.913298753625897e+00 4.613670984386886e+00 9.248977084845874e+03 + 14460 1.000966090966179e+00 -6.012927322557827e+00 -6.044991611849244e+00 3.575880319986879e+00 4.391762208942833e+00 9.355704669952616e+03 + 14480 9.623197249514560e-01 -5.966104515959567e+00 -6.026067889261418e+00 3.879764441459854e+00 4.535445472658600e+00 9.297252657604580e+03 + 14500 9.821437273902185e-01 -6.006594827107545e+00 -5.981175960876802e+00 3.696985909192997e+00 4.842944972646756e+00 9.159331943388563e+03 + 14520 9.919920402789800e-01 -6.028306231632368e+00 -5.984807359559664e+00 3.526323933764272e+00 4.776101188634438e+00 9.170464425307053e+03 + 14540 9.346247387059581e-01 -5.947384739348180e+00 -6.006619333314084e+00 3.971033368518927e+00 4.630899163442908e+00 9.237348397598604e+03 + 14560 9.641676508487763e-01 -5.991637091320682e+00 -5.982779649707224e+00 3.712914882719768e+00 4.763775683148911e+00 9.164258400682342e+03 + 14580 1.005234774766878e+00 -6.048992485429141e+00 -5.994931450793544e+00 3.445722661758888e+00 4.756149488554554e+00 9.201481251800495e+03 + 14600 9.684328998229146e-01 -5.989435245732968e+00 -6.009438340172015e+00 3.769306027534895e+00 4.654445163797028e+00 9.246051170361588e+03 + 14620 9.779945041045314e-01 -5.997863161047110e+00 -6.038608008290250e+00 3.653054745858388e+00 4.419091527743547e+00 9.335945151192320e+03 + 14640 9.577514660441624e-01 -5.960339801077783e+00 -6.040487489346980e+00 3.891172821384758e+00 4.430952392528352e+00 9.341727510673518e+03 + 14660 9.783610442859163e-01 -5.978909297983122e+00 -5.972570791189567e+00 3.806937884300257e+00 4.843334571189607e+00 9.133015859676379e+03 + 14680 9.999348720428707e-01 -5.991052527930605e+00 -5.974896021658771e+00 3.698931006378255e+00 4.791704165602390e+00 9.140114024957415e+03 + 14700 9.698802100305616e-01 -5.917255271438414e+00 -5.976476165626075e+00 4.101844072818190e+00 4.761788533988882e+00 9.144954224403748e+03 + 14720 1.029786868695904e+00 -5.968851860996097e+00 -6.015166705893619e+00 3.878886565586542e+00 4.612939558985889e+00 9.263632724305020e+03 + 14740 1.068664592981896e+00 -5.987373554738988e+00 -6.017374443476910e+00 3.759913435033350e+00 4.587643689277678e+00 9.270489411092214e+03 + 14760 1.063746812009008e+00 -5.946245432474186e+00 -6.040315065451830e+00 3.943214245502948e+00 4.403051855716664e+00 9.341232514747418e+03 + 14780 1.070032557436574e+00 -5.931561111515113e+00 -5.941416848794622e+00 4.086738805974029e+00 5.030145637344678e+00 9.038080608980725e+03 + 14800 9.628110895669011e-01 -5.755091098972152e+00 -6.051099594384665e+00 4.959817222885889e+00 4.260090635060612e+00 9.374527790553844e+03 + 14820 1.082713720975084e+00 -5.920272896100458e+00 -5.992112772307081e+00 4.084505923838528e+00 4.671990237475181e+00 9.192821264096263e+03 + 14840 1.070100621106793e+00 -5.896893222751780e+00 -5.989332822545553e+00 4.291845135155654e+00 4.761042648157974e+00 9.184302583726434e+03 + 14860 1.075631638489945e+00 -5.910928329215073e+00 -5.996270993108518e+00 4.155581082685414e+00 4.665530299874698e+00 9.205573625194160e+03 + 14880 1.110678387064713e+00 -5.977930899831851e+00 -5.959475226143216e+00 3.845110769289208e+00 4.951086103615623e+00 9.093035975371420e+03 + 14900 1.040136577417129e+00 -5.897728204057829e+00 -5.992471567261740e+00 4.288740771327346e+00 4.744709718322417e+00 9.193808987806964e+03 + 14920 1.023301836150553e+00 -5.904849354344107e+00 -6.001071776785536e+00 4.256774304055654e+00 4.704250264025216e+00 9.220305307301551e+03 + 14940 1.003288747372904e+00 -5.918189274238317e+00 -6.057147046114451e+00 4.115573623039244e+00 4.317656593280785e+00 9.393297854063090e+03 + 14960 1.063595949235403e+00 -6.058015167982024e+00 -5.960528307548136e+00 3.364031310421907e+00 4.923815949076183e+00 9.096272944374403e+03 + 14980 9.565019023717873e-01 -5.944162202183536e+00 -5.988092175200501e+00 3.990940330748498e+00 4.738687627543732e+00 9.180489158632692e+03 + 15000 9.821581544113632e-01 -6.012804736993520e+00 -5.976756665923899e+00 3.624099310311555e+00 4.831092912814285e+00 9.145821220628506e+03 + 15020 9.774052501488819e-01 -6.024406691190674e+00 -5.955512230140702e+00 3.572310422574056e+00 4.967913079306390e+00 9.080979021983643e+03 + 15040 9.824079478411509e-01 -6.039587382006729e+00 -5.913115105179362e+00 3.523265887154135e+00 5.249489272218470e+00 8.952230294841374e+03 + 15060 1.013589889227844e+00 -6.087146632568857e+00 -5.966063558947152e+00 3.218509138280423e+00 4.913786884561341e+00 9.113179947073584e+03 + 15080 9.457788550552571e-01 -5.984397465342965e+00 -5.988010673368933e+00 3.802155535178195e+00 4.781407935550945e+00 9.180280897043081e+03 + 15100 9.231296855573002e-01 -5.944593088584159e+00 -6.039903316864887e+00 4.025583557712675e+00 4.478297477714575e+00 9.339921386931739e+03 + 15120 9.664668690129848e-01 -6.001873901486968e+00 -6.027352810823709e+00 3.700805045279978e+00 4.554501205019934e+00 9.301224542032145e+03 + 15140 9.698020036600523e-01 -6.000343991467510e+00 -6.048368792445078e+00 3.684924681670710e+00 4.409158842643578e+00 9.366127145671382e+03 + 15160 1.027309732025433e+00 -6.078821420448955e+00 -5.988469665975130e+00 3.292675873625204e+00 4.811489629702732e+00 9.181695317027446e+03 + 15180 1.061851356847342e+00 -6.120217709095547e+00 -5.956289493505754e+00 3.087341074581664e+00 5.028642256307629e+00 9.083357854998476e+03 + 15200 9.756057264002541e-01 -5.980716206116241e+00 -6.017537730309797e+00 3.768435179773415e+00 4.557000289741561e+00 9.270946055263663e+03 + 15220 1.013885158349901e+00 -6.024690784112360e+00 -5.973933642651733e+00 3.610439282014667e+00 4.901894642923843e+00 9.137202588973305e+03 + 15240 9.232966510089982e-01 -5.876492798221065e+00 -6.017846554965667e+00 4.287947927352361e+00 4.476272781701696e+00 9.271924836352235e+03 + 15260 9.645358928353595e-01 -5.921202086300058e+00 -5.980284186537640e+00 4.128710530911118e+00 4.789451968421459e+00 9.156605614305972e+03 + 15280 1.082039670616094e+00 -6.072544193043312e+00 -5.987846000532518e+00 3.294245234552406e+00 4.780595362952315e+00 9.179794069090336e+03 + 15300 9.851123917564566e-01 -5.907059650661733e+00 -6.025633239293390e+00 4.192456789786100e+00 4.511588894659584e+00 9.295903757081040e+03 + 15320 1.033844942228233e+00 -5.957037604759506e+00 -5.997103899249235e+00 3.918644595471503e+00 4.688577732272444e+00 9.208149900501419e+03 + 15340 1.047452779188516e+00 -5.952480940196741e+00 -5.975011097776807e+00 3.966287510886098e+00 4.836915859530744e+00 9.140500777070516e+03 + 15360 1.023467561928792e+00 -5.893313671474440e+00 -6.043001710999679e+00 4.215925139273232e+00 4.356393252170052e+00 9.349509104608955e+03 + 15380 1.102133662319126e+00 -5.988284442376143e+00 -5.984639253669283e+00 3.760822621769325e+00 4.781753859415250e+00 9.169929350395296e+03 + 15400 1.017139437727689e+00 -5.844006234079988e+00 -5.992109761595763e+00 4.527547051284819e+00 4.677113677342422e+00 9.192814078021969e+03 + 15420 1.036128477156556e+00 -5.852656968084491e+00 -5.995990824215644e+00 4.464006494648715e+00 4.640961311901088e+00 9.204736052143677e+03 + 15440 1.109105412199050e+00 -5.941394014603929e+00 -6.035425234763540e+00 4.001908002443299e+00 4.461966185002521e+00 9.326106494747453e+03 + 15460 1.071954567987569e+00 -5.874826061232791e+00 -6.013503413067120e+00 4.313033433587963e+00 4.516726619104403e+00 9.258537290284348e+03 + 15480 1.120888743577574e+00 -5.943552278958609e+00 -5.977074075881849e+00 4.016411202064395e+00 4.823923856649846e+00 9.146805421056526e+03 + 15500 1.064734379008857e+00 -5.866722944380350e+00 -6.042529866705488e+00 4.450300497270649e+00 4.440789943246405e+00 9.348048802241201e+03 + 15520 1.110504455951506e+00 -5.955811631882441e+00 -5.995418521794598e+00 3.977884952303195e+00 4.750456061281185e+00 9.202994441624318e+03 + 15540 1.066111757122827e+00 -5.927370590599241e+00 -5.993602693985870e+00 4.142991259228705e+00 4.762676272197809e+00 9.197411613962040e+03 + 15560 1.062771213390365e+00 -5.970738081241895e+00 -6.029277792700410e+00 3.853195035858489e+00 4.517050953672626e+00 9.307150605656399e+03 + 15580 1.041191744477500e+00 -5.993696497017045e+00 -6.058617310012500e+00 3.714532550536253e+00 4.341747195853008e+00 9.397873685968769e+03 + 15600 1.004583570276568e+00 -5.987396629717518e+00 -6.008307451093899e+00 3.761101027011870e+00 4.641027854729534e+00 9.242565519103106e+03 + 15620 9.461968182669699e-01 -5.937098179513779e+00 -5.997072477839563e+00 4.013046101726536e+00 4.668664399747214e+00 9.208047908013883e+03 + 15640 1.023092614007132e+00 -6.073970141285652e+00 -6.001804556753408e+00 3.290107655379645e+00 4.704493609351903e+00 9.222592482409151e+03 + 15660 1.054974560295018e+00 -6.139460140105442e+00 -5.992245245034646e+00 2.930831193620910e+00 4.776161902548807e+00 9.193283691456092e+03 + 15680 9.896416314709399e-01 -6.058985849561802e+00 -6.001405253434925e+00 3.397125173726790e+00 4.727761867255773e+00 9.221345769256677e+03 + 15700 9.677667345035497e-01 -6.037271119820157e+00 -5.981341170702658e+00 3.518837178487781e+00 4.839995601452117e+00 9.159848058925223e+03 + 15720 9.881755911559977e-01 -6.073531092243111e+00 -5.990774437568365e+00 3.313790440782526e+00 4.788991958475842e+00 9.188732303815068e+03 + 15740 9.272241841318681e-01 -5.985959901193210e+00 -5.993123352283762e+00 3.747568512610520e+00 4.706434867908101e+00 9.195960196097763e+03 + 15760 9.611615138107921e-01 -6.033664165987467e+00 -5.970265875992006e+00 3.531291365487481e+00 4.895334157495094e+00 9.126004628178702e+03 + 15780 9.645593797894779e-01 -6.031554933433757e+00 -5.974343822408631e+00 3.562393880558975e+00 4.890908933456062e+00 9.138459224313321e+03 + 15800 9.965820680326115e-01 -6.066477238720612e+00 -5.963338021294724e+00 3.301977040290528e+00 4.894218387492295e+00 9.104853795431320e+03 + 15820 9.875208780759510e-01 -6.035040021091230e+00 -5.999887661875132e+00 3.519638319118651e+00 4.721488605547500e+00 9.216695047234560e+03 + 15840 9.708236721224347e-01 -5.988678137365131e+00 -5.954176079750782e+00 3.779289300661726e+00 4.977405454659476e+00 9.076926489351115e+03 + 15860 1.014498863252133e+00 -6.026443762392806e+00 -6.027527655770642e+00 3.528521506962738e+00 4.522297623455245e+00 9.301742825334530e+03 + 15880 1.012902190743901e+00 -5.993385016897898e+00 -6.026326446576242e+00 3.682765980829801e+00 4.493611193946984e+00 9.298058677702191e+03 + 15900 1.010531910168358e+00 -5.960758939448815e+00 -6.012540761192181e+00 3.919475859422282e+00 4.622136625760858e+00 9.255575812866149e+03 + 15920 1.013452922061067e+00 -5.937683646278209e+00 -6.042155219047390e+00 4.020529700591055e+00 4.420637762826779e+00 9.346887563487015e+03 + 15940 1.076318376318981e+00 -6.006574633257475e+00 -6.019672058835874e+00 3.655329916888902e+00 4.580122472397681e+00 9.277536513679603e+03 + 15960 9.841079210456581e-01 -5.851242586527896e+00 -6.047928819770194e+00 4.493630700190399e+00 4.364227911816900e+00 9.364774536691490e+03 + 15980 1.070878565678429e+00 -5.967443670056086e+00 -6.009704923106494e+00 3.885826045954172e+00 4.643155391030963e+00 9.246858250587953e+03 + 16000 1.021194409532658e+00 -5.885838441826692e+00 -6.049081498262325e+00 4.248200594011408e+00 4.310833702176662e+00 9.368345880666357e+03 + 16020 1.060752644919037e+00 -5.942979110361371e+00 -6.049880694676967e+00 3.989584315071969e+00 4.375738874965107e+00 9.370825516352839e+03 + 16040 1.053611173905449e+00 -5.941096696709803e+00 -6.068177063473180e+00 3.973282811554546e+00 4.243567679976033e+00 9.427541347140776e+03 + 16060 1.001911283588902e+00 -5.887536097059613e+00 -6.071527359897142e+00 4.249722303956128e+00 4.193216000187129e+00 9.437920343453152e+03 + 16080 1.066947124567536e+00 -6.019612414443590e+00 -6.001180096931925e+00 3.609287345041948e+00 4.715128564585841e+00 9.220660505611491e+03 + 16100 9.892895132258607e-01 -5.956858281407446e+00 -6.024956602633026e+00 3.921742715530747e+00 4.530711616872317e+00 9.293836593467575e+03 + 16120 1.005457949750512e+00 -6.047336124859807e+00 -5.976269421175104e+00 3.470383412318605e+00 4.878459422413026e+00 9.144337531548550e+03 + 16140 9.391857817413237e-01 -6.004513565181886e+00 -5.987395181479780e+00 3.701942682994888e+00 4.800239091273694e+00 9.178396903311012e+03 + 16160 9.533955125430742e-01 -6.059871778275905e+00 -5.999492237047129e+00 3.363712470534267e+00 4.710421139973709e+00 9.215496656678502e+03 + 16180 9.353162575185290e-01 -6.049165341534939e+00 -5.994605143596504e+00 3.427571377844989e+00 4.740864477570833e+00 9.200493948559289e+03 + 16200 9.102101205518702e-01 -6.015909386641571e+00 -6.029279402852018e+00 3.590603502563604e+00 4.513830800479893e+00 9.307163328796301e+03 + 16220 9.680405420298733e-01 -6.100957430880167e+00 -5.989612548388584e+00 3.151250162917664e+00 4.790609708749212e+00 9.185211751552950e+03 + 16240 9.528308595735678e-01 -6.072943363915742e+00 -6.002312216527661e+00 3.282620274011712e+00 4.688195252448805e+00 9.224156432162035e+03 + 16260 9.050272927967775e-01 -5.991060651503573e+00 -5.999028872575962e+00 3.821031703779050e+00 4.775276945303169e+00 9.214059387026335e+03 + 16280 9.410565855028433e-01 -6.028349606154639e+00 -6.024439594963527e+00 3.529587777945880e+00 4.552039667277526e+00 9.292233851492814e+03 + 16300 1.060506513591971e+00 -6.185436850699585e+00 -5.972550189279037e+00 2.658373695942250e+00 4.880801849923420e+00 9.133004834549192e+03 + 16320 9.315690718242288e-01 -5.970797680493542e+00 -6.047642387776252e+00 3.836274895128626e+00 4.395020694231282e+00 9.363874153951487e+03 + 16340 9.248152344387465e-01 -5.937633520634433e+00 -6.015907931625134e+00 3.984936635791548e+00 4.535472854956993e+00 9.265955382136253e+03 + 16360 9.877534509837823e-01 -6.003333943193039e+00 -6.000511144715660e+00 3.660553366798207e+00 4.676762312481967e+00 9.218611502661020e+03 + 16380 9.840610218470404e-01 -5.970283294522878e+00 -5.978637751814201e+00 3.875147107840143e+00 4.827174521225284e+00 9.151587145490943e+03 + 16400 1.046696725200996e+00 -6.036470974254309e+00 -6.018606071931801e+00 3.503496955996756e+00 4.606079989717295e+00 9.274264933074623e+03 + 16420 1.046098877584747e+00 -6.014997980091431e+00 -5.987421577615349e+00 3.616398656627151e+00 4.774746627079312e+00 9.178472007247476e+03 + 16440 1.003390753401376e+00 -5.935940672624148e+00 -5.999835262165734e+00 3.990307520650581e+00 4.623414899847020e+00 9.216511173118253e+03 + 16460 9.381971418056982e-01 -5.824878469235403e+00 -6.041871268281389e+00 4.605255977825419e+00 4.359249746176239e+00 9.346015217452632e+03 + 16480 1.091142938260067e+00 -6.040679771717731e+00 -6.017698320177081e+00 3.413838659599869e+00 4.545801710714418e+00 9.271482345453496e+03 + 16500 1.026923891428277e+00 -5.939981208871211e+00 -6.023598845458247e+00 4.032317736843900e+00 4.552172327773691e+00 9.289648196789272e+03 + 16520 1.028431924319835e+00 -5.942950583110042e+00 -5.998879221909244e+00 4.001567799979348e+00 4.680416901065446e+00 9.213616039046994e+03 + 16540 1.082116490419838e+00 -6.026936041405730e+00 -6.015612780478216e+00 3.522812886656712e+00 4.587832803171457e+00 9.265037606940468e+03 + 16560 1.040268532110304e+00 -5.975226444158871e+00 -6.029216907286781e+00 3.825812201250680e+00 4.515790606973058e+00 9.306974155724591e+03 + 16580 1.057288879899200e+00 -6.020491368330060e+00 -5.987760377232169e+00 3.554442151233567e+00 4.742388567222161e+00 9.179506517168657e+03 + 16600 1.024045198892182e+00 -5.997841346965934e+00 -5.975509136144869e+00 3.794689210003344e+00 4.922924220436349e+00 9.141979663130925e+03 + 16620 1.006303193919409e+00 -6.005960916143772e+00 -5.963088140350083e+00 3.729831626760122e+00 4.976013739908096e+00 9.104071703510001e+03 + 16640 1.040166613003569e+00 -6.098055688908863e+00 -5.988024461638537e+00 3.178175684551824e+00 4.809992018815423e+00 9.180309017701698e+03 + 16660 9.702965559083476e-01 -6.044484308697625e+00 -5.996995206499786e+00 3.483907469610105e+00 4.756597243344910e+00 9.207835854889834e+03 + 16680 9.339736142232450e-01 -6.039501046456410e+00 -6.025350428538545e+00 3.492525138700030e+00 4.573780176585460e+00 9.295032336269769e+03 + 16700 8.703895273489322e-01 -5.981064906144507e+00 -6.060966010408890e+00 3.737884476329712e+00 4.279079970987699e+00 9.405146896072176e+03 + 16720 9.091900110529726e-01 -6.060049810484167e+00 -6.013275252119989e+00 3.355805018797593e+00 4.624391771264218e+00 9.257857111034076e+03 + 16740 9.169984993348442e-01 -6.079698668894569e+00 -5.999431958747753e+00 3.265355809181278e+00 4.726259680077546e+00 9.215312660563572e+03 + 16760 9.776799274899726e-01 -6.168722686868296e+00 -5.995295532091939e+00 2.785257390090833e+00 4.781102950582144e+00 9.202617917779986e+03 + 16780 9.245299428224846e-01 -6.083520095591708e+00 -5.995297244622381e+00 3.268924099823303e+00 4.775513362531242e+00 9.202629648546683e+03 + 16800 8.614187295941028e-01 -5.979378321038616e+00 -6.001429742971851e+00 3.851230249745236e+00 4.724607572558082e+00 9.221417946381904e+03 + 16820 9.838072498547534e-01 -6.142509426713205e+00 -5.976068133363982e+00 2.960172394350084e+00 4.915904057468228e+00 9.143729460227052e+03 + 16840 9.672189256048042e-01 -6.096715350009793e+00 -6.007550340419989e+00 3.177166960252264e+00 4.689166243557556e+00 9.240246622443206e+03 + 16860 8.748125267148347e-01 -5.938748613352183e+00 -6.036341495662775e+00 4.032905866717656e+00 4.472512434040506e+00 9.328944248489264e+03 + 16880 1.004674392724796e+00 -6.106606710263478e+00 -6.002440783279478e+00 3.124112571888795e+00 4.722249444256025e+00 9.224567470072127e+03 + 16900 9.556449326119837e-01 -6.010730761152153e+00 -5.997591088827024e+00 3.640179022940244e+00 4.715629054788859e+00 9.209657205729507e+03 + 16920 1.001137606798068e+00 -6.056369388415390e+00 -5.957593349623107e+00 3.472526622590596e+00 5.039713922878484e+00 9.087320682225942e+03 + 16940 1.046037888394493e+00 -6.100597904774219e+00 -5.951769481259623e+00 3.205361798525841e+00 5.059957637470760e+00 9.069581496703928e+03 + 16960 9.613314734583852e-01 -5.952461369394727e+00 -6.004836060658921e+00 3.930305178265050e+00 4.629561596068773e+00 9.231874273596453e+03 + 16980 1.068202736342690e+00 -6.092256073839376e+00 -5.933440059081227e+00 3.210678683879328e+00 5.122624817319476e+00 9.013854057470771e+03 + 17000 1.008430125596781e+00 -5.984379446179471e+00 -5.971887074863695e+00 3.818655723391561e+00 4.890388852674958e+00 9.130948030180931e+03 + 17020 1.053337979566619e+00 -6.033271645269577e+00 -5.996066670741617e+00 3.502180488595771e+00 4.715817209786524e+00 9.204974749995416e+03 + 17040 9.900646079111670e-01 -5.927952685909984e+00 -6.029104410141850e+00 4.060441761870684e+00 4.479612908152579e+00 9.306585399853297e+03 + 17060 1.027653930462488e+00 -5.976081510467584e+00 -5.997459180926849e+00 3.850210711471686e+00 4.727456819510775e+00 9.209228202494374e+03 + 17080 1.020642617093729e+00 -5.961273347695263e+00 -6.009289528589694e+00 3.852741348897136e+00 4.577025007721335e+00 9.245565604196028e+03 + 17100 9.652632513652823e-01 -5.875841948376283e+00 -6.090915570378339e+00 4.317811757183218e+00 4.082825737111971e+00 9.498147743181162e+03 + 17120 1.052305314767479e+00 -6.005985830346548e+00 -5.972796613209613e+00 3.629782805424523e+00 4.820360426239558e+00 9.133712490206215e+03 + 17140 9.675136298320702e-01 -5.881840264550553e+00 -6.026657017843405e+00 4.304321912070769e+00 4.472761704343066e+00 9.299026473494925e+03 + 17160 1.036016008809293e+00 -5.988363599181775e+00 -6.037635007149823e+00 3.796256479538453e+00 4.513332430260181e+00 9.332926938448243e+03 + 17180 1.070385088524221e+00 -6.052749095343440e+00 -5.978661363608897e+00 3.391793419813519e+00 4.817216640472699e+00 9.151660563266525e+03 + 17200 9.706794070904557e-01 -5.923536598172579e+00 -5.979365676283626e+00 4.122913346054468e+00 4.802334140018922e+00 9.153815682753509e+03 + 17220 9.979015133682821e-01 -5.990504239831981e+00 -5.970794219457034e+00 3.770273847218086e+00 4.883451834326828e+00 9.127586638671199e+03 + 17240 9.682017397339567e-01 -5.981891568292143e+00 -6.048453664719201e+00 3.756352423917688e+00 4.374142565782392e+00 9.366383893700973e+03 + 17260 9.555357193491194e-01 -6.013962397560986e+00 -6.021273018480390e+00 3.624956268131544e+00 4.582977551497396e+00 9.282485243477284e+03 + 17280 9.600169471741620e-01 -6.073486309216973e+00 -5.997687429013509e+00 3.307371805312548e+00 4.742620705279638e+00 9.209949903105384e+03 + 17300 8.963944716279043e-01 -6.023297241074425e+00 -5.977018002768935e+00 3.605962512265781e+00 4.871705060304888e+00 9.146643987881291e+03 + 17320 9.644271390152944e-01 -6.151817220818386e+00 -5.961393627123243e+00 2.931289390740353e+00 5.024731133693749e+00 9.098936520998954e+03 + 17340 9.228406122907082e-01 -6.106094402204155e+00 -6.000307195152284e+00 3.163531113117444e+00 4.770977626526673e+00 9.217996657018355e+03 + 17360 8.838839847990284e-01 -6.053637087529264e+00 -5.995551303549200e+00 3.374941203449785e+00 4.708478763809334e+00 9.203430965020803e+03 + 17380 9.279346218405647e-01 -6.114179937697940e+00 -5.994722379862341e+00 3.068155461708163e+00 4.754099244797502e+00 9.200846697887479e+03 + 17400 8.985650048851552e-01 -6.057789395915485e+00 -5.983511356886128e+00 3.351306289588739e+00 4.777822284184701e+00 9.166501901586687e+03 + 17420 9.094700726602285e-01 -6.053271419445093e+00 -6.009101801840788e+00 3.389175850626927e+00 4.642804630137078e+00 9.244972778513087e+03 + 17440 9.437671071682426e-01 -6.079537612175593e+00 -5.944444502033163e+00 3.307177441768476e+00 5.082902985797539e+00 9.047300174763110e+03 + 17460 9.597628166778134e-01 -6.074123714405999e+00 -6.022374675956629e+00 3.296904866699463e+00 4.594055853613563e+00 9.285868192333959e+03 + 17480 9.524413281634901e-01 -6.036222483019147e+00 -6.015762964918697e+00 3.513579428664094e+00 4.631061147697073e+00 9.265506230923478e+03 + 17500 9.888619017419695e-01 -6.066579391397657e+00 -5.980347049840451e+00 3.333954955007209e+00 4.829114404640418e+00 9.156815713494794e+03 + 17520 9.271556887463571e-01 -5.953414479326898e+00 -5.967974572922465e+00 3.944398975316754e+00 4.860792664723807e+00 9.118951029365708e+03 + 17540 9.527496765722386e-01 -5.969858760519857e+00 -5.941871759026137e+00 3.840668567533657e+00 5.001374261085084e+00 9.039423225907492e+03 + 17560 9.677001089988455e-01 -5.969080647172332e+00 -6.001308373899962e+00 3.832571614966604e+00 4.647515020871954e+00 9.221069238703849e+03 + 17580 1.050786500272591e+00 -6.072784833262293e+00 -6.000301311437447e+00 3.311832843088999e+00 4.728044442196017e+00 9.217982394213359e+03 + 17600 1.012755005404517e+00 -6.004180359946029e+00 -5.994347111306388e+00 3.676028992843289e+00 4.732493028222418e+00 9.199706033374339e+03 + 17620 9.924959395806293e-01 -5.964491753688129e+00 -6.012112197177112e+00 3.915123634903848e+00 4.641679679150297e+00 9.254229456084555e+03 + 17640 9.378956176472304e-01 -5.874487950214588e+00 -6.054303101194511e+00 4.397942602695079e+00 4.365416179463682e+00 9.384480852594208e+03 + 17660 9.740680643639937e-01 -5.921799293911687e+00 -6.009829863229713e+00 4.150594641213758e+00 4.645109489503074e+00 9.247248064573425e+03 + 17680 1.068815650036030e+00 -6.056675407529572e+00 -5.982867154575640e+00 3.400313836689417e+00 4.824132246941129e+00 9.164516971521978e+03 + 17700 1.020739114394580e+00 -5.979196887200175e+00 -6.031166674356621e+00 3.854588039135055e+00 4.556169478984167e+00 9.312967711498919e+03 + 17720 1.032602844371905e+00 -5.995971392455163e+00 -6.057580415191714e+00 3.705316135102745e+00 4.351547592584015e+00 9.394647123705654e+03 + 17740 9.936870313315410e-01 -5.944490340408734e+00 -6.029139661107052e+00 3.972668867698805e+00 4.486599368809024e+00 9.306710604697897e+03 + 17760 1.023609298453200e+00 -5.995273872536520e+00 -5.951550651117770e+00 3.697292590505528e+00 4.948358094038642e+00 9.068913239440846e+03 + 17780 9.950515926080136e-01 -5.960320055123219e+00 -5.978337210368894e+00 3.923536932278735e+00 4.820079638712309e+00 9.150636636251847e+03 + 17800 9.971454940412500e-01 -5.972514180255792e+00 -6.002253157194717e+00 3.816536271290828e+00 4.645770463615710e+00 9.223951993487948e+03 + 17820 9.872667491857564e-01 -5.970979052456981e+00 -5.964560101459409e+00 3.865489076955754e+00 4.902347686913267e+00 9.108544545904691e+03 + 17840 9.999790075493451e-01 -6.006791059844137e+00 -5.956958056218920e+00 3.615684890578483e+00 4.901833709026863e+00 9.085403715803883e+03 + 17860 9.326373284327524e-01 -5.929007380510170e+00 -6.014705905548337e+00 4.070307096641783e+00 4.578212904068740e+00 9.262250677191863e+03 + 17880 9.926967723460791e-01 -6.047692328467138e+00 -6.011632969887435e+00 3.413518184901833e+00 4.620576602034193e+00 9.252795833599515e+03 + 17900 9.407776595316566e-01 -6.007252413082350e+00 -6.005062503809948e+00 3.630516808232570e+00 4.643091606162066e+00 9.232608379964166e+03 + 17920 8.859507036650586e-01 -5.961554689470237e+00 -6.002918910485016e+00 3.858131836289042e+00 4.620612078129668e+00 9.226013582352694e+03 + 17940 9.624307396727535e-01 -6.104826411945009e+00 -5.967213734336006e+00 3.128331348305189e+00 4.918524638629121e+00 9.116678488685493e+03 + 17960 9.413083681400927e-01 -6.097212432956436e+00 -5.953752973578435e+00 3.218736461785716e+00 5.042502877813783e+00 9.075637283892283e+03 + 17980 8.837580126394070e-01 -6.026817160516157e+00 -5.937112701637551e+00 3.623419290418707e+00 5.138516175019810e+00 9.024990524924146e+03 + 18000 9.042811169916926e-01 -6.060651596504969e+00 -5.942348284292163e+00 3.395733868966937e+00 5.075049795071267e+00 9.040911205059034e+03 + 18020 9.421035874646172e-01 -6.109789903855603e+00 -6.013203555216644e+00 3.122740817246149e+00 4.677354577820198e+00 9.257613958372205e+03 + 18040 9.063105926573231e-01 -6.042494469109269e+00 -6.018006223664475e+00 3.482542811831732e+00 4.623158106719474e+00 9.272409390829036e+03 + 18060 9.384785406404660e-01 -6.068661899499261e+00 -5.996863579832524e+00 3.298482133612976e+00 4.710759195893438e+00 9.207444076724061e+03 + 18080 9.467679663793056e-01 -6.048446001291123e+00 -6.007973860924826e+00 3.423091939372320e+00 4.655489232399075e+00 9.241550890847107e+03 + 18100 9.313647721942748e-01 -5.988619260022254e+00 -6.006972147424687e+00 3.747209646809608e+00 4.641824527244692e+00 9.238466522825389e+03 + 18120 1.050312872564898e+00 -6.125175164038207e+00 -5.976962424569500e+00 3.031379980892847e+00 4.882440466769472e+00 9.146460194439796e+03 + 18140 9.408304511163956e-01 -5.927825208948574e+00 -5.992941302162925e+00 4.086413958132303e+00 4.712507274212643e+00 9.195372645526606e+03 + 18160 9.524746606812198e-01 -5.917938534388973e+00 -5.946145059258487e+00 4.128032009642167e+00 4.966065778895808e+00 9.052466376914865e+03 + 18180 1.074058564339236e+00 -6.075146124533438e+00 -5.948122152878433e+00 3.317588311922023e+00 5.046979614061144e+00 9.058491978185248e+03 + 18200 9.607933498187966e-01 -5.892328074912680e+00 -6.006934846052454e+00 4.270555394358041e+00 4.612465579132942e+00 9.238357130326845e+03 + 18220 1.012135415675914e+00 -5.959262382415376e+00 -5.980220669010532e+00 3.897943134819257e+00 4.777597409905500e+00 9.156442339051890e+03 + 18240 1.038575983604448e+00 -5.991117412970359e+00 -6.004509288109811e+00 3.702063435255536e+00 4.625165215818824e+00 9.230903810732470e+03 + 18260 1.008861617219233e+00 -5.945594866576123e+00 -6.050255312495206e+00 3.932918658055269e+00 4.331942181436232e+00 9.371957079605701e+03 + 18280 9.962977082685011e-01 -5.929402912946832e+00 -6.057150146367145e+00 4.052388942964742e+00 4.318844559844826e+00 9.393324143996448e+03 + 18300 9.881061756646630e-01 -5.924866890207941e+00 -6.042626466898055e+00 4.090449428303485e+00 4.414255715713254e+00 9.348346765220815e+03 + 18320 9.810843276923751e-01 -5.922634290886080e+00 -6.000343816879697e+00 4.121228574704958e+00 4.675008450939327e+00 9.218084109800711e+03 + 18340 1.032532167732856e+00 -6.007536365978980e+00 -5.999285218864442e+00 3.700385554853621e+00 4.747764918446185e+00 9.214838600904492e+03 + 18360 1.030872314766707e+00 -6.015116192156126e+00 -5.988359477020829e+00 3.628687799887183e+00 4.782328998782348e+00 9.181346422567827e+03 + 18380 1.017412487686301e+00 -6.007493421592137e+00 -6.016090780176630e+00 3.608010441351725e+00 4.558643077922627e+00 9.266517355272841e+03 + 18400 9.833266297122549e-01 -5.971547248509009e+00 -6.019927989944458e+00 3.839258039244644e+00 4.561448335026757e+00 9.278323059401589e+03 + 18420 9.278959986902980e-01 -5.906596492191706e+00 -5.985289411191200e+00 4.279601945278666e+00 4.827735026693719e+00 9.171927644095178e+03 + 18440 1.014728984942653e+00 -6.051646222720157e+00 -5.996712818207249e+00 3.405692013804418e+00 4.721128123434408e+00 9.206963342665880e+03 + 18460 9.866724733082185e-01 -6.027960919400622e+00 -6.033726398543780e+00 3.574020256462353e+00 4.540913983017324e+00 9.320880472359482e+03 + 18480 1.001724141957931e+00 -6.072569589068930e+00 -5.982657582689000e+00 3.377122228273636e+00 4.893410882745215e+00 9.163910640525492e+03 + 18500 9.552876152881393e-01 -6.029284415118875e+00 -5.997949259205825e+00 3.555753250289100e+00 4.735684564641541e+00 9.210748090605952e+03 + 18520 9.231927421028870e-01 -6.007691593088179e+00 -5.999365586335180e+00 3.660827452782569e+00 4.708636672003667e+00 9.215099046181713e+03 + 18540 9.166542175619531e-01 -6.024584852999875e+00 -6.061526092510811e+00 3.513136504342735e+00 4.301014190432600e+00 9.406894487752423e+03 + 18560 9.453146677732607e-01 -6.095169031231560e+00 -6.004713975862544e+00 3.205938562670321e+00 4.725345488473787e+00 9.231558275500163e+03 + 18580 9.362656498262208e-01 -6.108418426741267e+00 -6.017568037365256e+00 3.042743919702270e+00 4.564420914551636e+00 9.271069000694213e+03 + 18600 8.877285582776270e-01 -6.058629058737030e+00 -6.010389375742344e+00 3.375573881176206e+00 4.652573605998509e+00 9.248970689876278e+03 + 18620 9.234585091340065e-01 -6.126967271478303e+00 -5.973838619799340e+00 3.069587918571890e+00 4.948876333094757e+00 9.136917786835718e+03 + 18640 8.862161700949893e-01 -6.080189250426587e+00 -6.021787371396615e+00 3.259883451898770e+00 4.595236078950435e+00 9.284081826897478e+03 + 18660 9.252662583295668e-01 -6.140878309816120e+00 -5.997324018932301e+00 2.968207447920866e+00 4.792518401130476e+00 9.208857430593989e+03 + 18680 8.882026090956644e-01 -6.079315889597320e+00 -5.980235949812567e+00 3.308545290413565e+00 4.877477637228743e+00 9.156481011918877e+03 + 18700 9.673866332591117e-01 -6.174955410019118e+00 -5.963902215142327e+00 2.735218019752237e+00 4.947118125111124e+00 9.106575410419575e+03 + 18720 9.227969241531256e-01 -6.068367589308782e+00 -5.983933485190297e+00 3.339807400735651e+00 4.824641092719377e+00 9.167818836686511e+03 + 18740 9.896593637207061e-01 -6.110773850966568e+00 -6.027895932410174e+00 3.086061288689078e+00 4.561959122356341e+00 9.302867880596965e+03 + 18760 9.358053121608656e-01 -5.975242540240949e+00 -6.029612007809115e+00 3.822534856606702e+00 4.510336960182374e+00 9.308169670074116e+03 + 18780 1.009597907550461e+00 -6.044132487491591e+00 -5.998347263371341e+00 3.453305917308451e+00 4.716211759447468e+00 9.211979798197443e+03 + 18800 1.040115638287558e+00 -6.057741531632725e+00 -6.013745276934753e+00 3.382497807243181e+00 4.635131110117355e+00 9.259292112179048e+03 + 18820 9.771089031804527e-01 -5.943443533472965e+00 -6.041249154119972e+00 3.985084046666050e+00 4.423469037540050e+00 9.344095419475045e+03 + 18840 1.018482437018722e+00 -5.989938437975324e+00 -5.977918419256522e+00 3.772785790077438e+00 4.841806597652685e+00 9.149375188215190e+03 + 18860 9.771942032073392e-01 -5.914949470940913e+00 -6.041888128547916e+00 4.172042437527670e+00 4.443141021854482e+00 9.346062640831899e+03 + 18880 1.048014251648741e+00 -6.010886101681797e+00 -5.998413696642849e+00 3.653485111244007e+00 4.725103591076094e+00 9.212193768868348e+03 + 18900 9.948691857668355e-01 -5.924438078139539e+00 -6.061753751031747e+00 4.067792393973731e+00 4.279304550694968e+00 9.407606943198860e+03 + 18920 1.097228018877286e+00 -6.073994212036475e+00 -6.018374365774182e+00 3.314278974083848e+00 4.633656738465328e+00 9.273555560378982e+03 + 18940 9.604727651457727e-01 -5.875035147051078e+00 -6.032652607391003e+00 4.355268284342964e+00 4.450204435847955e+00 9.317573308669009e+03 + 18960 1.014891530647821e+00 -5.961095309698981e+00 -6.009077034489934e+00 3.915097383430591e+00 4.639578894533026e+00 9.244943237387255e+03 + 18980 1.017096357803230e+00 -5.972085934055454e+00 -6.007292843751464e+00 3.851782611555240e+00 4.649619087829086e+00 9.239448035572042e+03 + 19000 1.020040706972445e+00 -5.987861425071889e+00 -5.996441349099570e+00 3.808242502086979e+00 4.758975250581082e+00 9.206122372545380e+03 + 19020 1.040666635284262e+00 -6.033566636366722e+00 -5.969626207786091e+00 3.544359314777569e+00 4.911515150436893e+00 9.124033750508172e+03 + 19040 9.521528385813555e-01 -5.920307450211971e+00 -5.999878651751171e+00 4.101540538909045e+00 4.644630386067314e+00 9.216672742113227e+03 + 19060 9.624443869236516e-01 -5.954738660718965e+00 -6.040314882137063e+00 3.872421061453295e+00 4.381029155193106e+00 9.341225183525752e+03 + 19080 1.023424317147171e+00 -6.068365673883448e+00 -6.031445138113728e+00 3.323011384698629e+00 4.535014814522804e+00 9.313846861580399e+03 + 19100 9.740824850460736e-01 -6.021540389358001e+00 -6.027026078239665e+00 3.571297743781515e+00 4.539798069315394e+00 9.300207646441295e+03 + 19120 9.980776972453711e-01 -6.084806905907326e+00 -6.005730822408683e+00 3.221663847419633e+00 4.675730955853209e+00 9.234659545975901e+03 + 19140 9.373356055229507e-01 -6.021856208107364e+00 -5.987050365899011e+00 3.598747899106620e+00 4.798608431253658e+00 9.177342247248929e+03 + 19160 9.330647770714388e-01 -6.039514079431144e+00 -5.987829541452365e+00 3.482369363504863e+00 4.779149978735417e+00 9.179731636603705e+03 + 19180 9.279399908615729e-01 -6.050498217414654e+00 -5.999099373972910e+00 3.388401998657284e+00 4.683542111645100e+00 9.214291062278973e+03 + 19200 8.956359087468414e-01 -6.015865301728788e+00 -6.031426882928081e+00 3.555854522869549e+00 4.466497515476295e+00 9.313781720339926e+03 + 19220 9.569270293830302e-01 -6.115187254514965e+00 -5.964530413551637e+00 3.100749465345507e+00 4.965844360227727e+00 9.108490633595966e+03 + 19240 8.844520966257453e-01 -6.008956513122878e+00 -6.019422578389401e+00 3.607265331871341e+00 4.547167565492598e+00 9.276785214468231e+03 + 19260 9.029897050268201e-01 -6.030730448663404e+00 -6.004557181896495e+00 3.515486409840979e+00 4.665777357916514e+00 9.231042658900735e+03 + 19280 1.018983730320968e+00 -6.184130405545977e+00 -5.933611034466018e+00 2.748740888637548e+00 5.187261885126050e+00 9.014384727450250e+03 + 19300 9.591863431323470e-01 -6.061579821776936e+00 -5.972696906639946e+00 3.357409119106580e+00 4.867788572409842e+00 9.133433354004321e+03 + 19320 9.711552719983121e-01 -6.027012218814872e+00 -5.981237181950013e+00 3.534113163061516e+00 4.796960508403599e+00 9.159546482986791e+03 + 19340 9.923028418288491e-01 -5.997777454272756e+00 -5.989336665041538e+00 3.739357839660138e+00 4.787826157633700e+00 9.184335272236978e+03 + 19360 9.994583303532698e-01 -5.956976990939816e+00 -5.998043122026106e+00 3.938724345400118e+00 4.702916265739391e+00 9.211042900207005e+03 + 19380 1.040183321082863e+00 -5.981503895413347e+00 -6.011691859966874e+00 3.803926581385276e+00 4.630582617346505e+00 9.252964230863028e+03 + 19400 1.031064276729721e+00 -5.947246223560530e+00 -6.014138375327945e+00 3.970634393580227e+00 4.586529306604701e+00 9.260493102345710e+03 + 19420 1.015542562780274e+00 -5.911593227093505e+00 -6.012736570413939e+00 4.182131502774967e+00 4.601350773547238e+00 9.256170522067654e+03 + 19440 1.050642916863836e+00 -5.957153891674837e+00 -6.005762993700367e+00 3.907329886313077e+00 4.628208900248257e+00 9.234727011790956e+03 + 19460 9.682214538038811e-01 -5.834160064611331e+00 -6.062280583232774e+00 4.525083492617819e+00 4.215180173157328e+00 9.409194287245553e+03 + 19480 1.092121186075386e+00 -6.021956343386993e+00 -5.988046377367127e+00 3.578285225255097e+00 4.773001497691454e+00 9.180383835619190e+03 + 19500 1.027670728036196e+00 -5.934185049998915e+00 -6.030729779393898e+00 4.058286155814476e+00 4.503911379379896e+00 9.311614558024072e+03 + 19520 1.062161845219044e+00 -5.997804589463905e+00 -6.009015528315937e+00 3.706185504911256e+00 4.641810559135704e+00 9.244764662721320e+03 + 19540 1.117039023840299e+00 -6.099630659415546e+00 -5.982817078208775e+00 3.179797419483702e+00 4.850559079616248e+00 9.164384049853026e+03 + 19560 9.767091069867175e-01 -5.919549608182157e+00 -6.018913853051975e+00 4.047346577651420e+00 4.476781707041727e+00 9.275203770249405e+03 + 19580 1.034997721242716e+00 -6.033328834092401e+00 -5.937709433386654e+00 3.545986786728953e+00 5.095048182635788e+00 9.026772920104300e+03 + 19600 9.565025938281539e-01 -5.942024003791266e+00 -5.978925803457495e+00 4.011690393216279e+00 4.799794548997748e+00 9.152442525939734e+03 + 19620 9.390049108411177e-01 -5.939599140383142e+00 -6.017209584802309e+00 3.995787255077951e+00 4.550136073045631e+00 9.269912326628093e+03 + 19640 9.620006695438020e-01 -5.992892832799843e+00 -5.933894112141241e+00 3.791555820551238e+00 5.130335604595444e+00 9.015221499549873e+03 + 19660 1.027407428633609e+00 -6.103469929183914e+00 -5.991262908377840e+00 3.122438086669169e+00 4.766748164117997e+00 9.190250860526021e+03 + 19680 9.846784328206103e-01 -6.054396100034158e+00 -5.977227555467032e+00 3.374224450895261e+00 4.817338175593383e+00 9.147277131354118e+03 + 19700 8.839014541520454e-01 -5.915294962692283e+00 -5.993856161129200e+00 4.167467680551059e+00 4.716357121820112e+00 9.198181047672770e+03 + 19720 9.608495018591175e-01 -6.033931708499466e+00 -5.967912342603042e+00 3.506619243299334e+00 4.885712658740457e+00 9.118811335229120e+03 + 19740 1.028866361051609e+00 -6.135273853070878e+00 -5.950987670745421e+00 2.980862597971826e+00 5.039062375079149e+00 9.067189359212596e+03 + 19760 9.494367656951985e-01 -6.014238447076496e+00 -5.977516032295368e+00 3.668015212303506e+00 4.878881000752067e+00 9.148131327034347e+03 + 19780 9.399650185978269e-01 -5.990139398236494e+00 -5.974373820365550e+00 3.766917835203639e+00 4.857446223053893e+00 9.138526511849472e+03 + 19800 9.597860599557870e-01 -5.997558916222217e+00 -6.039112780604921e+00 3.681185590409884e+00 4.442576870684668e+00 9.337503291294139e+03 + 19820 9.773345993131665e-01 -5.986624071091871e+00 -6.039338893057596e+00 3.755779028447766e+00 4.453082363128238e+00 9.338209024679365e+03 + 19840 1.010266887823799e+00 -5.985861805522562e+00 -6.027639598305671e+00 3.746123201757292e+00 4.506228650504142e+00 9.302114013001166e+03 + 19860 1.073892816396898e+00 -6.022204975928164e+00 -6.025639865667331e+00 3.553197915968077e+00 4.533474247538310e+00 9.295935948185475e+03 + 19880 1.001481423652326e+00 -5.866593180012009e+00 -6.018218374861289e+00 4.408924378777017e+00 4.538269046029382e+00 9.273059950641114e+03 + 19900 1.091494835304404e+00 -5.964236863214112e+00 -6.038114268929823e+00 3.927850348973171e+00 4.503634852861979e+00 9.334387523672331e+03 + 19920 1.130875539056626e+00 -6.002530982859863e+00 -5.990803193839389e+00 3.706757417825620e+00 4.774100197250673e+00 9.188838368118992e+03 + 19940 1.062489127375442e+00 -5.895341915779257e+00 -6.020795557042826e+00 4.256292226143284e+00 4.535918004119628e+00 9.280980835781798e+03 + 19960 1.049981919426291e+00 -5.877840447581205e+00 -6.003744211437261e+00 4.349204861942891e+00 4.626245966336930e+00 9.228544344282162e+03 + 19980 1.078646962288277e+00 -5.930673021987042e+00 -6.008906791788738e+00 4.067465468234571e+00 4.618235055396481e+00 9.244410822926044e+03 + 20000 1.000269908016438e+00 -5.831617690615593e+00 -6.042137572985030e+00 4.557557688092182e+00 4.348719945680363e+00 9.346858192964777e+03 + 20020 9.435750716971292e-01 -5.767197816723897e+00 -6.040478050862435e+00 4.912987715041937e+00 4.343770320638898e+00 9.341715099281502e+03 + 20040 1.062653892257728e+00 -5.966587757966392e+00 -6.022752185054109e+00 3.845342598159459e+00 4.522837766404785e+00 9.287028578227770e+03 + 20060 9.663276133721543e-01 -5.853909344397016e+00 -6.037853857225858e+00 4.481564580934558e+00 4.425326722949985e+00 9.333614329753345e+03 + 20080 9.821043619756223e-01 -5.905945493486180e+00 -5.972556055937867e+00 4.206258682912015e+00 4.823770525363204e+00 9.132975874516000e+03 + 20100 1.057813383211524e+00 -6.044439624596865e+00 -5.960436124762455e+00 3.509033030514794e+00 4.991394126063566e+00 9.095971117910480e+03 + 20120 9.746985970657231e-01 -5.943475246123540e+00 -5.994325041647893e+00 3.924154118670535e+00 4.632166723789272e+00 9.199608709595988e+03 + 20140 9.389124280805821e-01 -5.907630738676508e+00 -5.965652454722341e+00 4.164461558024364e+00 4.831291885657651e+00 9.111890501589316e+03 + 20160 9.901736844817238e-01 -5.994381659344556e+00 -5.960343115986217e+00 3.739343434450539e+00 4.934798017861681e+00 9.095683926559672e+03 + 20180 9.870685478358164e-01 -5.995679621242634e+00 -5.995794389400219e+00 3.703122199086489e+00 4.702463182565321e+00 9.204138801396401e+03 + 20200 9.808574747280039e-01 -5.989392263313140e+00 -6.049095638691884e+00 3.736015692125228e+00 4.393189671633001e+00 9.368391664273973e+03 + 20220 1.016965141764929e+00 -6.049349437971520e+00 -5.982202052586022e+00 3.431179482534074e+00 4.816750160441909e+00 9.162507160786441e+03 + 20240 9.861430814749272e-01 -6.007102407961306e+00 -6.011218332338673e+00 3.696941928853318e+00 4.673307654141236e+00 9.251510062202258e+03 + 20260 9.405936206617813e-01 -5.942195833043561e+00 -6.055781457630557e+00 3.924739429600359e+00 4.272513195903229e+00 9.389085798850740e+03 + 20280 9.805480149222873e-01 -6.002687781075884e+00 -5.989735179017092e+00 3.721844142167145e+00 4.796219987597417e+00 9.185566691048263e+03 + 20300 9.706827011806651e-01 -5.985610589325684e+00 -6.051859323420521e+00 3.744540622888489e+00 4.364130139757462e+00 9.376952047337207e+03 + 20320 1.068733059033512e+00 -6.129544708449274e+00 -6.001568710419985e+00 3.024546389674345e+00 4.759404374580209e+00 9.221891222022272e+03 + 20340 9.794570203032898e-01 -5.997048265894277e+00 -6.057933250327647e+00 3.708667107966524e+00 4.359056105429223e+00 9.395746030950391e+03 + 20360 9.770829054613281e-01 -5.993687033862550e+00 -6.009079497378258e+00 3.727072590709730e+00 4.638686683226505e+00 9.244957907243524e+03 + 20380 1.002133245790943e+00 -6.029853383618754e+00 -5.991783214986997e+00 3.550013987799178e+00 4.768618787422284e+00 9.191868217510111e+03 + 20400 9.472772142789257e-01 -5.946808075841325e+00 -5.997675630091474e+00 4.012504176806673e+00 4.720414808573737e+00 9.209913887731114e+03 + 20420 1.014192086829486e+00 -6.040777001317944e+00 -6.012451121140776e+00 3.468434014848575e+00 4.631085602241669e+00 9.255316520455894e+03 + 20440 1.050186936604881e+00 -6.085781377171626e+00 -6.014440760031966e+00 3.227857800314198e+00 4.637506663854952e+00 9.261449370507275e+03 + 20460 9.807375831300983e-01 -5.970646754460472e+00 -6.024792324392498e+00 3.802572311342199e+00 4.491660069792639e+00 9.293329017797170e+03 + 20480 9.907901984679863e-01 -5.968719470629054e+00 -6.024575060145367e+00 3.893116999479061e+00 4.572385560851847e+00 9.292605659613748e+03 + 20500 9.740540493222988e-01 -5.916287546760791e+00 -6.032040520429035e+00 4.127425946481626e+00 4.462754458963784e+00 9.315646302711850e+03 + 20520 1.043480955921285e+00 -5.981752443590510e+00 -5.996234930195419e+00 3.786266060250839e+00 4.703105381007895e+00 9.205481234825786e+03 + 20540 1.076193397646792e+00 -5.988243320817396e+00 -5.990379169641106e+00 3.770083979467131e+00 4.757819604999856e+00 9.187536436074761e+03 + 20560 1.112186467207307e+00 -6.005097502974290e+00 -6.020209458213637e+00 3.638708700495076e+00 4.551933514943231e+00 9.279199705920008e+03 + 20580 1.044174981412470e+00 -5.879908256610170e+00 -5.993803420588197e+00 4.322831372948009e+00 4.668827716166513e+00 9.198007197624062e+03 + 20600 9.975717522327996e-01 -5.793243936578589e+00 -6.007931768772957e+00 4.848455720195553e+00 4.615684964900828e+00 9.241336031333087e+03 + 20620 1.098067456508000e+00 -5.928387762087036e+00 -6.035327414136665e+00 4.059566504973487e+00 4.445502474046847e+00 9.325787161698740e+03 + 20640 1.063333505477310e+00 -5.874048520600956e+00 -6.002243562077636e+00 4.398272694232821e+00 4.662156927955171e+00 9.223930112575763e+03 + 20660 1.084801540141090e+00 -5.913090840923056e+00 -6.002826983718414e+00 4.186248134060500e+00 4.670969315506336e+00 9.225736051273207e+03 + 20680 1.021662076094505e+00 -5.838108476582249e+00 -6.049166687138635e+00 4.544955480838302e+00 4.333026574671004e+00 9.368589877607361e+03 + 20700 1.022764765296458e+00 -5.868131624538714e+00 -6.017826199171981e+00 4.368311828685547e+00 4.508742415980769e+00 9.271838690796232e+03 + 20720 1.065405369115974e+00 -5.967403109372003e+00 -5.949788644892561e+00 3.858497333347670e+00 4.959642314218191e+00 9.063528575138669e+03 + 20740 9.759238150040030e-01 -5.870851666842524e+00 -6.000352654015559e+00 4.447614702167244e+00 4.703999993606676e+00 9.218096448121722e+03 + 20760 1.010452425542852e+00 -5.958520888917298e+00 -5.995049490054967e+00 3.917538120304946e+00 4.707785239789692e+00 9.201847401234005e+03 + 20780 1.023576167188246e+00 -6.011003807764922e+00 -5.986012503698199e+00 3.638122023276601e+00 4.781625958619530e+00 9.174164093210504e+03 + 20800 1.053968797308957e+00 -6.084166244871769e+00 -5.987085684173628e+00 3.227239874031057e+00 4.784691476727997e+00 9.177436747836224e+03 + 20820 9.935676034972494e-01 -6.015652221019179e+00 -5.969644438771562e+00 3.628642187756728e+00 4.892825993103838e+00 9.124100756397323e+03 + 20840 1.005558982561341e+00 -6.049511334532268e+00 -5.969553032206277e+00 3.429620547986969e+00 4.888753493450108e+00 9.123825756249435e+03 + 20860 9.849149869967847e-01 -6.029458955252252e+00 -6.002294926689953e+00 3.545970358363884e+00 4.701950413988442e+00 9.224098724280328e+03 + 20880 1.023133857683913e+00 -6.093658219226695e+00 -6.010501351655464e+00 3.197146814970753e+00 4.674646417048433e+00 9.249335776049798e+03 + 20900 9.283506708574563e-01 -5.958665354356949e+00 -6.031748884389691e+00 3.901204885579098e+00 4.481547946491371e+00 9.314776944930894e+03 + 20920 9.728970037354627e-01 -6.026307355429102e+00 -6.009935809560459e+00 3.554194339048871e+00 4.648202288915156e+00 9.247578464827862e+03 + 20940 9.990652401259520e-01 -6.063487644739144e+00 -5.997337584166799e+00 3.405329484061499e+00 4.785173368556695e+00 9.208879601272636e+03 + 20960 9.798144692042623e-01 -6.033476138988419e+00 -6.004236514427561e+00 3.477622080060239e+00 4.645520529105967e+00 9.230076126795699e+03 + 20980 9.755689889544166e-01 -6.023493904682441e+00 -6.028323719862426e+00 3.571147175653642e+00 4.543413629478688e+00 9.304202750525485e+03 + 21000 9.644761293573554e-01 -5.999588150924776e+00 -6.004966910098013e+00 3.666669895710057e+00 4.635784228177044e+00 9.232315629382309e+03 + 21020 1.031214805769750e+00 -6.087914023844531e+00 -6.003176559557147e+00 3.190768807349337e+00 4.677344440367714e+00 9.226814293579466e+03 + 21040 9.826584091417588e-01 -6.003613028405124e+00 -5.976714239452956e+00 3.645010060191101e+00 4.799467068928585e+00 9.145710528857706e+03 + 21060 9.438143736525921e-01 -5.927599647042834e+00 -6.030985598860433e+00 4.046364630383923e+00 4.452706496122937e+00 9.312412899756817e+03 + 21080 1.006785417446187e+00 -5.995713434579613e+00 -5.991652955329818e+00 3.709523298824741e+00 4.732839199034201e+00 9.191440561035070e+03 + 21100 1.032536243899388e+00 -5.999799998980365e+00 -5.979895493076684e+00 3.682831218019327e+00 4.797125971130594e+00 9.155429641165165e+03 + 21120 9.932779087044918e-01 -5.894547195768276e+00 -6.024273073278764e+00 4.294787315886884e+00 4.549881252206993e+00 9.291685203283479e+03 + 21140 1.042949984981962e+00 -5.916846588439665e+00 -6.001628564479260e+00 4.125932828010661e+00 4.639101601622914e+00 9.222015978352098e+03 + 21160 1.033527544230416e+00 -5.854924193430558e+00 -5.978771673861806e+00 4.538309335569391e+00 4.827157937597506e+00 9.151962310151646e+03 + 21180 1.069629222611741e+00 -5.873617491857473e+00 -6.028013657883055e+00 4.387348922961035e+00 4.500782244912666e+00 9.303206413504528e+03 + 21200 1.069554727962755e+00 -5.852884303326673e+00 -6.048313171143107e+00 4.519290630115002e+00 4.397107828593484e+00 9.365936838385702e+03 + 21220 1.162437437752148e+00 -5.983886239561020e+00 -6.017301182400144e+00 3.845239331869627e+00 4.653365559141685e+00 9.270242835367450e+03 + 21240 1.110927368371439e+00 -5.913093429662656e+00 -6.030391969691578e+00 4.172126778072816e+00 4.498580409336339e+00 9.310580942004379e+03 + 21260 1.076156925729344e+00 -5.879327709136879e+00 -6.056924509322673e+00 4.339480739768585e+00 4.319692430085749e+00 9.392579533432981e+03 + 21280 1.070917955958969e+00 -5.898186156484973e+00 -6.031325659822243e+00 4.169117056077584e+00 4.404609424643428e+00 9.313422772339565e+03 + 21300 1.096514350867134e+00 -5.964242122462515e+00 -5.965856745133010e+00 3.852627379552065e+00 4.843355966316033e+00 9.112523989324796e+03 + 21320 1.067116952072880e+00 -5.949828696643183e+00 -5.983683640868516e+00 3.961301917667972e+00 4.766901588890426e+00 9.167008976229488e+03 + 21340 9.733042516427146e-01 -5.835069249974747e+00 -5.947280280487305e+00 4.612307680114125e+00 4.967974578310169e+00 9.055851518306297e+03 + 21360 1.027577094914803e+00 -5.934853032564371e+00 -5.968813881455328e+00 4.021935460196642e+00 4.826927010440385e+00 9.121532734448489e+03 + 21380 1.072609431119996e+00 -6.017543317914700e+00 -5.945600472818894e+00 3.620825948338215e+00 5.033932897997630e+00 9.050796974970299e+03 + 21400 9.898946527274978e-01 -5.910041399240425e+00 -6.033861952900703e+00 4.166328072670215e+00 4.455331292384146e+00 9.321277870693659e+03 + 21420 1.002618689541760e+00 -5.943549275291296e+00 -6.058161470521888e+00 4.037367424121746e+00 4.379246462927791e+00 9.396465339080180e+03 + 21440 1.022523196262328e+00 -5.991500822278101e+00 -6.015991109776595e+00 3.798009117407330e+00 4.657382096731232e+00 9.266207608493725e+03 + 21460 1.059089874788827e+00 -6.066078896928149e+00 -5.990081880932252e+00 3.311912550245063e+00 4.748299176593717e+00 9.186645376663882e+03 + 21480 1.054238961730728e+00 -6.077712979255447e+00 -6.017636717937188e+00 3.262195039965717e+00 4.607162229226548e+00 9.271264107581936e+03 + 21500 9.117177860077734e-01 -5.883921577482081e+00 -6.014824999103746e+00 4.325280397932168e+00 4.573612693741538e+00 9.262617603510133e+03 + 21520 1.010417205342929e+00 -6.044304872359831e+00 -6.001938698005755e+00 3.443219211531480e+00 4.686492340816871e+00 9.222972778370078e+03 + 21540 1.031517411384685e+00 -6.088394098247186e+00 -5.975013701558337e+00 3.249523428909468e+00 4.900571212256517e+00 9.140519997862086e+03 + 21560 9.802114896980247e-01 -6.023301455488809e+00 -5.987417889694369e+00 3.631336888261532e+00 4.837385876017068e+00 9.178455184561197e+03 + 21580 9.523865789964984e-01 -5.990036382421643e+00 -6.036381431848802e+00 3.702501173525748e+00 4.436380727841776e+00 9.329074912816708e+03 + 21600 9.618832287670501e-01 -6.009764519970290e+00 -5.998858361310391e+00 3.661114967047775e+00 4.723739817795517e+00 9.213557308102641e+03 + 21620 9.991822204948586e-01 -6.069333989204245e+00 -6.012598936711749e+00 3.281312772338182e+00 4.607094223471096e+00 9.255787206887571e+03 + 21640 9.975387108981174e-01 -6.069686768196506e+00 -5.959094625635263e+00 3.336562171232038e+00 4.971599367897445e+00 9.091906516735027e+03 + 21660 9.176883502925216e-01 -5.948980258039859e+00 -6.043294795370389e+00 3.937871652254803e+00 4.396302983775419e+00 9.350411904248975e+03 + 21680 1.037480589102382e+00 -6.120968083484707e+00 -5.968890150255713e+00 3.053663895513688e+00 4.926918922098682e+00 9.121798567109558e+03 + 21700 1.017693248961251e+00 -6.079083182585039e+00 -6.013947341096353e+00 3.269668584615350e+00 4.643688666182284e+00 9.259919286489428e+03 + 21720 9.784267063155418e-01 -6.001117367213049e+00 -5.991560774637366e+00 3.715632779882378e+00 4.770508213329871e+00 9.191147402971383e+03 + 21740 1.008826176109950e+00 -6.016998960806224e+00 -5.975838622257434e+00 3.672092229815318e+00 4.908441263304280e+00 9.143009594972627e+03 + 21760 1.057957010716708e+00 -6.047520604583877e+00 -5.974675309421018e+00 3.448097911739364e+00 4.866386869337496e+00 9.139464789237909e+03 + 21780 9.857884497081655e-01 -5.893655433098539e+00 -6.020546630397257e+00 4.259868270578128e+00 4.531239379339565e+00 9.280243038816960e+03 + 21800 1.065179958817701e+00 -5.970910252406604e+00 -6.006105104891636e+00 3.867233776365414e+00 4.665139487010541e+00 9.235795396948753e+03 + 21820 1.060341471203150e+00 -5.930967415214470e+00 -6.017087578744073e+00 4.067489978088696e+00 4.572974672049476e+00 9.269567944167715e+03 + 21840 1.062198680552602e+00 -5.910844443134891e+00 -6.040499018472351e+00 4.138637361855372e+00 4.394140726286985e+00 9.341778960706453e+03 + 21860 1.071349459120031e+00 -5.912297703179904e+00 -6.038503742565334e+00 4.137643532929964e+00 4.412948924457350e+00 9.335614050126283e+03 + 21880 9.921804189413620e-01 -5.794255659959075e+00 -6.032695035148310e+00 4.814590726099097e+00 4.445434935388448e+00 9.317651938648412e+03 + 21900 1.030933188808533e+00 -5.857939950527225e+00 -5.985168744207794e+00 4.465382652877279e+00 4.734815230971265e+00 9.171543263581410e+03 + 21920 1.087784855516030e+00 -5.954498888403711e+00 -6.028302886128120e+00 3.896412090381455e+00 4.472618114316157e+00 9.304115210492164e+03 + 21940 1.019372206528466e+00 -5.873423736170621e+00 -6.001249277681659e+00 4.426888385923693e+00 4.692894345628693e+00 9.220856434609326e+03 + 21960 1.005064329583877e+00 -5.880187997663567e+00 -6.038125488443774e+00 4.249357550793266e+00 4.342456037985607e+00 9.334433809838858e+03 + 21980 1.075590252776410e+00 -6.017467360143520e+00 -5.984017293280871e+00 3.614421480089248e+00 4.806496940395697e+00 9.168044221181342e+03 + 22000 9.791842540399127e-01 -5.910893630165966e+00 -5.999990913893009e+00 4.153733472935152e+00 4.642123082014378e+00 9.217017459902554e+03 + 22020 1.078276493899278e+00 -6.092097855927024e+00 -5.960477442012960e+00 3.233857554953847e+00 4.989642339841625e+00 9.096104996897084e+03 + 22040 9.946238097588608e-01 -5.996268955262110e+00 -6.031266671234464e+00 3.706267606356142e+00 4.505305305363844e+00 9.313279354901801e+03 + 22060 9.863429011588278e-01 -6.007988761806122e+00 -6.008849202428545e+00 3.669029130642902e+00 4.664088347436194e+00 9.244252909920553e+03 + 22080 1.014110122613598e+00 -6.066710450700308e+00 -6.026594965597335e+00 3.320255272978876e+00 4.550604596291404e+00 9.298875735232668e+03 + 22100 9.635746292318319e-01 -6.004607018160431e+00 -6.025035674097280e+00 3.662145872559921e+00 4.544841368846241e+00 9.294063866334929e+03 + 22120 9.756423201190462e-01 -6.030219494163190e+00 -6.005196959354591e+00 3.494781540305620e+00 4.638464807401343e+00 9.232979094433753e+03 + 22140 9.781356968218186e-01 -6.036788409492193e+00 -6.011170967323522e+00 3.515071815672006e+00 4.662171132890879e+00 9.251355786874048e+03 + 22160 9.773806029344771e-01 -6.035621433563411e+00 -5.968222151680054e+00 3.528900864758814e+00 4.915917971338214e+00 9.119774347634357e+03 + 22180 9.873137347130815e-01 -6.047992354179838e+00 -5.970940039230413e+00 3.443251160958964e+00 4.885697477205763e+00 9.128058866293246e+03 + 22200 9.433788662083131e-01 -5.976718640691713e+00 -6.030278506159959e+00 3.810206589008355e+00 4.502657553127293e+00 9.310210493666234e+03 + 22220 1.002202782726228e+00 -6.056621195965553e+00 -5.987791228584612e+00 3.398155433633847e+00 4.793387757738240e+00 9.179618695345227e+03 + 22240 1.045122163464989e+00 -6.110949579240421e+00 -5.995108964808876e+00 3.086447118241544e+00 4.751621852584622e+00 9.202050882342955e+03 + 22260 1.032069982609295e+00 -6.082048895281526e+00 -6.008549811889415e+00 3.224977830209054e+00 4.647020940992954e+00 9.243325747453144e+03 + 22280 9.488492854565588e-01 -5.947876096516975e+00 -6.028210992060165e+00 4.001492710907394e+00 4.540197308913486e+00 9.303870597169464e+03 + 22300 1.022933068185239e+00 -6.047374766531158e+00 -6.015438072648855e+00 3.467186927507160e+00 4.650572365966749e+00 9.264499143348086e+03 + 22320 1.013649306702181e+00 -6.022835324079803e+00 -6.017814666505347e+00 3.554289745009737e+00 4.583119137746509e+00 9.271825300975739e+03 + 22340 1.021903390132573e+00 -6.022701364889643e+00 -6.004916882618241e+00 3.604623772061068e+00 4.706745021403194e+00 9.232131730126526e+03 + 22360 1.012739045580087e+00 -5.995756241031027e+00 -5.973393793525524e+00 3.717661834500649e+00 4.846070468654819e+00 9.135549941828902e+03 + 22380 1.010190828357459e+00 -5.975399110851088e+00 -6.000114424650384e+00 3.838577960625002e+00 4.696658804106994e+00 9.217368615969996e+03 + 22400 9.880203182961083e-01 -5.920467293067025e+00 -5.982862634910545e+00 4.113524516532355e+00 4.755240808018917e+00 9.164505555565565e+03 + 22420 9.897084656321042e-01 -5.892123913270458e+00 -6.018992393641823e+00 4.257475638325859e+00 4.528977191199597e+00 9.275417911259763e+03 + 22440 1.071792787752470e+00 -5.974080398413129e+00 -5.970799873845892e+00 3.800270611356679e+00 4.819107891081288e+00 9.127619543840616e+03 + 22460 1.061269894937528e+00 -5.909992261626056e+00 -6.026280229392357e+00 4.111674680589880e+00 4.443931174170925e+00 9.297886780924415e+03 + 22480 1.017486846457113e+00 -5.799625911062781e+00 -6.045686551027796e+00 4.789648785615475e+00 4.376730513175393e+00 9.357823538952111e+03 + 22500 1.150917520413689e+00 -5.961445657331696e+00 -6.022149601380879e+00 3.894672483520631e+00 4.546101042885240e+00 9.285158609210597e+03 + 22520 1.088721251061558e+00 -5.846850275644146e+00 -6.055708996639575e+00 4.482440596607650e+00 4.283141499869277e+00 9.388797684589230e+03 + 22540 1.134036404892634e+00 -5.906985870378605e+00 -6.009617519884742e+00 4.188178044451480e+00 4.598851230790808e+00 9.246566159902792e+03 + 22560 1.110402598658546e+00 -5.876964244023634e+00 -6.042903493646666e+00 4.350953311061009e+00 4.398104460709675e+00 9.349231875310472e+03 + 22580 1.127121746776977e+00 -5.921967624334484e+00 -6.025388875661401e+00 4.091775324358464e+00 4.497914494852389e+00 9.295154677335213e+03 + 22600 1.119081371964110e+00 -5.945095749626113e+00 -6.010954108234255e+00 4.013430903879822e+00 4.635262017203816e+00 9.250688851743560e+03 + 22620 1.083575986922793e+00 -5.938036943466445e+00 -5.991486865382374e+00 4.071656756710355e+00 4.764739033720404e+00 9.190893418647351e+03 + 22640 1.023425350867024e+00 -5.889817555634862e+00 -5.979574038499083e+00 4.289643349288475e+00 4.774247734911291e+00 9.154393592083175e+03 + 22660 1.016049366706371e+00 -5.910594642931821e+00 -6.018363912409598e+00 4.194848991501653e+00 4.576021168919703e+00 9.273494421174470e+03 + 22680 1.019362715649544e+00 -5.941671153670428e+00 -6.053775143749082e+00 4.002753316952152e+00 4.359034857884120e+00 9.382855435500314e+03 + 22700 1.009147208958071e+00 -5.946887610575694e+00 -6.050604580039914e+00 3.929319252235040e+00 4.333760363422339e+00 9.373065408314136e+03 + 22720 9.917939204053360e-01 -5.939725427232059e+00 -6.039452249715718e+00 4.015311498394498e+00 4.442664651017422e+00 9.338559838362818e+03 + 22740 9.917983440078565e-01 -5.955244795444909e+00 -5.977281657003357e+00 3.950073152599922e+00 4.823534083338011e+00 9.147417428729206e+03 + 22760 9.934982793514509e-01 -5.968303801051256e+00 -5.995861864421935e+00 3.898795239613080e+00 4.740552575142114e+00 9.204343814396707e+03 + 22780 9.959015940190978e-01 -5.981246746080947e+00 -6.010751541374797e+00 3.772277637418077e+00 4.602856536988476e+00 9.250101310686056e+03 + 22800 1.067864695646853e+00 -6.099386971394566e+00 -5.995166889645763e+00 3.170890444839320e+00 4.769338282246469e+00 9.202220161996514e+03 + 22820 9.829507758994138e-01 -5.986911488436851e+00 -5.978442797388142e+00 3.793468680330104e+00 4.842097214857494e+00 9.150985888901510e+03 + 22840 1.011033585730668e+00 -6.038924600947125e+00 -5.962539641825717e+00 3.540221251749691e+00 4.978835507559038e+00 9.102405955831222e+03 + 22860 9.712546253928072e-01 -5.988815276776822e+00 -6.031471855858626e+00 3.689635540153840e+00 4.444694861981839e+00 9.313909945226049e+03 + 22880 1.006454689527280e+00 -6.049567795360125e+00 -5.988920296720647e+00 3.433190406984386e+00 4.781437729342353e+00 9.183061211793434e+03 + 22900 9.386964559902257e-01 -5.955594453236765e+00 -5.999689384080467e+00 3.914822107841274e+00 4.661622191268242e+00 9.216106597189138e+03 + 22920 1.007394457245683e+00 -6.061847621554983e+00 -6.012327536351181e+00 3.363278260553941e+00 4.647630253002590e+00 9.254937766312627e+03 + 22940 9.856526122832221e-01 -6.034066044950441e+00 -6.004231947329220e+00 3.554380557368126e+00 4.725692562720859e+00 9.230031823235486e+03 + 22960 9.277948979763895e-01 -5.951212396230093e+00 -5.999064466929994e+00 3.946278199114185e+00 4.671504204071347e+00 9.214174265640529e+03 + 22980 9.849845352007680e-01 -6.033691290143869e+00 -5.988549144811508e+00 3.555269295324171e+00 4.814482479547006e+00 9.181943358955863e+03 + 23000 9.593695194668642e-01 -5.990161174826070e+00 -6.042727478124340e+00 3.740217058008258e+00 4.438373209860441e+00 9.348693846786753e+03 + 23020 9.725084319887580e-01 -6.002389754789930e+00 -6.049871289363112e+00 3.621792119668010e+00 4.349145800405072e+00 9.370781724633902e+03 + 23040 9.898607363961632e-01 -6.017834627085242e+00 -6.009095379658098e+00 3.595951019431225e+00 4.646133130552053e+00 9.244998541093833e+03 + 23060 9.811426977747457e-01 -5.989916236214349e+00 -6.048329802687061e+00 3.672607010378285e+00 4.337187272221772e+00 9.366003662076519e+03 + 23080 9.741572166262803e-01 -5.960423297079621e+00 -6.010949377970067e+00 3.889171744034374e+00 4.599043168675684e+00 9.250676319587432e+03 + 23100 1.012521286047647e+00 -5.992948362440125e+00 -6.005821413047384e+00 3.701821779981683e+00 4.627902731296657e+00 9.234928075040900e+03 + 23120 1.033441909342704e+00 -5.993466095531886e+00 -6.016665799834858e+00 3.737451449511797e+00 4.604235157261493e+00 9.268278304532692e+03 + 23140 9.839719562834255e-01 -5.890483385032412e+00 -6.021384655078157e+00 4.259201109391816e+00 4.507545759883075e+00 9.282802283237195e+03 + 23160 1.026149895686381e+00 -5.924878627775872e+00 -6.046219349490654e+00 4.044858561377625e+00 4.348101359875349e+00 9.359483789355767e+03 + 23180 1.028697724661663e+00 -5.904062481675901e+00 -6.043329338090022e+00 4.204983137031388e+00 4.405291296025125e+00 9.350535760772420e+03 + 23200 9.980700119762436e-01 -5.840127364905873e+00 -6.076029806657210e+00 4.478516899961652e+00 4.123928573640600e+00 9.451900233429831e+03 + 23220 1.058994619633527e+00 -5.919345476709426e+00 -6.017838613992297e+00 4.168795971461033e+00 4.603233135419054e+00 9.271868556231011e+03 + 23240 1.031573877085271e+00 -5.875266293667829e+00 -5.998217711288674e+00 4.339147528162528e+00 4.633141461513252e+00 9.211571431317750e+03 + 23260 1.102825573245005e+00 -5.983738132594798e+00 -5.949134346531535e+00 3.863028937651286e+00 5.061729232145133e+00 9.061557750696631e+03 + 23280 1.045748094352845e+00 -5.908666347075487e+00 -5.987616138066322e+00 4.183209929465819e+00 4.729868012155770e+00 9.179022870235434e+03 + 23300 1.019932737237722e+00 -5.888847334362409e+00 -5.975519434104493e+00 4.306510626363432e+00 4.808826017180297e+00 9.142035954516321e+03 + 23320 1.076023815098867e+00 -5.999473789687279e+00 -5.961668537275158e+00 3.729108550553048e+00 4.946192160247353e+00 9.099738705580121e+03 + 23340 9.897645344163664e-01 -5.909750207532914e+00 -6.037025754741103e+00 4.177027002458995e+00 4.446191114562295e+00 9.331026448331851e+03 + 23360 1.031551352684153e+00 -6.017780762340863e+00 -5.975994869735930e+00 3.633175452541894e+00 4.873116514225400e+00 9.143498879736911e+03 + 23380 9.858864315093101e-01 -5.996644894474031e+00 -6.010268311654070e+00 3.750106788288680e+00 4.671879018623899e+00 9.248602736459068e+03 + 23400 1.001463710505521e+00 -6.059715796838573e+00 -5.997178557384169e+00 3.411405585371386e+00 4.770504091925101e+00 9.208386622632825e+03 + 23420 9.272625447238150e-01 -5.979300009921445e+00 -5.987719764977788e+00 3.868219897412903e+00 4.819872360926496e+00 9.179384970901743e+03 + 23440 9.790489579046698e-01 -6.071663597663365e+00 -6.017463239992027e+00 3.315125456262189e+00 4.626352297489250e+00 9.270739234005696e+03 + 23460 9.498444317901912e-01 -6.037071217677043e+00 -6.029516770523903e+00 3.519351028086443e+00 4.562729832686690e+00 9.307889742652553e+03 + 23480 9.587451758153004e-01 -6.053120840798645e+00 -6.006499058858436e+00 3.403503749548825e+00 4.671213236146944e+00 9.237028700563680e+03 + 23500 9.580971217050270e-01 -6.050669376979902e+00 -6.003372098162060e+00 3.386329065201100e+00 4.657917359403393e+00 9.227420406352667e+03 + 23520 9.618333854857086e-01 -6.051226744828899e+00 -5.987168060212904e+00 3.484344524877296e+00 4.852179404991750e+00 9.177689260641102e+03 + 23540 9.256909825770875e-01 -5.988130663443041e+00 -6.013616897643071e+00 3.737973401501503e+00 4.591627500742938e+00 9.258892346360060e+03 + 23560 9.388474676000665e-01 -5.994663789035952e+00 -6.013648492429573e+00 3.659408208648807e+00 4.550395103889278e+00 9.258995664711287e+03 + 23580 1.033284476206907e+00 -6.118741274703321e+00 -5.981643977154798e+00 3.037711113451839e+00 4.824945011713691e+00 9.160792645420865e+03 + 23600 9.519040455179578e-01 -5.980089820255312e+00 -5.999916908400648e+00 3.785027667215040e+00 4.671177458852547e+00 9.216796751694106e+03 + 23620 9.510668118423510e-01 -5.960526742228542e+00 -5.991342513987050e+00 3.904037397892837e+00 4.727088467730221e+00 9.190417703350557e+03 + 23640 9.704996060251925e-01 -5.966749573255314e+00 -5.966868434022453e+00 3.944081522410401e+00 4.943399005491838e+00 9.115594267495035e+03 + 23660 1.036087641881834e+00 -6.039445002027708e+00 -5.975949467243177e+00 3.513120831014192e+00 4.877722017649218e+00 9.143369609065048e+03 + 23680 1.015852972346701e+00 -5.986689522443347e+00 -5.994056703826891e+00 3.774296722845871e+00 4.731993227273925e+00 9.198816404600164e+03 + 23700 1.057937618686519e+00 -6.028660309030625e+00 -5.981268215407511e+00 3.529025933235599e+00 4.801158668722306e+00 9.159634717256593e+03 + 23720 1.038624978041034e+00 -5.983225462523315e+00 -6.014821956745623e+00 3.820556958933788e+00 4.639124999567619e+00 9.262555526581698e+03 + 23740 1.073526975972904e+00 -6.022254942842240e+00 -6.002423181036693e+00 3.530249124822784e+00 4.644126170065451e+00 9.224485996391422e+03 + 23760 1.084856207923616e+00 -6.032507058155222e+00 -5.992586169092958e+00 3.549181051059947e+00 4.778412973793083e+00 9.194297872983710e+03 + 23780 9.829457539641898e-01 -5.880809830170332e+00 -6.000033499784257e+00 4.343334773172973e+00 4.658734012446571e+00 9.217139005390751e+03 + 23800 1.034422900736371e+00 -5.959025052083293e+00 -5.984580144561593e+00 3.887999272833734e+00 4.741257977185553e+00 9.169781637771348e+03 + 23820 1.031886180157727e+00 -5.959416208015627e+00 -6.034136432326788e+00 3.886796221063539e+00 4.457741130151510e+00 9.322133684205193e+03 + 23840 9.951000712718758e-01 -5.913518452648532e+00 -6.040119713245875e+00 4.129335276720804e+00 4.402371246889094e+00 9.340620039053312e+03 + 23860 1.017771427992971e+00 -5.961577581985477e+00 -6.039937451346551e+00 3.901020262927456e+00 4.451065766905569e+00 9.340046665981188e+03 + 23880 9.695564443225816e-01 -5.911934511938344e+00 -6.025563753982830e+00 4.174713523118706e+00 4.522236831230891e+00 9.295689381826751e+03 + 23900 1.017922555481183e+00 -6.014934897600943e+00 -5.986808715496805e+00 3.652990556827992e+00 4.814495446982569e+00 9.176576109159181e+03 + 23920 9.862784642173218e-01 -6.014207631817699e+00 -5.974217975416686e+00 3.632495870917814e+00 4.862122666351761e+00 9.138033402900586e+03 + 23940 9.330227206985735e-01 -5.993666234544509e+00 -5.993285881035311e+00 3.761297248232474e+00 4.763481296941806e+00 9.196457316476412e+03 + 23960 9.254457258346219e-01 -6.051594061061197e+00 -6.016324576480473e+00 3.427856633576790e+00 4.630379471974402e+00 9.267249535778268e+03 + 23980 9.735717043445666e-01 -6.175742417946459e+00 -5.976136574820107e+00 2.712806761154854e+00 4.858974401290765e+00 9.143959595157115e+03 + 24000 9.461904016993739e-01 -6.162362801842079e+00 -5.942708611897298e+00 2.822091742574888e+00 5.083380092613861e+00 9.042024653545230e+03 + 24020 8.827740075669109e-01 -6.074994615589641e+00 -5.965608107864369e+00 3.327661798667717e+00 4.955776053533588e+00 9.111770632495462e+03 + 24040 8.694914430515757e-01 -6.049834139684096e+00 -5.997112163632315e+00 3.446530054846037e+00 4.749267800034789e+00 9.208196656681861e+03 + 24060 9.770259115146306e-01 -6.196234744784419e+00 -5.951866099524890e+00 2.630889104396634e+00 5.034091681402490e+00 9.069898493160508e+03 + 24080 9.500184915643773e-01 -6.137244672977647e+00 -5.997965708629570e+00 2.983471802648181e+00 4.783233169284918e+00 9.210809015067754e+03 + 24100 9.420962014318667e-01 -6.101469350232633e+00 -6.006033130706827e+00 3.105708382404392e+00 4.653717923628812e+00 9.235592766975195e+03 + 24120 9.005996509335893e-01 -6.012477049791240e+00 -6.029872390385022e+00 3.597806074122518e+00 4.497919336512764e+00 9.308968757018341e+03 + 24140 9.010626127323625e-01 -5.982477216570068e+00 -5.989285181675137e+00 3.748674817132712e+00 4.709582427970213e+00 9.184171513823811e+03 + 24160 9.340095060498078e-01 -5.996126183762268e+00 -5.988685410335099e+00 3.687672227795691e+00 4.730398300270459e+00 9.182352736068940e+03 + 24180 1.035111043595285e+00 -6.111302657768197e+00 -5.988778468249215e+00 3.090053368594201e+00 4.793606225369240e+00 9.182638767890978e+03 + 24200 1.010220698003109e+00 -6.044298089255832e+00 -5.975470784254828e+00 3.522563701777810e+00 4.917780738084607e+00 9.141859723944701e+03 + 24220 9.983542603191261e-01 -6.000767529831013e+00 -5.992122209290900e+00 3.736755116293572e+00 4.786397884693931e+00 9.192859081593504e+03 + 24240 1.016583207696205e+00 -6.005094356643840e+00 -5.970443641816342e+00 3.718750405015055e+00 4.917720171735339e+00 9.126531775333135e+03 + 24260 1.022579859651586e+00 -5.994450041568252e+00 -5.976274265585198e+00 3.778326428489127e+00 4.882694546876062e+00 9.144330910439183e+03 + 24280 1.014956747587736e+00 -5.966298557591905e+00 -5.959606009886473e+00 3.889281573583992e+00 4.927711218176997e+00 9.093475534569921e+03 + 24300 1.005012926340284e+00 -5.935451858044829e+00 -6.056797693668470e+00 4.031581558630239e+00 4.334794992271921e+00 9.392212664331517e+03 + 24320 1.050812889178244e+00 -5.992316416034029e+00 -6.007485130162472e+00 3.786865558077262e+00 4.699764454200819e+00 9.240046012263678e+03 + 24340 1.052751976300991e+00 -5.989337970114093e+00 -6.008636429419245e+00 3.706146593502732e+00 4.595331853745623e+00 9.243588463416218e+03 + 24360 1.020140407111782e+00 -5.940444061288757e+00 -5.964522902994716e+00 3.971568843392322e+00 4.833304408127990e+00 9.108444583215429e+03 + 24380 1.004476407976813e+00 -5.917642030958069e+00 -6.002092366228823e+00 4.118010119754702e+00 4.633083225982882e+00 9.223441691313181e+03 + 24400 9.682290933549051e-01 -5.866504879326892e+00 -6.033010760154932e+00 4.427329357197440e+00 4.471226822781056e+00 9.318645430569970e+03 + 24420 1.106115694556303e+00 -6.077447382232939e+00 -6.002388163695597e+00 3.245260593546187e+00 4.676262241764134e+00 9.224402761741734e+03 + 24440 1.058058242281482e+00 -6.018222460160856e+00 -6.045898858625310e+00 3.560866388236781e+00 4.401944225345067e+00 9.358495826767145e+03 + 24460 1.042267008513897e+00 -6.018523225681511e+00 -5.987975837921740e+00 3.584047117655611e+00 4.759454945365192e+00 9.180170621034884e+03 + 24480 8.925470910252520e-01 -5.826080163260807e+00 -6.044688016840915e+00 4.659401622998088e+00 4.404121498285098e+00 9.354724363514482e+03 + 24500 1.010885171849571e+00 -6.036783431494696e+00 -6.005133100398313e+00 3.477245382619505e+00 4.658986481647840e+00 9.232815281754381e+03 + 24520 1.000192092925360e+00 -6.062621912243226e+00 -5.998938392836215e+00 3.322692004629349e+00 4.688372628057186e+00 9.213797462472592e+03 + 24540 9.496901712257360e-01 -6.026168831452337e+00 -5.978729232232556e+00 3.580368102496390e+00 4.852773622470629e+00 9.151852236469351e+03 + 24560 9.349994211157662e-01 -6.036811959563241e+00 -5.995365458101583e+00 3.485507649975990e+00 4.723499875194205e+00 9.202844637446275e+03 + 24580 9.594872195241546e-01 -6.096634286460734e+00 -5.997022123165960e+00 3.168506738203195e+00 4.740495194774237e+00 9.207903964021212e+03 + 24600 9.358544131224551e-01 -6.076735174192317e+00 -6.010444660283974e+00 3.266325980765547e+00 4.646976370051126e+00 9.249144290688375e+03 + 24620 8.793918590744703e-01 -5.998620939868289e+00 -6.009058734772514e+00 3.702464222521960e+00 4.642528788938360e+00 9.244885923350712e+03 + 24640 9.674796517535932e-01 -6.127324090752232e+00 -5.967901047524539e+00 3.025991535915402e+00 4.941423320765022e+00 9.118789808488358e+03 + 24660 9.272482877804114e-01 -6.059013047479327e+00 -6.028383756566683e+00 3.338425938815589e+00 4.514304067103444e+00 9.304400717487002e+03 + 24680 9.737364887749883e-01 -6.116164012234549e+00 -5.990895767685797e+00 3.046696682249796e+00 4.766006327646926e+00 9.189105913326261e+03 + 24700 9.546602890124146e-01 -6.073396841626093e+00 -5.948036984103352e+00 3.307859737983236e+00 5.027695439254074e+00 9.058223685346475e+03 + 24720 9.832679866205666e-01 -6.096846566116435e+00 -5.960973696232048e+00 3.207534602400585e+00 4.987737647535395e+00 9.097631621271865e+03 + 24740 9.529922521218857e-01 -6.031820128561122e+00 -5.988200428581051e+00 3.549567357472303e+00 4.800038424884631e+00 9.180861983816398e+03 + 24760 1.036792047074321e+00 -6.137162173427456e+00 -5.950839395590419e+00 2.998072075224386e+00 5.067966298921332e+00 9.066761137572857e+03 + 24780 9.904124243112699e-01 -6.050418697482343e+00 -5.984693812984037e+00 3.452079023875175e+00 4.829481481557446e+00 9.170116887276052e+03 + 24800 9.792890160642059e-01 -6.021112177883894e+00 -5.985531448149162e+00 3.608845123100123e+00 4.813155179337080e+00 9.172673570066894e+03 + 24820 9.129681458441139e-01 -5.911114654388607e+00 -6.062104369024154e+00 4.116292930374581e+00 4.249286623354442e+00 9.408691636209087e+03 + 24840 1.000443111894707e+00 -6.030816371374836e+00 -5.978089379319548e+00 3.533106823965638e+00 4.835873371822753e+00 9.149908052214265e+03 + 24860 9.433365677920791e-01 -5.935414945143329e+00 -6.005012458767000e+00 4.138149598343958e+00 4.738509904936406e+00 9.232417950027228e+03 + 24880 1.039633429264508e+00 -6.066763472567557e+00 -6.012948455084690e+00 3.293692687400208e+00 4.602706845633868e+00 9.256862007623395e+03 + 24900 1.046654868050936e+00 -6.067824313299510e+00 -6.032086510570363e+00 3.351935675274722e+00 4.557147668952580e+00 9.315831426737019e+03 + 24920 9.798090665952561e-01 -5.964326730862574e+00 -6.058145222665829e+00 3.879416457529528e+00 4.340696159230550e+00 9.396396538489462e+03 + 24940 1.002469710022253e+00 -5.995405415392223e+00 -6.019520255781652e+00 3.696641879978579e+00 4.558170734702986e+00 9.277091772472982e+03 + 24960 9.793523473480422e-01 -5.958876118003082e+00 -6.013686293810457e+00 3.922841050409297e+00 4.608112539076059e+00 9.259102041762973e+03 + 24980 9.766590227129539e-01 -5.952998822635317e+00 -5.993001939619436e+00 3.856720895784525e+00 4.627016807599366e+00 9.195572980313684e+03 + 25000 1.020959816205742e+00 -6.017090485402843e+00 -5.950818931041267e+00 3.605634771342587e+00 4.986176291976646e+00 9.066667709933334e+03 + 25020 9.553022473356746e-01 -5.914670279099575e+00 -5.969217055584691e+00 4.215995262780355e+00 4.902779231116434e+00 9.122763783131621e+03 + 25040 1.005679102133422e+00 -5.982474229928066e+00 -5.988865466364407e+00 3.777606727126918e+00 4.740907258468805e+00 9.182875490640034e+03 + 25060 1.042805791167808e+00 -6.027685552991912e+00 -5.978330413467694e+00 3.505804533606453e+00 4.789209382437667e+00 9.150638903832736e+03 + 25080 1.035880321145391e+00 -6.005860261386481e+00 -5.991434782667788e+00 3.633636554050326e+00 4.716469885188674e+00 9.190782468987978e+03 + 25100 1.020331486659574e+00 -5.969355480348847e+00 -6.010545859659783e+00 3.909419132344935e+00 4.672897600150943e+00 9.249442225689534e+03 + 25120 9.979429304773371e-01 -5.921363184317777e+00 -6.036630371074986e+00 4.104502372420211e+00 4.442620348520808e+00 9.329861671823552e+03 + 25140 1.064351319742265e+00 -6.003068221208171e+00 -6.089040767736607e+00 3.602278065148408e+00 4.108610398773552e+00 9.492412530308518e+03 + 25160 1.021146818493982e+00 -5.926075073891381e+00 -6.013816999393066e+00 4.114035196192441e+00 4.610207481942675e+00 9.259510954001786e+03 + 25180 1.062418251837265e+00 -5.974997132322318e+00 -5.988641448992002e+00 3.862044301905011e+00 4.783696524136504e+00 9.182203731458512e+03 + 25200 1.063823771219057e+00 -5.966559792012468e+00 -6.038700589495576e+00 3.861853733241042e+00 4.447610110340706e+00 9.336221843554262e+03 + 25220 1.090892318495591e+00 -5.999676358971332e+00 -6.044614174187076e+00 3.649544178440481e+00 4.391504289367244e+00 9.354529036423701e+03 + 25240 1.016664578847220e+00 -5.890764901671462e+00 -6.076146488675689e+00 4.259093566001685e+00 4.194603805715538e+00 9.452279615158539e+03 + 25260 1.104998034692448e+00 -6.033991763381508e+00 -5.960289653863373e+00 3.498710156762688e+00 4.921919074980407e+00 9.095580523923165e+03 + 25280 1.013593005434118e+00 -5.916637796452709e+00 -6.002422056396536e+00 4.088443444170732e+00 4.595856948501954e+00 9.224507161631376e+03 + 25300 1.052227617607659e+00 -5.997914707456580e+00 -6.047675182243269e+00 3.713006668360321e+00 4.427274321726565e+00 9.363972984115084e+03 + 25320 9.930837492726612e-01 -5.942116910824335e+00 -6.010196106868012e+00 4.020377557931493e+00 4.629456279027166e+00 9.248359664462345e+03 + 25340 1.020050945048198e+00 -6.016110688238202e+00 -6.010811093722440e+00 3.632882737421312e+00 4.663313829240418e+00 9.250267705638453e+03 + 25360 9.886632948425029e-01 -6.004874321957470e+00 -6.011674125548289e+00 3.619201339420101e+00 4.580155814935409e+00 9.252941189213490e+03 + 25380 9.447601439068783e-01 -5.970824004084458e+00 -6.038764987346963e+00 3.828677767911000e+00 4.438550128184516e+00 9.336429410704366e+03 + 25400 9.351050303246574e-01 -5.980875300590840e+00 -6.024920291057240e+00 3.848556878104587e+00 4.595643726906275e+00 9.293720525508710e+03 + 25420 9.458259625197807e-01 -6.016965955125965e+00 -6.040123464514681e+00 3.599246352109410e+00 4.466272349586404e+00 9.340633714413470e+03 + 25440 9.143578405666148e-01 -5.985495591247549e+00 -6.037700022524932e+00 3.766705009072273e+00 4.466939086067907e+00 9.333171759395051e+03 + 25460 9.492546867119083e-01 -6.047110625001029e+00 -5.986913032458006e+00 3.467052869140589e+00 4.812716761069966e+00 9.176934785302868e+03 + 25480 9.285870339023531e-01 -6.019209564223438e+00 -5.994904591227594e+00 3.638112330831868e+00 4.777675246956418e+00 9.201414083388094e+03 + 25500 9.413858012164735e-01 -6.035717056551403e+00 -5.995186935031222e+00 3.521129034219242e+00 4.753859264004159e+00 9.202289065763522e+03 + 25520 9.867391117476341e-01 -6.096036573481160e+00 -5.981121229631416e+00 3.193191867847851e+00 4.853053555325067e+00 9.159205528520999e+03 + 25540 9.241767442962597e-01 -5.990119050225297e+00 -6.010464480841605e+00 3.765220433261872e+00 4.648393822217816e+00 9.249201540934318e+03 + 25560 9.770623405958951e-01 -6.051042790398601e+00 -5.971394590542369e+00 3.432995163019640e+00 4.890347452113214e+00 9.129452215770312e+03 + 25580 9.765719047505141e-01 -6.026345837267691e+00 -5.984903656598581e+00 3.585540786911479e+00 4.823508201470237e+00 9.170732497500769e+03 + 25600 1.014273220257752e+00 -6.051694068852829e+00 -5.994518263903659e+00 3.413947939148512e+00 4.742260259093865e+00 9.200237079150498e+03 + 25620 1.008708228610282e+00 -6.005340897341257e+00 -6.045009324706399e+00 3.636276997662487e+00 4.408494749062543e+00 9.355751794833244e+03 + 25640 1.018662370118818e+00 -5.983554614877721e+00 -6.004440386919961e+00 3.804421731131100e+00 4.684492396001783e+00 9.230697439596504e+03 + 25660 1.027197781299544e+00 -5.960522366980814e+00 -6.026859053469870e+00 3.888820138420245e+00 4.507904619031024e+00 9.299674847866734e+03 + 25680 1.104133205010506e+00 -6.045668433715699e+00 -6.041320901633043e+00 3.415555954405400e+00 4.440520156402426e+00 9.344334316908558e+03 + 25700 1.090224811973544e+00 -6.009396516975108e+00 -6.003081711009367e+00 3.633925261515931e+00 4.670185854584278e+00 9.226533851928749e+03 + 25720 1.036185828154176e+00 -5.923442553373091e+00 -5.998021747841191e+00 4.137325667084580e+00 4.709080391355704e+00 9.210972191410034e+03 + 25740 1.084627744218413e+00 -5.994343160255793e+00 -5.996659705533876e+00 3.713535901392562e+00 4.700233939921588e+00 9.206777956896403e+03 + 25760 9.925623953759372e-01 -5.860837407814413e+00 -6.043942728851949e+00 4.509425110772726e+00 4.458006021918340e+00 9.352414521089293e+03 + 25780 1.053914009996417e+00 -5.958559267074294e+00 -6.074024666069338e+00 3.837088192767696e+00 4.174068003525407e+00 9.445693552512668e+03 + 25800 1.131548566653586e+00 -6.085681337165779e+00 -5.982706154246033e+00 3.258775995012757e+00 4.850075430695991e+00 9.164042445711953e+03 + 25820 1.010355438687462e+00 -5.919969127048371e+00 -6.010793374405725e+00 4.156713598177535e+00 4.635186714844756e+00 9.250209002666148e+03 + 25840 9.912868733789852e-01 -5.906856196266823e+00 -6.020439442079985e+00 4.237211261145743e+00 4.584998686736082e+00 9.279866729984094e+03 + 25860 1.008905781413956e+00 -5.945777763237190e+00 -6.000395650166884e+00 4.005506804557444e+00 4.691882445716459e+00 9.218237301730076e+03 + 25880 1.076253801739938e+00 -6.059222573028830e+00 -5.962509789937499e+00 3.351492923143545e+00 4.906832689908777e+00 9.102314132595555e+03 + 25900 1.058152693960372e+00 -6.047086255023916e+00 -5.949847612000378e+00 3.440422248731696e+00 4.998781584604228e+00 9.063721294347557e+03 + 25920 9.862616305097897e-01 -5.954709864711935e+00 -5.972413194525735e+00 3.941840190566885e+00 4.840184931194613e+00 9.132558267418955e+03 + 25940 1.038805639368242e+00 -6.046513711427526e+00 -5.966394527348346e+00 3.448865709698259e+00 4.908922463084582e+00 9.114166865982550e+03 + 25960 9.832850884751654e-01 -5.978130315068257e+00 -6.013147165800047e+00 3.780807910385833e+00 4.579735734643756e+00 9.257449366518318e+03 + 25980 9.529777577008581e-01 -5.949527511935555e+00 -5.984556057026845e+00 3.966259058835861e+00 4.765119732271837e+00 9.169692352215947e+03 + 26000 9.940838498176053e-01 -6.023905481402221e+00 -5.968436639904443e+00 3.563512669807055e+00 4.882023341462781e+00 9.120394477755679e+03 + 26020 9.346943118141999e-01 -5.946881519488707e+00 -5.997318112615389e+00 3.956698612876353e+00 4.667083890105386e+00 9.208817694018948e+03 + 26040 9.953492104066727e-01 -6.045465043683992e+00 -5.994412654910384e+00 3.421947751549713e+00 4.715098468219399e+00 9.199902111006817e+03 + 26060 1.006810543707758e+00 -6.070991020569164e+00 -5.969621931624417e+00 3.321729263379867e+00 4.903806258916420e+00 9.124044714713305e+03 + 26080 9.747605910057292e-01 -6.030769277227451e+00 -6.005311641125301e+00 3.519136071288097e+00 4.665317757343095e+00 9.233371749064550e+03 + 26100 1.007824228777871e+00 -6.086755838345994e+00 -5.990459990571938e+00 3.241691581448944e+00 4.794637241101855e+00 9.187801265283655e+03 + 26120 9.721011045548780e-01 -6.040685805381742e+00 -5.987789476817904e+00 3.466323186172942e+00 4.770062090466888e+00 9.179607268976166e+03 + 26140 9.499053811749903e-01 -6.013886508492658e+00 -6.006199647191895e+00 3.677070606688133e+00 4.721209753815053e+00 9.236073429269491e+03 + 26160 9.533018223744318e-01 -6.022752455370613e+00 -5.977535074427967e+00 3.605555253754752e+00 4.865200452494507e+00 9.148185676915593e+03 + 26180 9.844288071435597e-01 -6.068411886310296e+00 -5.965215882033615e+00 3.358340976603119e+00 4.950908402689877e+00 9.110550375536859e+03 + 26200 9.560000804546451e-01 -6.018897635296897e+00 -6.024854573748485e+00 3.586138200300101e+00 4.551932537877841e+00 9.293476251933096e+03 + 26220 9.879248052934423e-01 -6.054265350201657e+00 -5.988810511468910e+00 3.407949824262543e+00 4.783801637369535e+00 9.182730083339313e+03 + 26240 9.410623958247131e-01 -5.967216379472633e+00 -6.030007226135012e+00 3.841913974795511e+00 4.481359216408015e+00 9.309353433890046e+03 + 26260 9.807402886379231e-01 -6.002958067853997e+00 -6.010984149730601e+00 3.668298883665959e+00 4.622211879498341e+00 9.250796141753644e+03 + 26280 1.055032093646526e+00 -6.086161395561585e+00 -5.974021506283568e+00 3.234950098801332e+00 4.878874696627491e+00 9.137479286509497e+03 + 26300 9.405452954915010e-01 -5.887549264600992e+00 -6.036390864862978e+00 4.243481749693408e+00 4.388810247825885e+00 9.329071510852049e+03 + 26320 1.047255610799983e+00 -6.017421486011067e+00 -5.957480945173816e+00 3.618898549806329e+00 4.963086411062537e+00 9.086971282100165e+03 + 26340 9.605922143462470e-01 -5.859977586555987e+00 -6.011474247811536e+00 4.410162390942063e+00 4.540245117980136e+00 9.252287901526446e+03 + 26360 1.094255751266944e+00 -6.032589926433507e+00 -5.964380171251914e+00 3.540623099714306e+00 4.932294069392517e+00 9.108006112462790e+03 + 26380 1.018411854017626e+00 -5.898902101421170e+00 -6.016212023709368e+00 4.225503230528148e+00 4.551891503097513e+00 9.266878678228140e+03 + 26400 1.064043429189415e+00 -5.953903755946179e+00 -6.020886917164560e+00 3.900570264615699e+00 4.515942587289053e+00 9.281288999018956e+03 + 26420 1.054704788793459e+00 -5.933376001410140e+00 -6.038452767389989e+00 4.017213250877870e+00 4.413846200044595e+00 9.335455794255688e+03 + 26440 1.056388898317192e+00 -5.936642536177325e+00 -6.012946469605094e+00 4.037455608580672e+00 4.599306614842888e+00 9.256833638980735e+03 + 26460 1.029870314975667e+00 -5.903635507863286e+00 -6.009348616733649e+00 4.174881175582282e+00 4.567860145397932e+00 9.245729964210792e+03 + 26480 1.026846883653676e+00 -5.911109153432253e+00 -6.020401189827643e+00 4.174066565116027e+00 4.546494779245727e+00 9.279779813765732e+03 + 26500 1.019262135170913e+00 -5.921114043255461e+00 -6.014177577669528e+00 4.166713127516645e+00 4.632327911375662e+00 9.260638901084014e+03 + 26520 1.020729476326522e+00 -5.952879196511964e+00 -6.010498675866328e+00 3.965768019381913e+00 4.634908052343541e+00 9.249277593614152e+03 + 26540 9.720434897874302e-01 -5.917249254843538e+00 -6.035885404546484e+00 4.119779349059971e+00 4.438552218580827e+00 9.327517148553319e+03 + 26560 1.061416521289598e+00 -6.091620491762859e+00 -6.002444970212493e+00 3.201271438153555e+00 4.713331082763115e+00 9.224564540491992e+03 + 26580 1.001773453080956e+00 -6.045907589418753e+00 -5.985023412644757e+00 3.495626974358911e+00 4.845233339191104e+00 9.171132721832068e+03 + 26600 9.210643810253827e-01 -5.961817837708081e+00 -6.029846623365211e+00 3.890385597769983e+00 4.499753783106184e+00 9.308900087750608e+03 + 26620 9.568098092348561e-01 -6.039598264497504e+00 -5.993917278740419e+00 3.477393578769624e+00 4.739700868096502e+00 9.198391832249505e+03 + 26640 9.579175026138667e-01 -6.054467121467203e+00 -5.968772665679406e+00 3.473071985132243e+00 4.965142811439950e+00 9.121444654457804e+03 + 26660 9.900325563975334e-01 -6.107215419962095e+00 -5.958737181423349e+00 3.170679181129139e+00 5.023264203751777e+00 9.090827088500182e+03 + 26680 9.567096199955172e-01 -6.057099534402689e+00 -5.989025826427775e+00 3.392339039355661e+00 4.783228804919883e+00 9.183394495238457e+03 + 26700 9.409824791183173e-01 -6.028613103033564e+00 -6.006994573845368e+00 3.544053388565389e+00 4.668190328620585e+00 9.238524144300141e+03 + 26720 9.333844678869592e-01 -6.009220470437168e+00 -6.026972123339775e+00 3.641995727434851e+00 4.540062989408677e+00 9.300021142122054e+03 + 26740 9.794263135651858e-01 -6.065302644005799e+00 -6.002149804216389e+00 3.432040035182732e+00 4.794673414123901e+00 9.223647032199686e+03 + 26760 9.418059437911422e-01 -5.995913882233298e+00 -6.006751426349085e+00 3.740738057085439e+00 4.678507201668058e+00 9.237777776837143e+03 + 26780 9.301392916961533e-01 -5.963599287663057e+00 -6.033245014048774e+00 3.876236031630848e+00 4.476319493082737e+00 9.319393143485468e+03 + 26800 1.034828919322403e+00 -6.101831421569607e+00 -6.029981313825543e+00 3.156379016780641e+00 4.568953454215296e+00 9.309338118694077e+03 + 26820 1.015266683393898e+00 -6.058518528531983e+00 -5.979358651417229e+00 3.407657546459094e+00 4.862205810803404e+00 9.153809223316070e+03 + 26840 9.532064198943914e-01 -5.952668950452562e+00 -6.006558377364348e+00 3.965091509861067e+00 4.655650081171729e+00 9.237188721357286e+03 + 26860 1.013702220098276e+00 -6.027479427828938e+00 -5.992968996919442e+00 3.496983105361957e+00 4.695147340116203e+00 9.195483770860892e+03 + 26880 9.290626221138844e-01 -5.884873382566338e+00 -6.018319081298090e+00 4.299408655315244e+00 4.533142802542383e+00 9.273354482147346e+03 + 26900 1.032983451373186e+00 -6.023130516950366e+00 -5.972632699557215e+00 3.589824447485921e+00 4.879790729469380e+00 9.133213188963689e+03 + 26920 9.992412378169185e-01 -5.956275043206094e+00 -5.990370085850206e+00 3.950792586262423e+00 4.755013575209137e+00 9.187444906138882e+03 + 26940 1.056690665278629e+00 -6.027005001692126e+00 -5.952811221231368e+00 3.632390731905471e+00 5.058422900761569e+00 9.072729180083998e+03 + 26960 1.006462695689157e+00 -5.938172291971407e+00 -5.955790066309103e+00 4.003628055540743e+00 4.902464068951922e+00 9.081797464896152e+03 + 26980 1.016119371309259e+00 -5.937209281419866e+00 -5.960974645672403e+00 4.044019378472751e+00 4.907554979256455e+00 9.097614698164720e+03 + 27000 1.078956807243606e+00 -6.013670306220698e+00 -6.021232495466674e+00 3.645757109613328e+00 4.602333848717928e+00 9.282348409224305e+03 + 27020 1.021524655950530e+00 -5.916272259984026e+00 -6.032874518435022e+00 4.179009182424974e+00 4.509460970258178e+00 9.318233015324604e+03 + 27040 1.136750979651484e+00 -6.077116761346083e+00 -5.943915802910732e+00 3.280256441232214e+00 5.045116957349698e+00 9.045678571776074e+03 + 27060 1.042640771289591e+00 -5.926594296889591e+00 -6.024813513201654e+00 4.035042034646434e+00 4.471052095207971e+00 9.293367332844851e+03 + 27080 1.059798401420964e+00 -5.940828548702703e+00 -6.018764961161267e+00 4.053968237137504e+00 4.606445296179577e+00 9.274724545653882e+03 + 27100 1.091130926873672e+00 -5.978430086257071e+00 -5.975096966330393e+00 3.859033093041253e+00 4.878172383458881e+00 9.140764425856503e+03 + 27120 1.046874413218975e+00 -5.910747427188234e+00 -6.024257935981265e+00 4.191096515100937e+00 4.539301607916884e+00 9.291651593192973e+03 + 27140 1.096208906914375e+00 -5.990033159672841e+00 -5.979721959431418e+00 3.715496747453263e+00 4.774705254892593e+00 9.154895336608350e+03 + 27160 1.025434738705987e+00 -5.898165213419515e+00 -6.043339071313996e+00 4.205117382520929e+00 4.371506624908911e+00 9.350538477643948e+03 + 27180 1.032899609364002e+00 -5.928788961747625e+00 -5.965546765842568e+00 4.108670521454401e+00 4.897601522089441e+00 9.111564709721579e+03 + 27200 1.075882170686844e+00 -6.016819321213504e+00 -5.958712846743836e+00 3.573560472372067e+00 4.907216840724763e+00 9.090744325665246e+03 + 27220 1.090745834549236e+00 -6.068777439522943e+00 -5.961110955102235e+00 3.350795946154748e+00 4.969033561033074e+00 9.098058157368288e+03 + 27240 1.007682295856299e+00 -5.979342780691049e+00 -6.016402678071232e+00 3.783358008422188e+00 4.570554342664590e+00 9.267474526280834e+03 + 27260 1.034115084162430e+00 -6.053245480295663e+00 -6.004651803390438e+00 3.366819727703744e+00 4.645852140340747e+00 9.231315322132183e+03 + 27280 9.949298813491422e-01 -6.027184359818352e+00 -6.004542981967770e+00 3.541067226510891e+00 4.671077521870830e+00 9.230972050054139e+03 + 27300 9.647303636515141e-01 -6.010044448618398e+00 -5.982497236662692e+00 3.656927320349185e+00 4.815107674316126e+00 9.163368383544241e+03 + 27320 1.018194239105845e+00 -6.110421073358152e+00 -5.939331698395755e+00 3.090239826226949e+00 5.072661493256246e+00 9.031723417424355e+03 + 27340 9.769340132131886e-01 -6.065077228504077e+00 -5.943150064182475e+00 3.359495483447407e+00 5.059620129149744e+00 9.043356346856552e+03 + 27360 9.101649169660315e-01 -5.975544313230104e+00 -5.991987650495955e+00 3.813227054772816e+00 4.718806867594084e+00 9.192459330407661e+03 + 27380 9.265608415544417e-01 -6.002644184346522e+00 -6.001970263579063e+00 3.679739091868751e+00 4.683608849204408e+00 9.223083536784095e+03 + 27400 9.508472447264311e-01 -6.035438809955840e+00 -5.993530298758067e+00 3.513541935069528e+00 4.754187091688292e+00 9.197182292430251e+03 + 27420 1.049089474697299e+00 -6.171894109036053e+00 -5.985881412450361e+00 2.788261175075025e+00 4.856374864241834e+00 9.173778558307229e+03 + 27440 1.006848593492841e+00 -6.098527895899158e+00 -6.008844913711014e+00 3.167343431827824e+00 4.682316993948790e+00 9.244234216243007e+03 + 27460 9.678996532164935e-01 -6.028256842249204e+00 -6.011675586216039e+00 3.581159082559920e+00 4.676371220643436e+00 9.252938287004517e+03 + 27480 1.000501655310759e+00 -6.057500506817994e+00 -5.995716894896110e+00 3.345482290669906e+00 4.700253351308410e+00 9.203936625420773e+03 + 27500 9.704656490998697e-01 -5.989379920752549e+00 -5.980601605507433e+00 3.785701736859338e+00 4.836108181436690e+00 9.157591751382963e+03 + 27520 9.202173088190145e-01 -5.886863810967327e+00 -6.022910157549195e+00 4.270984543860078e+00 4.489785368682905e+00 9.287465205504499e+03 + 27540 1.094703585249402e+00 -6.108906542850082e+00 -5.937699988030598e+00 3.196703628613672e+00 5.179798160515881e+00 9.026775252899077e+03 + 27560 1.024599080126616e+00 -5.966334585280480e+00 -6.015126090125728e+00 3.793448764514199e+00 4.513280393231815e+00 9.263546971963044e+03 + 27580 1.016288005942892e+00 -5.918296204095491e+00 -6.037359113714773e+00 4.081789202929937e+00 4.398111550970299e+00 9.332088470114750e+03 + 27600 1.038945601229166e+00 -5.925718942124202e+00 -6.037415429926929e+00 4.054829693667650e+00 4.413451175728768e+00 9.332279338812185e+03 + 27620 1.036237700438675e+00 -5.906775581428764e+00 -5.995688792099817e+00 4.172532092754212e+00 4.661978677806146e+00 9.203810133262979e+03 + 27640 9.933775620127856e-01 -5.836510959828939e+00 -6.014890930966772e+00 4.498858312999909e+00 4.474572914515144e+00 9.262784408457417e+03 + 27660 1.032957917178952e+00 -5.890780333335727e+00 -5.977009497048684e+00 4.265818517823478e+00 4.770677315863726e+00 9.146563868341582e+03 + 27680 9.987872694502733e-01 -5.839720141150880e+00 -6.009752587872207e+00 4.493934986677420e+00 4.517582365167475e+00 9.246982365017777e+03 + 27700 1.108703874684024e+00 -6.006509121151729e+00 -5.987817596614515e+00 3.677572219859795e+00 4.784901846256552e+00 9.179674489207022e+03 + 27720 1.054796980348682e+00 -5.937846202312077e+00 -6.012214050100617e+00 4.007257657019357e+00 4.580225966630311e+00 9.254571517946257e+03 + 27740 1.088228669946797e+00 -6.003889091428633e+00 -5.995510761084083e+00 3.642894690792948e+00 4.691004360173782e+00 9.203272267296128e+03 + 27760 9.749052351385830e-01 -5.854702375683103e+00 -6.029669913903491e+00 4.458117498328424e+00 4.453426817727926e+00 9.308295071105771e+03 + 27780 1.039267036448282e+00 -5.967584616355351e+00 -5.998682059652458e+00 3.849660007969069e+00 4.671093676243287e+00 9.212993902722479e+03 + 27800 1.023508585456083e+00 -5.958871068704244e+00 -5.999442445825661e+00 3.925028811285237e+00 4.692061685453743e+00 9.215332650347738e+03 + 27820 1.021661469920530e+00 -5.969226724579544e+00 -5.994700274573052e+00 3.899781938596666e+00 4.753508872514822e+00 9.200770827701253e+03 + 27840 1.025252086007113e+00 -5.985532257963772e+00 -6.003194964417547e+00 3.780772736869397e+00 4.679350743116833e+00 9.226842726776855e+03 + 27860 1.042090278165483e+00 -6.020647232121075e+00 -5.973937779937510e+00 3.617790796587610e+00 4.886003699290009e+00 9.137196664714582e+03 + 27880 9.931823823051343e-01 -5.956466159874375e+00 -6.007448153248207e+00 3.953105267200670e+00 4.660358771810150e+00 9.239925793276783e+03 + 27900 1.085898353727896e+00 -6.100522201888604e+00 -5.968994484358133e+00 3.163161449131986e+00 4.918413957040462e+00 9.122126417483107e+03 + 27920 9.650040066371505e-01 -5.929789623144175e+00 -5.998210823590538e+00 4.075649515524924e+00 4.682764394415355e+00 9.211530158186750e+03 + 27940 1.016290546257501e+00 -6.012131965288077e+00 -5.967465120439428e+00 3.668090921851813e+00 4.924574857144655e+00 9.117403660996721e+03 + 27960 1.032461559633738e+00 -6.041118845987069e+00 -5.960827962001916e+00 3.530873950883116e+00 4.991916631700004e+00 9.097171205599219e+03 + 27980 9.751376003279202e-01 -5.961546109832475e+00 -6.027330285380660e+00 3.882804407138010e+00 4.505061491072066e+00 9.301128856426021e+03 + 28000 1.005319751826434e+00 -6.012615074395310e+00 -5.997103030001085e+00 3.614713674409434e+00 4.703786233802187e+00 9.208137741715600e+03 + 28020 1.003570241906397e+00 -6.015359695451327e+00 -5.963739519140836e+00 3.598324579434817e+00 4.894735620006127e+00 9.106061272169825e+03 + 28040 9.755883553175906e-01 -5.977843077002850e+00 -6.003698358655894e+00 3.803645881902229e+00 4.655180853558543e+00 9.228388869164250e+03 + 28060 9.920352413174970e-01 -6.006189140134730e+00 -5.968978551785961e+00 3.675446004349865e+00 4.889114960968438e+00 9.122051604236796e+03 + 28080 9.825887906903008e-01 -5.993226577908968e+00 -6.020422747114497e+00 3.719313287908264e+00 4.563148675736530e+00 9.279863519768114e+03 + 28100 1.012233378619919e+00 -6.040052320429769e+00 -6.054028225288405e+00 3.455585231814737e+00 4.375333423352165e+00 9.383657258283878e+03 + 28120 9.409839227245846e-01 -5.938211067674108e+00 -6.038018945553459e+00 4.046482071170700e+00 4.473369791168280e+00 9.334141649195686e+03 + 28140 1.043010694245405e+00 -6.095773820978430e+00 -6.002650633502081e+00 3.174968247859983e+00 4.709696001115866e+00 9.225213685968161e+03 + 28160 9.640102994563712e-01 -5.987999390170565e+00 -6.035279684223952e+00 3.732305464567713e+00 4.460814699511307e+00 9.325673993947919e+03 + 28180 1.034126535635780e+00 -6.103779112126466e+00 -5.943177233018829e+00 3.163052748892641e+00 5.085253591789160e+00 9.043446922350260e+03 + 28200 9.698878567476057e-01 -6.019956599256201e+00 -5.998547590553052e+00 3.569721340310033e+00 4.692655181316900e+00 9.212597198909447e+03 + 28220 9.520936037128325e-01 -6.003832161486097e+00 -5.995024023569829e+00 3.709698279680612e+00 4.760275970650765e+00 9.201772831580201e+03 + 28240 9.550291638396985e-01 -6.017331496855164e+00 -6.004725573827228e+00 3.610487031048012e+00 4.682872191834702e+00 9.231575064025357e+03 + 28260 9.573368251479983e-01 -6.028759157254113e+00 -5.965609037124850e+00 3.559546106378174e+00 4.922163868609914e+00 9.111764904743941e+03 + 28280 9.429409403696467e-01 -6.013065711746425e+00 -5.949322714980654e+00 3.695355771850104e+00 5.061377923476030e+00 9.062101872838175e+03 + 28300 9.452608184678790e-01 -6.015205506454981e+00 -5.967306523130855e+00 3.597338823943299e+00 4.872382198534142e+00 9.116938990005290e+03 + 28320 9.368831965733057e-01 -5.993468050653759e+00 -6.001947868638773e+00 3.758882804160002e+00 4.710190377042460e+00 9.223017623566486e+03 + 28340 9.491419025141812e-01 -5.996110676103718e+00 -6.002436840856872e+00 3.707418714857039e+00 4.671092897873596e+00 9.224559562586730e+03 + 28360 9.978159558674639e-01 -6.046390539873354e+00 -6.001781934705503e+00 3.420766712182409e+00 4.676916226215551e+00 9.222535699091812e+03 + 28380 1.052581699255401e+00 -6.102424542186387e+00 -5.996949504401195e+00 3.138883165123370e+00 4.744537154295287e+00 9.207695186281686e+03 + 28400 9.901255561788616e-01 -5.984214164607419e+00 -5.991502116373704e+00 3.842419588434125e+00 4.800571041585229e+00 9.190987455741377e+03 + 28420 9.978752719125502e-01 -5.968718255430496e+00 -6.006701505514476e+00 3.821384877689754e+00 4.603279177818589e+00 9.237645759368186e+03 + 28440 1.052832190331810e+00 -6.021744949713979e+00 -5.985142108600930e+00 3.582153189453640e+00 4.792332367396122e+00 9.171486335905454e+03 + 28460 1.014923780566742e+00 -5.938810326893853e+00 -6.018258941217416e+00 4.033022292330498e+00 4.576816054251262e+00 9.273194692226858e+03 + 28480 1.088340117178027e+00 -6.025579463518811e+00 -6.013417735205302e+00 3.567938313297644e+00 4.637772839295186e+00 9.258270004359718e+03 + 28500 1.013094475705368e+00 -5.900448145166157e+00 -6.014041098641869e+00 4.229257815846879e+00 4.576989498536606e+00 9.260191060087271e+03 + 28520 1.007623870912483e+00 -5.883321381281474e+00 -6.009940768529432e+00 4.299941570777655e+00 4.572873454913028e+00 9.247543897518279e+03 + 28540 1.003612564236609e+00 -5.869785259587345e+00 -6.025602498193580e+00 4.326633052997561e+00 4.431906356280814e+00 9.295797635616627e+03 + 28560 1.014767524960878e+00 -5.882579893146128e+00 -6.038810706025442e+00 4.329630671478879e+00 4.432529167285694e+00 9.336569620904609e+03 + 28580 1.052113858740745e+00 -5.942695346825536e+00 -6.050623174710733e+00 3.991629073541671e+00 4.371890784047481e+00 9.373085055295822e+03 + 28600 1.087088445074823e+00 -6.008649143909981e+00 -5.995132043246144e+00 3.693203661658844e+00 4.770820945435164e+00 9.202097352301791e+03 + 28620 9.736304811708715e-01 -5.863697146715683e+00 -6.005049795662690e+00 4.445158420551911e+00 4.633489636046467e+00 9.232549864821387e+03 + 28640 1.027540968316297e+00 -5.980257745038665e+00 -6.026345297332439e+00 3.754112431509946e+00 4.489470574213432e+00 9.298103391154977e+03 + 28660 9.515304434448906e-01 -5.916708694705935e+00 -6.050075170992013e+00 4.051120794525225e+00 4.285309849295060e+00 9.371400618970183e+03 + 28680 9.779906657005709e-01 -6.008598282403232e+00 -6.024669868218375e+00 3.627216860784659e+00 4.534931327964244e+00 9.292946135902224e+03 + 28700 1.003736244790102e+00 -6.097267775338383e+00 -5.968121216652726e+00 3.195649300450119e+00 4.937228825788532e+00 9.119473398849879e+03 + 28720 9.442625855946347e-01 -6.041835538140989e+00 -5.977170492226622e+00 3.497452610467303e+00 4.868769310991110e+00 9.147122045588860e+03 + 28740 1.015082221146194e+00 -6.163957545319789e+00 -5.993746367494998e+00 2.845622818281639e+00 4.823001741446235e+00 9.197879630050962e+03 + 28760 9.104563098689363e-01 -6.018176239315316e+00 -5.993001290902773e+00 3.662826782378291e+00 4.807385231973795e+00 9.195560842005887e+03 + 28780 9.122648914929119e-01 -6.021339052461146e+00 -6.019252079121465e+00 3.587519538940595e+00 4.599503262815123e+00 9.276248418813222e+03 + 28800 1.003372044495901e+00 -6.151577808476957e+00 -5.983498703909965e+00 2.891933278384125e+00 4.857069506965166e+00 9.166476875633647e+03 + 28820 9.429574513384952e-01 -6.053670728286849e+00 -5.956768508973053e+00 3.411288723919823e+00 4.967716262789613e+00 9.084812315389205e+03 + 28840 9.480859221182297e-01 -6.047522096996349e+00 -5.941228819754128e+00 3.465253518931908e+00 5.075605965688231e+00 9.037501196425725e+03 + 28860 9.472116155482816e-01 -6.025512454457528e+00 -5.969639562541344e+00 3.601183143968295e+00 4.922013935653110e+00 9.124070582127155e+03 + 28880 9.671014616215816e-01 -6.030693133646931e+00 -5.974570564484338e+00 3.513662832011605e+00 4.835927309082723e+00 9.139152066444691e+03 + 28900 9.770588402967516e-01 -6.018377805957166e+00 -5.990375336739723e+00 3.621807749149450e+00 4.782602260764114e+00 9.187515994790996e+03 + 28920 1.035616370661924e+00 -6.078490496909573e+00 -5.988415834871935e+00 3.314300911714150e+00 4.831523560143171e+00 9.181526541961126e+03 + 28940 9.491971774355233e-01 -5.926178500753046e+00 -6.025293659801177e+00 4.120891359949992e+00 4.551756778674332e+00 9.294866949345924e+03 + 28960 1.033935039014248e+00 -6.030280063405661e+00 -6.019302133053879e+00 3.557387999015804e+00 4.620424973924969e+00 9.276418957034575e+03 + 28980 1.012469200161009e+00 -5.980678987188339e+00 -6.052467649255548e+00 3.789740507983740e+00 4.377518901134275e+00 9.378840645589566e+03 + 29000 1.039229273147462e+00 -6.009985378535291e+00 -6.030622913009718e+00 3.667521219237972e+00 4.549017302637679e+00 9.311304780431741e+03 + 29020 9.940428342105773e-01 -5.936367897972060e+00 -6.038752538767909e+00 4.011677966831653e+00 4.423769515409929e+00 9.336398118557219e+03 + 29040 1.039154057154783e+00 -6.000566193658575e+00 -5.996516036746157e+00 3.674201572893957e+00 4.697458200644817e+00 9.206362897862971e+03 + 29060 1.003710369183082e+00 -5.948421168557061e+00 -5.977492471042664e+00 3.965260509286568e+00 4.798328591644715e+00 9.148093363825397e+03 + 29080 9.916429014819774e-01 -5.930349056897279e+00 -6.002040980132275e+00 4.067126491995129e+00 4.655460374490523e+00 9.223300273872988e+03 + 29100 9.799211090333384e-01 -5.913472626627630e+00 -6.024999847938425e+00 4.139255345260670e+00 4.498848781712367e+00 9.293963480786231e+03 + 29120 1.026025723674986e+00 -5.985171742370088e+00 -6.026124832567447e+00 3.756427594080039e+00 4.521268612696575e+00 9.297440914169099e+03 + 29140 1.022219624055486e+00 -5.987621609881398e+00 -5.974722985169983e+00 3.792505200402652e+00 4.866571099551321e+00 9.139628555360920e+03 + 29160 1.052387705248464e+00 -6.042422308623889e+00 -6.004384567987289e+00 3.465206646212253e+00 4.683625239268952e+00 9.230518478773460e+03 + 29180 1.016427767906759e+00 -6.002295393820535e+00 -6.018250867888380e+00 3.663576739582612e+00 4.571957938383419e+00 9.273165464046380e+03 + 29200 1.000476376337306e+00 -5.999622911537353e+00 -6.033179180940850e+00 3.702164097074232e+00 4.509478805343444e+00 9.319185750107512e+03 + 29220 9.839503613690523e-01 -6.007935016486848e+00 -5.997549321622817e+00 3.739459206351355e+00 4.799095473441714e+00 9.209525374872695e+03 + 29240 1.004007021076176e+00 -6.083469977951813e+00 -5.983975370243266e+00 3.273217755780128e+00 4.844531189983382e+00 9.167933346910781e+03 + 29260 9.091551367261101e-01 -5.999881931511410e+00 -6.006019570465801e+00 3.699025932701849e+00 4.663782660029183e+00 9.235538866713792e+03 + 29280 9.594079972001835e-01 -6.124413350585823e+00 -5.963092229158951e+00 3.071860313595195e+00 4.998191157191153e+00 9.104115353094019e+03 + 29300 9.595321996780790e-01 -6.160997752978748e+00 -5.977258875805189e+00 2.885638481247295e+00 4.940695547477222e+00 9.147374547002168e+03 + 29320 9.302480648443420e-01 -6.138927453540776e+00 -5.965019401375105e+00 2.939619249110190e+00 4.938226196829575e+00 9.109992071116918e+03 + 29340 9.289291493535927e-01 -6.143307946040633e+00 -5.975228464738281e+00 2.932036847680652e+00 4.897175239534430e+00 9.141176914673510e+03 + 29360 9.291833826444947e-01 -6.140747600119308e+00 -5.981031145357315e+00 2.937839785186445e+00 4.854956384471304e+00 9.158925549106540e+03 + 29380 9.292966845038206e-01 -6.129710721956912e+00 -5.991007081969789e+00 3.004652658723091e+00 4.801110423848072e+00 9.189460163332262e+03 + 29400 9.768173862043977e-01 -6.182643942610514e+00 -5.929774188258957e+00 2.777555306365860e+00 5.229572567320520e+00 9.002724688096831e+03 + 29420 9.194485869094577e-01 -6.074182938895403e+00 -5.946473230707915e+00 3.308709926347311e+00 5.042038833773335e+00 9.053443401710787e+03 + 29440 9.264850276097462e-01 -6.055825046403605e+00 -5.941783616905163e+00 3.408231931059003e+00 5.063075467093233e+00 9.039204448829045e+03 + 29460 9.647846537354453e-01 -6.080617386000093e+00 -5.989661164711574e+00 3.213144058912824e+00 4.735428756981255e+00 9.185321819303432e+03 + 29480 9.316116939198328e-01 -6.001616588168545e+00 -5.960497492898179e+00 3.720874666307239e+00 4.956986874509109e+00 9.096173476795615e+03 + 29500 9.615749834331291e-01 -6.018655833144447e+00 -5.940178992719386e+00 3.608717219662444e+00 5.059343381634948e+00 9.034296283672522e+03 + 29520 1.010567055003395e+00 -6.066031693919716e+00 -5.970989781186073e+00 3.310648035344226e+00 4.856393405949268e+00 9.128206496703693e+03 + 29540 1.007382809001170e+00 -6.039154168295874e+00 -6.013664780075091e+00 3.472336259273290e+00 4.618700270907108e+00 9.259029673879510e+03 + 29560 1.029653614398049e+00 -6.055431884247001e+00 -5.995128727169735e+00 3.420710960322135e+00 4.766981020143195e+00 9.202120096900653e+03 + 29580 9.930004286526326e-01 -5.986907872560453e+00 -6.045605271411086e+00 3.787684939320902e+00 4.450635391727450e+00 9.357574192207718e+03 + 29600 9.601848837335871e-01 -5.927198760472017e+00 -6.035449343063726e+00 4.083981941866107e+00 4.462390344900997e+00 9.326149032990899e+03 + 29620 1.028921410121415e+00 -6.020083270322323e+00 -5.960637121908235e+00 3.594893114764522e+00 4.936242098219954e+00 9.096598395920297e+03 + 29640 9.841158721318056e-01 -5.943791295950724e+00 -6.004245407055859e+00 4.002896918360663e+00 4.655760057151515e+00 9.230080533840544e+03 + 29660 1.040529024557767e+00 -6.018991177640114e+00 -5.990938924275782e+00 3.584675194279003e+00 4.745755574169175e+00 9.189251060640077e+03 + 29680 1.038583733314649e+00 -6.009800524800676e+00 -5.962895641199461e+00 3.642110804696944e+00 4.911445904842397e+00 9.103504333564508e+03 + 29700 9.727129859576313e-01 -5.906887569735638e+00 -6.006539418065318e+00 4.180807926024784e+00 4.608591591842066e+00 9.237124360749694e+03 + 29720 1.088064610240070e+00 -6.073040020877345e+00 -6.000834298323051e+00 3.285984685649953e+00 4.700601118356166e+00 9.219621751457958e+03 + 29740 1.010753860320679e+00 -5.956520647393255e+00 -6.004830000887360e+00 3.922161765679869e+00 4.644761982068429e+00 9.231871619370186e+03 + 29760 9.556620787961384e-01 -5.874179373804996e+00 -6.007186984604858e+00 4.397248285179978e+00 4.633498001105917e+00 9.239101860985860e+03 + 29780 1.064893928215669e+00 -6.037516055685689e+00 -5.977574562494152e+00 3.471566160222460e+00 4.815759490044357e+00 9.148347744654138e+03 + 29800 1.082429378625356e+00 -6.067558490301071e+00 -6.023632791115030e+00 3.319761289116024e+00 4.571989451322251e+00 9.289741451423108e+03 + 29820 1.015099993145585e+00 -5.979693098377298e+00 -6.057916147197689e+00 3.759481119899784e+00 4.310312268595412e+00 9.395696908233151e+03 + 29840 1.033230709094984e+00 -6.027653144067885e+00 -5.977255445900206e+00 3.583200813749030e+00 4.872592195646428e+00 9.147363206260507e+03 + 29860 9.865277944317782e-01 -5.984689891165687e+00 -6.010150006367759e+00 3.797226019476292e+00 4.651030098045900e+00 9.248236181027289e+03 + 29880 9.781873267525094e-01 -6.005385203595621e+00 -6.027470244401562e+00 3.642690325763378e+00 4.515874603806644e+00 9.301565755019396e+03 + 29900 9.990547361673093e-01 -6.072773144892266e+00 -5.997251919760524e+00 3.301378806525804e+00 4.735033368104082e+00 9.208621688394602e+03 + 29920 9.635061326460844e-01 -6.054333202066925e+00 -6.011267843939825e+00 3.377141310922637e+00 4.624429261631073e+00 9.251682558346976e+03 + 29940 9.350153255330449e-01 -6.042698237497649e+00 -5.998232213136991e+00 3.462791738776661e+00 4.718122531750589e+00 9.211628300733253e+03 + 29960 9.382875725274081e-01 -6.070009473268530e+00 -5.992275994244865e+00 3.321321961195985e+00 4.767679626966870e+00 9.193354664819073e+03 + 29980 9.422557706053847e-01 -6.089361594900179e+00 -5.983229993374704e+00 3.210352374215130e+00 4.819776453986664e+00 9.165661848050731e+03 + 30000 1.022391449429286e+00 -6.214075592005614e+00 -5.954910684987923e+00 2.578972732632215e+00 5.067137734367540e+00 9.079177299533281e+03 + 30020 9.238490186906688e-01 -6.067887427603596e+00 -5.986449747586651e+00 3.365997450092951e+00 4.833625211190504e+00 9.175508257690031e+03 + 30040 9.472912610344750e-01 -6.094243684930203e+00 -5.987174620928259e+00 3.216806862439307e+00 4.831613996822572e+00 9.177735838955829e+03 + 30060 9.689703031633105e-01 -6.111575405333681e+00 -5.968750744326022e+00 3.086793435502849e+00 4.906914741053685e+00 9.121382794874358e+03 + 30080 8.995618470596503e-01 -5.986042904348183e+00 -6.004493360783048e+00 3.812497793020399e+00 4.706552416972499e+00 9.230850850522918e+03 + 30100 9.766439126441808e-01 -6.069300661903761e+00 -5.974315039627736e+00 3.317780925405669e+00 4.863203067492143e+00 9.138370118482186e+03 + 30120 9.901172095771245e-01 -6.051670367913637e+00 -5.956112297045035e+00 3.404118220205249e+00 4.952827450696438e+00 9.082783619672038e+03 + 30140 1.022010846394023e+00 -6.057766403102042e+00 -5.944044484854148e+00 3.415819108832165e+00 5.068827961821542e+00 9.046050020217983e+03 + 30160 1.022671341714951e+00 -6.020729217691068e+00 -5.954490433411739e+00 3.648005557842121e+00 5.028358907592768e+00 9.077863759422518e+03 + 30180 1.018378799120894e+00 -5.986000673104643e+00 -6.017317845091376e+00 3.750503251185134e+00 4.570675203320612e+00 9.270273812343232e+03 + 30200 9.864145509336422e-01 -5.921933709753805e+00 -5.986850843745072e+00 4.145407239712068e+00 4.772643010440193e+00 9.176730372895401e+03 + 30220 1.001854322823047e+00 -5.933844907628597e+00 -6.002666504638748e+00 4.056391268617152e+00 4.661207008477147e+00 9.225229177299816e+03 + 30240 1.059076188454696e+00 -6.013297552912073e+00 -6.000089564068858e+00 3.612925379657900e+00 4.688767695525305e+00 9.217323705706765e+03 + 30260 1.052578449896820e+00 -6.003025696803585e+00 -6.014835032323607e+00 3.699992077857413e+00 4.632181045812684e+00 9.262646097555946e+03 + 30280 9.487884039497202e-01 -5.853904519685701e+00 -6.059965791825375e+00 4.427445339391960e+00 4.244209626887142e+00 9.402045857004236e+03 + 30300 1.029336234147462e+00 -5.979948628286467e+00 -6.020813318925252e+00 3.835592561059904e+00 4.600941183621561e+00 9.281011191349724e+03 + 30320 1.065690372222909e+00 -6.041704626731780e+00 -5.984313227761977e+00 3.466313289063323e+00 4.795863583238217e+00 9.168952372575235e+03 + 30340 1.032416374191723e+00 -6.000696153589132e+00 -5.976851852455646e+00 3.727073219598943e+00 4.863990886601091e+00 9.146132334900771e+03 + 30360 9.981943200735881e-01 -5.961650672648489e+00 -6.030074311057464e+00 3.927117858135076e+00 4.534218737866921e+00 9.309604582734561e+03 + 30380 9.888959284789413e-01 -5.962411666848608e+00 -6.037248040212175e+00 3.848885590596351e+00 4.419163553851398e+00 9.331760442885723e+03 + 30400 9.893577908986471e-01 -5.982004096747366e+00 -6.067566207457588e+00 3.731121882934517e+00 4.239811002542576e+00 9.425634488435704e+03 + 30420 1.023803102890519e+00 -6.054199729506687e+00 -5.986788106434324e+00 3.397842735832353e+00 4.784930707428814e+00 9.176539039142150e+03 + 30440 9.618260976643903e-01 -5.983228649776845e+00 -6.002764714051875e+00 3.842093690897518e+00 4.729914586634124e+00 9.225520088586947e+03 + 30460 9.652164611632372e-01 -6.008125604218619e+00 -6.002750416499278e+00 3.689739275287688e+00 4.720604434979757e+00 9.225489429091020e+03 + 30480 9.580226843545530e-01 -6.017255456648518e+00 -6.027629875818532e+00 3.571414832042392e+00 4.511843311731995e+00 9.302064622169515e+03 + 30500 9.943038114712486e-01 -6.090490150033225e+00 -5.966376619274175e+00 3.268965369961810e+00 4.981644470087083e+00 9.114130080097597e+03 + 30520 9.304874222095311e-01 -6.013824711378987e+00 -6.014790626497451e+00 3.579221875370232e+00 4.573675441285133e+00 9.262513991505772e+03 + 30540 9.783584372657665e-01 -6.100647668845115e+00 -5.990444678111096e+00 3.148273078964318e+00 4.781075705616751e+00 9.187739654603578e+03 + 30560 9.176177371097133e-01 -6.023710030989118e+00 -6.001774540832473e+00 3.550594279530800e+00 4.676551258516388e+00 9.222519046058780e+03 + 30580 8.778656169155760e-01 -5.976214210869851e+00 -6.002429324501506e+00 3.818421367783736e+00 4.667890128535052e+00 9.224522542062394e+03 + 30600 9.872162122335556e-01 -6.146267102188688e+00 -5.947138317975973e+00 2.990018529834972e+00 5.133446823864144e+00 9.055492486181309e+03 + 30620 9.318690978437534e-01 -6.065678041864406e+00 -5.980810435487806e+00 3.401601524023612e+00 4.888924453057692e+00 9.158238771435459e+03 + 30640 9.762464302644114e-01 -6.124762564948807e+00 -5.990673571493650e+00 3.078272206705188e+00 4.848231957329377e+00 9.188450216495972e+03 + 30660 9.526746118959963e-01 -6.075704926377758e+00 -5.993694503945165e+00 3.301615804147225e+00 4.772532340827027e+00 9.197705014930802e+03 + 30680 9.507119809359119e-01 -6.048179460137290e+00 -6.017000968781529e+00 3.453970419378655e+00 4.633002141599379e+00 9.269299552083950e+03 + 30700 9.752873055783660e-01 -6.051077545516756e+00 -6.002799563612088e+00 3.429251457192257e+00 4.706471100282418e+00 9.225638360935051e+03 + 30720 9.488750535890192e-01 -5.969895143580631e+00 -6.023343784428681e+00 3.878561537221091e+00 4.571651170321153e+00 9.288853101897590e+03 + 30740 1.030053142813441e+00 -6.047545336307401e+00 -6.012849410536223e+00 3.396575333698316e+00 4.595804708653581e+00 9.256560495884221e+03 + 30760 1.065508088103261e+00 -6.063088466597174e+00 -6.020473620991427e+00 3.388580386747530e+00 4.633281424841772e+00 9.280010405881187e+03 + 30780 1.025662986552197e+00 -5.976784246276273e+00 -6.034455046263975e+00 3.874813504510093e+00 4.543658846453255e+00 9.323111024558364e+03 + 30800 1.036392414434614e+00 -5.973020518739437e+00 -6.009214651418420e+00 3.850018535764266e+00 4.642186224897619e+00 9.245374583549519e+03 + 30820 1.109262716241106e+00 -6.066338968433568e+00 -6.002774361973263e+00 3.394903708073044e+00 4.759901514959179e+00 9.225551616357032e+03 + 30840 1.006318555309201e+00 -5.906725465884383e+00 -5.999150185469699e+00 4.219909990727194e+00 4.689192948189179e+00 9.214423920511816e+03 + 30860 9.868633211823782e-01 -5.874174890867751e+00 -5.999041150969393e+00 4.370866045434269e+00 4.653864656939341e+00 9.214083943549473e+03 + 30880 1.000837286275815e+00 -5.893315376548657e+00 -6.014113488093660e+00 4.254425930880663e+00 4.560784480941911e+00 9.260429901872551e+03 + 30900 1.050095759729751e+00 -5.970026701057205e+00 -5.973591716771170e+00 3.873171702791572e+00 4.852700830877584e+00 9.136128799380684e+03 + 30920 9.946703889043410e-01 -5.894667071620474e+00 -5.983252910475333e+00 4.355103801036861e+00 4.846430205718002e+00 9.165683298183008e+03 + 30940 1.045266271997797e+00 -5.978715013998176e+00 -6.004307928398388e+00 3.906512931213734e+00 4.759554456237015e+00 9.230281330819133e+03 + 30960 1.072975249847492e+00 -6.035261687772687e+00 -6.009549215421002e+00 3.534313013221960e+00 4.681958008457570e+00 9.246388037861461e+03 + 30980 1.028150911408279e+00 -5.991792902416377e+00 -5.964682442936535e+00 3.767956903397340e+00 4.923629357060635e+00 9.108945762788499e+03 + 31000 9.780792858873378e-01 -5.946930146284266e+00 -6.016483161340927e+00 3.940819686001421e+00 4.541435510251772e+00 9.267706398098047e+03 + 31020 9.747071814544598e-01 -5.975066107394660e+00 -5.993380992110841e+00 3.846419971878860e+00 4.741253069619304e+00 9.196734792240015e+03 + 31040 9.611223939463616e-01 -5.989449667834206e+00 -5.983910388873211e+00 3.757157498373922e+00 4.788964895368605e+00 9.167707324705199e+03 + 31060 9.746653768288451e-01 -6.042733143213880e+00 -5.957098753859750e+00 3.520778517597718e+00 5.012504433148058e+00 9.085821905216753e+03 + 31080 9.629410059637241e-01 -6.053500316147198e+00 -5.988083871777354e+00 3.415234642397118e+00 4.790865989130814e+00 9.180499437732762e+03 + 31100 9.271141112203976e-01 -6.023129546636375e+00 -6.021787410931914e+00 3.602113184336791e+00 4.609819935246636e+00 9.284034313310201e+03 + 31120 9.214205882075878e-01 -6.028808549588240e+00 -5.970123839607056e+00 3.544151692734612e+00 4.881128378876088e+00 9.125564414896737e+03 + 31140 9.173372047681599e-01 -6.028167080498715e+00 -5.937139158071414e+00 3.570041576851312e+00 5.092737993954344e+00 9.025064997360038e+03 + 31160 9.027283175335558e-01 -6.003422078394667e+00 -5.968943032078411e+00 3.730200041482977e+00 4.928184061046093e+00 9.121903976984209e+03 + 31180 9.206551675007310e-01 -6.019441222178425e+00 -5.991736326669456e+00 3.586156478703371e+00 4.745242276034595e+00 9.191689078966736e+03 + 31200 9.568823836717990e-01 -6.058508586790410e+00 -5.991603325108525e+00 3.374908917332005e+00 4.759089283465173e+00 9.191279499104474e+03 + 31220 1.026157313591186e+00 -6.143469050045558e+00 -5.964238213414087e+00 2.934634287348274e+00 4.963805487168508e+00 9.107596993353189e+03 + 31240 9.445418433114563e-01 -5.999588751504112e+00 -5.996894238822117e+00 3.728397262335786e+00 4.743869571130285e+00 9.207528199190974e+03 + 31260 9.666469883300745e-01 -6.006964590137052e+00 -6.035108192060314e+00 3.623191486609150e+00 4.461586569157456e+00 9.325143019976338e+03 + 31280 9.946660318626865e-01 -6.025351233924083e+00 -6.014253494746576e+00 3.629602543279481e+00 4.693327479006314e+00 9.260854404733966e+03 + 31300 1.037528001219882e+00 -6.072865970338513e+00 -6.015662127650454e+00 3.269594692881536e+00 4.598068009862418e+00 9.265199556733678e+03 + 31320 1.037098546660028e+00 -6.063953380848192e+00 -5.963259204225578e+00 3.386200511838446e+00 4.964402056378967e+00 9.104596709750644e+03 + 31340 9.400833722817629e-01 -5.913713967190469e+00 -5.975724559362115e+00 4.219363994210710e+00 4.863289577852994e+00 9.142648055379241e+03 + 31360 1.005693473818706e+00 -6.003236941627807e+00 -5.966587405244079e+00 3.734398435813316e+00 4.944845745226111e+00 9.114746030971854e+03 + 31380 9.898172129004118e-01 -5.973630616044302e+00 -5.976825335545577e+00 3.833303107607502e+00 4.814958533849933e+00 9.146039562334137e+03 + 31400 9.916239883756244e-01 -5.972147794349388e+00 -6.022310809769923e+00 3.826613234368332e+00 4.538569437122073e+00 9.285670527821061e+03 + 31420 9.853010009460182e-01 -5.960257259779558e+00 -6.031051253930139e+00 3.876336637618378e+00 4.469826567870554e+00 9.312621158119779e+03 + 31440 1.008612864025714e+00 -5.992411241760644e+00 -6.032357876271757e+00 3.740748304259344e+00 4.511368547174822e+00 9.316659181754541e+03 + 31460 1.029298588630407e+00 -6.025227336699452e+00 -5.984430718024970e+00 3.582662681289156e+00 4.816923178974368e+00 9.169314977940734e+03 + 31480 9.334042655857491e-01 -5.886380538653455e+00 -5.959570579725227e+00 4.326493315647035e+00 4.906224773690670e+00 9.093325369022054e+03 + 31500 9.460788782783096e-01 -5.903840838207413e+00 -5.968914622411247e+00 4.199169505233701e+00 4.825505766199730e+00 9.121811894688415e+03 + 31520 9.921020168749236e-01 -5.966852224109777e+00 -5.977478865136757e+00 3.836594761640741e+00 4.775574944396443e+00 9.148035895433137e+03 + 31540 1.086757747524241e+00 -6.100875052171105e+00 -5.981749757419360e+00 3.159684679096285e+00 4.843720556140588e+00 9.161128620478910e+03 + 31560 1.012403641202399e+00 -5.985660090819247e+00 -6.066771533357364e+00 3.762922367121042e+00 4.297167912112005e+00 9.423178512264898e+03 + 31580 9.908953084462823e-01 -5.955755178057959e+00 -5.991854202921882e+00 3.955597934415209e+00 4.748311747340519e+00 9.192064265012976e+03 + 31600 1.012841705393386e+00 -5.988797347830026e+00 -6.021614436983182e+00 3.801713003081584e+00 4.613272198736034e+00 9.283524853063835e+03 + 31620 9.856905510286146e-01 -5.952090613452732e+00 -6.024505009133660e+00 3.896304658929429e+00 4.480489992838022e+00 9.292440100127540e+03 + 31640 9.808957590746398e-01 -5.950020068753343e+00 -6.038990859668990e+00 3.950614651381570e+00 4.439730601758526e+00 9.337151397295907e+03 + 31660 1.036074195414344e+00 -6.041258506455786e+00 -6.019883376935107e+00 3.476726351844587e+00 4.599465653342928e+00 9.278182697456441e+03 + 31680 9.670405573675283e-01 -5.953493427104958e+00 -5.982809413201300e+00 3.933682456718242e+00 4.765345527918863e+00 9.164347801399234e+03 + 31700 1.014695035878167e+00 -6.039065744398288e+00 -5.954212363858595e+00 3.482383566716590e+00 4.969624808793706e+00 9.077024378753564e+03 + 31720 1.013536511776796e+00 -6.053840881400317e+00 -5.990882304821087e+00 3.400441149979272e+00 4.761959039505451e+00 9.189085760277419e+03 + 31740 1.021979526902668e+00 -6.086641612640392e+00 -5.970761335804376e+00 3.204987839714851e+00 4.870390321722142e+00 9.127517956010952e+03 + 31760 9.625281939923827e-01 -6.021074911137812e+00 -5.979439065050901e+00 3.544914527181159e+00 4.783993998538560e+00 9.154035476879892e+03 + 31780 9.433311087288180e-01 -6.011521020668876e+00 -6.011932715149804e+00 3.582099868263241e+00 4.579735854844234e+00 9.253705730109961e+03 + 31800 9.713133409274932e-01 -6.072328735202534e+00 -5.978045087721832e+00 3.331249955513237e+00 4.872641249694722e+00 9.149778865828997e+03 + 31820 1.006863498808756e+00 -6.141223073159639e+00 -5.987275143263989e+00 2.948497418537118e+00 4.832490255363100e+00 9.178035202542562e+03 + 31840 9.423011273421551e-01 -6.059547892687362e+00 -6.009496939492481e+00 3.361322583131522e+00 4.648722901736505e+00 9.246230445165669e+03 + 31860 9.127143952960304e-01 -6.025446779067460e+00 -6.020233055099549e+00 3.527815078077888e+00 4.557753087922807e+00 9.279282767049472e+03 + 31880 9.473592356355940e-01 -6.081742316663823e+00 -5.968995517558610e+00 3.284746388583849e+00 4.932155956556758e+00 9.122126152124119e+03 + 31900 9.832930107977065e-01 -6.133433064179410e+00 -5.971055609207422e+00 2.979672147180035e+00 4.912068621459143e+00 9.128430679032603e+03 + 31920 9.464064454723948e-01 -6.069842917104076e+00 -6.008705349468276e+00 3.314464258362032e+00 4.665525632734810e+00 9.243799680474718e+03 + 31940 9.661712321742398e-01 -6.082367210269844e+00 -5.959745721492487e+00 3.276834758924533e+00 4.980946323098177e+00 9.093904524762322e+03 + 31960 8.916185121037674e-01 -5.944174559311961e+00 -6.024889680359971e+00 4.031509252464100e+00 4.568030536781811e+00 9.293602126324888e+03 + 31980 1.049254255374969e+00 -6.139678611145657e+00 -5.964004648252089e+00 2.989105870870239e+00 4.997852951263006e+00 9.106862384414973e+03 + 32000 9.648630518522827e-01 -5.969066050823690e+00 -5.995257358219771e+00 3.908484457171912e+00 4.758089917011895e+00 9.202478955826555e+03 + 32020 1.035519382210412e+00 -6.028345384113827e+00 -6.007814996720794e+00 3.561257097964957e+00 4.679145759442934e+00 9.241005328725218e+03 + 32040 1.020060088930005e+00 -5.968813682842733e+00 -6.015766815454856e+00 3.895951900260616e+00 4.626339746828021e+00 9.265513689069707e+03 + 32060 1.016144172652651e+00 -5.937081273559006e+00 -6.036823881807451e+00 4.030575455558656e+00 4.457837963877341e+00 9.330439467542916e+03 + 32080 1.027101018171872e+00 -5.937029292729678e+00 -5.989872507742119e+00 4.059003181113642e+00 4.755569263051113e+00 9.185995438387132e+03 + 32100 1.098238670337370e+00 -6.034255968716942e+00 -5.986866072223750e+00 3.471553706038074e+00 4.743673825264770e+00 9.176783597021233e+03 + 32120 1.039299429612162e+00 -5.945641544423541e+00 -5.946628756525702e+00 3.979436721702043e+00 4.973767997040855e+00 9.053932521117311e+03 + 32140 1.031130516924966e+00 -5.932976143097507e+00 -5.989265046009744e+00 4.053595729791855e+00 4.730376138590216e+00 9.184055983665565e+03 + 32160 1.139155226263383e+00 -6.095400981284398e+00 -5.953960516519396e+00 3.240597499213794e+00 5.052770535735624e+00 9.076247284515312e+03 + 32180 1.003924065243859e+00 -5.903984596137155e+00 -6.002263549261220e+00 4.205961633158488e+00 4.641628675701264e+00 9.223972431943394e+03 + 32200 9.838592422111661e-01 -5.887876087738622e+00 -5.989580992885031e+00 4.298560807389586e+00 4.714555503255702e+00 9.185064722790390e+03 + 32220 1.035817097242756e+00 -5.979570910226701e+00 -5.977438051020608e+00 3.802679390304572e+00 4.814926597924853e+00 9.147912576397115e+03 + 32240 1.032477654928390e+00 -5.991149175051049e+00 -6.046992318322081e+00 3.708864850764085e+00 4.388204880403325e+00 9.361879499324319e+03 + 32260 1.033578953706297e+00 -6.015769207772049e+00 -6.042219809275434e+00 3.576601800893749e+00 4.424718353843958e+00 9.347128820924871e+03 + 32280 1.067674078544079e+00 -6.096164385183002e+00 -5.987912396511006e+00 3.184549397123628e+00 4.806149068019337e+00 9.179994814015727e+03 + 32300 9.600677799837047e-01 -5.968901963777469e+00 -5.985894939884998e+00 3.866803406245334e+00 4.769227107781349e+00 9.173788708514339e+03 + 32320 9.792961305609984e-01 -6.026018193882752e+00 -5.966433870789189e+00 3.537755844627505e+00 4.879898248474949e+00 9.114286785628126e+03 + 32340 9.595377858193996e-01 -6.021384946979783e+00 -5.968743914919930e+00 3.626845458350680e+00 4.929118410611744e+00 9.121326179560865e+03 + 32360 1.001193724710751e+00 -6.101354758689940e+00 -5.945732778314581e+00 3.146844205895582e+00 5.040449699634523e+00 9.051204181712123e+03 + 32380 9.575576228320468e-01 -6.049902923346330e+00 -5.964037241913340e+00 3.432127163606471e+00 4.925181194065961e+00 9.106969035773889e+03 + 32400 9.023020581377768e-01 -5.973090694523596e+00 -5.999337801846899e+00 3.833452581197614e+00 4.682737629220478e+00 9.215010351646695e+03 + 32420 9.855948418331900e-01 -6.097012678993829e+00 -5.995187820381417e+00 3.193820700957353e+00 4.778514796455772e+00 9.202290988927707e+03 + 32440 9.202134795407484e-01 -5.995784093958020e+00 -6.055229322860793e+00 3.676824510772164e+00 4.335480807293002e+00 9.387365564567015e+03 + 32460 9.484172171834941e-01 -6.031879505956519e+00 -5.967284221333651e+00 3.535815044791318e+00 4.906731165183817e+00 9.116879620168371e+03 + 32480 9.209294232122592e-01 -5.978709581045299e+00 -5.965196705152297e+00 3.806712134281354e+00 4.884305158769760e+00 9.110509967208889e+03 + 32500 1.024461330984595e+00 -6.112183617043517e+00 -5.945881189124943e+00 3.063094297239821e+00 5.018028573565820e+00 9.051657604680375e+03 + 32520 9.966409426591925e-01 -6.039748047813636e+00 -5.977745828779042e+00 3.460327616955541e+00 4.816353953464565e+00 9.148856252643993e+03 + 32540 1.026618816040524e+00 -6.040466235205651e+00 -5.995258831462336e+00 3.514057555346632e+00 4.773645463463867e+00 9.202497325675286e+03 + 32560 9.905758101902901e-01 -5.927188620491699e+00 -6.042688727157232e+00 4.018455344370301e+00 4.355235858313066e+00 9.348555905552337e+03 + 32580 1.028368927400855e+00 -5.914786810730197e+00 -5.999098683408372e+00 4.114438121664387e+00 4.630306301526177e+00 9.214257875462297e+03 + 32600 1.057310847934023e+00 -5.895817861392816e+00 -5.962282607285801e+00 4.328810748762721e+00 4.947159892459013e+00 9.101607544051960e+03 + 32620 1.141385783244919e+00 -5.983634184961108e+00 -6.016315979428166e+00 3.833221223798258e+00 4.645557302477066e+00 9.267184456782659e+03 + 32640 1.096183332990647e+00 -5.907131105956358e+00 -6.055679590897610e+00 4.182758762756150e+00 4.329770374419728e+00 9.388749440970971e+03 + 32660 1.091101886439529e+00 -5.903872653265998e+00 -6.050135155551454e+00 4.140773736207813e+00 4.300911814035641e+00 9.371609747317354e+03 + 32680 1.032194298541337e+00 -5.829471544651454e+00 -6.065635593769994e+00 4.607630255012726e+00 4.251539738705584e+00 9.419641797930819e+03 + 32700 1.075315466144440e+00 -5.915705158689086e+00 -6.051224522903864e+00 4.084596246122968e+00 4.306423085247879e+00 9.374973442034276e+03 + 32720 9.963322877603308e-01 -5.828216475422855e+00 -6.006125483673920e+00 4.578146053082372e+00 4.556564996374713e+00 9.235820741236295e+03 + 32740 1.050732333244374e+00 -5.939170299697100e+00 -5.966693673923902e+00 4.052716784854010e+00 4.894673310815318e+00 9.115033934738623e+03 + 32760 1.033896724924840e+00 -5.944528228688386e+00 -5.949862543570422e+00 4.090809839460754e+00 5.060179377925544e+00 9.063749233000704e+03 + 32780 1.052354141675206e+00 -6.003336167272537e+00 -5.972596449875436e+00 3.647360915249126e+00 4.823873129499175e+00 9.133135430752021e+03 + 32800 1.073910284282166e+00 -6.067910448272880e+00 -5.985262887691782e+00 3.345056255769394e+00 4.819631338294726e+00 9.171875597900711e+03 + 32820 9.775292864607289e-01 -5.957955990602545e+00 -6.015194298174450e+00 3.945630672349052e+00 4.616959452671707e+00 9.263723346914752e+03 + 32840 1.014515311767048e+00 -6.041426416253023e+00 -5.959381575458423e+00 3.543893316844824e+00 5.015007489085500e+00 9.092782528398398e+03 + 32860 9.771236431353149e-01 -6.008856482436970e+00 -5.995242488775076e+00 3.702961246201155e+00 4.781134904566464e+00 9.202431836787793e+03 + 32880 9.359581615015365e-01 -5.966502448541487e+00 -6.005303330236169e+00 3.880142985563565e+00 4.657342318455666e+00 9.233327057078899e+03 + 32900 1.024506818194436e+00 -6.113398823141142e+00 -5.976705007758179e+00 3.086691234929837e+00 4.871608276158380e+00 9.145689710194485e+03 + 32920 9.821760689870432e-01 -6.064576136998426e+00 -5.986085596386804e+00 3.322327498603504e+00 4.773032329167342e+00 9.174399142940540e+03 + 32940 8.885101122037949e-01 -5.934182331659972e+00 -6.031714083559933e+00 3.997619216459932e+00 4.437576804060526e+00 9.314680141672854e+03 + 32960 1.007291991370197e+00 -6.114243354177791e+00 -5.996434017789137e+00 3.095434838450671e+00 4.771914278930209e+00 9.206115344588678e+03 + 32980 8.837907016866648e-01 -5.931861855604391e+00 -6.020070328385952e+00 4.101422870375446e+00 4.594916169446682e+00 9.278761965753825e+03 + 33000 9.948842658827406e-01 -6.093352508498851e+00 -5.973747827408593e+00 3.217488351926971e+00 4.904276939511819e+00 9.136640442796572e+03 + 33020 9.418261903321993e-01 -6.004828833759782e+00 -6.040295020325962e+00 3.650864488095325e+00 4.447212156457685e+00 9.341156693958288e+03 + 33040 1.014473396684694e+00 -6.098423682562371e+00 -5.977205046854983e+00 3.174403127292389e+00 4.870459292047467e+00 9.147228921025095e+03 + 33060 9.682723288612470e-01 -6.012235497394471e+00 -6.000007985472951e+00 3.628739295580145e+00 4.698951561234862e+00 9.217076843382387e+03 + 33080 9.512570486546017e-01 -5.959705420307958e+00 -6.024249286226297e+00 3.908181828162455e+00 4.537560961928381e+00 9.291649760971495e+03 + 33100 9.825182054977213e-01 -5.972253178626399e+00 -6.009181189193534e+00 3.906170491042190e+00 4.694124139774537e+00 9.245264065071027e+03 + 33120 1.011290548760544e+00 -5.977962705130107e+00 -6.025429825485927e+00 3.783023881418418e+00 4.510460330822164e+00 9.295247991989161e+03 + 33140 1.035904693017966e+00 -5.979489384586565e+00 -6.017401148220385e+00 3.776679967247988e+00 4.558984753636135e+00 9.270501659271957e+03 + 33160 1.017901586083734e+00 -5.921197717117971e+00 -5.986110637303543e+00 4.115655429637096e+00 4.742915396689603e+00 9.174444653200930e+03 + 33180 1.016590461602418e+00 -5.891796800494371e+00 -6.035454600750389e+00 4.210844144645867e+00 4.385938824603069e+00 9.326190827814897e+03 + 33200 1.007686314752772e+00 -5.859288615973827e+00 -6.053563130694391e+00 4.411009338219636e+00 4.295455010810165e+00 9.382206704543649e+03 + 33220 1.045583787113886e+00 -5.905406374921379e+00 -6.041839773191807e+00 4.166560506332933e+00 4.383138820463991e+00 9.345887845468880e+03 + 33240 1.092803625455598e+00 -5.975996715480321e+00 -5.950072279409630e+00 3.836522296491449e+00 4.985384420202870e+00 9.064394525730564e+03 + 33260 1.064106900951517e+00 -5.936705484660184e+00 -5.977362237154084e+00 4.077796013622888e+00 4.844338649190799e+00 9.147660980068391e+03 + 33280 1.056509770396473e+00 -5.933676998977393e+00 -6.039612083656045e+00 4.014096649392327e+00 4.405800999766137e+00 9.339039460162605e+03 + 33300 1.058596255873486e+00 -5.954547039099587e+00 -6.054347829353620e+00 3.899822438001336e+00 4.326750856240304e+00 9.384634138077206e+03 + 33320 9.995426027020912e-01 -5.887102604814530e+00 -5.998361390906485e+00 4.311264598194397e+00 4.672399431212884e+00 9.212015321195044e+03 + 33340 1.024144071306599e+00 -5.944226230215479e+00 -6.036343301732938e+00 4.019560779534546e+00 4.490610299810554e+00 9.328915862952545e+03 + 33360 9.826533498148270e-01 -5.900776968505179e+00 -6.009856306709564e+00 4.227861454000090e+00 4.601511014057474e+00 9.247291781576072e+03 + 33380 1.026112055344811e+00 -5.981694239757505e+00 -6.026690339317030e+00 3.828267171528675e+00 4.569892604733983e+00 9.299161338812304e+03 + 33400 1.027338008836794e+00 -5.999389544555160e+00 -6.005385859909287e+00 3.742750503138875e+00 4.708318732448671e+00 9.233588696974635e+03 + 33420 9.544292799922232e-01 -5.903454059310048e+00 -5.991969118408907e+00 4.174774041289961e+00 4.666506874283187e+00 9.192426741593867e+03 + 33440 1.035032992942500e+00 -6.029752220853137e+00 -5.993148512680112e+00 3.551357327907769e+00 4.761541484642809e+00 9.196008155137468e+03 + 33460 1.016590397158726e+00 -6.008240778025461e+00 -6.009264392142864e+00 3.606265774375109e+00 4.600388023709211e+00 9.245504358895059e+03 + 33480 9.909190943424009e-01 -5.975561778125635e+00 -6.015255731992795e+00 3.779233624441518e+00 4.551304798716775e+00 9.263943693369867e+03 + 33500 1.010956066002677e+00 -6.011375588047036e+00 -5.992561036770310e+00 3.641250325718497e+00 4.749286390691863e+00 9.194243303248837e+03 + 33520 9.526404549532858e-01 -5.931040139373117e+00 -6.019384726986587e+00 4.069755421049404e+00 4.562467127692109e+00 9.276627152561616e+03 + 33540 1.006134251844858e+00 -6.014614251276910e+00 -5.967185196317343e+00 3.651483996661675e+00 4.923828969862043e+00 9.116584873078042e+03 + 33560 9.909320351893766e-01 -5.994478561367085e+00 -5.994567216989907e+00 3.696900051063310e+00 4.696390976757652e+00 9.200381257334860e+03 + 33580 1.011566286102446e+00 -6.026766243119209e+00 -5.954209957902540e+00 3.570878489717851e+00 4.987507907480815e+00 9.077018494720029e+03 + 33600 1.040060362239749e+00 -6.068739464177391e+00 -5.983131675898788e+00 3.346362583125976e+00 4.837935751184133e+00 9.165340318650027e+03 + 33620 9.832521546667217e-01 -5.984850037498007e+00 -6.019411865553304e+00 3.770092880875098e+00 4.571633515755979e+00 9.276754615967526e+03 + 33640 9.493099287588730e-01 -5.936010863621783e+00 -6.055380962785319e+00 4.063298400917445e+00 4.377856819057278e+00 9.387830338545773e+03 + 33660 1.002562288935810e+00 -6.015995386458849e+00 -6.022751294404843e+00 3.553025583885832e+00 4.514232114986559e+00 9.287039017849323e+03 + 33680 1.000181367334738e+00 -6.013357538221198e+00 -5.987790535275792e+00 3.684341817160987e+00 4.831151504554430e+00 9.179613643877510e+03 + 33700 1.062918946824490e+00 -6.109056105876714e+00 -5.939613721737357e+00 3.129512882245945e+00 5.102477273098335e+00 9.032614834795060e+03 + 33720 1.077163601037068e+00 -6.132454079361533e+00 -5.988201193570820e+00 2.958358374260867e+00 4.786680767533074e+00 9.180831563423428e+03 + 33740 9.591824694565974e-01 -5.960513209100872e+00 -6.029970134017470e+00 3.864132888424566e+00 4.465300477129068e+00 9.309286688892425e+03 + 33760 9.655813243360327e-01 -5.972241625418071e+00 -6.044301501602399e+00 3.819244848016882e+00 4.405465887736669e+00 9.353562337694311e+03 + 33780 1.019414928031936e+00 -6.056648959119066e+00 -5.991213325013362e+00 3.443029397414395e+00 4.818770934580998e+00 9.190083719055110e+03 + 33800 1.005107492149035e+00 -6.040296425515112e+00 -5.996648450536793e+00 3.534158802565248e+00 4.784792229393052e+00 9.206777562010311e+03 + 33820 9.538142411856483e-01 -5.968929879236429e+00 -6.046819329010555e+00 3.836025278025104e+00 4.388772004068676e+00 9.361330812722548e+03 + 33840 9.745456844589168e-01 -6.004652603716979e+00 -6.017659746890974e+00 3.670393714886937e+00 4.595704685932956e+00 9.271348599098543e+03 + 33860 9.963599992953553e-01 -6.041293836410584e+00 -5.973431075777169e+00 3.475517312208405e+00 4.865195785493738e+00 9.135666734808550e+03 + 33880 9.790545822294348e-01 -6.018663584038736e+00 -5.975827627523983e+00 3.573338346844414e+00 4.819309037994973e+00 9.142996389690232e+03 + 33900 9.934181969223480e-01 -6.038828460402913e+00 -5.993828262365979e+00 3.474594052086680e+00 4.732992152972892e+00 9.198109785679690e+03 + 33920 9.566232117186738e-01 -5.980872954862074e+00 -6.003149635533500e+00 3.785335169897340e+00 4.657419022176818e+00 9.226719425663878e+03 + 33940 9.782705328487138e-01 -6.008203452463043e+00 -6.006349345703946e+00 3.629520169416007e+00 4.640166737348839e+00 9.236535449240409e+03 + 33960 9.730603987823262e-01 -5.991707730102409e+00 -6.013035035646773e+00 3.722969327804267e+00 4.600504638978659e+00 9.257119134562827e+03 + 33980 1.008031210947094e+00 -6.031005822362550e+00 -6.022645688184949e+00 3.536983854793231e+00 4.584989038967599e+00 9.286712156844713e+03 + 34000 1.007501051246186e+00 -6.016598825950767e+00 -5.993139477018829e+00 3.606913073101392e+00 4.741620284991095e+00 9.195986222618165e+03 + 34020 1.009104436615456e+00 -6.003384737074439e+00 -5.967296160078469e+00 3.763566378079996e+00 4.970792571880101e+00 9.116911820149629e+03 + 34040 1.020820333454005e+00 -6.002514337378292e+00 -5.978831193917095e+00 3.775572081178466e+00 4.911564355887261e+00 9.152126091840531e+03 + 34060 1.046977347263103e+00 -6.021077909640837e+00 -5.970594694005288e+00 3.630793767153293e+00 4.920676203584988e+00 9.126964309891086e+03 + 34080 1.024875014848771e+00 -5.966043589459263e+00 -6.020631923614909e+00 3.880299391636407e+00 4.566844729397279e+00 9.280491812406413e+03 + 34100 1.047799409307451e+00 -5.976950233080183e+00 -6.029235608948322e+00 3.820214260622688e+00 4.519983541252071e+00 9.307006442654818e+03 + 34120 1.023358103227549e+00 -5.921843887064405e+00 -6.024100370473327e+00 4.123603945725957e+00 4.536431393852260e+00 9.291160401261010e+03 + 34140 1.015922610594815e+00 -5.896425782045777e+00 -5.959073139826788e+00 4.283233288741465e+00 4.923502465715619e+00 9.091820100159292e+03 + 34160 9.916638807138434e-01 -5.845651034995084e+00 -6.020712995902945e+00 4.547398807107962e+00 4.542165936824131e+00 9.280713714564941e+03 + 34180 1.051971084059533e+00 -5.922571250115865e+00 -6.017513860652743e+00 4.114656361896693e+00 4.569481199872443e+00 9.270911168831601e+03 + 34200 1.106068215116996e+00 -5.995222626473003e+00 -6.034518513134090e+00 3.755779783645032e+00 4.530136721418264e+00 9.323313715433773e+03 + 34220 1.079899896113379e+00 -5.958102279494822e+00 -6.031292670657513e+00 3.940007057169679e+00 4.519736504937079e+00 9.313368331626587e+03 + 34240 1.040530389145295e+00 -5.912713241731042e+00 -6.020994864698386e+00 4.155612304230641e+00 4.533842468625159e+00 9.281611392195828e+03 + 34260 1.038385502735221e+00 -5.934455962771482e+00 -5.990650190747715e+00 4.032600633072958e+00 4.709924680004757e+00 9.188351781956970e+03 + 34280 9.816802809609201e-01 -5.886618645405675e+00 -6.022051440453660e+00 4.293792621342572e+00 4.516116554019744e+00 9.284852890799824e+03 + 34300 1.008242184330661e+00 -5.969505421377512e+00 -5.989468312127256e+00 3.872069033939700e+00 4.757439026007315e+00 9.184737041974673e+03 + 34320 1.049726087307255e+00 -6.078501493940418e+00 -5.963419357180076e+00 3.265677514126256e+00 4.926496952307247e+00 9.105114148665427e+03 + 34340 9.723770826981074e-01 -6.007187451933721e+00 -5.961854506551731e+00 3.643808598822742e+00 4.904117386456750e+00 9.100285536805990e+03 + 34360 9.694093608996591e-01 -6.033295905971626e+00 -5.951356660526777e+00 3.526241155558596e+00 4.996748982960172e+00 9.068296289882323e+03 + 34380 9.557441849690711e-01 -6.032550573792705e+00 -5.966200653462914e+00 3.527830410387740e+00 4.908821920538392e+00 9.113590537486827e+03 + 34400 9.661267272647774e-01 -6.058926567957526e+00 -5.969054751427723e+00 3.380206435372358e+00 4.896264313505148e+00 9.122287998863536e+03 + 34420 9.020497339132060e-01 -5.969203013717589e+00 -5.974054538724513e+00 3.869734327888060e+00 4.841876120527235e+00 9.137540553005716e+03 + 34440 9.453643581845979e-01 -6.030080413734153e+00 -5.947370069625577e+00 3.559837076375358e+00 5.034772671631186e+00 9.056192528030157e+03 + 34460 9.605017398627637e-01 -6.042125172673115e+00 -6.019578947764553e+00 3.489347025223586e+00 4.618810937665579e+00 9.277247346662491e+03 + 34480 8.667454545876117e-01 -5.890069269701408e+00 -6.054370625260697e+00 4.226265117121395e+00 4.282821307947361e+00 9.384702974533697e+03 + 34500 9.667324717481441e-01 -6.023775852015619e+00 -6.042757795044354e+00 3.586163766087604e+00 4.477166511770422e+00 9.348774180131521e+03 + 34520 9.828617966496069e-01 -6.031885281962625e+00 -6.035867863194475e+00 3.450014354126718e+00 4.427145756390980e+00 9.327503661049588e+03 + 34540 1.025224687555036e+00 -6.078032885983578e+00 -6.001706255430841e+00 3.281142016681364e+00 4.719421340823086e+00 9.222307007059961e+03 + 34560 9.515827488377635e-01 -5.951093580304645e+00 -6.023075579934879e+00 3.879901444550216e+00 4.466569663494971e+00 9.288000812847880e+03 + 34580 9.254710715132071e-01 -5.892137676379655e+00 -6.003242868211235e+00 4.319130572519630e+00 4.681147367549836e+00 9.226998845068720e+03 + 34600 1.028780970708773e+00 -6.023337720739420e+00 -6.023577773530921e+00 3.536260684024431e+00 4.534882263747579e+00 9.289589552084472e+03 + 34620 1.023680481024618e+00 -5.995164083917780e+00 -5.996616836867778e+00 3.734248580175923e+00 4.725906647924241e+00 9.206680704835122e+03 + 34640 1.041495537971289e+00 -6.003796954859683e+00 -5.990264366610287e+00 3.733922625690060e+00 4.811628841579359e+00 9.187179734565141e+03 + 34660 9.955663553817961e-01 -5.919990413854217e+00 -5.983262117465539e+00 4.100429290565231e+00 4.737113377164529e+00 9.165736890928216e+03 + 34680 1.013947706321502e+00 -5.931515284001444e+00 -5.999743416884854e+00 4.045626903089211e+00 4.653850405803230e+00 9.216265471077868e+03 + 34700 1.099043546120746e+00 -6.041435768858401e+00 -6.015145364394257e+00 3.414520521422550e+00 4.565484092282604e+00 9.263621766710867e+03 + 34720 1.070244974300127e+00 -5.986006103255457e+00 -6.035740332354205e+00 3.755219502523077e+00 4.469637862690985e+00 9.327114563653928e+03 + 34740 9.762089024696813e-01 -5.839924298871928e+00 -6.080039847748727e+00 4.483207159635066e+00 4.104426520223385e+00 9.464380798389469e+03 + 34760 9.895705831263665e-01 -5.856632866073813e+00 -6.045011604899007e+00 4.465455171018823e+00 4.383755301168941e+00 9.355733234776131e+03 + 34780 1.126911748955256e+00 -6.061192222049099e+00 -5.971015261928007e+00 3.319649506086400e+00 4.837459565941193e+00 9.128295876529504e+03 + 34800 1.023743464365290e+00 -5.917310536904900e+00 -6.007460236702479e+00 4.068825908092984e+00 4.551172381234330e+00 9.239960142122145e+03 + 34820 1.011939358212453e+00 -5.919685254584234e+00 -6.007675986906934e+00 4.083882291662787e+00 4.578625890144023e+00 9.240628281583078e+03 + 34840 9.776361263010142e-01 -5.894254870356567e+00 -6.031236316463588e+00 4.253253459732388e+00 4.466684798375597e+00 9.313168334875332e+03 + 34860 1.011614925279996e+00 -5.976190196065733e+00 -5.982365679544357e+00 3.846635598065020e+00 4.811175016277780e+00 9.162989527938806e+03 + 34880 1.030663168647257e+00 -6.037727136007128e+00 -6.005082222016327e+00 3.474678550261223e+00 4.662130698180515e+00 9.232675854604468e+03 + 34900 9.615131270545991e-01 -5.970550852425270e+00 -6.065990989308089e+00 3.831150561966386e+00 4.283118526671790e+00 9.420748999587729e+03 + 34920 9.582194095786187e-01 -5.999517597939873e+00 -6.025604405418504e+00 3.666378216794398e+00 4.516583731331689e+00 9.295813282973575e+03 + 34940 9.591793317933317e-01 -6.028434515064667e+00 -5.985743755458351e+00 3.500854515364196e+00 4.745991463397360e+00 9.173337498065292e+03 + 34960 9.528382792416653e-01 -6.036725263022418e+00 -5.992203731268289e+00 3.541260963669013e+00 4.796910488685990e+00 9.193127549673922e+03 + 34980 9.098862616852088e-01 -5.986796738569259e+00 -6.063047567619219e+00 3.751548439277189e+00 4.313704379094657e+00 9.411630989365538e+03 + 35000 9.946128171486417e-01 -6.123069083603966e+00 -6.014319459491903e+00 3.077583542535138e+00 4.702040713136546e+00 9.261079636348179e+03 + 35020 9.386597653974768e-01 -6.047007927321903e+00 -6.005349037099489e+00 3.499504007068639e+00 4.738715801418169e+00 9.233474257289656e+03 + 35040 9.525044259563686e-01 -6.070378946277703e+00 -5.975453071350080e+00 3.358403959726223e+00 4.903483023292305e+00 9.141844419771909e+03 + 35060 9.708767237379334e-01 -6.092874282600277e+00 -5.942564128966005e+00 3.210155887368002e+00 5.073260049957089e+00 9.041580827483553e+03 + 35080 9.620292402261388e-01 -6.065894776057851e+00 -5.984434296877148e+00 3.332415334647071e+00 4.800174012071081e+00 9.169322805206582e+03 + 35100 9.633828217828498e-01 -6.047792242674332e+00 -5.969625045998292e+00 3.464090779595137e+00 4.912938919243548e+00 9.124039799294724e+03 + 35120 9.651560149585100e-01 -6.023435614507056e+00 -6.004345763615860e+00 3.570539524235282e+00 4.680156402197408e+00 9.230394337601212e+03 + 35140 9.829858487790532e-01 -6.016270159665145e+00 -5.988818738133913e+00 3.609355863913366e+00 4.766986174439450e+00 9.182766338163943e+03 + 35160 1.035554988678442e+00 -6.059835571795576e+00 -6.023232999831624e+00 3.361812770625831e+00 4.571990403072551e+00 9.288504479763618e+03 + 35180 1.021937597628327e+00 -6.005989437394526e+00 -6.033916144653193e+00 3.673538259000266e+00 4.513178784277017e+00 9.321471000862713e+03 + 35200 1.009887627307424e+00 -5.964284445018313e+00 -6.008096039141128e+00 3.896271349730603e+00 4.644698396455121e+00 9.241894629431230e+03 + 35220 1.046293874052755e+00 -5.997090321820147e+00 -5.987756970571938e+00 3.728712162675501e+00 4.782305709874150e+00 9.179512023004947e+03 + 35240 1.035532479400028e+00 -5.966922393249788e+00 -5.944654736533561e+00 3.908245926674538e+00 5.036110257447851e+00 9.047908547811123e+03 + 35260 1.055910471537084e+00 -5.985794980536277e+00 -5.966366971749410e+00 3.757860817102530e+00 4.869419450031367e+00 9.114041287972956e+03 + 35280 9.914118944035317e-01 -5.882636340272437e+00 -5.955341253761432e+00 4.362651872784332e+00 4.945169008481516e+00 9.080410211868437e+03 + 35300 9.980277251952221e-01 -5.887868759599275e+00 -5.926655862811823e+00 4.326186556963624e+00 5.103465008032349e+00 8.993190609108990e+03 + 35320 1.008895982719608e+00 -5.898429163431519e+00 -5.973566295852499e+00 4.280649657842436e+00 4.849200616047505e+00 9.136027814065830e+03 + 35340 9.959755945210601e-01 -5.877509368121739e+00 -6.026923636931192e+00 4.291175622844934e+00 4.433215769557683e+00 9.299869276951040e+03 + 35360 1.019084390411524e+00 -5.914289462138371e+00 -6.003512183652201e+00 4.122029291185329e+00 4.609698617081389e+00 9.227833754767153e+03 + 35380 1.061972754544876e+00 -5.984052329833881e+00 -5.979860993472045e+00 3.776489085673686e+00 4.800556387670555e+00 9.155335191928541e+03 + 35400 1.048804680807730e+00 -5.976178500522182e+00 -6.031579602916313e+00 3.814338633541412e+00 4.496216930301423e+00 9.314231151488093e+03 + 35420 1.062867717287666e+00 -6.014846747319091e+00 -6.000582120008563e+00 3.681429904249789e+00 4.763339601710785e+00 9.218829654429912e+03 + 35440 9.809606251252622e-01 -5.919993962061801e+00 -6.027828705111792e+00 4.186165976818756e+00 4.566962194853144e+00 9.302661459632822e+03 + 35460 1.036798418834628e+00 -6.034977298837317e+00 -5.983173367487371e+00 3.578184102045912e+00 4.875650292489768e+00 9.165473176168489e+03 + 35480 1.019815420802907e+00 -6.051459735852447e+00 -6.003439553470780e+00 3.453160003917524e+00 4.728899322252266e+00 9.227598678745309e+03 + 35500 9.607458567618672e-01 -6.015146515225867e+00 -5.966977138932953e+00 3.659146178202568e+00 4.935742191063367e+00 9.115945259084616e+03 + 35520 9.562125210559344e-01 -6.054425898275792e+00 -5.961694010328486e+00 3.386505619062743e+00 4.918986469869451e+00 9.099817996047137e+03 + 35540 8.918510136247597e-01 -5.994836132420174e+00 -6.019821536132795e+00 3.799720145926223e+00 4.656250091329621e+00 9.277972624783231e+03 + 35560 1.000482276871838e+00 -6.177360456615081e+00 -5.975629566171635e+00 2.769748833268951e+00 4.928118823949620e+00 9.142411374504662e+03 + 35580 9.097533839281328e-01 -6.053908814008033e+00 -6.032485236795029e+00 3.391250431509040e+00 4.514267927153968e+00 9.317052613884085e+03 + 35600 9.601877247751737e-01 -6.129493751189758e+00 -5.968291005417062e+00 3.031539157802362e+00 4.957190270073466e+00 9.119977081449520e+03 + 35620 9.555725811313868e-01 -6.117516520927241e+00 -5.985087692226357e+00 3.109010262623836e+00 4.869437090319321e+00 9.171322759403305e+03 + 35640 9.169578486952911e-01 -6.050556026980540e+00 -6.007607728800874e+00 3.434470091567802e+00 4.681085865943105e+00 9.240427349650261e+03 + 35660 9.307392864578254e-01 -6.056108881585850e+00 -6.010896825684288e+00 3.417970048713266e+00 4.677584670243076e+00 9.250547752035618e+03 + 35680 9.858352344426721e-01 -6.120115131976210e+00 -6.004386614924458e+00 3.029984141412531e+00 4.694515195253823e+00 9.230536903139633e+03 + 35700 9.327334071094726e-01 -6.022304036349039e+00 -5.976629285282776e+00 3.636026127755157e+00 4.898297616522527e+00 9.145426069394476e+03 + 35720 9.531010314672712e-01 -6.030758170577888e+00 -5.993587504186452e+00 3.525827079583606e+00 4.739266798145268e+00 9.197344074541288e+03 + 35740 9.713905374034917e-01 -6.031283503175597e+00 -5.976226928867836e+00 3.614056295776205e+00 4.930199665428708e+00 9.144190437432826e+03 + 35760 1.065653059851730e+00 -6.141540626365792e+00 -5.947598234896963e+00 2.980278549536746e+00 5.093925773838842e+00 9.056898573427747e+03 + 35780 9.804852678280199e-01 -5.985457274497887e+00 -6.025809443385143e+00 3.715849376166921e+00 4.484140977938345e+00 9.296468917838916e+03 + 35800 1.043490076887030e+00 -6.053570969427625e+00 -6.003208710898681e+00 3.409540989956799e+00 4.698728871964311e+00 9.226907255141899e+03 + 35820 9.938965861699721e-01 -5.959295043315155e+00 -6.017226801237561e+00 3.878241016796418e+00 4.545587897895398e+00 9.270001918471326e+03 + 35840 1.038581218403012e+00 -6.007516585158622e+00 -6.033518691419539e+00 3.608020829269039e+00 4.458712711305909e+00 9.320221334396218e+03 + 35860 1.000389459159008e+00 -5.937797660585527e+00 -6.006204915298842e+00 4.024828136563793e+00 4.632023094011484e+00 9.236115026854794e+03 + 35880 1.042936386004096e+00 -5.990237673815015e+00 -6.027988481979564e+00 3.717746669978362e+00 4.500975687578838e+00 9.303160545081646e+03 + 35900 9.888978588205806e-01 -5.902899529958122e+00 -5.990493551640425e+00 4.266660783030538e+00 4.763682355399713e+00 9.187878626183161e+03 + 35920 1.109328539521271e+00 -6.076380352429560e+00 -5.973844762072792e+00 3.272306351876713e+00 4.861081579036602e+00 9.136952059717394e+03 + 35940 9.564274624713118e-01 -5.849042282182857e+00 -6.060861972883242e+00 4.437679389978301e+00 4.221377946985499e+00 9.404819766948887e+03 + 35960 1.049059400554185e+00 -5.990144933074261e+00 -6.023917409411082e+00 3.701198396030199e+00 4.507271610630354e+00 9.290615814368259e+03 + 35980 1.061727444737271e+00 -6.016145957788103e+00 -6.001386181233673e+00 3.604992080535981e+00 4.689745001579563e+00 9.221298752087894e+03 + 36000 1.041694249354959e+00 -5.999927088804181e+00 -5.995774730346033e+00 3.637323950394936e+00 4.661167435237020e+00 9.204101778558950e+03 + 36020 9.999932450460217e-01 -5.961137517492225e+00 -5.974399043340182e+00 3.951424010060776e+00 4.875274276427316e+00 9.138621820334072e+03 + 36040 9.291113475564650e-01 -5.885128396956406e+00 -5.964723733474901e+00 4.337526611606163e+00 4.880477871978445e+00 9.109041352341699e+03 + 36060 1.009484295289598e+00 -6.039566309861691e+00 -5.979378756430004e+00 3.449329611340735e+00 4.794935857139274e+00 9.153857144464098e+03 + 36080 9.868910620571015e-01 -6.047664467595260e+00 -6.005550577263872e+00 3.431779784924051e+00 4.673604260310356e+00 9.234096849059344e+03 + 36100 9.842469562837179e-01 -6.088258045490166e+00 -5.984777678818226e+00 3.219158188083253e+00 4.813358467048523e+00 9.170376457281685e+03 + 36120 9.042853380671673e-01 -6.004984938186954e+00 -5.991046113576280e+00 3.736448293222622e+00 4.816487181163250e+00 9.189568058216119e+03 + 36140 9.240331957304573e-01 -6.060198097971647e+00 -5.997383147832123e+00 3.367552626235236e+00 4.728245790518503e+00 9.209036455754913e+03 + 36160 8.969633598540711e-01 -6.033539137057288e+00 -6.027713888332804e+00 3.510722948619303e+00 4.544172428249619e+00 9.302322441011665e+03 + 36180 9.558817703353707e-01 -6.127288123827435e+00 -6.007867038043665e+00 3.051444603622930e+00 4.737178958546636e+00 9.241238187399777e+03 + 36200 9.781394195028803e-01 -6.160993986576017e+00 -5.943647915907953e+00 2.856917685378749e+00 5.104952457350504e+00 9.044892285326312e+03 + 36220 8.892470969520102e-01 -6.020863375392894e+00 -6.002712428499690e+00 3.609133191822459e+00 4.713358737733189e+00 9.225375779079082e+03 + 36240 9.470212690967177e-01 -6.091957279444939e+00 -6.003653487877813e+00 3.174343607335062e+00 4.681397643481081e+00 9.228267174470249e+03 + 36260 9.016759552754020e-01 -6.006819746154422e+00 -5.969444152009059e+00 3.648679453016545e+00 4.863295898453723e+00 9.123486836127357e+03 + 36280 9.356929831420231e-01 -6.034434659420729e+00 -5.957011866291777e+00 3.473630847250770e+00 4.918204506535726e+00 9.085554806270011e+03 + 36300 9.619273916898522e-01 -6.046701084722867e+00 -5.954858282914077e+00 3.457110774501563e+00 4.984486355115284e+00 9.078981139164547e+03 + 36320 9.803044543300830e-01 -6.048344084328718e+00 -6.014615658242633e+00 3.430800476324524e+00 4.624474318367893e+00 9.261968359315633e+03 + 36340 9.912451987597901e-01 -6.045724136074467e+00 -5.988103560022954e+00 3.404898669245116e+00 4.735764933688232e+00 9.180588017351794e+03 + 36360 9.902229891393663e-01 -6.030507004005695e+00 -5.935864706661328e+00 3.590604834175040e+00 5.134055551374572e+00 9.021190796362984e+03 + 36380 9.310481522486064e-01 -5.929820885204958e+00 -5.966992437264178e+00 4.080195851821055e+00 4.866751047617921e+00 9.115938315293737e+03 + 36400 9.985475570531214e-01 -6.015103531424840e+00 -5.952523338578578e+00 3.637767470406357e+00 4.997112621983140e+00 9.071864474010314e+03 + 36420 1.016484211146562e+00 -6.027443948388774e+00 -6.023353066395481e+00 3.517766747397592e+00 4.541257224865017e+00 9.288878316050448e+03 + 36440 1.037380433477882e+00 -6.049679928161706e+00 -5.998759887406450e+00 3.409728136294339e+00 4.702118890161859e+00 9.213258850792061e+03 + 36460 9.704407030229057e-01 -5.944442178276158e+00 -5.983132363063341e+00 4.011408040776685e+00 4.789243012441937e+00 9.165321036096295e+03 + 36480 1.026050687129477e+00 -6.018821580862799e+00 -5.963260827084270e+00 3.648780717349004e+00 4.967819163544181e+00 9.104601961396493e+03 + 36500 1.087917593982701e+00 -6.102685720304233e+00 -5.968323965704185e+00 3.177951653762675e+00 4.949477641090477e+00 9.120086100274646e+03 + 36520 9.927169562230097e-01 -5.954980981894696e+00 -6.023613025524071e+00 3.899512437619582e+00 4.505416622325281e+00 9.289679659272329e+03 + 36540 9.995328487126918e-01 -5.961499956775050e+00 -6.037862317475771e+00 3.871470887960126e+00 4.432986395779460e+00 9.333651144803298e+03 + 36560 1.034483902221955e+00 -6.011654657382843e+00 -6.018655592448040e+00 3.670058832143372e+00 4.629858379607811e+00 9.274405047165465e+03 + 36580 1.007350795222262e+00 -5.972837939853731e+00 -6.016514734523767e+00 3.808459566290458e+00 4.557660652332980e+00 9.267798391934339e+03 + 36600 1.018105316141292e+00 -5.991265013371356e+00 -5.980467213263136e+00 3.792861842854502e+00 4.854864482030066e+00 9.157191625605883e+03 + 36620 9.643435525887120e-01 -5.916350269394099e+00 -6.043087681811779e+00 4.140346166778670e+00 4.412600332125161e+00 9.349782321602641e+03 + 36640 1.016218330234107e+00 -6.001322754277966e+00 -5.993779638481492e+00 3.696093917117202e+00 4.739407655313959e+00 9.197977985499607e+03 + 36660 9.747618635628658e-01 -5.951044982615234e+00 -6.045591348470236e+00 3.940953881680341e+00 4.398054017938087e+00 9.357525159393757e+03 + 36680 1.029035710775141e+00 -6.048447076825759e+00 -6.005403895565370e+00 3.412960898764991e+00 4.660121506472917e+00 9.233625902247020e+03 + 36700 8.864145123232360e-01 -5.861287509058068e+00 -6.041176706369254e+00 4.457526836076211e+00 4.424575227352064e+00 9.343854016477411e+03 + 36720 9.677306402723989e-01 -6.007840931666443e+00 -5.981033976751776e+00 3.706127403875692e+00 4.860057087358576e+00 9.158910636307630e+03 + 36740 9.740972125805725e-01 -6.046007064960842e+00 -6.038398254327985e+00 3.443810689434842e+00 4.487501657548346e+00 9.335291112895491e+03 + 36760 9.448963633700656e-01 -6.034279198917861e+00 -6.012532385421869e+00 3.530101401967793e+00 4.654974970370295e+00 9.255541116141178e+03 + 36780 9.053371913546797e-01 -6.002158871640652e+00 -5.991248855777734e+00 3.677206589000821e+00 4.739853588405192e+00 9.190178354386195e+03 + 36800 9.684273374800685e-01 -6.116755351671876e+00 -5.954407329375104e+00 3.090463960342100e+00 5.022691427645421e+00 9.077646099931722e+03 + 36820 9.501611216237112e-01 -6.105055131407257e+00 -5.957574432707720e+00 3.141282314332368e+00 4.988139308829478e+00 9.087278991465109e+03 + 36840 9.499355253899543e-01 -6.113781855354995e+00 -5.932861834528682e+00 3.084641982132317e+00 5.123512738999752e+00 9.012099608310649e+03 + 36860 9.184264155526949e-01 -6.065429341320918e+00 -5.974544929408846e+00 3.371258991227139e+00 4.893131348743549e+00 9.139057068801410e+03 + 36880 9.457983288334333e-01 -6.095173549102192e+00 -6.009608523671254e+00 3.159638751829856e+00 4.650966368999196e+00 9.246575984712861e+03 + 36900 9.806099696538672e-01 -6.128234075393941e+00 -6.003371212934768e+00 2.991867815122089e+00 4.708849693828176e+00 9.227395039732761e+03 + 36920 9.354824298648817e-01 -6.033964062242945e+00 -6.021865954583839e+00 3.522519356426266e+00 4.591988562780966e+00 9.284277176816426e+03 + 36940 9.162770165711012e-01 -5.970011427280911e+00 -5.994008513383607e+00 3.905266713547546e+00 4.767471731608797e+00 9.198663075518762e+03 + 36960 9.872528726327354e-01 -6.030549163539524e+00 -5.994840595933615e+00 3.567793066982634e+00 4.772837188058739e+00 9.201194394545919e+03 + 36980 1.058165496126749e+00 -6.090299812514143e+00 -6.016667895513450e+00 3.212213213849245e+00 4.635019075769554e+00 9.268294985055660e+03 + 37000 1.053006862859185e+00 -6.045990690165004e+00 -5.994148825018681e+00 3.495170928923083e+00 4.792854941095976e+00 9.199097472867845e+03 + 37020 1.041262525458457e+00 -6.007004836800759e+00 -5.994704029153477e+00 3.675929497600003e+00 4.746562638654524e+00 9.200783884848248e+03 + 37040 9.948903957503364e-01 -5.924639235522253e+00 -6.022107171765211e+00 4.073304347983240e+00 4.513628374961789e+00 9.285046075150069e+03 + 37060 9.945372993882234e-01 -5.916184963702372e+00 -5.991343687021478e+00 4.129150655321685e+00 4.697577635248535e+00 9.190493133483644e+03 + 37080 1.051055156328336e+00 -5.995087613855917e+00 -5.980077580721732e+00 3.679938752161978e+00 4.766128685213592e+00 9.156002782577787e+03 + 37100 1.083863485674150e+00 -6.042644494060104e+00 -5.963169231166909e+00 3.475920076590495e+00 4.932279334880404e+00 9.104339719231437e+03 + 37120 1.027152204070001e+00 -5.961984110768216e+00 -6.000224510842475e+00 3.869606902091157e+00 4.650024607181972e+00 9.217726994083187e+03 + 37140 1.019421358526143e+00 -5.957267252497020e+00 -5.983589776686563e+00 3.937686651565228e+00 4.786538644271419e+00 9.166711462570445e+03 + 37160 1.075288523183712e+00 -6.047310762663072e+00 -5.954340195194860e+00 3.493848823271604e+00 5.027700208822893e+00 9.077394071011106e+03 + 37180 1.008021790206270e+00 -5.957118963900235e+00 -5.967379204491071e+00 3.969306273702706e+00 4.910390384463026e+00 9.117156574263372e+03 + 37200 1.002617696903565e+00 -5.959322897673909e+00 -5.989098554157448e+00 3.908609098523722e+00 4.737632671227290e+00 9.183601469692561e+03 + 37220 1.057609568076640e+00 -6.053280714317420e+00 -5.976156412526080e+00 3.401831042326616e+00 4.844690718159619e+00 9.143997437608225e+03 + 37240 9.875216577022590e-01 -5.962710057327586e+00 -6.017302505631137e+00 3.925207084166698e+00 4.611728797853636e+00 9.270219926347441e+03 + 37260 1.018447425985427e+00 -6.026664775048282e+00 -6.014904692172953e+00 3.563323107557954e+00 4.630851323295031e+00 9.262846185707805e+03 + 37280 9.966956792327294e-01 -6.017681420473824e+00 -5.976636087230855e+00 3.606685445172878e+00 4.842374100398796e+00 9.145476530151702e+03 + 37300 9.747667544641906e-01 -6.007609546902249e+00 -6.021371481583427e+00 3.651430055682078e+00 4.572406897090247e+00 9.282767419335436e+03 + 37320 9.761190776002098e-01 -6.035113003283525e+00 -5.986793976497696e+00 3.504136395001583e+00 4.781591724151038e+00 9.176568372969461e+03 + 37340 9.747516422557589e-01 -6.060252404993716e+00 -5.967843276357588e+00 3.356220395640892e+00 4.886847912535982e+00 9.118600415079029e+03 + 37360 9.414122759306732e-01 -6.039129935463077e+00 -5.980790666787613e+00 3.518537420539227e+00 4.853530529246390e+00 9.158143038810487e+03 + 37380 9.330899214100103e-01 -6.055234979476404e+00 -5.986873012396266e+00 3.444321021425292e+00 4.836866015379663e+00 9.176795642838448e+03 + 37400 9.247484753712178e-01 -6.069015446439321e+00 -5.974379687022763e+00 3.302857231822222e+00 4.846270407228539e+00 9.138585699983334e+03 + 37420 9.488419226070716e-01 -6.127605300795120e+00 -5.979458198394792e+00 3.040653467474010e+00 4.891337055146697e+00 9.154097022972775e+03 + 37440 9.293942954402463e-01 -6.117539777926696e+00 -5.990887128628598e+00 3.056283147067139e+00 4.783542258770956e+00 9.189095052095114e+03 + 37460 9.417694807474862e-01 -6.150505614390154e+00 -5.997594398201096e+00 2.868256119141016e+00 4.746295985432812e+00 9.209698697824766e+03 + 37480 9.546522524561809e-01 -6.180433797541570e+00 -5.984614836683111e+00 2.702847628359175e+00 4.827270404494702e+00 9.169911423100793e+03 + 37500 9.048255686974820e-01 -6.112253178534859e+00 -5.957300763689194e+00 3.118900541129979e+00 5.008661285982487e+00 9.086450341939126e+03 + 37520 8.825711422084065e-01 -6.074630142009887e+00 -5.939050953272343e+00 3.331437822969737e+00 5.109954505512371e+00 9.030889064708894e+03 + 37540 9.276954877199886e-01 -6.120780064179211e+00 -5.945973642646427e+00 3.057644312162079e+00 5.061409835809629e+00 9.051940447662215e+03 + 37560 9.238576991993074e-01 -6.074519567823113e+00 -5.995759314735142e+00 3.280282142604245e+00 4.732535703945155e+00 9.204049468929717e+03 + 37580 9.476122230065523e-01 -6.057304566770451e+00 -6.000624842602932e+00 3.416964022668367e+00 4.742427769997231e+00 9.218957508747044e+03 + 37600 1.021449231359665e+00 -6.113777002400935e+00 -5.977648218627500e+00 3.088684585714609e+00 4.870357128002880e+00 9.148546658877918e+03 + 37620 9.492103712949311e-01 -5.962806629202774e+00 -6.018867532752456e+00 3.893549194503265e+00 4.571638810924206e+00 9.275041825656623e+03 + 37640 9.426671916172155e-01 -5.919768038391574e+00 -5.997149007532183e+00 4.161952679313755e+00 4.717619179842104e+00 9.208272726561416e+03 + 37660 1.022871240141234e+00 -6.013613387335719e+00 -5.959115755647658e+00 3.659649203166817e+00 4.972583037800915e+00 9.091960075204692e+03 + 37680 1.064017900156335e+00 -6.052393358712745e+00 -5.977576768718851e+00 3.433038997570888e+00 4.862647435145711e+00 9.148334267497537e+03 + 37700 1.053320781142675e+00 -6.019046108002756e+00 -5.967077214004064e+00 3.576282793393422e+00 4.874696224894266e+00 9.116260750420581e+03 + 37720 1.046098943185696e+00 -5.994953110383792e+00 -5.987983368112436e+00 3.738210215591895e+00 4.778231554278149e+00 9.180183461668668e+03 + 37740 1.034381795963629e+00 -5.966317948778673e+00 -6.047471554826252e+00 3.821998654310634e+00 4.356002089905484e+00 9.363326907444667e+03 + 37760 9.846376876210567e-01 -5.885486949865316e+00 -6.061648736896110e+00 4.305484541922857e+00 4.293936299843597e+00 9.407279124269302e+03 + 37780 1.072774781977715e+00 -6.013854227687370e+00 -5.994504587237158e+00 3.631533827436592e+00 4.742642457248891e+00 9.200205474601897e+03 + 37800 1.054305398670348e+00 -5.989193506590672e+00 -6.036784554871160e+00 3.736414191550979e+00 4.463139027633501e+00 9.330292399143513e+03 + 37820 1.028209103477028e+00 -5.959783128467869e+00 -6.028844876686716e+00 3.914140802579186e+00 4.517577557035568e+00 9.305790534392776e+03 + 37840 1.076092709481768e+00 -6.046226857990375e+00 -5.987548625270054e+00 3.462790210355032e+00 4.799729703062280e+00 9.178847883332422e+03 + 37860 9.523786175789140e-01 -5.880797832679383e+00 -6.069577086957159e+00 4.294142144925759e+00 4.210142453367578e+00 9.431839648540075e+03 + 37880 1.052054965812987e+00 -6.051661686774793e+00 -5.989612857598940e+00 3.446117962078143e+00 4.802411941231172e+00 9.185171200170653e+03 + 37900 9.504644507944292e-01 -5.926918014014129e+00 -6.054010840434845e+00 4.025072311410702e+00 4.295285634551624e+00 9.383568492934222e+03 + 37920 9.832313109071007e-01 -6.004372740773937e+00 -6.010821650558474e+00 3.682585422916940e+00 4.645554784968569e+00 9.250307613516430e+03 + 37940 8.800378974701606e-01 -5.879963381462147e+00 -6.069243321831846e+00 4.291226064468493e+00 4.204351355889576e+00 9.430843416602940e+03 + 37960 1.003058596617729e+00 -6.088626247932789e+00 -5.989136695481532e+00 3.197469968350557e+00 4.768754374484157e+00 9.183746332947569e+03 + 37980 9.878784971384852e-01 -6.089854988344440e+00 -5.978529594405481e+00 3.180990885928947e+00 4.820238525475485e+00 9.151250699538776e+03 + 38000 9.458762634304554e-01 -6.045792994996969e+00 -5.973987642246472e+00 3.459279211807419e+00 4.871596659143199e+00 9.137372314381388e+03 + 38020 9.550373875306964e-01 -6.071219089576978e+00 -5.991536034626494e+00 3.286300052754914e+00 4.743852485193498e+00 9.191084384827367e+03 + 38040 9.109405928526811e-01 -6.010833904576853e+00 -5.990516330673879e+00 3.660742602966368e+00 4.777409256451648e+00 9.187959838865931e+03 + 38060 9.197270901397637e-01 -6.022766515853551e+00 -6.008542896847720e+00 3.574444412098114e+00 4.656118633527526e+00 9.243299772475397e+03 + 38080 9.926696387412721e-01 -6.124072766120490e+00 -6.019713799091924e+00 3.027890142951853e+00 4.627135481127827e+00 9.277665226124256e+03 + 38100 9.931168066502366e-01 -6.112792966489424e+00 -5.974835958130928e+00 3.106420081345524e+00 4.898590572118060e+00 9.139986979661891e+03 + 38120 9.518293409796095e-01 -6.030382264537055e+00 -5.978258862982274e+00 3.563363411192443e+00 4.862664048990314e+00 9.150396185863767e+03 + 38140 1.011061736840916e+00 -6.078871417451543e+00 -5.979946104610945e+00 3.276979236004268e+00 4.845023690977669e+00 9.155588546079176e+03 + 38160 9.996496600000792e-01 -6.001971108337878e+00 -5.992519450393097e+00 3.719767436292150e+00 4.774040318850428e+00 9.194114474490170e+03 + 38180 1.037437876624693e+00 -5.995426052242607e+00 -6.003059821268190e+00 3.738640333787669e+00 4.694806050720834e+00 9.226448683737159e+03 + 38200 9.900417731175458e-01 -5.874021187809513e+00 -6.051489488771066e+00 4.356348975597927e+00 4.337298528345872e+00 9.375784835409531e+03 + 38220 9.822654968468778e-01 -5.832679057035014e+00 -6.038645232192112e+00 4.551005634180668e+00 4.368315983266011e+00 9.336054176920492e+03 + 38240 1.093227053636404e+00 -5.983144716966978e+00 -5.947354728794617e+00 3.803854117165730e+00 5.009365767734193e+00 9.056121283055783e+03 + 38260 1.025109425168660e+00 -5.876113783543842e+00 -6.025548572126089e+00 4.306433626540428e+00 4.448355945542366e+00 9.295636555960502e+03 + 38280 1.049355549243571e+00 -5.912433342296191e+00 -5.980491581529758e+00 4.158435916334406e+00 4.767634974676779e+00 9.157257954584093e+03 + 38300 1.051261076482578e+00 -5.923419762298023e+00 -5.971740964856460e+00 4.149626175422407e+00 4.872158352649929e+00 9.130487055227979e+03 + 38320 1.062104753341277e+00 -5.951854933356495e+00 -5.946945025910154e+00 3.964602360570864e+00 4.992795808933481e+00 9.054877614924824e+03 + 38340 9.724047080634836e-01 -5.831976619199812e+00 -5.995608124198839e+00 4.568349390138925e+00 4.628751966540957e+00 9.203522447183204e+03 + 38360 1.072966687954136e+00 -5.996344441925022e+00 -6.023293713119961e+00 3.722269115667285e+00 4.567522230079709e+00 9.288678621732592e+03 + 38380 1.028623376207440e+00 -5.953331121886213e+00 -6.044919721489635e+00 3.942982976327441e+00 4.417067064114605e+00 9.355463601655338e+03 + 38400 9.826666775750345e-01 -5.913612112977154e+00 -6.038991213229062e+00 4.204824275542841e+00 4.484878079543326e+00 9.337129385477985e+03 + 38420 1.051595058012267e+00 -6.045774495562344e+00 -5.987565144056749e+00 3.540525367496647e+00 4.874772471709810e+00 9.178924212490256e+03 + 38440 1.015369469695447e+00 -6.021382627186632e+00 -6.044058511858788e+00 3.553879675220589e+00 4.423671236351257e+00 9.352808577128797e+03 + 38460 9.894078464662757e-01 -6.012631871394085e+00 -6.008213727750897e+00 3.665285880772372e+00 4.690655545277070e+00 9.242287008032958e+03 + 38480 9.493155662306634e-01 -5.977811067174793e+00 -6.002459209155272e+00 3.833381142413645e+00 4.691847696874090e+00 9.224598097694619e+03 + 38500 1.028111986299228e+00 -6.112456263925607e+00 -5.954593285675182e+00 3.097615861124870e+00 5.004089511455739e+00 9.078195775384102e+03 + 38520 9.150926371139090e-01 -5.959229418040367e+00 -5.990763310140355e+00 3.950986895945561e+00 4.769914407653401e+00 9.188693251696364e+03 + 38540 9.332432506099096e-01 -5.993533167941466e+00 -6.006113599240728e+00 3.740346057501451e+00 4.668107274165639e+00 9.235779316696700e+03 + 38560 9.891386763139318e-01 -6.077367563276564e+00 -6.004769946556236e+00 3.267254103373453e+00 4.684120853026458e+00 9.231705614636203e+03 + 38580 9.882855181913691e-01 -6.073804745030918e+00 -6.010832098189491e+00 3.312958442338593e+00 4.674557125487670e+00 9.250339794538299e+03 + 38600 9.251721770771483e-01 -5.977264189937594e+00 -5.979654875122190e+00 3.810901648009707e+00 4.797173963722423e+00 9.154676031383298e+03 + 38620 9.253776330203459e-01 -5.969275788185508e+00 -5.997103592043974e+00 3.825844727941907e+00 4.666053171847861e+00 9.208151199093110e+03 + 38640 1.055052529177415e+00 -6.149011178947287e+00 -5.972117257518901e+00 2.854072487904779e+00 4.869824758992440e+00 9.131678020299923e+03 + 38660 9.688809800695355e-01 -6.008784231381574e+00 -6.008456914890004e+00 3.622466125520467e+00 4.624345627467124e+00 9.243033321555871e+03 + 38680 1.001353043748229e+00 -6.041770624039511e+00 -5.971724732429438e+00 3.439082348203054e+00 4.841296697394786e+00 9.130455352673014e+03 + 38700 9.563744772228119e-01 -5.957592857522434e+00 -5.982205069187955e+00 3.943119772248560e+00 4.801792644137687e+00 9.162464190386654e+03 + 38720 1.034826550142536e+00 -6.053479272572883e+00 -5.995224471452122e+00 3.378771268406918e+00 4.713279351343661e+00 9.202375956077443e+03 + 38740 1.037241600025850e+00 -6.035865158617405e+00 -5.984536056758255e+00 3.554846125979586e+00 4.849585772007662e+00 9.169609322981925e+03 + 38760 1.003107244317321e+00 -5.964741087605548e+00 -5.974881429227493e+00 3.940733225433137e+00 4.882505814627138e+00 9.140093574788709e+03 + 38780 9.836875330311200e-01 -5.913600219513177e+00 -5.989957406223106e+00 4.282424684965789e+00 4.843969902640920e+00 9.186216076215711e+03 + 38800 1.098770014661096e+00 -6.057843933839727e+00 -5.956721223558123e+00 3.436738544739169e+00 5.017400795864985e+00 9.084670938817357e+03 + 38820 1.084006465601478e+00 -6.006202349134434e+00 -5.980430035757689e+00 3.643264723258219e+00 4.791253334920103e+00 9.157063814178902e+03 + 38840 1.096222326669355e+00 -5.987279004291063e+00 -5.993242210385090e+00 3.801997441657786e+00 4.767755789462718e+00 9.196302714380932e+03 + 38860 1.061067306931096e+00 -5.884968984155845e+00 -6.055214015847896e+00 4.283591670591502e+00 4.306018353282237e+00 9.387311964740380e+03 + 38880 1.099641831584355e+00 -5.874144526817987e+00 -6.008711341460479e+00 4.383756794916055e+00 4.611053321091600e+00 9.243798338510092e+03 + 38900 1.157300871704767e+00 -5.890242375196009e+00 -6.012301222357539e+00 4.251575236297207e+00 4.550694447350151e+00 9.254841389539504e+03 + 38920 1.114541868726751e+00 -5.774660291742436e+00 -6.050910130972183e+00 4.883611176497981e+00 4.297341850116314e+00 9.373997213007475e+03 + 38940 1.162323073404610e+00 -5.824046752315723e+00 -6.008732493086081e+00 4.634279822149461e+00 4.573785718620047e+00 9.243834707686212e+03 + 38960 1.158092508452047e+00 -5.816536858132422e+00 -6.020635477883572e+00 4.620755987269009e+00 4.448790128498575e+00 9.280480060172762e+03 + 38980 1.122834729458094e+00 -5.781846390836762e+00 -6.017287389492683e+00 4.870765435577336e+00 4.518826786918243e+00 9.270154203530572e+03 + 39000 1.177818754306817e+00 -5.893532749942179e+00 -6.007102188746041e+00 4.243628225141769e+00 4.591494932716139e+00 9.238815434133056e+03 + 39020 1.161323891663267e+00 -5.908948359689923e+00 -5.951402827494760e+00 4.205085328628554e+00 4.961305204685522e+00 9.068445670645533e+03 + 39040 1.016530897774236e+00 -5.735723016989963e+00 -5.989339107149104e+00 5.122883475967102e+00 4.666580639310206e+00 9.184274062773316e+03 + 39060 1.052693885446022e+00 -5.823005461779347e+00 -5.984978991874822e+00 4.605001682117559e+00 4.674924606986567e+00 9.170961780767750e+03 + 39080 1.096938961981560e+00 -5.920737517533599e+00 -5.971573969144344e+00 4.142462533097337e+00 4.850551761032980e+00 9.129982478701113e+03 + 39100 1.093986061287647e+00 -5.949775174875866e+00 -6.009242521026019e+00 3.898308116037166e+00 4.556837411900910e+00 9.245440072584715e+03 + 39120 1.079316505351835e+00 -5.961774257502536e+00 -5.992976221509720e+00 3.883307810799386e+00 4.704141304981814e+00 9.195480485855525e+03 + 39140 1.050617558642280e+00 -5.951334045860754e+00 -5.954493272746759e+00 3.981453063574802e+00 4.963312293906584e+00 9.077862554693400e+03 + 39160 9.932491395809119e-01 -5.893810091761956e+00 -5.997194058598588e+00 4.199291090869059e+00 4.605644354675963e+00 9.208417310113075e+03 + 39180 1.025716423572176e+00 -5.969568235598132e+00 -5.961579934170830e+00 3.839095549212522e+00 4.884965612193741e+00 9.099460084220907e+03 + 39200 9.325734788149230e-01 -5.855240028330083e+00 -6.054151161056870e+00 4.401656217802245e+00 4.259477712286722e+00 9.384011835378367e+03 + 39220 9.839838833748541e-01 -5.954310489753702e+00 -6.015012601255920e+00 3.874241047746582e+00 4.525680129879452e+00 9.263183025841032e+03 + 39240 1.037965578497535e+00 -6.055065194889058e+00 -5.974622768600879e+00 3.402115980607791e+00 4.864028840779751e+00 9.139290934532291e+03 + 39260 1.014769498014900e+00 -6.040492493810840e+00 -5.997571758122318e+00 3.468270773493916e+00 4.714728279779788e+00 9.209591422606427e+03 + 39280 9.699746353998464e-01 -5.992149493590869e+00 -5.990903227786914e+00 3.776152881058427e+00 4.783309132163743e+00 9.189129180435915e+03 + 39300 9.600492697622333e-01 -5.992382373552416e+00 -6.035374846141613e+00 3.747348027157746e+00 4.500478596486946e+00 9.325954950821511e+03 + 39320 9.323235075682385e-01 -5.966440185302880e+00 -6.005351925062818e+00 3.829469647438894e+00 4.606032416165063e+00 9.233492413174621e+03 + 39340 9.424249349125009e-01 -5.990922113648294e+00 -6.019592020958987e+00 3.728921457227996e+00 4.564294412796178e+00 9.277260556381127e+03 + 39360 9.951827632624004e-01 -6.075110875529315e+00 -5.977493254856153e+00 3.270322361516663e+00 4.830857845699940e+00 9.148074468799945e+03 + 39380 1.032793100993733e+00 -6.135438541119099e+00 -5.979476431289070e+00 2.957432438476266e+00 4.852991008178792e+00 9.154163912330241e+03 + 39400 9.474534676280297e-01 -6.012317748246142e+00 -5.999801687639831e+00 3.616159160244618e+00 4.688028317100173e+00 9.216450452383142e+03 + 39420 9.216433963852435e-01 -5.972151287686815e+00 -5.995689746482021e+00 3.816253967681406e+00 4.681092494714609e+00 9.203807097239576e+03 + 39440 9.457472149219108e-01 -5.999312757972534e+00 -5.983214301830738e+00 3.718118648667213e+00 4.810558475061443e+00 9.165588454116058e+03 + 39460 9.457367505698968e-01 -5.981534937007549e+00 -6.006836705663521e+00 3.757482497773009e+00 4.612195826714371e+00 9.238054317932076e+03 + 39480 9.579770569747527e-01 -5.973744937792716e+00 -6.015000065662374e+00 3.855502978802340e+00 4.618609650364359e+00 9.263149901913028e+03 + 39500 1.049051838339108e+00 -6.073891230223492e+00 -5.988719144604667e+00 3.271084430606410e+00 4.760155726567356e+00 9.182462903963467e+03 + 39520 1.016212208727127e+00 -5.984232075703513e+00 -6.020357042179807e+00 3.752470633939576e+00 4.545035486112202e+00 9.279642898377646e+03 + 39540 1.025776420202663e+00 -5.955661624612953e+00 -6.042132332740266e+00 3.946169911700568e+00 4.449641724334695e+00 9.346856729076684e+03 + 39560 1.072809417459248e+00 -5.986830600774184e+00 -6.025924752812872e+00 3.806714002609173e+00 4.582229331802546e+00 9.296820070988295e+03 + 39580 1.012372815999787e+00 -5.870000725823250e+00 -6.069903495116039e+00 4.405761549515960e+00 4.257888913383198e+00 9.432863799530111e+03 + 39600 1.023174958390502e+00 -5.871339202684463e+00 -6.023835875821351e+00 4.384570333276320e+00 4.508910837340405e+00 9.290343654850001e+03 + 39620 1.173970417933402e+00 -6.088039722790834e+00 -5.938789451455836e+00 3.260862967152977e+00 5.117881121563379e+00 9.030114252896477e+03 + 39640 1.038753927521937e+00 -5.888381851876491e+00 -6.028036534118174e+00 4.274860614914857e+00 4.472941817990881e+00 9.303282933438808e+03 + 39660 1.056155102968091e+00 -5.921943846212725e+00 -5.953995416356713e+00 4.085676729583942e+00 4.901631653852712e+00 9.076338248676262e+03 + 39680 1.027445313526099e+00 -5.889269517531873e+00 -6.013588132139026e+00 4.274613560194352e+00 4.560756836876641e+00 9.258809525766272e+03 + 39700 1.048463510324615e+00 -5.938692791271670e+00 -6.002839497722007e+00 3.987870175338830e+00 4.619529860230255e+00 9.225737639949433e+03 + 39720 1.048211470168058e+00 -5.960016437940664e+00 -5.939910531396431e+00 3.926195775827704e+00 5.041647002583669e+00 9.033462272263809e+03 + 39740 1.011299167778082e+00 -5.926321456001872e+00 -5.955801678521906e+00 4.166222798656241e+00 4.996942798896511e+00 9.081836416380287e+03 + 39760 9.864590392197067e-01 -5.909505033508147e+00 -6.002940952616207e+00 4.170907403915833e+00 4.634383897235598e+00 9.226057486736234e+03 + 39780 1.024747522521816e+00 -5.986946308866632e+00 -6.009759217733103e+00 3.741708663340988e+00 4.610713410343475e+00 9.247026187530237e+03 + 39800 1.070696225035710e+00 -6.072943511418069e+00 -5.962373941319374e+00 3.402068977471273e+00 5.036976559563653e+00 9.101906728667385e+03 + 39820 1.065715563509477e+00 -6.084079758033790e+00 -6.001199514075861e+00 3.258277571392031e+00 4.734188757874765e+00 9.220756203379267e+03 + 39840 9.587133383888075e-01 -5.940701635457771e+00 -6.034749038273034e+00 3.989797071748706e+00 4.449762330994913e+00 9.324041258239122e+03 + 39860 1.000186073379294e+00 -6.012873100410734e+00 -6.015446821582156e+00 3.601689233296980e+00 4.586910528048612e+00 9.264532476764110e+03 + 39880 9.746726168981310e-01 -5.980328158818024e+00 -6.011273543523744e+00 3.738466027023819e+00 4.560772839260765e+00 9.251715568849053e+03 + 39900 9.928926083191441e-01 -6.009330421564483e+00 -6.033146444107637e+00 3.642205921907731e+00 4.505450634947364e+00 9.319090890319138e+03 + 39920 1.010800524483252e+00 -6.038965690903647e+00 -6.001876914277874e+00 3.479360570470891e+00 4.692330065325716e+00 9.222807555504036e+03 + 39940 9.773692342174731e-01 -5.992974746781816e+00 -5.965785905381520e+00 3.738711865682666e+00 4.894834400462775e+00 9.112288544504283e+03 + 39960 9.898484417027990e-01 -6.011011455477171e+00 -5.965953847154770e+00 3.593763974639785e+00 4.852491734269359e+00 9.112806106412683e+03 + 39980 9.841486027573987e-01 -5.998787587907533e+00 -5.979107956265645e+00 3.715600162334668e+00 4.828603652635537e+00 9.152984214005193e+03 + 40000 9.482720541741739e-01 -5.939412370084104e+00 -6.019205495866089e+00 4.025423293243215e+00 4.567238817056747e+00 9.276057179881340e+03 + 40020 1.023050232798368e+00 -6.041668774412496e+00 -6.050904901054274e+00 3.420208053625955e+00 4.367172785162884e+00 9.373975787205971e+03 + 40040 9.900036765521283e-01 -5.986118454653941e+00 -5.997178482694135e+00 3.778857584444568e+00 4.715349191903966e+00 9.208392223378216e+03 + 40060 9.651506598889374e-01 -5.944877064525965e+00 -5.993773109913757e+00 4.019994204154664e+00 4.739225544899393e+00 9.197920478372274e+03 + 40080 1.039054198402698e+00 -6.046149136689051e+00 -5.951758391713673e+00 3.484587314199518e+00 5.026593578768717e+00 9.069558224684921e+03 + 40100 9.871971970952442e-01 -5.957191672067843e+00 -6.048085318536035e+00 3.910842968524797e+00 4.388917584758103e+00 9.365261679135592e+03 + 40120 1.008698918380450e+00 -5.979143964701026e+00 -6.015691065840143e+00 3.836290135754145e+00 4.626431025367710e+00 9.265289452583409e+03 + 40140 1.051577218862978e+00 -6.032757136876275e+00 -5.993988360954697e+00 3.598244527029238e+00 4.820860837819621e+00 9.198600451826442e+03 + 40160 1.012856221793394e+00 -5.965169085765140e+00 -6.014245813749283e+00 3.904949430763758e+00 4.623143264079697e+00 9.260826380154755e+03 + 40180 1.048736242634835e+00 -6.007232252434408e+00 -6.018216188612149e+00 3.613927920099592e+00 4.550856458808375e+00 9.273055468657563e+03 + 40200 9.915575126262502e-01 -5.911319435994634e+00 -6.005676161199150e+00 4.204174520915129e+00 4.662363603134760e+00 9.234484444386140e+03 + 40220 9.981198526971157e-01 -5.909995866017157e+00 -5.988195144241368e+00 4.207565389035707e+00 4.758533032173089e+00 9.180850787759116e+03 + 40240 1.035214738782100e+00 -5.951747820587875e+00 -5.982258268674232e+00 3.967042685173260e+00 4.791846970784817e+00 9.162661441873293e+03 + 40260 1.144806605446995e+00 -6.099408074630976e+00 -5.993469416277566e+00 3.155277468111492e+00 4.763593638331165e+00 9.197037695364723e+03 + 40280 1.021027574264459e+00 -5.905977352807255e+00 -6.033722948885301e+00 4.177269393124679e+00 4.443734411877434e+00 9.320865062010540e+03 + 40300 1.087505809081725e+00 -6.000990718486668e+00 -5.997851632994742e+00 3.674041859889846e+00 4.692066974556397e+00 9.210462312252212e+03 + 40320 1.036172532566935e+00 -5.927267913107668e+00 -6.017057272330179e+00 4.029698089061268e+00 4.514113693547178e+00 9.269464580706544e+03 + 40340 1.018346314960064e+00 -5.909640970949287e+00 -5.951277274110188e+00 4.222472346904915e+00 4.983390250957930e+00 9.068058593073918e+03 + 40360 1.026287940885864e+00 -5.934267270407916e+00 -5.971335786884405e+00 4.101143392726252e+00 4.888290234783864e+00 9.129201355033856e+03 + 40380 1.050519294423998e+00 -5.988167575145003e+00 -5.973175718791381e+00 3.747264112079882e+00 4.833349671244648e+00 9.134867543405169e+03 + 40400 9.975958582176956e-01 -5.932774144668173e+00 -5.983153981746498e+00 4.075705731470380e+00 4.786416910712044e+00 9.165399705319289e+03 + 40420 1.006640932190740e+00 -5.973500240902635e+00 -6.002904675033092e+00 3.842661134165865e+00 4.673816323067306e+00 9.225964804201767e+03 + 40440 9.925493574988186e-01 -5.983430677655832e+00 -6.001331208068637e+00 3.783373807059941e+00 4.680586191331491e+00 9.221129367633228e+03 + 40460 1.001580902276464e+00 -6.027215129551037e+00 -6.001922491594167e+00 3.539322659395163e+00 4.684556900566585e+00 9.222949090971604e+03 + 40480 9.529802942998165e-01 -5.985468042243087e+00 -6.027109785005500e+00 3.756874533115858e+00 4.517761202135219e+00 9.300459896871880e+03 + 40500 9.957173200375995e-01 -6.074806569928226e+00 -6.003656409621514e+00 3.271983688353239e+00 4.680538919286104e+00 9.228295666806396e+03 + 40520 9.705171214849178e-01 -6.057927486713487e+00 -6.030272176904083e+00 3.360279396929245e+00 4.519080465500208e+00 9.310231456468769e+03 + 40540 9.770363340674247e-01 -6.085739565927646e+00 -5.999013833544507e+00 3.264808243788642e+00 4.762800819896341e+00 9.214041117976019e+03 + 40560 9.696485225984908e-01 -6.087165796270344e+00 -5.990017556165686e+00 3.270477586993292e+00 4.828317815315808e+00 9.186446089450761e+03 + 40580 9.717259175085311e-01 -6.096906562843945e+00 -6.018225670877203e+00 3.149838953633265e+00 4.601636811134982e+00 9.273100958428333e+03 + 40600 9.688613024392033e-01 -6.094351707454911e+00 -5.983955292732156e+00 3.194623825594557e+00 4.828537122722585e+00 9.167868613334964e+03 + 40620 9.920048254180076e-01 -6.125356561430753e+00 -5.989072070634789e+00 3.005607689777964e+00 4.788174325885178e+00 9.183560210419662e+03 + 40640 9.544350239095466e-01 -6.059774143972422e+00 -6.014651411806879e+00 3.356985410678378e+00 4.616087121493162e+00 9.262094677667361e+03 + 40660 9.458161034285784e-01 -6.031812673747662e+00 -6.017211987850578e+00 3.500189934058775e+00 4.584029331928670e+00 9.269971686140352e+03 + 40680 9.544819692943259e-01 -6.020050319818411e+00 -6.026235758018074e+00 3.578667096447576e+00 4.543149353111643e+00 9.297770976551761e+03 + 40700 9.916586197152992e-01 -6.043253081350107e+00 -5.978112258344694e+00 3.448491649973318e+00 4.822540336180176e+00 9.149970686682655e+03 + 40720 9.794421822343667e-01 -5.979901668131604e+00 -5.967601271032805e+00 3.825246852692517e+00 4.895877636314123e+00 9.117848348482261e+03 + 40740 1.002537670831281e+00 -5.960560106760758e+00 -6.003400041170114e+00 3.861739485307127e+00 4.615745952470182e+00 9.227473806532931e+03 + 40760 1.066566342176865e+00 -6.003958964648861e+00 -6.007229759430125e+00 3.664290486646077e+00 4.645509076858207e+00 9.239209235342836e+03 + 40780 1.047520694849016e+00 -5.939300433491710e+00 -6.017845369971590e+00 4.050454270619939e+00 4.599437090562836e+00 9.271904716597168e+03 + 40800 1.037185643444162e+00 -5.905538441942295e+00 -6.029144318725025e+00 4.198199238756580e+00 4.488435166322534e+00 9.306756284800380e+03 + 40820 1.049877028438687e+00 -5.918973511806076e+00 -6.032072687230372e+00 4.108339652140284e+00 4.458906684813144e+00 9.315763708935538e+03 + 40840 1.062780715659392e+00 -5.940512919206860e+00 -5.996823597658039e+00 3.992293281200060e+00 4.668948651484064e+00 9.207275022118647e+03 + 40860 1.033563378081269e+00 -5.904817554112634e+00 -5.971622727592412e+00 4.224854300855688e+00 4.841248656667619e+00 9.130102677363591e+03 + 40880 1.071485808244854e+00 -5.969589895106303e+00 -5.994687665577660e+00 3.866514063363472e+00 4.722398781449513e+00 9.200758496247327e+03 + 40900 1.090886540124907e+00 -6.013504288475625e+00 -6.014006926569678e+00 3.623676776201101e+00 4.620790550482052e+00 9.260072891098629e+03 + 40920 1.044617381622178e+00 -5.964963583286458e+00 -6.005921943323803e+00 3.896521503645979e+00 4.661332262025815e+00 9.235208301783288e+03 + 40940 1.048024691751375e+00 -5.993946423417706e+00 -6.015744749558008e+00 3.669837061009006e+00 4.544667699031327e+00 9.265436066984073e+03 + 40960 1.086172708261702e+00 -6.076881946367907e+00 -5.960102305370468e+00 3.290648316631386e+00 4.961215086829716e+00 9.094968109858810e+03 + 40980 9.905055517430740e-01 -5.961022887318354e+00 -5.999953074069705e+00 3.891044538769695e+00 4.667501382016510e+00 9.216890275287824e+03 + 41000 9.796026525916424e-01 -5.969829335559584e+00 -5.972070894823998e+00 3.869077085208850e+00 4.856205705032410e+00 9.131495069884260e+03 + 41020 1.028205885222987e+00 -6.062839171982683e+00 -5.944984390656108e+00 3.354009361886640e+00 5.030749754232296e+00 9.048927431711945e+03 + 41040 9.797560257536749e-01 -6.006687402679683e+00 -6.010611831458855e+00 3.606818595400734e+00 4.584283918047340e+00 9.249634333007481e+03 + 41060 1.030196185630203e+00 -6.094053372263473e+00 -5.951604792142309e+00 3.229001127777726e+00 5.046962918679986e+00 9.069088184745726e+03 + 41080 9.720676038113055e-01 -6.018699373812893e+00 -5.984235934009615e+00 3.552667742082485e+00 4.750562146632983e+00 9.168728048253455e+03 + 41100 9.870678552377534e-01 -6.050108554501752e+00 -5.979121028875332e+00 3.402909019173769e+00 4.810530376604755e+00 9.153036853336536e+03 + 41120 9.712957994092769e-01 -6.031472273490918e+00 -5.973724413300503e+00 3.461485878555698e+00 4.793083028221543e+00 9.136566364278207e+03 + 41140 9.661342366400655e-01 -6.022883424535045e+00 -6.006761506343716e+00 3.550589605997023e+00 4.643164155110405e+00 9.237827904142367e+03 + 41160 9.719070299913287e-01 -6.028122700028727e+00 -6.003806552917019e+00 3.551600191179134e+00 4.691227270806169e+00 9.228736300504681e+03 + 41180 9.935634632127555e-01 -6.053491209249371e+00 -5.991911781750261e+00 3.422980957122264e+00 4.776579559207764e+00 9.192241673361881e+03 + 41200 9.603556167048766e-01 -5.991015064109736e+00 -6.042937006999196e+00 3.663404553904283e+00 4.365260722938308e+00 9.349357294837338e+03 + 41220 9.864845339565242e-01 -6.012084038592826e+00 -5.992954778056669e+00 3.613874436096151e+00 4.723717610338269e+00 9.195461494272144e+03 + 41240 9.230700664653255e-01 -5.890019940208351e+00 -5.982995388828128e+00 4.298549527868360e+00 4.764670113989431e+00 9.164893429629241e+03 + 41260 9.981932586888228e-01 -5.958754803850280e+00 -5.949622985490696e+00 3.919723848023600e+00 4.972160162188658e+00 9.062984730993947e+03 + 41280 1.060971229646532e+00 -5.993685039669203e+00 -5.983028389057045e+00 3.748147266814406e+00 4.809339403740768e+00 9.165000850712013e+03 + 41300 1.049768256319500e+00 -5.921445591524184e+00 -6.017922968816661e+00 4.071978248144255e+00 4.517990217904963e+00 9.272155896399516e+03 + 41320 1.109749949733657e+00 -5.974241994285975e+00 -5.983421692933668e+00 3.823901013141732e+00 4.771189762952908e+00 9.166201641980451e+03 + 41340 1.089605549384979e+00 -5.923348021165127e+00 -5.997970989398964e+00 4.096652334188386e+00 4.668155702722681e+00 9.210792359426059e+03 + 41360 1.036574174039727e+00 -5.834433443010338e+00 -6.039215143558831e+00 4.533248227939707e+00 4.357360013524523e+00 9.337782791203765e+03 + 41380 1.136443649216289e+00 -5.984097837672807e+00 -5.996704488869412e+00 3.764968020249360e+00 4.692578678205487e+00 9.206910399884855e+03 + 41400 1.057828287888791e+00 -5.877785893055563e+00 -5.964017887208103e+00 4.359547212958205e+00 4.864389758176357e+00 9.106893870072912e+03 + 41420 1.055314191523820e+00 -5.890074434903321e+00 -6.014931333643668e+00 4.265934149832463e+00 4.548986515722752e+00 9.262942058173991e+03 + 41440 1.056686364718221e+00 -5.916154312876202e+00 -6.034172928625757e+00 4.132722719563358e+00 4.455041564607649e+00 9.322251146859859e+03 + 41460 1.034981057448354e+00 -5.914876218857642e+00 -6.012841672767065e+00 4.178718002193763e+00 4.616185205740860e+00 9.256502229196738e+03 + 41480 1.027031314080232e+00 -5.937497054682225e+00 -6.031657849254664e+00 3.979349160389250e+00 4.438663306618444e+00 9.314501709647100e+03 + 41500 1.042342036214515e+00 -5.995752223848504e+00 -5.990949224515953e+00 3.755227148413341e+00 4.782806713842594e+00 9.189274452754540e+03 + 41520 9.711857432044605e-01 -5.923136954820414e+00 -6.008057766543764e+00 4.105796625189694e+00 4.618168182821072e+00 9.241764584510374e+03 + 41540 9.550212274632899e-01 -5.921039925467043e+00 -5.965283719636440e+00 4.150839766293850e+00 4.896785053468155e+00 9.110718031769360e+03 + 41560 9.850780843427117e-01 -5.978095997626388e+00 -5.945924730066029e+00 3.819483755793590e+00 5.004216152612740e+00 9.051785769460195e+03 + 41580 1.014302567156776e+00 -6.030050807208439e+00 -6.000265678596564e+00 3.532269724066435e+00 4.703300541789575e+00 9.217849060828345e+03 + 41600 9.627452546984072e-01 -5.961400226346727e+00 -5.994469073791080e+00 3.930253188117983e+00 4.740366748704902e+00 9.200079434022709e+03 + 41620 1.044679238887409e+00 -6.089218824778237e+00 -5.973877349354145e+00 3.188382517508409e+00 4.850691118429174e+00 9.137039552234894e+03 + 41640 1.004022342109738e+00 -6.034333046863875e+00 -5.983443484437945e+00 3.459316619802592e+00 4.751532362386618e+00 9.166317842818511e+03 + 41660 1.044877517196799e+00 -6.099183199534624e+00 -5.952745051110485e+00 3.190854714861737e+00 5.031725224343369e+00 9.072552444294006e+03 + 41680 9.975258553503771e-01 -6.030244666105307e+00 -5.967458191742750e+00 3.555809171660968e+00 4.916338823626271e+00 9.117412593821255e+03 + 41700 1.008362692940627e+00 -6.045996061906804e+00 -5.964792621702442e+00 3.428751329397293e+00 4.895034049242503e+00 9.109269679935887e+03 + 41720 9.518538919256299e-01 -5.959385818987940e+00 -5.987701170917576e+00 3.887797267719998e+00 4.725206135153480e+00 9.179310165034152e+03 + 41740 9.788070773569778e-01 -5.993317525559167e+00 -5.948906061665340e+00 3.779981922884098e+00 5.034999421214279e+00 9.060869680976431e+03 + 41760 9.546496176875435e-01 -5.946125236236587e+00 -6.015937417501862e+00 3.964544134050008e+00 4.563671785824669e+00 9.266039448105323e+03 + 41780 9.756821535906730e-01 -5.964180345407149e+00 -6.028855584439330e+00 3.831343703661434e+00 4.459968472677756e+00 9.305852698634975e+03 + 41800 1.009718221067306e+00 -5.997316272576850e+00 -6.002817245970013e+00 3.699918435598378e+00 4.668330995101955e+00 9.225714039266966e+03 + 41820 1.014085210617851e+00 -5.982389985033539e+00 -6.028170165965667e+00 3.783352291260766e+00 4.520475407888381e+00 9.303729289588409e+03 + 41840 9.926776433536969e-01 -5.923172862139123e+00 -6.047595071447286e+00 4.127900715916697e+00 4.413449135794563e+00 9.363716174337320e+03 + 41860 1.026736378798209e+00 -5.936827267077670e+00 -6.034015905423079e+00 3.987311714979321e+00 4.429239513706805e+00 9.321750608601234e+03 + 41880 1.020201896607275e+00 -5.886529472483418e+00 -5.982335594764439e+00 4.332322965597723e+00 4.782189385510594e+00 9.162838746632346e+03 + 41900 1.030653820313612e+00 -5.858196937827208e+00 -6.014728128277675e+00 4.410931268678573e+00 4.512104949988555e+00 9.262268923802652e+03 + 41920 1.113139046610511e+00 -5.940217549110979e+00 -5.990320982742208e+00 3.979212678677376e+00 4.691511009285567e+00 9.187376383043238e+03 + 41940 1.169927639975069e+00 -5.992933776836654e+00 -6.029992088872360e+00 3.717869209954620e+00 4.505074647490340e+00 9.309356409963457e+03 + 41960 1.102589231426763e+00 -5.881664479547374e+00 -6.075683548693411e+00 4.260021007457938e+00 4.145933488067476e+00 9.450837779572204e+03 + 41980 1.098089816239254e+00 -5.881713464108240e+00 -6.045885157939411e+00 4.325978800590716e+00 4.383279529124620e+00 9.358369115632007e+03 + 42000 1.014130296850902e+00 -5.773754101459457e+00 -5.946662440822411e+00 4.989532614890624e+00 4.996666172789502e+00 9.054010119562336e+03 + 42020 1.115234781621623e+00 -5.945750703276803e+00 -5.955294023635772e+00 3.981891834939495e+00 4.927092612614245e+00 9.080282488008805e+03 + 42040 1.046309862816272e+00 -5.871525666890436e+00 -5.991350335637182e+00 4.336094330378478e+00 4.648042539627105e+00 9.190462583841858e+03 + 42060 1.131937925520272e+00 -6.033312220142301e+00 -5.940905979757462e+00 3.532992843398486e+00 5.063603775507721e+00 9.036529272929680e+03 + 42080 1.041773785077297e+00 -5.935935344171328e+00 -5.999084958620294e+00 4.096071130568028e+00 4.733456272030810e+00 9.214224608571722e+03 + 42100 1.052301704073485e+00 -5.986316751377207e+00 -5.991697874703776e+00 3.777277715633439e+00 4.746378472766132e+00 9.191579173522352e+03 + 42120 9.773314725366022e-01 -5.903437904723610e+00 -6.007152439372128e+00 4.201199761522557e+00 4.605654853798403e+00 9.238995023702961e+03 + 42140 9.092528838027251e-01 -5.819576598948462e+00 -6.026898207090846e+00 4.638659252700817e+00 4.448186495832077e+00 9.299792376619622e+03 + 42160 1.045735930044150e+00 -6.032355661311123e+00 -6.010508737322633e+00 3.553236510602245e+00 4.678684928944714e+00 9.249327401182120e+03 + 42180 9.983106425020157e-01 -5.972601585475750e+00 -6.071199783156326e+00 3.821114537775507e+00 4.254948428671865e+00 9.436918046360270e+03 + 42200 1.041951043838867e+00 -6.049794878186697e+00 -6.043055176065359e+00 3.393176115606594e+00 4.431876528152848e+00 9.349716722794323e+03 + 42220 9.773230412439644e-01 -5.966758386407828e+00 -6.032021933427817e+00 3.867252604124375e+00 4.492499217634337e+00 9.315613137919943e+03 + 42240 1.013278648299591e+00 -6.031140889917081e+00 -6.008995637301402e+00 3.526808662959975e+00 4.653970130445968e+00 9.244681237915252e+03 + 42260 9.597486827834335e-01 -5.961492823573055e+00 -6.009471300824395e+00 3.853904731940564e+00 4.578404890918010e+00 9.246152533192282e+03 + 42280 9.746920974863563e-01 -5.990614087491510e+00 -6.016433801189764e+00 3.769208492898536e+00 4.620947701255374e+00 9.267558968164936e+03 + 42300 1.024937830917936e+00 -6.071871406963625e+00 -5.991456173574136e+00 3.312944826094509e+00 4.774701540434108e+00 9.190849134803384e+03 + 42320 9.637924537954357e-01 -5.989384812551391e+00 -6.010141293062793e+00 3.677584796229362e+00 4.558397873077913e+00 9.248211427314784e+03 + 42340 9.863205026886791e-01 -6.029178446562106e+00 -5.959150824741782e+00 3.563330397497203e+00 4.965439838728964e+00 9.092047372481626e+03 + 42360 8.858424687537718e-01 -5.881500338329091e+00 -6.008245277164047e+00 4.297500008723066e+00 4.569710956216855e+00 9.242347789625266e+03 + 42380 1.008674706676510e+00 -6.059102242594683e+00 -5.989759321429535e+00 3.395654796846682e+00 4.793832580959335e+00 9.185634393770290e+03 + 42400 9.895430675208226e-01 -6.022787933396328e+00 -6.010689518147565e+00 3.577124509955490e+00 4.646595482537601e+00 9.249894349071390e+03 + 42420 9.673373976393089e-01 -5.982751751843269e+00 -5.981117252687039e+00 3.773630919043970e+00 4.783016466136970e+00 9.159170889210325e+03 + 42440 9.437176720732248e-01 -5.934451870203412e+00 -6.005558827795886e+00 4.044460292722517e+00 4.636153138460410e+00 9.234111590699595e+03 + 42460 1.037201134089287e+00 -6.053011277464931e+00 -5.970032805036439e+00 3.447140035213572e+00 4.923615264775080e+00 9.125283349107589e+03 + 42480 1.041539322021710e+00 -6.032819864891585e+00 -5.968450389615150e+00 3.487239796449451e+00 4.856859284630849e+00 9.120437437307733e+03 + 42500 1.060176761684903e+00 -6.027869702173631e+00 -5.953901335130238e+00 3.505865432203717e+00 4.930603242334683e+00 9.076080240993144e+03 + 42520 1.000008876939715e+00 -5.898927217088021e+00 -6.010130057315816e+00 4.260780457772888e+00 4.622236540600980e+00 9.248185890714038e+03 + 42540 1.063123074318301e+00 -5.956318013686573e+00 -6.021848691137871e+00 3.908992297987298e+00 4.532705007222385e+00 9.284232823520899e+03 + 42560 1.099138663220627e+00 -5.978102116296883e+00 -6.016567691465347e+00 3.830978738935476e+00 4.610103453789634e+00 9.267979196301307e+03 + 42580 1.065088104980157e+00 -5.905827321456213e+00 -6.053496952055626e+00 4.173146344428190e+00 4.325204473724882e+00 9.382000606709933e+03 + 42600 1.110726849030516e+00 -5.963482258473928e+00 -5.987768878407851e+00 3.872240737099930e+00 4.732783207097051e+00 9.179551944580515e+03 + 42620 1.016998793480920e+00 -5.822541413171299e+00 -6.071338753578992e+00 4.713017637532401e+00 4.284384807647430e+00 9.437335832875357e+03 + 42640 1.066244752559505e+00 -5.903895602348185e+00 -6.019248021202545e+00 4.247335254874660e+00 4.584963815083802e+00 9.276239700431386e+03 + 42660 1.081027945633833e+00 -5.942630700996448e+00 -6.031077445789465e+00 4.018714810026780e+00 4.510839914335754e+00 9.312685871615528e+03 + 42680 1.038063292140795e+00 -5.908983643964589e+00 -6.028002942312501e+00 4.211670447247101e+00 4.528243217956503e+00 9.303204358762274e+03 + 42700 1.082031923265650e+00 -6.014082045535000e+00 -5.982598932460260e+00 3.605764532970253e+00 4.786545440241409e+00 9.163706557541716e+03 + 42720 1.011859896809016e+00 -5.954250211172510e+00 -5.992452149923464e+00 3.976368186317063e+00 4.757006742278168e+00 9.193876066203089e+03 + 42740 1.027390251000291e+00 -6.016577719853741e+00 -5.997011822201324e+00 3.586777800312452e+00 4.699128212445505e+00 9.207875567660867e+03 + 42760 9.697578997095955e-01 -5.967398366347776e+00 -5.985271192173927e+00 3.942466793647224e+00 4.839838261942605e+00 9.171875532656077e+03 + 42780 9.633067978390820e-01 -5.978439089115927e+00 -5.983592336111089e+00 3.788002424318587e+00 4.758411682609971e+00 9.166727194400304e+03 + 42800 1.008996867402660e+00 -6.057265702962754e+00 -5.947484060659531e+00 3.382816984329076e+00 5.013200163088423e+00 9.056537845278130e+03 + 42820 1.018911092620731e+00 -6.075662191764621e+00 -6.000098374786870e+00 3.229967102013245e+00 4.663866232562378e+00 9.217375340561861e+03 + 42840 1.003105890662450e+00 -6.055117060275528e+00 -6.001047582897177e+00 3.408234328311061e+00 4.718709634642129e+00 9.220274730983625e+03 + 42860 9.672615644019225e-01 -6.004220101297392e+00 -6.001532311045519e+00 3.701219235402391e+00 4.716652942962838e+00 9.221740065193364e+03 + 42880 1.015683503043844e+00 -6.075310216958385e+00 -5.956781677650515e+00 3.298624148276561e+00 4.979233363214530e+00 9.084856608137448e+03 + 42900 1.009808615391457e+00 -6.062412694494778e+00 -5.976068028161517e+00 3.382221184095955e+00 4.878025619975473e+00 9.143717614111993e+03 + 42920 9.794227381019880e-01 -6.011515402940459e+00 -5.984747595585061e+00 3.683217858332802e+00 4.836922750472301e+00 9.170282117097307e+03 + 42940 1.052916159042598e+00 -6.112167943302873e+00 -5.969128496820080e+00 3.065382084793408e+00 4.886736721780418e+00 9.122539095326887e+03 + 42960 9.213120803418349e-01 -5.907659712131211e+00 -6.061781026341553e+00 4.117009997219257e+00 4.232021560827181e+00 9.407676871916061e+03 + 42980 9.417225819421294e-01 -5.926749276414959e+00 -6.058442559676235e+00 4.082244203920906e+00 4.326040991964937e+00 9.397322455333873e+03 + 43000 9.855884166263618e-01 -5.979520749275801e+00 -6.054085180366934e+00 3.782435190498028e+00 4.354274688364325e+00 9.383823894952056e+03 + 43020 9.857353844287875e-01 -5.966426902199837e+00 -6.043584696804329e+00 3.854368215945723e+00 4.411316219196603e+00 9.351322822945382e+03 + 43040 9.612942445836413e-01 -5.918388786996005e+00 -5.994720116888835e+00 4.151530525164696e+00 4.713224216684940e+00 9.200849917356105e+03 + 43060 1.039562901610203e+00 -6.019734400897181e+00 -5.954687362556194e+00 3.634412637742421e+00 5.007922797893023e+00 9.078468225207473e+03 + 43080 1.028872213108818e+00 -5.984616136580172e+00 -5.985206805469916e+00 3.734225381481463e+00 4.730833669310837e+00 9.171693531039129e+03 + 43100 9.714447703549064e-01 -5.878022917037397e+00 -6.027774578111709e+00 4.303063327019473e+00 4.443166115136115e+00 9.302511529595580e+03 + 43120 1.009363265081748e+00 -5.908735893642821e+00 -6.024151956299955e+00 4.175634104053409e+00 4.512897211698177e+00 9.291330841132378e+03 + 43140 1.011733658622763e+00 -5.887040898675773e+00 -6.028169448786929e+00 4.302339863077477e+00 4.491957888766673e+00 9.303717524590909e+03 + 43160 1.069889562765957e+00 -5.949567922296512e+00 -6.032960340836541e+00 3.952649898285121e+00 4.473797726093212e+00 9.318483084978807e+03 + 43180 1.054764798901262e+00 -5.903452160733655e+00 -6.013089788421342e+00 4.295986196545803e+00 4.666429971995053e+00 9.257255028094562e+03 + 43200 1.089718437014268e+00 -5.933969131944338e+00 -6.058016651890862e+00 3.988972761462446e+00 4.276672705637831e+00 9.395984590348708e+03 + 43220 1.099042537694096e+00 -5.933603085653615e+00 -6.044812251606356e+00 4.027365824086425e+00 4.388785583622972e+00 9.355128098225330e+03 + 43240 1.007905482674210e+00 -5.793162921171949e+00 -6.054843696653620e+00 4.868276490550345e+00 4.365664982765462e+00 9.386178830559598e+03 + 43260 1.120354232311159e+00 -5.965976458340519e+00 -6.049047936515929e+00 3.840967278123198e+00 4.363957995170294e+00 9.368225166893584e+03 + 43280 1.092929659085414e+00 -5.946500764579333e+00 -6.012742888412458e+00 3.958688845812282e+00 4.578316319826945e+00 9.256195765499962e+03 + 43300 9.765694001562393e-01 -5.809644083543629e+00 -6.039086324940750e+00 4.783774908858677e+00 4.466282052684305e+00 9.337398358450255e+03 + 43320 1.070229397839350e+00 -5.996067673363084e+00 -5.986490013944049e+00 3.733504175930114e+00 4.788500578452215e+00 9.175616139461574e+03 + 43340 1.007028008092816e+00 -5.954772546450101e+00 -5.986172412755456e+00 4.022984331027210e+00 4.842681439588256e+00 9.174645220745235e+03 + 43360 1.048487453247661e+00 -6.063787044919310e+00 -6.001423795738981e+00 3.335145777199364e+00 4.693245204674430e+00 9.221434412610854e+03 + 43380 9.924203262144021e-01 -6.018557912106583e+00 -5.992268880595923e+00 3.571682179778982e+00 4.722637866927673e+00 9.193335711314427e+03 + 43400 9.651766953882126e-01 -6.001937323645488e+00 -5.956824977154562e+00 3.750156503289786e+00 5.009198577953742e+00 9.084942091482477e+03 + 43420 9.788610416019633e-01 -6.035846476638532e+00 -5.989593853092829e+00 3.513150765765783e+00 4.778740487735577e+00 9.185126673935620e+03 + 43440 9.466708375159891e-01 -5.996693161448647e+00 -6.037953005938412e+00 3.692104096433871e+00 4.455183684433337e+00 9.333933826074028e+03 + 43460 1.006344577411656e+00 -6.091069321135167e+00 -5.952086699431738e+00 3.240196502523280e+00 5.038256223835571e+00 9.070570298816740e+03 + 43480 9.284671864802571e-01 -5.977216466226848e+00 -5.994955941822984e+00 3.806273845637731e+00 4.704411031589738e+00 9.201540473174287e+03 + 43500 9.658948653008970e-01 -6.030383517797573e+00 -6.002348192544491e+00 3.513158230343595e+00 4.674141406399356e+00 9.224256921645891e+03 + 43520 1.041033807531266e+00 -6.134278156520400e+00 -5.985261242065360e+00 3.033377133328295e+00 4.889055316422120e+00 9.171859536005655e+03 + 43540 9.780576303976380e-01 -6.032556472591097e+00 -5.988811637812262e+00 3.552872273415776e+00 4.804061884207149e+00 9.182736019074624e+03 + 43560 9.720885132391266e-01 -6.011957944334600e+00 -5.973775267045681e+00 3.689685999195297e+00 4.908936840938484e+00 9.136703832413843e+03 + 43580 9.581185088526128e-01 -5.974837162565745e+00 -6.000335544300717e+00 3.887444532255123e+00 4.741028878471090e+00 9.218075589733788e+03 + 43600 1.003208982563209e+00 -6.020713217299353e+00 -5.980020962141674e+00 3.565813277698870e+00 4.799474503920393e+00 9.155840524360072e+03 + 43620 1.043527526031882e+00 -6.057263023530650e+00 -5.949241374232569e+00 3.366202523352245e+00 4.986479549918029e+00 9.061880064299476e+03 + 43640 9.916185881538689e-01 -5.952811067569514e+00 -5.990981379873100e+00 3.956599927260279e+00 4.737420087176352e+00 9.189347686972453e+03 + 43660 1.005824587246789e+00 -5.941851412377247e+00 -6.022217049216708e+00 4.011251695548215e+00 4.549779772273923e+00 9.285384907293694e+03 + 43680 9.802469276624316e-01 -5.871508953760397e+00 -6.066604975921496e+00 4.383590383436105e+00 4.263318833175220e+00 9.422620003360018e+03 + 43700 1.064809773952180e+00 -5.970362271231091e+00 -5.999603255298528e+00 3.804641602580992e+00 4.636735347038105e+00 9.215822494598775e+03 + 43720 1.064757846544776e+00 -5.949161496153861e+00 -5.974213339129503e+00 3.964158039756744e+00 4.820306480630437e+00 9.138034631238736e+03 + 43740 9.405526236814010e-01 -5.747426783700574e+00 -6.056924909407880e+00 5.079914710424430e+00 4.302728577932912e+00 9.392590205644945e+03 + 43760 1.044001702577005e+00 -5.885668834235420e+00 -6.086100459012591e+00 4.234850119673330e+00 4.083940713509125e+00 9.483249291687025e+03 + 43780 1.163958302514048e+00 -6.059025509508929e+00 -5.965693810791828e+00 3.406828990168780e+00 4.942754047236075e+00 9.112049615852229e+03 + 43800 1.069578753618162e+00 -5.924309108727151e+00 -6.045664181960880e+00 4.046620251571325e+00 4.349780641426364e+00 9.357750784486801e+03 + 43820 9.620457549383710e-01 -5.781669773650566e+00 -6.070139940575446e+00 4.829145864380186e+00 4.172705525283460e+00 9.433582842283002e+03 + 43840 1.089844858159639e+00 -6.004982845300430e+00 -5.978569070317329e+00 3.661455074409039e+00 4.813127057880467e+00 9.151367200883018e+03 + 43860 1.006140403513889e+00 -5.936888316438480e+00 -6.005804277306826e+00 4.083025243613914e+00 4.687299131597399e+00 9.234868798007254e+03 + 43880 9.857843612052664e-01 -5.978124608208429e+00 -6.021489459527226e+00 3.872964419383463e+00 4.623956732421874e+00 9.283109277801921e+03 + 43900 1.022738189727191e+00 -6.093964597019404e+00 -5.981376735025766e+00 3.183331379486783e+00 4.829828305969592e+00 9.159965366697843e+03 + 43920 9.362141829411478e-01 -6.005394381027607e+00 -6.009460843950357e+00 3.668690125420588e+00 4.645339866035055e+00 9.246101499301567e+03 + 43940 9.685563455477814e-01 -6.073268383308911e+00 -5.946388715814756e+00 3.330981311556140e+00 5.059543996872662e+00 9.053201937517855e+03 + 43960 9.582888756498057e-01 -6.065096604206874e+00 -5.966937668651051e+00 3.404695912093398e+00 4.968339710101127e+00 9.115835140409694e+03 + 43980 9.948721632052105e-01 -6.121878076756802e+00 -6.003525923991470e+00 3.014139296121567e+00 4.693735672236558e+00 9.227881019462431e+03 + 44000 8.812858276267961e-01 -5.951208890310696e+00 -6.016288098644089e+00 4.032854663208322e+00 4.659159777983039e+00 9.267111095408794e+03 + 44020 9.663925747396327e-01 -6.068769760164962e+00 -5.982080585712612e+00 3.369519278046887e+00 4.867301932858670e+00 9.162128784886012e+03 + 44040 9.473539398936086e-01 -6.025455408593505e+00 -6.014184973843987e+00 3.562498704057485e+00 4.627215284483359e+00 9.260644668329374e+03 + 44060 9.645504427941417e-01 -6.033389883668572e+00 -6.026293562999927e+00 3.545802170324095e+00 4.586550341755529e+00 9.297936422098312e+03 + 44080 9.391670525371489e-01 -5.975219014311142e+00 -6.034115028793831e+00 3.837462510864262e+00 4.499272481575876e+00 9.322067825334711e+03 + 44100 9.858386589854530e-01 -6.019562695395479e+00 -6.013256327582117e+00 3.619229421012079e+00 4.655441560903668e+00 9.257792112720650e+03 + 44120 9.742495657799140e-01 -5.977262087216030e+00 -6.010749447821178e+00 3.874079463747125e+00 4.681789857000064e+00 9.250048926096901e+03 + 44140 9.894787686991104e-01 -5.973553283072056e+00 -5.997159716524340e+00 3.853865744955732e+00 4.718313950988950e+00 9.208309572573469e+03 + 44160 1.074636634353342e+00 -6.071948002018575e+00 -5.983400403547649e+00 3.334731425298190e+00 4.843185438414822e+00 9.166162975091784e+03 + 44180 1.070749408182293e+00 -6.040929769143416e+00 -5.999699840561383e+00 3.474843430876004e+00 4.711592061104864e+00 9.216131226961439e+03 + 44200 9.964267126522937e-01 -5.913569371791747e+00 -6.049811834586341e+00 4.162746807702041e+00 4.380421502882506e+00 9.370588034073644e+03 + 44220 1.051931151642445e+00 -5.982390447766749e+00 -6.038465168608285e+00 3.856617670713463e+00 4.534627946106357e+00 9.335492925427960e+03 + 44240 1.016642713952556e+00 -5.921726043395908e+00 -6.046212058135279e+00 4.091694410446729e+00 4.376876449664736e+00 9.359461358869670e+03 + 44260 9.845303047950128e-01 -5.871439821091347e+00 -6.075488456481746e+00 4.362297796998889e+00 4.190618956162946e+00 9.450246258460640e+03 + 44280 1.080285169510756e+00 -6.015978497011445e+00 -6.002740492067423e+00 3.648104032780537e+00 4.724118705743758e+00 9.225473262072785e+03 + 44300 1.057007101838462e+00 -5.988876935096083e+00 -5.982589574925147e+00 3.790251150491378e+00 4.826354145558731e+00 9.163663587278197e+03 + 44320 1.051795615660847e+00 -5.995887512553033e+00 -6.005913283423994e+00 3.707813404616350e+00 4.650243876792262e+00 9.235217173633077e+03 + 44340 1.067825004250726e+00 -6.042960720101517e+00 -5.968973666929173e+00 3.503431900439403e+00 4.928277009214479e+00 9.122035744020388e+03 + 44360 9.345108827749478e-01 -5.879135270754245e+00 -6.022071170464722e+00 4.312611003947030e+00 4.491850948550484e+00 9.284900409287862e+03 + 44380 9.580392495788697e-01 -5.952747997575289e+00 -5.981802754423112e+00 3.906417996530034e+00 4.739581086500737e+00 9.161262921427840e+03 + 44400 9.692811804215858e-01 -6.011680292817529e+00 -6.025265214116546e+00 3.575896413106912e+00 4.497889692748176e+00 9.294778858620964e+03 + 44420 9.862943249235504e-01 -6.083992945386333e+00 -5.999474733696709e+00 3.263519937757733e+00 4.748836588430541e+00 9.215447857950710e+03 + 44440 9.180248520107875e-01 -6.022330053161623e+00 -5.950145247484567e+00 3.570126974094315e+00 4.984623298854546e+00 9.064608422525127e+03 + 44460 9.075042992485742e-01 -6.029206980190381e+00 -5.936951873371823e+00 3.590159269252150e+00 5.119902369035948e+00 9.024483376685599e+03 + 44480 8.787914153045366e-01 -5.995562435694159e+00 -5.991862833610344e+00 3.724480174594780e+00 4.745723862271623e+00 9.192095630350386e+03 + 44500 9.412915603594164e-01 -6.089498574883559e+00 -5.972910825570800e+00 3.254101728303159e+00 4.923566626752922e+00 9.134077948399818e+03 + 44520 9.466368086470168e-01 -6.091498045231331e+00 -5.963513718378957e+00 3.208919803552279e+00 4.943825613849187e+00 9.105399999621393e+03 + 44540 9.753666376690198e-01 -6.124081091865690e+00 -5.997624275761602e+00 3.041843075196632e+00 4.767977682395355e+00 9.209741607866175e+03 + 44560 8.970753642493564e-01 -5.995132491193459e+00 -5.982459923854775e+00 3.793224498253251e+00 4.865992340985430e+00 9.163293611479568e+03 + 44580 9.666043113935887e-01 -6.082063922425714e+00 -6.018582361114783e+00 3.288857303793943e+00 4.653378252581176e+00 9.274178417064819e+03 + 44600 9.468609768333022e-01 -6.034507858740603e+00 -6.024091045916951e+00 3.493604374034903e+00 4.553419325264889e+00 9.291164512147703e+03 + 44620 9.958381614922389e-01 -6.089514192029075e+00 -5.975600424970306e+00 3.203384114631825e+00 4.857494593181758e+00 9.142311797430650e+03 + 44640 9.233974615673123e-01 -5.965890922835316e+00 -5.967924618866277e+00 3.864135944110019e+00 4.852458146786796e+00 9.118807111953023e+03 + 44660 9.898214237033504e-01 -6.046321825790858e+00 -5.927052039407196e+00 3.403571137162535e+00 5.088436707517312e+00 8.994474223419640e+03 + 44680 1.002724541416857e+00 -6.042798102702641e+00 -5.980703485180562e+00 3.493306014563168e+00 4.849862917485952e+00 9.157894205902281e+03 + 44700 1.017978788304509e+00 -6.043260438459244e+00 -5.976539277138976e+00 3.473955363401504e+00 4.857078596768835e+00 9.145161332342421e+03 + 44720 1.000917203147050e+00 -5.998676550566827e+00 -5.980365534164418e+00 3.664019636236721e+00 4.769164326039989e+00 9.156854297766882e+03 + 44740 1.034640999756745e+00 -6.030340068901805e+00 -5.991491589630547e+00 3.518541523901922e+00 4.741615503660223e+00 9.190946137304223e+03 + 44760 1.052876454679555e+00 -6.043168042149782e+00 -5.975606019365843e+00 3.453917029734435e+00 4.841868619749046e+00 9.142333488094706e+03 + 44780 1.062035385166670e+00 -6.047538733711193e+00 -5.965813528672947e+00 3.448941634711743e+00 4.918220408975960e+00 9.112380358249826e+03 + 44800 1.028427290644999e+00 -5.990256810801812e+00 -5.973176840462040e+00 3.719023581663994e+00 4.817099414471830e+00 9.134876028247245e+03 + 44820 1.021143156304588e+00 -5.972040408855851e+00 -6.024370424327754e+00 3.842167697432964e+00 4.541680650549579e+00 9.292005167600269e+03 + 44840 9.797831565956688e-01 -5.907718647100344e+00 -6.046522808885214e+00 4.154322892563817e+00 4.357287915720474e+00 9.360414851469333e+03 + 44860 1.047207738342289e+00 -6.008408722014805e+00 -6.004259783059863e+00 3.585669347864028e+00 4.609493197389527e+00 9.230126253655106e+03 + 44880 1.032885068059796e+00 -5.989309320781781e+00 -5.964012206992233e+00 3.756887859617767e+00 4.902147801713054e+00 9.106906953868765e+03 + 44900 9.742137276748365e-01 -5.906187235908261e+00 -6.004276113258017e+00 4.181737758243695e+00 4.618496245296682e+00 9.230168737628552e+03 + 44920 1.018927414665056e+00 -5.978199525017322e+00 -5.996888920725350e+00 3.874705745423971e+00 4.767388343093831e+00 9.207482985054476e+03 + 44940 1.015246911976009e+00 -5.982315768873700e+00 -5.984580411971868e+00 3.760613236060390e+00 4.747609304938325e+00 9.169756896038012e+03 + 44960 1.000256293987012e+00 -5.974341711315319e+00 -6.006303332250539e+00 3.791710004283465e+00 4.608181430828576e+00 9.236415713138043e+03 + 44980 9.688163352953100e-01 -5.950858863487516e+00 -6.039397263101238e+00 3.996091334914468e+00 4.487690143059422e+00 9.338383399861024e+03 + 45000 1.012490814208620e+00 -6.052480556378592e+00 -5.994549665325588e+00 3.380536226654416e+00 4.713184367857185e+00 9.200354806722326e+03 + 45020 9.384397688144034e-01 -5.990292865176651e+00 -5.966286855327747e+00 3.868108227539600e+00 5.005954451010030e+00 9.113840852834359e+03 + 45040 9.937071823285228e-01 -6.121849851099979e+00 -5.967411616358513e+00 3.073143990549654e+00 4.959952233674739e+00 9.117287546768328e+03 + 45060 9.241818290028179e-01 -6.060636907994091e+00 -5.989700191011669e+00 3.389288516265629e+00 4.796618122600176e+00 9.185453211267561e+03 + 45080 9.180556172202337e-01 -6.079246325312653e+00 -5.986428904232179e+00 3.315798041362240e+00 4.848770036655815e+00 9.175447308122473e+03 + 45100 9.146967023012197e-01 -6.090126142908416e+00 -6.009479573837732e+00 3.172785652362198e+00 4.635870731982302e+00 9.246195044017228e+03 + 45120 8.790110674681033e-01 -6.043310564796167e+00 -6.005907097981031e+00 3.454466998650526e+00 4.669243493270822e+00 9.235195073673145e+03 + 45140 8.990805665922766e-01 -6.069567187973347e+00 -6.016512685890336e+00 3.282302754978150e+00 4.586949916096462e+00 9.267822561500690e+03 + 45160 9.534327503543956e-01 -6.139046697256854e+00 -5.979630007921754e+00 2.947763008790535e+00 4.863158308605620e+00 9.154628169732496e+03 + 45180 9.386456963401496e-01 -6.098586737077786e+00 -5.982857897407317e+00 3.229892701862753e+00 4.894425608230649e+00 9.164497392388686e+03 + 45200 9.471612112431129e-01 -6.084200984017709e+00 -5.994972231933249e+00 3.287301289258857e+00 4.799666591832586e+00 9.201617726127912e+03 + 45220 9.545434700718303e-01 -6.065750783026310e+00 -5.945561520674956e+00 3.365368500067442e+00 5.055513843717156e+00 9.050689041048025e+03 + 45240 9.412207448961252e-01 -6.013312804178008e+00 -5.960951425553833e+00 3.641999549141528e+00 4.942666688098695e+00 9.097551293446386e+03 + 45260 9.440863842385909e-01 -5.983741830988457e+00 -6.014577454858655e+00 3.728155193885210e+00 4.551092269825158e+00 9.261860516371100e+03 + 45280 9.869658441355642e-01 -6.018859352098182e+00 -5.971963124362786e+00 3.606652905413969e+00 4.875938302238403e+00 9.131189071781915e+03 + 45300 9.878299611509158e-01 -5.999099001241337e+00 -6.034001511616307e+00 3.704682773476352e+00 4.504267157757252e+00 9.321711960510256e+03 + 45320 1.031415799924680e+00 -6.047823451453051e+00 -6.000569035341492e+00 3.438366307212902e+00 4.709708477122735e+00 9.218797438172247e+03 + 45340 1.010914675123077e+00 -6.005728016171169e+00 -5.993233454076048e+00 3.652816160420864e+00 4.724561869498284e+00 9.196297913249677e+03 + 45360 9.975160797140851e-01 -5.977272740356423e+00 -6.022890737260060e+00 3.781394172747194e+00 4.519448575164301e+00 9.287442029450287e+03 + 45380 1.082728471838291e+00 -6.097563413507556e+00 -5.965368341916173e+00 3.166528089933184e+00 4.925612648132118e+00 9.111057729508904e+03 + 45400 9.755272569129608e-01 -5.934311682427934e+00 -5.967657443750031e+00 4.104115285458045e+00 4.912638763706675e+00 9.118025490303109e+03 + 45420 9.391839371617032e-01 -5.876842294057242e+00 -6.013118521249432e+00 4.314603746123105e+00 4.532084560907554e+00 9.257360199842173e+03 + 45440 1.033320989479615e+00 -6.011232704797253e+00 -6.003901973462219e+00 3.638868029890878e+00 4.680962223643649e+00 9.229027972481143e+03 + 45460 9.563045951833427e-01 -5.894000746230800e+00 -6.023031399095570e+00 4.352318628444947e+00 4.611404652266436e+00 9.287879129089550e+03 + 45480 9.792533089199749e-01 -5.926414000856242e+00 -6.033206556373838e+00 4.110054899142852e+00 4.496835519266262e+00 9.319270458012255e+03 + 45500 1.006767306387336e+00 -5.967567606658127e+00 -5.997453025343203e+00 3.901932168028996e+00 4.730325469185693e+00 9.209221919057627e+03 + 45520 1.045431379468022e+00 -6.026236867411924e+00 -5.978857168032363e+00 3.592884867991921e+00 4.864946433814145e+00 9.152263437509448e+03 + 45540 1.063508748461823e+00 -6.057348118821127e+00 -6.006286427335123e+00 3.399541534722139e+00 4.692745669005996e+00 9.236359969647974e+03 + 45560 1.051730673850795e+00 -6.049379654135849e+00 -5.996302908938295e+00 3.425646528686637e+00 4.730421413210764e+00 9.205709139730800e+03 + 45580 1.012158087849991e+00 -6.005367775858308e+00 -5.979639567766746e+00 3.646690702777690e+00 4.794426055066771e+00 9.154644193466054e+03 + 45600 9.641342206059555e-01 -5.953872165778787e+00 -6.007493941899318e+00 3.980266536469649e+00 4.672362000042526e+00 9.240048323655557e+03 + 45620 9.078641938389592e-01 -5.895874323974700e+00 -6.037757267559245e+00 4.211121801379113e+00 4.396407983002102e+00 9.333311948713354e+03 + 45640 1.029236124369201e+00 -6.106627490681957e+00 -6.001490368124148e+00 3.125294852778225e+00 4.729008480422292e+00 9.221640486755805e+03 + 45660 9.594873779953137e-01 -6.040940636588982e+00 -5.997509947113625e+00 3.489167625051121e+00 4.738553364896093e+00 9.209410790955992e+03 + 45680 9.229579082320878e-01 -6.020188191222548e+00 -5.995453390887203e+00 3.605267449957891e+00 4.747298501181426e+00 9.203088576243485e+03 + 45700 9.419180263000987e-01 -6.075607732277621e+00 -5.983335401542961e+00 3.335818095320405e+00 4.865660097495859e+00 9.165940527168745e+03 + 45720 9.883207622807989e-01 -6.163588820060426e+00 -5.957848250433922e+00 2.885443120645865e+00 5.066837309691505e+00 9.088109346751047e+03 + 45740 9.671820414472504e-01 -6.145297972705142e+00 -5.984417749810165e+00 2.921493552356378e+00 4.845292688353373e+00 9.169283233715141e+03 + 45760 9.256196733108053e-01 -6.089818405445142e+00 -5.969834475767723e+00 3.267656999285820e+00 4.956623290946668e+00 9.124664716577508e+03 + 45780 9.118956976146638e-01 -6.066981782586877e+00 -5.947557274097925e+00 3.354570381595945e+00 5.040324390222467e+00 9.056759679772733e+03 + 45800 9.457176407747767e-01 -6.104275191926196e+00 -5.983711252844587e+00 3.119069080228171e+00 4.811365875644039e+00 9.167111425202595e+03 + 45820 8.672888030658787e-01 -5.964675298039786e+00 -6.018966085109875e+00 3.881123883320145e+00 4.569377782491546e+00 9.275364643142202e+03 + 45840 9.319206186037998e-01 -6.026685518017505e+00 -5.969289965256503e+00 3.548362561726094e+00 4.877936707612852e+00 9.122994827038228e+03 + 45860 9.999444371690510e-01 -6.083415173254644e+00 -5.995530204679047e+00 3.260144207489703e+00 4.764793297205715e+00 9.203341744709260e+03 + 45880 9.873639001703219e-01 -6.020957341017670e+00 -6.032501518188918e+00 3.552025963425794e+00 4.485737511652842e+00 9.317102841770158e+03 + 45900 9.526490890931942e-01 -5.936037978399916e+00 -6.025237821973733e+00 4.028218817954316e+00 4.516019512522271e+00 9.294697219705924e+03 + 45920 1.004520561569255e+00 -5.986284490530764e+00 -6.002307637550048e+00 3.774801545209757e+00 4.682794155451035e+00 9.224144274326036e+03 + 45940 9.762030993382927e-01 -5.928795711847954e+00 -5.972617575583434e+00 4.087082334600895e+00 4.835450411620275e+00 9.133167602222009e+03 + 45960 9.540690831396690e-01 -5.884338191508696e+00 -6.022403118576884e+00 4.347023285159613e+00 4.554233108455665e+00 9.285919407591409e+03 + 45980 1.062739777398188e+00 -6.037089448320698e+00 -6.017177498227081e+00 3.502757512089262e+00 4.617095010891124e+00 9.269858974749017e+03 + 46000 1.020963022017415e+00 -5.972748834570328e+00 -6.040429840506185e+00 3.862944273255102e+00 4.474309463569588e+00 9.341575830699074e+03 + 46020 1.027963784569119e+00 -5.985740554848860e+00 -6.010283498574060e+00 3.755359224508638e+00 4.614429843630278e+00 9.248646775011934e+03 + 46040 1.048956103242619e+00 -6.021995274815933e+00 -5.989392378783410e+00 3.609845618287060e+00 4.797056492587661e+00 9.184503167807448e+03 + 46060 1.005356645796176e+00 -5.964069636436132e+00 -6.000928314473772e+00 3.919737515338084e+00 4.708089282183961e+00 9.219875522840550e+03 + 46080 9.323918296339031e-01 -5.862882305775512e+00 -6.009504758880304e+00 4.464767627691593e+00 4.622838812212589e+00 9.246215929008975e+03 + 46100 9.973349805006587e-01 -5.965407420334003e+00 -5.998639421608392e+00 3.886520345569196e+00 4.695697051616074e+00 9.212868862201372e+03 + 46120 1.068157054576131e+00 -6.078236209236966e+00 -6.003683008484436e+00 3.270378667565696e+00 4.698474683357255e+00 9.228347903997574e+03 + 46140 1.093878429736254e+00 -6.128084809187810e+00 -5.967000226911114e+00 3.004067770831234e+00 4.929040370022566e+00 9.116021686894592e+03 + 46160 9.406423084938089e-01 -5.914781159740396e+00 -6.040601005182938e+00 4.159330502393846e+00 4.436853479304611e+00 9.342113268594985e+03 + 46180 9.909501269202274e-01 -6.006352308262564e+00 -5.979203285519281e+00 3.692856304650706e+00 4.848750194540333e+00 9.153324715002755e+03 + 46200 9.763754215758450e-01 -6.003016644003488e+00 -5.966022954520849e+00 3.681584856072269e+00 4.894008345836527e+00 9.113019647935504e+03 + 46220 9.871506804335261e-01 -6.037559822916059e+00 -5.982228187457708e+00 3.436322200531989e+00 4.754045013876754e+00 9.162592328479370e+03 + 46240 1.026124339759903e+00 -6.113076825044221e+00 -5.990444262352725e+00 3.102815577564309e+00 4.806990729866623e+00 9.187751278846728e+03 + 46260 9.795726000966996e-01 -6.065037040581744e+00 -5.990747444372520e+00 3.346693606725991e+00 4.773275964437214e+00 9.188665064374978e+03 + 46280 9.732041528505415e-01 -6.080400196326169e+00 -5.994575508667040e+00 3.237876011692217e+00 4.730694649558426e+00 9.200408824626300e+03 + 46300 9.535864791615533e-01 -6.076032081169933e+00 -5.966233780580316e+00 3.243825685060262e+00 4.874304518277945e+00 9.113697206338329e+03 + 46320 9.831477007789183e-01 -6.143027151958571e+00 -5.987764004403665e+00 2.858425824191525e+00 4.749970844346224e+00 9.179543857571201e+03 + 46340 8.840794537074395e-01 -6.017162732002744e+00 -6.011200815302601e+00 3.566731516670454e+00 4.600965764966300e+00 9.251465951247434e+03 + 46360 9.215831641171551e-01 -6.087780677171402e+00 -5.973639562928353e+00 3.189925088598067e+00 4.845341029862000e+00 9.136300636941236e+03 + 46380 9.413285646055011e-01 -6.125852613752862e+00 -5.955657122401188e+00 3.034813958227390e+00 5.012102807235870e+00 9.081446363294686e+03 + 46400 9.467807511163978e-01 -6.137087727582617e+00 -5.945042294976322e+00 2.980339020428794e+00 5.083093613388787e+00 9.049128469448957e+03 + 46420 9.041692148956698e-01 -6.069464709411212e+00 -5.965744862335880e+00 3.318095838629630e+00 4.913671251130653e+00 9.112174294181776e+03 + 46440 9.034911155704513e-01 -6.050697040588094e+00 -5.953959287943753e+00 3.432792336058834e+00 4.988275481861482e+00 9.076264538618645e+03 + 46460 9.953827332168000e-01 -6.148896708649717e+00 -5.995934810765988e+00 2.922815800807355e+00 4.801146689232931e+00 9.204591302435196e+03 + 46480 9.343110376999673e-01 -6.009995390809857e+00 -6.027668286870279e+00 3.627808934827486e+00 4.526328430776720e+00 9.302183219583019e+03 + 46500 1.015940851905577e+00 -6.082639199772971e+00 -6.005172293184331e+00 3.268806740112848e+00 4.713633705709871e+00 9.232946175046844e+03 + 46520 1.015648480414979e+00 -6.038688530112188e+00 -6.004531990356327e+00 3.506547715368419e+00 4.702679852354018e+00 9.230983955130196e+03 + 46540 9.811057273684646e-01 -5.954752608204160e+00 -5.984956557308050e+00 3.966178048633707e+00 4.792742298833151e+00 9.170942977065766e+03 + 46560 1.047135335624176e+00 -6.028647046293909e+00 -6.020569577027071e+00 3.544252664715519e+00 4.590634743230033e+00 9.280279880335143e+03 + 46580 1.045014339727521e+00 -6.009616662029691e+00 -5.966742692746122e+00 3.680737863739039e+00 4.926926830090594e+00 9.115237599151318e+03 + 46600 1.006401248211502e+00 -5.942494787424208e+00 -5.989417904250526e+00 4.029918617473870e+00 4.760478819328289e+00 9.184551857896256e+03 + 46620 1.082801420777409e+00 -6.046729960712536e+00 -5.978367111575920e+00 3.419005142280340e+00 4.811555201139500e+00 9.150746983682458e+03 + 46640 1.046440370234582e+00 -5.989150303563857e+00 -5.983135197551691e+00 3.778418870748603e+00 4.812958540305108e+00 9.165358084843499e+03 + 46660 9.977993408414125e-01 -5.916217559683911e+00 -5.975323403247982e+00 4.240328303286638e+00 4.900933402942011e+00 9.141414814707767e+03 + 46680 1.040231228089488e+00 -5.979337037411538e+00 -5.981770410078218e+00 3.828092246301369e+00 4.814119443886090e+00 9.161181330048090e+03 + 46700 1.007139961581707e+00 -5.932853574630323e+00 -6.002666311257356e+00 4.077866955468509e+00 4.676991418270009e+00 9.225253569344341e+03 + 46720 9.866841240158226e-01 -5.910072038234613e+00 -5.991904834001801e+00 4.137927202599899e+00 4.668030625720489e+00 9.192221374563449e+03 + 46740 1.024419933595225e+00 -5.976636776749624e+00 -5.987727326644626e+00 3.828612212800123e+00 4.764928559045971e+00 9.179417284881796e+03 + 46760 1.022621456720817e+00 -5.988650543676046e+00 -5.975043229984429e+00 3.760890125403921e+00 4.839025426346177e+00 9.140593528661237e+03 + 46780 1.013342617052789e+00 -5.993967388018976e+00 -5.998254504249125e+00 3.689151739729316e+00 4.664534454906701e+00 9.211649173226680e+03 + 46800 9.406972013630015e-01 -5.910732258738662e+00 -5.957608704686020e+00 4.269900103361152e+00 5.000728296624859e+00 9.087304988841794e+03 + 46820 9.253991189727901e-01 -5.911817463941821e+00 -5.997474068725601e+00 4.135801527985884e+00 4.643948048000671e+00 9.209189207540836e+03 + 46840 9.495499289997092e-01 -5.971583739505072e+00 -5.962008792206369e+00 3.848381341847178e+00 4.903362170954635e+00 9.100769085574173e+03 + 46860 9.835402830064687e-01 -6.045193549429879e+00 -5.979914763813802e+00 3.433950840834594e+00 4.808791729701530e+00 9.155497486859567e+03 + 46880 1.006480657200789e+00 -6.105291528359811e+00 -5.983883379966617e+00 3.135387995339076e+00 4.832532371263041e+00 9.167642756992263e+03 + 46900 1.005989799082645e+00 -6.130553249582472e+00 -5.969959870887336e+00 3.001229962906092e+00 4.923381995118600e+00 9.125076082263080e+03 + 46920 9.354942900297968e-01 -6.051369676001597e+00 -5.989340727694563e+00 3.409708369150042e+00 4.765888189277762e+00 9.184350499019432e+03 + 46940 9.571759278278926e-01 -6.107399849658945e+00 -5.944734646744908e+00 3.184792080378379e+00 5.118840847869578e+00 9.048166831767099e+03 + 46960 8.884410813723453e-01 -6.023337042973017e+00 -5.994088395308106e+00 3.545063365142646e+00 4.713013626248165e+00 9.198914290974157e+03 + 46980 9.994209576959663e-01 -6.200916551139206e+00 -5.942383555079437e+00 2.623733078463889e+00 5.108269549690923e+00 9.041034989969448e+03 + 47000 9.048924344896305e-01 -6.068198848036551e+00 -5.982710947087128e+00 3.333789602119106e+00 4.824674358580615e+00 9.164060064489571e+03 + 47020 9.022082676976292e-01 -6.064315326273661e+00 -6.004078382003197e+00 3.300439011585763e+00 4.646328867223768e+00 9.229587873110451e+03 + 47040 9.094386568524275e-01 -6.065104956806762e+00 -5.986712481817070e+00 3.379280771807575e+00 4.829422494394683e+00 9.176292255497148e+03 + 47060 9.372806943697500e-01 -6.082224632527324e+00 -5.958533026988959e+00 3.219996297905577e+00 4.930252638120964e+00 9.090205987137957e+03 + 47080 1.005825018442195e+00 -6.139227153474851e+00 -5.965559823927262e+00 2.968175348598013e+00 4.965400029792663e+00 9.111632140354877e+03 + 47100 9.602690126834865e-01 -6.016470349030674e+00 -5.998943226787715e+00 3.588140037087828e+00 4.688783485320300e+00 9.213811092607086e+03 + 47120 1.077369802040138e+00 -6.136313415437977e+00 -5.994754531609552e+00 2.965686640562286e+00 4.778539657671575e+00 9.200974089976511e+03 + 47140 1.022360364285776e+00 -6.014484514312829e+00 -6.038747628258127e+00 3.622180266487102e+00 4.482857711508451e+00 9.336402481985124e+03 + 47160 9.750054539400601e-01 -5.918939839122796e+00 -5.997986344740263e+00 4.145960521433231e+00 4.692063253770526e+00 9.210844082905645e+03 + 47180 9.770425299249131e-01 -5.902240173505994e+00 -6.016485832554844e+00 4.171120175053873e+00 4.515103921336775e+00 9.267716727361012e+03 + 47200 1.042880643382362e+00 -5.984786437799109e+00 -6.019214878265588e+00 3.776056148970479e+00 4.578362716028010e+00 9.276118861080357e+03 + 47220 1.049966726563626e+00 -5.985731268311301e+00 -5.994940330978475e+00 3.805394409305115e+00 4.752514546372356e+00 9.201521299452243e+03 + 47240 1.046729562768386e+00 -5.975784707670146e+00 -6.012150665523056e+00 3.829236461148441e+00 4.620417503543243e+00 9.254383057825149e+03 + 47260 9.885622821095597e-01 -5.888166610602957e+00 -6.022276938579101e+00 4.382975609395660e+00 4.612893352650455e+00 9.285551479891023e+03 + 47280 1.007395386992249e+00 -5.920363874256920e+00 -6.033090773719228e+00 4.104835112712472e+00 4.457539811568588e+00 9.318904927161173e+03 + 47300 1.105250273399454e+00 -6.072108888440662e+00 -6.028826513677112e+00 3.309981251301874e+00 4.558515345120023e+00 9.305730392774934e+03 + 47320 1.019643868359667e+00 -5.958694198494824e+00 -6.042734853322168e+00 3.895753142021983e+00 4.413178696754066e+00 9.348703379795275e+03 + 47340 1.018901844016925e+00 -5.977439389102992e+00 -5.979694276889362e+00 3.828839934908886e+00 4.815892020296798e+00 9.154821670475381e+03 + 47360 1.002497852038758e+00 -5.975169378143097e+00 -6.023041299554956e+00 3.813313063089951e+00 4.538425082187155e+00 9.287917118401121e+03 + 47380 9.969815058293452e-01 -5.994275500505179e+00 -6.024247417506624e+00 3.689792532491452e+00 4.517689146929989e+00 9.291647317097661e+03 + 47400 9.795687999842789e-01 -5.998353769878118e+00 -5.990710330428561e+00 3.749393741391908e+00 4.793283553529696e+00 9.188536709405673e+03 + 47420 9.769866577145389e-01 -6.018717153286136e+00 -5.990835138627098e+00 3.574225467214259e+00 4.734328310114280e+00 9.188936979984312e+03 + 47440 1.063172253302256e+00 -6.172196493171925e+00 -5.974919964633603e+00 2.797443558861278e+00 4.930235914172451e+00 9.140247735584557e+03 + 47460 9.903920403112663e-01 -6.089655469505608e+00 -5.997173219407301e+00 3.181145446837796e+00 4.712192838484224e+00 9.208377972953915e+03 + 47480 9.782945869619735e-01 -6.093812767214379e+00 -5.965551183264351e+00 3.174681180970379e+00 4.911179044427406e+00 9.111584480296448e+03 + 47500 9.286992735093607e-01 -6.035056952410013e+00 -5.943302157798513e+00 3.503543397912994e+00 5.030413627580801e+00 9.043803750429672e+03 + 47520 9.739906559981634e-01 -6.107913650382809e+00 -5.961320597142355e+00 3.164515405292881e+00 5.006275402201242e+00 9.098699659012667e+03 + 47540 9.904432276151047e-01 -6.131762705598763e+00 -6.013410340247582e+00 2.970483781792212e+00 4.650081378608037e+00 9.258265853956960e+03 + 47560 9.261446561691918e-01 -6.033043256406757e+00 -5.983615441243993e+00 3.557447079894920e+00 4.841269243489194e+00 9.166806477704189e+03 + 47580 9.289477494024367e-01 -6.024625695380096e+00 -5.984669464417010e+00 3.596078142013695e+00 4.825513003410498e+00 9.170037175937663e+03 + 47600 1.000366366594155e+00 -6.107120322597730e+00 -5.959694507804146e+00 3.156739374236671e+00 5.003281216852535e+00 9.093735465981497e+03 + 47620 1.002796547002488e+00 -6.071494863645189e+00 -5.952591463865019e+00 3.335648553216884e+00 5.018410274996267e+00 9.072089968133110e+03 + 47640 9.373775504373838e-01 -5.914263483875070e+00 -6.013808689475193e+00 4.198110816315148e+00 4.626506841188462e+00 9.259448048776127e+03 + 47660 1.007748431883514e+00 -5.951334135508383e+00 -6.045264536716248e+00 3.870123486943938e+00 4.330760587525770e+00 9.356526032886404e+03 + 47680 1.022005068055484e+00 -5.918122679902829e+00 -6.030472401126179e+00 4.144301126603910e+00 4.499171641276268e+00 9.310803143206054e+03 + 47700 1.067105217600717e+00 -5.957266617592960e+00 -6.019871478304047e+00 3.889974613457970e+00 4.530487815184018e+00 9.278152146674389e+03 + 47720 1.054149277701265e+00 -5.926651415342807e+00 -6.036910140895960e+00 4.078250512337079e+00 4.445127847728236e+00 9.330610861090601e+03 + 47740 1.058220972448187e+00 -5.928699046505205e+00 -6.027203243087479e+00 4.047226099020934e+00 4.481599758770361e+00 9.300727299279804e+03 + 47760 9.963685687881559e-01 -5.839878499833597e+00 -6.094957752583306e+00 4.496651858965694e+00 4.031947316290077e+00 9.510854025027411e+03 + 47780 1.050761807344330e+00 -5.931915254025816e+00 -6.044607444086711e+00 4.060071772051559e+00 4.412975777661846e+00 9.354509743271803e+03 + 47800 9.877276688890052e-01 -5.859950378180331e+00 -6.046912537721312e+00 4.380960340616179e+00 4.307394688231187e+00 9.361629033539761e+03 + 47820 1.069685900751422e+00 -6.005214606730344e+00 -5.999545340657246e+00 3.673867325278940e+00 4.706421128386760e+00 9.215591986955926e+03 + 47840 9.882713189805953e-01 -5.910171544416615e+00 -6.017529900525689e+00 4.179678530860320e+00 4.563210236430101e+00 9.270900921354114e+03 + 47860 9.854241588984639e-01 -5.932095107778496e+00 -6.010433117871860e+00 4.070586299076745e+00 4.620757322352767e+00 9.249102124739755e+03 + 47880 1.005352433022166e+00 -5.989648877612485e+00 -6.006252992100376e+00 3.778773945933656e+00 4.683430551065770e+00 9.236253319586222e+03 + 47900 1.020500891272819e+00 -6.039576917173575e+00 -6.008712618956436e+00 3.489166766846865e+00 4.666394343444388e+00 9.243806099825093e+03 + 47920 9.789809318956370e-01 -6.001456026827020e+00 -6.032199767323288e+00 3.682014688839706e+00 4.505479373331667e+00 9.316165977747123e+03 + 47940 9.613373996530664e-01 -5.997282214069291e+00 -6.049028852447599e+00 3.673248158307167e+00 4.376110952972507e+00 9.368184202133260e+03 + 47960 9.247583417472751e-01 -5.963388635293611e+00 -6.023001713506212e+00 3.863641367986834e+00 4.521333847796037e+00 9.287785287729701e+03 + 47980 9.377691817699972e-01 -5.997439821192891e+00 -5.948722285391337e+00 3.711680087008733e+00 4.991423716595561e+00 9.060307898080857e+03 + 48000 9.789455327289253e-01 -6.066492609161951e+00 -6.005033992573453e+00 3.273858586483679e+00 4.626763473625015e+00 9.232512814284797e+03 + 48020 9.773074730916494e-01 -6.068637679546150e+00 -5.967640908594759e+00 3.334626969261021e+00 4.914566057263700e+00 9.117973237519871e+03 + 48040 9.862237022550798e-01 -6.081036250597179e+00 -5.967153463017617e+00 3.285099611454668e+00 4.939032201040936e+00 9.116490844501639e+03 + 48060 9.521682271228036e-01 -6.022418473374762e+00 -6.029612625622993e+00 3.545597093178410e+00 4.504287157677606e+00 9.308187555094994e+03 + 48080 9.671558942355183e-01 -6.034799232417035e+00 -5.987890160853269e+00 3.528729157335678e+00 4.798088305410189e+00 9.179915250772046e+03 + 48100 9.313570624955759e-01 -5.964967316259814e+00 -6.033863798240884e+00 3.862257494132238e+00 4.466643232900800e+00 9.321294848784506e+03 + 48120 9.711197845805525e-01 -6.000656197293629e+00 -6.026230309756020e+00 3.691437160374510e+00 4.544586649034346e+00 9.297734511157796e+03 + 48140 9.668363590740046e-01 -5.964171539616084e+00 -5.999510842744844e+00 3.912156074013493e+00 4.709232326708670e+00 9.215549953339205e+03 + 48160 1.071114434870050e+00 -6.077241187353293e+00 -6.005316453788482e+00 3.266410461203798e+00 4.679413411649489e+00 9.233383873798797e+03 + 48180 1.038998733096230e+00 -5.977992802359612e+00 -6.043990537501496e+00 3.804294911617921e+00 4.425325703316719e+00 9.352566322152876e+03 + 48200 1.060923315758901e+00 -5.965021391475852e+00 -5.967966597515814e+00 3.901317254262877e+00 4.884405425412250e+00 9.118964754390076e+03 + 48220 1.069960773950398e+00 -5.941561905899140e+00 -5.956644040686034e+00 4.038453460855237e+00 4.951849508956075e+00 9.084401105198032e+03 + 48240 1.089184720986777e+00 -5.942789461072636e+00 -5.986566220322276e+00 3.974478341004466e+00 4.723105414961427e+00 9.175807752151057e+03 + 48260 1.056375559350045e+00 -5.878942594114434e+00 -5.995240766414669e+00 4.292109718432346e+00 4.624307616000401e+00 9.202371278779530e+03 + 48280 1.073629990481018e+00 -5.898929202008398e+00 -5.984404649360690e+00 4.263341138775310e+00 4.772527892795722e+00 9.169207601889122e+03 + 48300 1.013068830404988e+00 -5.810836281739135e+00 -6.048262894245259e+00 4.693273177330182e+00 4.329932826670482e+00 9.365789340659814e+03 + 48320 1.099975564998793e+00 -5.951300108693943e+00 -6.039553134129390e+00 3.923501509092767e+00 4.416738979930877e+00 9.338868367032142e+03 + 48340 1.125103392283386e+00 -6.006739901393161e+00 -5.987557397212748e+00 3.654578101764347e+00 4.764727009251207e+00 9.178916426407364e+03 + 48360 1.070012527721169e+00 -5.947172969228235e+00 -5.998721205603058e+00 3.955741698146908e+00 4.659743747818878e+00 9.213137371648090e+03 + 48380 1.089613057432444e+00 -5.999793479150708e+00 -5.978547201459069e+00 3.672101295741073e+00 4.794100710097313e+00 9.151299144000877e+03 + 48400 1.015937857496142e+00 -5.912417878270271e+00 -6.020846303400292e+00 4.136896224268228e+00 4.514283427927088e+00 9.281151604960432e+03 + 48420 1.038285722576586e+00 -5.967534443997772e+00 -6.049617009569692e+00 3.795452013338419e+00 4.324121219588486e+00 9.370014163566349e+03 + 48440 1.042898313739251e+00 -5.996958585805450e+00 -6.022352029645937e+00 3.661846747853254e+00 4.516033663698439e+00 9.285799237935433e+03 + 48460 9.991874927672434e-01 -5.953623946423537e+00 -6.028600705265013e+00 3.909496318394155e+00 4.478968166510467e+00 9.305033643477473e+03 + 48480 1.013759406732738e+00 -5.996684139950926e+00 -5.998591000076900e+00 3.706379280292615e+00 4.695429794363616e+00 9.212700937211202e+03 + 48500 9.634863855410132e-01 -5.941402823303851e+00 -5.978228868386131e+00 4.015692717708855e+00 4.804231868034345e+00 9.150307372286896e+03 + 48520 9.763192877657830e-01 -5.973825935296019e+00 -5.988451033393000e+00 3.821595517142257e+00 4.737615940642780e+00 9.181618805808946e+03 + 48540 1.030211458987731e+00 -6.065065768097087e+00 -5.982258682263177e+00 3.336767711859940e+00 4.812258813073367e+00 9.162661579073230e+03 + 48560 9.558054866338821e-01 -5.962403959264303e+00 -6.015963094398620e+00 3.882904870926470e+00 4.575360028735844e+00 9.266105313479649e+03 + 48580 1.022165679007984e+00 -6.067252532145616e+00 -5.995213171545805e+00 3.351901486258240e+00 4.765562642877384e+00 9.202346708176998e+03 + 48600 1.010074616943558e+00 -6.056722103528778e+00 -5.985168810607775e+00 3.373826961927055e+00 4.784697042715746e+00 9.171585656849114e+03 + 48620 9.171132021579763e-01 -5.923541785139012e+00 -6.043307867488946e+00 4.100571731350541e+00 4.412856352755871e+00 9.350472427993327e+03 + 48640 1.022916220408237e+00 -6.084563563191187e+00 -5.979124232836077e+00 3.232791344132866e+00 4.838240295715547e+00 9.153093884471213e+03 + 48660 9.571871237588693e-01 -5.989369931799873e+00 -6.009255754130242e+00 3.757419929729714e+00 4.643232460587670e+00 9.245461515601026e+03 + 48680 9.724661029238494e-01 -6.011514939497109e+00 -5.991831536592228e+00 3.641905439859587e+00 4.754930585336171e+00 9.192013100757964e+03 + 48700 9.832200668013626e-01 -6.022177523275072e+00 -5.984023204755506e+00 3.599483006666567e+00 4.818571007967622e+00 9.168081429394608e+03 + 48720 9.829823181573463e-01 -6.012288804264655e+00 -5.994706405473179e+00 3.667934902300130e+00 4.768895757028202e+00 9.200800961835039e+03 + 48740 9.673730344858398e-01 -5.975421882973269e+00 -5.999272494191190e+00 3.832366521242892e+00 4.695412620759432e+00 9.214818962899251e+03 + 48760 1.049595832598912e+00 -6.075105035723462e+00 -5.986520388296342e+00 3.314534248626944e+00 4.823201002583350e+00 9.175720587619715e+03 + 48780 1.048813643720626e+00 -6.039615767399648e+00 -5.995198263839571e+00 3.507502211794955e+00 4.762554390823380e+00 9.202304014861400e+03 + 48800 1.051803135445691e+00 -6.005636812417128e+00 -5.977089407054936e+00 3.693085267478820e+00 4.857008886765231e+00 9.146866288073366e+03 + 48820 1.063966977263228e+00 -5.984605613442156e+00 -5.978469096541673e+00 3.744147423494073e+00 4.779384253159565e+00 9.151083818378125e+03 + 48840 1.032548995308832e+00 -5.902720619877512e+00 -6.007012055484598e+00 4.166741564842092e+00 4.567884002538699e+00 9.238593011431445e+03 + 48860 1.062559858448828e+00 -5.920200978210653e+00 -6.004231471297702e+00 4.110120534187006e+00 4.627604439204391e+00 9.230031853164099e+03 + 48880 1.087618885725373e+00 -5.939978582773488e+00 -5.968076697908153e+00 4.043902730516084e+00 4.882559005243579e+00 9.119264172280604e+03 + 48900 1.060211188984174e+00 -5.887528602500774e+00 -5.991144520587442e+00 4.310625561926997e+00 4.715646925761849e+00 9.189782608448626e+03 + 48920 1.055254098239748e+00 -5.876695572825818e+00 -5.947971501263234e+00 4.340995135489948e+00 4.931717724488022e+00 9.058014771331938e+03 + 48940 1.020686418594559e+00 -5.827054744678257e+00 -6.067134468379332e+00 4.604231650397571e+00 4.225656724688830e+00 9.424235627463440e+03 + 48960 1.144507285262668e+00 -6.022558312043504e+00 -6.007867634128017e+00 3.573708856049284e+00 4.658065002015072e+00 9.241222091327973e+03 + 48980 1.096970107843541e+00 -5.978244748053082e+00 -6.004087754475483e+00 3.824973787915995e+00 4.676579245846248e+00 9.229598648488385e+03 + 49000 1.012527068741598e+00 -5.890040687041521e+00 -6.011035410540455e+00 4.294152398437221e+00 4.599381972233391e+00 9.250933478953641e+03 + 49020 9.935929650225196e-01 -5.900824054034792e+00 -6.017412105621597e+00 4.217414927559551e+00 4.547948293405443e+00 9.270518034458953e+03 + 49040 1.041997049238116e+00 -6.009241948718646e+00 -5.995474805654112e+00 3.674636426139629e+00 4.753689492074688e+00 9.203167820420093e+03 + 49060 9.914783642958981e-01 -5.971099633619185e+00 -6.040974920822455e+00 3.829744352537540e+00 4.428509640250617e+00 9.343250981602183e+03 + 49080 1.024074201686398e+00 -6.048984311124375e+00 -5.989376817327453e+00 3.399231639505648e+00 4.741507093117428e+00 9.184478038877180e+03 + 49100 9.758479521277481e-01 -5.997507038862329e+00 -6.028163850709108e+00 3.653100391793332e+00 4.477064234042830e+00 9.303719428393080e+03 + 49120 9.938348704148550e-01 -6.038942739851130e+00 -6.002001194919662e+00 3.523546173408057e+00 4.735670241090151e+00 9.223149892728452e+03 + 49140 9.481433008944662e-01 -5.979225752319042e+00 -6.014702231505764e+00 3.794373992182780e+00 4.590662558725214e+00 9.262251318591507e+03 + 49160 1.011763744726122e+00 -6.077368852088505e+00 -6.017629416253049e+00 3.216901522279021e+00 4.559934607494026e+00 9.271257487806426e+03 + 49180 1.011054172467822e+00 -6.078032435449289e+00 -5.966682123667100e+00 3.306905873881898e+00 4.946296595540286e+00 9.115056318868865e+03 + 49200 9.046297287952977e-01 -5.918876570610314e+00 -5.996370475791669e+00 4.148513557186748e+00 4.703531561492337e+00 9.205887798990574e+03 + 49220 1.024035113351049e+00 -6.090527564551678e+00 -5.966612697420079e+00 3.229294671242912e+00 4.940833014076269e+00 9.114836717064920e+03 + 49240 9.986491175341013e-01 -6.044944528508131e+00 -5.961933877702370e+00 3.507136402394239e+00 4.983796405177610e+00 9.100562304598900e+03 + 49260 1.013553997607692e+00 -6.057770955163029e+00 -5.979377045092468e+00 3.376294874187471e+00 4.826444837231012e+00 9.153844316532633e+03 + 49280 9.751157020655733e-01 -5.989306566518621e+00 -6.034454993451243e+00 3.764492285653079e+00 4.505243031509474e+00 9.323086224212509e+03 + 49300 1.034355694043237e+00 -6.064062966714511e+00 -5.983275822967880e+00 3.349366492981825e+00 4.813258774145071e+00 9.165788351256842e+03 + 49320 1.018617272389194e+00 -6.025780999625737e+00 -6.011644041432897e+00 3.558095771507596e+00 4.639272373138097e+00 9.252838041800525e+03 + 49340 9.725035854895139e-01 -5.943589066062019e+00 -6.007907002694482e+00 3.973366967042218e+00 4.604043421730091e+00 9.241338860346837e+03 + 49360 1.000242369001744e+00 -5.969123734130342e+00 -6.032078255634618e+00 3.822918581051109e+00 4.461423976392840e+00 9.315770147941092e+03 + 49380 1.053157187352196e+00 -6.030069356594044e+00 -5.965161018191509e+00 3.488024307993937e+00 4.860738031634202e+00 9.110394159793201e+03 + 49400 1.014606354663133e+00 -5.949642223740406e+00 -6.018919893509042e+00 3.918068320442826e+00 4.520265219946565e+00 9.275212387967173e+03 + 49420 1.064540647382888e+00 -5.997040242314904e+00 -5.980849221067505e+00 3.755479644060958e+00 4.848450993615963e+00 9.158351141749599e+03 + 49440 1.038547979293805e+00 -5.929623894992941e+00 -6.017722694097873e+00 4.055301788618365e+00 4.549424850912740e+00 9.271526249753633e+03 + 49460 1.044072470807429e+00 -5.905311745003074e+00 -5.958873653174746e+00 4.203480422220796e+00 4.895919656820553e+00 9.091183532551597e+03 + 49480 1.016954215063829e+00 -5.828426692669380e+00 -6.007550706516209e+00 4.643162914923321e+00 4.614605108063270e+00 9.240167902569796e+03 + 49500 1.137154843142273e+00 -5.968709185988518e+00 -5.986857083512485e+00 3.909372588935197e+00 4.805164552974507e+00 9.176734452829882e+03 + 49520 1.135952801967156e+00 -5.936754427822423e+00 -6.039646897967922e+00 4.054013573847472e+00 4.463189087713723e+00 9.339135688949738e+03 + 49540 1.150783255546644e+00 -5.938946988661366e+00 -6.010312228695952e+00 4.019120173291430e+00 4.609329921277631e+00 9.248700304299538e+03 + 49560 1.050228209669332e+00 -5.782735799200578e+00 -6.065563954338760e+00 4.874504399741295e+00 4.250461365422300e+00 9.419384825138444e+03 + 49580 1.127674130921874e+00 -5.905290861823771e+00 -6.017542821998989e+00 4.189006489750810e+00 4.544438363490013e+00 9.270971221460954e+03 + 49600 1.114827278580270e+00 -5.909448516413911e+00 -6.003914723240321e+00 4.175430347313975e+00 4.632990769118469e+00 9.229049461384124e+03 + 49620 1.090396785668773e+00 -5.916395967293002e+00 -6.042358066184894e+00 4.121959746387029e+00 4.398665881977981e+00 9.347528967720147e+03 + 49640 1.114164227199572e+00 -6.015998033320295e+00 -5.968106152191415e+00 3.614602488472110e+00 4.889605081158792e+00 9.119390333653031e+03 + 49660 9.417374485665990e-01 -5.817967872287070e+00 -6.058520712354371e+00 4.655835212889777e+00 4.274543579791648e+00 9.397524386091347e+03 + 49680 1.025869623178057e+00 -5.987973768926933e+00 -6.015961442802249e+00 3.750068432405233e+00 4.589358877934634e+00 9.266099133680160e+03 + 49700 1.017654687612581e+00 -6.003389714529505e+00 -5.999202382877844e+00 3.656363623413950e+00 4.680407929745264e+00 9.214602624070938e+03 + 49720 9.783192254494399e-01 -5.962747126955856e+00 -6.003052989686314e+00 3.905812676657132e+00 4.674370175546744e+00 9.226408232545233e+03 + 49740 1.054099926571247e+00 -6.089951868954307e+00 -5.985793503936616e+00 3.180001425914201e+00 4.778094876300676e+00 9.173503101299857e+03 + 49760 9.727667166231042e-01 -5.981712686656447e+00 -6.027834960300500e+00 3.757384053242268e+00 4.492542820579336e+00 9.302693950702031e+03 + 49780 1.013117382460341e+00 -6.050816919882966e+00 -6.005976150794142e+00 3.469933183992781e+00 4.727415819187398e+00 9.235412020430802e+03 + 49800 9.914800174203161e-01 -6.027190529238491e+00 -6.034215493079862e+00 3.537952686606397e+00 4.497614257119606e+00 9.322377849761915e+03 + 49820 1.000147999585971e+00 -6.048455422863871e+00 -6.009135446051403e+00 3.434612912399033e+00 4.660394304002966e+00 9.245121080197208e+03 + 49840 1.017594638191775e+00 -6.082321884707825e+00 -5.975365161228743e+00 3.224464030962392e+00 4.838626088678746e+00 9.141585378380485e+03 + 49860 9.340877768654877e-01 -5.964763213739747e+00 -5.947219043138820e+00 3.879867054234962e+00 4.980608396777113e+00 9.055716709267163e+03 + 49880 9.815503769016821e-01 -6.034885301993913e+00 -5.954278830070364e+00 3.488447595201891e+00 4.951302430798129e+00 9.077205468289758e+03 + 49900 9.620694185841348e-01 -5.999865448972621e+00 -6.021264215108019e+00 3.737304812660795e+00 4.614429786062985e+00 9.282430453333296e+03 + 49920 1.017270357372918e+00 -6.074247339968013e+00 -5.994332318940695e+00 3.310195520386661e+00 4.769079937935055e+00 9.199668772600247e+03 + 49940 9.644867997417870e-01 -5.986823762607635e+00 -6.017398938608448e+00 3.732922376079968e+00 4.557354983990107e+00 9.270525844135260e+03 + 49960 9.496631994455978e-01 -5.951087331273335e+00 -5.977915397027783e+00 3.990067475603719e+00 4.836016570411920e+00 9.149392948930636e+03 + 49980 1.063394283649475e+00 -6.101196173287700e+00 -5.947548913477619e+00 3.141644999374150e+00 5.023911342040247e+00 9.056739690471932e+03 + 50000 1.052988486690462e+00 -6.063301612644598e+00 -5.955570271754626e+00 3.367525464807656e+00 4.986135495569004e+00 9.081152247905831e+03 + 50020 1.017060322505321e+00 -5.982470720262481e+00 -5.980529097697806e+00 3.802399315311658e+00 4.813548412543144e+00 9.157387975624883e+03 + 50040 9.885279172761343e-01 -5.913980687793387e+00 -6.048388710106975e+00 4.096333449875275e+00 4.324541786176424e+00 9.366129232106216e+03 + 50060 1.045919515760703e+00 -5.972036910761823e+00 -5.951029112339035e+00 3.891212082446847e+00 5.011842111936793e+00 9.067282242356650e+03 + 50080 1.016978023841858e+00 -5.902068464243120e+00 -5.980491850579196e+00 4.192576958160357e+00 4.742257737838796e+00 9.157229295052268e+03 + 50100 1.040028910678636e+00 -5.909029665520309e+00 -6.030611122266823e+00 4.137417177730834e+00 4.439277638422722e+00 9.311253508971840e+03 + 50120 1.069435448902011e+00 -5.931005974486188e+00 -6.042591058139167e+00 4.020687210169939e+00 4.379948392098647e+00 9.348262815492490e+03 + 50140 1.100521334647910e+00 -5.963194028687300e+00 -6.050161255276593e+00 3.866761861275246e+00 4.367382588064708e+00 9.371656274088273e+03 + 50160 1.034088269885145e+00 -5.863468616735697e+00 -6.061028282306509e+00 4.372422351011094e+00 4.238004179044053e+00 9.405314132403675e+03 + 50180 1.014623044392881e+00 -5.842898314370677e+00 -5.995568553865336e+00 4.572929831164657e+00 4.696273690343116e+00 9.203405733717298e+03 + 50200 1.006663595699954e+00 -5.844260162873728e+00 -6.019238219565987e+00 4.525664231587811e+00 4.520913152294098e+00 9.276162517345505e+03 + 50220 1.095641213758475e+00 -6.002926023457995e+00 -5.939347192282780e+00 3.730714805155416e+00 5.095794292555831e+00 9.031774699763251e+03 + 50240 1.002110620462234e+00 -5.905632428438254e+00 -5.968306027207629e+00 4.186609661039210e+00 4.826728158197398e+00 9.119986271030231e+03 + 50260 1.003263971406204e+00 -5.960262744860986e+00 -5.983153488839660e+00 3.879975058249937e+00 4.748532863993210e+00 9.165372542402934e+03 + 50280 1.038656132459080e+00 -6.069343982862084e+00 -5.915435810438570e+00 3.384834518064813e+00 5.268599061333338e+00 8.959265050034744e+03 + 50300 9.610655821220688e-01 -5.999241133003093e+00 -5.984182417538288e+00 3.687217080444988e+00 4.773686554972588e+00 9.168554022385439e+03 + 50320 9.299477457502798e-01 -5.982376614717568e+00 -5.984127900726913e+00 3.787449639613587e+00 4.777393484337294e+00 9.168411450755364e+03 + 50340 9.804770542591964e-01 -6.073615783753481e+00 -5.999933475859608e+00 3.333352953159809e+00 4.756448167386727e+00 9.216853691106911e+03 + 50360 1.003475481253926e+00 -6.116945556920822e+00 -5.993701272112721e+00 3.081485125599145e+00 4.789172880958695e+00 9.197734147178093e+03 + 50380 9.308618362409343e-01 -6.012685826065781e+00 -6.030997735326499e+00 3.625656178938537e+00 4.520506362204687e+00 9.312481575186765e+03 + 50400 9.552835452368441e-01 -6.049052036597573e+00 -6.051917936156596e+00 3.380725253102563e+00 4.364268814338126e+00 9.377115489222999e+03 + 50420 9.770171299232536e-01 -6.078404335675518e+00 -5.994584942632588e+00 3.273384140462016e+00 4.754688066323677e+00 9.200449513310421e+03 + 50440 9.246625413774001e-01 -5.994281130162920e+00 -5.992349752942854e+00 3.738606177523638e+00 4.749696444400916e+00 9.193585789944227e+03 + 50460 1.008056177611684e+00 -6.105581583358671e+00 -5.982476212574205e+00 3.167683189315242e+00 4.874573278854207e+00 9.163342795741881e+03 + 50480 9.652953933862722e-01 -6.026504628638878e+00 -5.997508878563067e+00 3.554822101731693e+00 4.721320185744821e+00 9.209415691545379e+03 + 50500 9.749076415946732e-01 -6.021555275847931e+00 -6.003099499377981e+00 3.606236990925223e+00 4.712212915437854e+00 9.226589122545867e+03 + 50520 1.021623349910509e+00 -6.067552378832900e+00 -5.987855553001614e+00 3.338904701408217e+00 4.796536208375404e+00 9.179815424743025e+03 + 50540 1.002613260870035e+00 -6.017069727014923e+00 -5.963081804476839e+00 3.597979204181001e+00 4.907986209998693e+00 9.104061699140952e+03 + 50560 1.029485293280510e+00 -6.030527714751125e+00 -5.961690431589606e+00 3.487485306832014e+00 4.882759639280602e+00 9.099816933138125e+03 + 50580 9.736639529321434e-01 -5.920360486771211e+00 -5.987185841720663e+00 4.102565577409005e+00 4.718844048098993e+00 9.177718823093946e+03 + 50600 1.014593729165727e+00 -5.955182139771768e+00 -5.988876194281500e+00 3.936423232315238e+00 4.742946757182278e+00 9.182904821646205e+03 + 50620 1.034808892394675e+00 -5.960360688185126e+00 -6.021281885947449e+00 3.897629099407380e+00 4.547810154331241e+00 9.282495397995584e+03 + 50640 1.052986122995764e+00 -5.966289654657979e+00 -5.998944548326160e+00 3.922617304177735e+00 4.735107851406574e+00 9.213814792966270e+03 + 50660 1.092586435139793e+00 -6.013270408241366e+00 -6.024509778189916e+00 3.577985596837367e+00 4.513447395305915e+00 9.292456118362601e+03 + 50680 1.089377852424100e+00 -6.003223211311298e+00 -5.993834607273922e+00 3.727704435649399e+00 4.781615252913788e+00 9.198136040468346e+03 + 50700 1.034575720838540e+00 -5.925074197570121e+00 -6.045238419166401e+00 4.061770348701360e+00 4.371768792942325e+00 9.356456420450315e+03 + 50720 1.040595946260573e+00 -5.942903936864893e+00 -6.024368179237555e+00 4.034125996171375e+00 4.566345709916780e+00 9.291988738988724e+03 + 50740 1.048993313641607e+00 -5.969621146884366e+00 -6.031109219855200e+00 3.812129491242440e+00 4.459055460995371e+00 9.312799389178062e+03 + 50760 1.038250320781049e+00 -5.971932248406710e+00 -5.998138984716016e+00 3.868362311594116e+00 4.717879176226743e+00 9.211323315346601e+03 + 50780 9.819874390279469e-01 -5.908760433248531e+00 -5.974810895655994e+00 4.219411872782763e+00 4.840139896363088e+00 9.139863257412368e+03 + 50800 1.025403688860931e+00 -5.992771691793715e+00 -6.012417849444306e+00 3.721735035546982e+00 4.608923758084219e+00 9.255211359255001e+03 + 50820 1.013616777798780e+00 -5.996919778826246e+00 -5.997850758822203e+00 3.737360018768967e+00 4.732014187563495e+00 9.210448588964911e+03 + 50840 9.710624454843466e-01 -5.952995039365134e+00 -6.024338623830792e+00 3.932711920537576e+00 4.523046018151750e+00 9.291907159680479e+03 + 50860 1.009287886905208e+00 -6.025796581444041e+00 -6.001985711589588e+00 3.572714420967866e+00 4.709440120392339e+00 9.223142609171899e+03 + 50880 9.745591953103792e-01 -5.985996498178314e+00 -5.981821806219127e+00 3.786479514249993e+00 4.810451241511136e+00 9.161327143602999e+03 + 50900 1.000272914477071e+00 -6.029111987527846e+00 -5.995420168758488e+00 3.501127749811665e+00 4.694591386977422e+00 9.202954638703452e+03 + 50920 9.588288658963835e-01 -5.967258956861270e+00 -5.999356729099581e+00 3.894244793217068e+00 4.709934417910487e+00 9.215053251278603e+03 + 50940 9.711391877638915e-01 -5.983477867954389e+00 -6.042553335588553e+00 3.753360211743438e+00 4.414139734688995e+00 9.348150247837273e+03 + 50960 1.009736731108754e+00 -6.041823709636098e+00 -5.994494880898068e+00 3.487287622021882e+00 4.759057080748230e+00 9.200170383149883e+03 + 50980 9.845775502224848e-01 -6.004264305466813e+00 -5.997405089592519e+00 3.762908569962831e+00 4.802295248973252e+00 9.209066075249666e+03 + 51000 9.561252150665012e-01 -5.960264897848953e+00 -5.981871155940734e+00 3.861316538274482e+00 4.737250060753841e+00 9.161417138521665e+03 + 51020 9.668938453609424e-01 -5.971298652811747e+00 -5.993814395408807e+00 3.826143770652811e+00 4.696854892360589e+00 9.198023291678053e+03 + 51040 1.010992476163919e+00 -6.028552544327317e+00 -5.972126749342545e+00 3.507208731550671e+00 4.831214378216784e+00 9.131658340872978e+03 + 51060 9.320530876725446e-01 -5.903756143063610e+00 -5.996228031626167e+00 4.180358048111433e+00 4.649370154006728e+00 9.205425732055257e+03 + 51080 9.837922050434701e-01 -5.969742676671604e+00 -5.972017680042562e+00 3.839131695502755e+00 4.826068274091082e+00 9.131324207807756e+03 + 51100 1.051425684233195e+00 -6.054952579847925e+00 -5.971980610117756e+00 3.415989082996404e+00 4.892426973057860e+00 9.131236186455590e+03 + 51120 1.000086279741786e+00 -5.963035924008405e+00 -6.023415994719148e+00 3.867657793935463e+00 4.520946084128632e+00 9.289075900664018e+03 + 51140 9.891904254914978e-01 -5.932283566119903e+00 -6.013684276801518e+00 4.093075346290671e+00 4.625659868837571e+00 9.259093564340988e+03 + 51160 9.550358851010687e-01 -5.867487064093909e+00 -6.039743243473866e+00 4.348958626163314e+00 4.359836987605984e+00 9.339453998706786e+03 + 51180 1.047542588906664e+00 -5.991997843137881e+00 -6.016280614468040e+00 3.745540054320824e+00 4.606104623596331e+00 9.267091617856146e+03 + 51200 1.038577775411625e+00 -5.968395626879443e+00 -6.029309056109056e+00 3.858049821017988e+00 4.508275484058840e+00 9.307258137521643e+03 + 51220 1.031043611666961e+00 -5.950295892545887e+00 -6.038103373770490e+00 3.952792116384190e+00 4.448587971028715e+00 9.334385363062775e+03 + 51240 1.076868841100275e+00 -6.018347651183937e+00 -6.010020983386713e+00 3.565449314047786e+00 4.613262329087121e+00 9.247825637857784e+03 + 51260 1.009903777942480e+00 -5.922822067099664e+00 -5.985790349022620e+00 4.172490277004709e+00 4.810916657892959e+00 9.173461182853138e+03 + 51280 1.044149108212520e+00 -5.980839947677783e+00 -5.969552864157194e+00 3.846055086625706e+00 4.910867266871460e+00 9.123831673833720e+03 + 51300 1.046169401893434e+00 -5.996455481350647e+00 -6.003170640347486e+00 3.725862747192321e+00 4.687303265064976e+00 9.226766907949848e+03 + 51320 9.632018546262066e-01 -5.892410030888836e+00 -6.053321764028688e+00 4.251461258394625e+00 4.327481185695373e+00 9.381460438495844e+03 + 51340 1.010698290639885e+00 -5.991559898205845e+00 -6.018613978355993e+00 3.744584567448013e+00 4.589235852620492e+00 9.274251881937476e+03 + 51360 9.875453402510629e-01 -5.989331129955029e+00 -6.033931746893873e+00 3.768350542749367e+00 4.512246898363360e+00 9.321467998401953e+03 + 51380 9.808414966529938e-01 -6.017154442247923e+00 -6.039499074868358e+00 3.593651803295428e+00 4.465345464968168e+00 9.338717150411107e+03 + 51400 1.007087635532953e+00 -6.096315511977391e+00 -6.003212343372617e+00 3.208561646601799e+00 4.743174448399190e+00 9.226914115111227e+03 + 51420 9.475716993805000e-01 -6.041861522818579e+00 -5.967606011339962e+00 3.479827704111028e+00 4.906214342024512e+00 9.117881133116436e+03 + 51440 9.659196850974784e-01 -6.091459399071401e+00 -5.936331013665537e+00 3.272479835749761e+00 5.163251030790292e+00 9.022631491043721e+03 + 51460 9.597079646563760e-01 -6.095239647232932e+00 -6.007311775002814e+00 3.155408008657928e+00 4.660303457797526e+00 9.239524935721440e+03 + 51480 9.352386071682678e-01 -6.066142879330449e+00 -5.996832651601752e+00 3.376833464251408e+00 4.774823517592668e+00 9.207320345256434e+03 + 51500 9.293395195005899e-01 -6.057151215942869e+00 -6.005252504009890e+00 3.426655985817841e+00 4.724666421036723e+00 9.233163708110294e+03 + 51520 9.263054132741437e-01 -6.045070977216383e+00 -5.966540021778671e+00 3.533570876000383e+00 4.984507774749808e+00 9.114612114782305e+03 + 51540 9.372208002755118e-01 -6.047414394583146e+00 -5.999408562783639e+00 3.407469201307904e+00 4.683126116379129e+00 9.215225671234630e+03 + 51560 9.779373289034876e-01 -6.088067037100443e+00 -6.003584258929093e+00 3.212818671384834e+00 4.697931857312394e+00 9.228072723355872e+03 + 51580 9.309248932784088e-01 -5.995691983073225e+00 -6.005166995357677e+00 3.733480079565397e+00 4.679073092774661e+00 9.232923317294482e+03 + 51600 9.525636388193668e-01 -6.001988989587987e+00 -5.996840744926695e+00 3.691741933674976e+00 4.721303951208403e+00 9.207350775729790e+03 + 51620 9.261325705967085e-01 -5.934602021168686e+00 -6.038819206178265e+00 4.003692853481866e+00 4.405261649599605e+00 9.336585666105208e+03 + 51640 9.740806934084083e-01 -5.978867764296895e+00 -5.978317150289671e+00 3.822883165408368e+00 4.826044876245092e+00 9.150605185339202e+03 + 51660 1.031535151448340e+00 -6.042268950784621e+00 -5.971600618493595e+00 3.493606257901029e+00 4.899394757805175e+00 9.130051474101798e+03 + 51680 1.019789386521798e+00 -6.007943288604864e+00 -5.998077131800821e+00 3.674882014253479e+00 4.731535013405118e+00 9.211141628942998e+03 + 51700 1.049499670321196e+00 -6.043511452247168e+00 -5.985551366660943e+00 3.452368240985203e+00 4.785184021715570e+00 9.172745469466745e+03 + 51720 1.056316319094630e+00 -6.048685620754164e+00 -5.980571616984676e+00 3.415715292372900e+00 4.806836442625320e+00 9.157492240471856e+03 + 51740 9.329320203304647e-01 -5.863530091915575e+00 -6.021415899283412e+00 4.369579976080926e+00 4.462975237425078e+00 9.282899365429161e+03 + 51760 1.033912404391399e+00 -6.011384725184674e+00 -5.964272767796312e+00 3.633345270906431e+00 4.903869420782248e+00 9.107689365295228e+03 + 51780 9.946598624286955e-01 -5.950412534782044e+00 -5.988067702882372e+00 4.068688888087953e+00 4.852467085737434e+00 9.180440745087833e+03 + 51800 1.026247620432821e+00 -5.997234472597834e+00 -5.984191998137401e+00 3.678794666002742e+00 4.753686572670952e+00 9.168575183246499e+03 + 51820 1.067302842646300e+00 -6.060160095427313e+00 -5.970225473058106e+00 3.362618293278536e+00 4.879036812260358e+00 9.125877772535134e+03 + 51840 1.032506036848079e+00 -6.014397683687925e+00 -5.935886403466512e+00 3.655507447271172e+00 5.106331367883874e+00 9.021270593657087e+03 + 51860 1.030841944221699e+00 -6.016279497294695e+00 -5.965980682266549e+00 3.588493376213090e+00 4.877316955821174e+00 9.112890329371410e+03 + 51880 9.501184042336110e-01 -5.900491236062376e+00 -6.015331660156436e+00 4.231716005160878e+00 4.572284518514592e+00 9.264155558576387e+03 + 51900 9.460959169062167e-01 -5.898215291876091e+00 -6.039925721437051e+00 4.206159315141658e+00 4.392436098984525e+00 9.339999011190679e+03 + 51920 1.025007489268924e+00 -6.021683495824298e+00 -6.024309860037608e+00 3.549060927771493e+00 4.533979938030119e+00 9.291814391446251e+03 + 51940 9.265137907258935e-01 -5.884109708308078e+00 -5.999064910105389e+00 4.283391289654666e+00 4.623300731674520e+00 9.214182317889674e+03 + 51960 1.002493584348304e+00 -6.004924149349415e+00 -6.009357649099931e+00 3.676757400821912e+00 4.651299559172585e+00 9.245794338149917e+03 + 51980 9.582970279852687e-01 -5.949198461858032e+00 -6.022164669459812e+00 3.965386556871215e+00 4.546403301337659e+00 9.285219587812957e+03 + 52000 9.909502881836171e-01 -6.009679278680629e+00 -6.024259823946867e+00 3.627042675652803e+00 4.543318928401973e+00 9.291682106310200e+03 + 52020 1.003361848456077e+00 -6.045028885901727e+00 -6.006935915318179e+00 3.453947298993576e+00 4.672683030952461e+00 9.238363277821483e+03 + 52040 9.740731664761513e-01 -6.025819322114829e+00 -6.004177386427912e+00 3.578654537748307e+00 4.702925881541308e+00 9.229883646025934e+03 + 52060 9.742471394665350e-01 -6.052068927273470e+00 -5.987757404029301e+00 3.457730373096642e+00 4.827017091740715e+00 9.179503688061281e+03 + 52080 9.463451179445561e-01 -6.038033430304551e+00 -5.996153564215494e+00 3.478556787387038e+00 4.719037459358734e+00 9.205241692057753e+03 + 52100 9.881670936267023e-01 -6.125679997013039e+00 -5.960507386331237e+00 3.036770775352787e+00 4.985217466266590e+00 9.096216413721279e+03 + 52120 9.466671338253831e-01 -6.086172192076737e+00 -5.959504248485920e+00 3.221245149252387e+00 4.948592083151780e+00 9.093155006857354e+03 + 52140 9.664890338031638e-01 -6.132702267246268e+00 -5.967114933900572e+00 2.975197251800903e+00 4.926025344428909e+00 9.116377812978324e+03 + 52160 9.258931952915568e-01 -6.083615065493734e+00 -5.959947686820191e+00 3.263203380908054e+00 4.973320606716532e+00 9.094509334545730e+03 + 52180 8.942985724125339e-01 -6.038923836201985e+00 -5.996689461264268e+00 3.480147797837664e+00 4.722664114478436e+00 9.206902718752843e+03 + 52200 9.877878112981743e-01 -6.171032079726776e+00 -5.980454235737962e+00 2.741893978372425e+00 4.836221450382242e+00 9.157138681042516e+03 + 52220 9.192931318319111e-01 -6.053267619785935e+00 -5.982285955435418e+00 3.455626488663215e+00 4.863214189740946e+00 9.162741838738593e+03 + 52240 9.413479029754978e-01 -6.058721034130621e+00 -5.969426044842614e+00 3.432512289063899e+00 4.945257935910574e+00 9.123433157158230e+03 + 52260 9.770918194581182e-01 -6.072658330651400e+00 -6.018359637494052e+00 3.302895222598999e+00 4.614686721404105e+00 9.273493895965616e+03 + 52280 9.520577704604374e-01 -5.989025165259984e+00 -5.989259145304832e+00 3.726759241805768e+00 4.725415692179957e+00 9.184107514681758e+03 + 52300 9.649008029884539e-01 -5.964500104746922e+00 -5.954722162836647e+00 3.871740044755205e+00 4.927886500335629e+00 9.078561486990884e+03 + 52320 9.498656643692558e-01 -5.902147763883232e+00 -6.005854188910671e+00 4.188523977619841e+00 4.593025636594882e+00 9.235032951708858e+03 + 52340 1.035560948549149e+00 -5.999958396234753e+00 -6.053466824634366e+00 3.631692587255869e+00 4.324438910982756e+00 9.381920697784864e+03 + 52360 1.051932456077838e+00 -6.007684065414647e+00 -5.993696421800500e+00 3.670071005682373e+00 4.750390219895662e+00 9.197734390564754e+03 + 52380 1.026047004687271e+00 -5.961316968285990e+00 -6.020855886678342e+00 3.928321299841042e+00 4.586439616814311e+00 9.281188187379930e+03 + 52400 1.029258223278297e+00 -5.963329927484951e+00 -6.057615430189834e+00 3.867589234767173e+00 4.326187287601345e+00 9.394775807190785e+03 + 52420 1.061882869737478e+00 -6.014444626499560e+00 -6.032437480659435e+00 3.590866748295415e+00 4.487548995324232e+00 9.316899079821387e+03 + 52440 1.028453749837974e+00 -5.972262645814344e+00 -5.964951056773761e+00 3.858831272476359e+00 4.900815548212135e+00 9.109769961805066e+03 + 52460 1.038171734712304e+00 -5.993770716391235e+00 -6.005293129032902e+00 3.705959990583370e+00 4.639796514107328e+00 9.233328228255781e+03 + 52480 9.917587494441780e-01 -5.937311296742801e+00 -6.009934717942760e+00 4.045856844072683e+00 4.628841921104413e+00 9.247560016998234e+03 + 52500 9.982479883649287e-01 -5.960438025955839e+00 -5.983042696437499e+00 3.922701941471278e+00 4.792902425504136e+00 9.165016520173976e+03 + 52520 1.012575930093152e+00 -5.996125083886216e+00 -5.980543865103319e+00 3.757341604287057e+00 4.846811373724269e+00 9.157389478588684e+03 + 52540 9.889159315980348e-01 -5.975722860894620e+00 -5.953654425490580e+00 3.817107230117199e+00 4.943827601286534e+00 9.075313998407353e+03 + 52560 9.759310745864992e-01 -5.969733888326114e+00 -6.014099056746931e+00 3.865114561832676e+00 4.610362899272719e+00 9.260380515025710e+03 + 52580 1.004368830123272e+00 -6.028012450794599e+00 -5.963040686519982e+00 3.535041430615813e+00 4.908119355428695e+00 9.103955048248055e+03 + 52600 9.803289396932537e-01 -6.009285790119675e+00 -5.969402783170088e+00 3.638392302466992e+00 4.867406700246903e+00 9.123342578394137e+03 + 52620 9.616055365220445e-01 -5.997369837633524e+00 -5.998164920731814e+00 3.700746972196170e+00 4.696181482007080e+00 9.211394431271417e+03 + 52640 1.020246252057012e+00 -6.100357607960150e+00 -5.960867192730168e+00 3.179336051227536e+00 4.980311601550091e+00 9.097300739835831e+03 + 52660 9.887273677633861e-01 -6.071136982986689e+00 -5.992888842134834e+00 3.258401495073917e+00 4.707714428705939e+00 9.195252343068441e+03 + 52680 9.661911086501185e-01 -6.059032568857302e+00 -5.992362808885911e+00 3.434261509287022e+00 4.817089588154761e+00 9.193616857404340e+03 + 52700 9.288923810114150e-01 -6.024886692102264e+00 -5.991574826285329e+00 3.569271154756934e+00 4.760553043272349e+00 9.191204812826378e+03 + 52720 9.500499139606653e-01 -6.078188786957843e+00 -6.012424812297954e+00 3.261088155463156e+00 4.638715074902430e+00 9.255215746702130e+03 + 52740 9.324265057572809e-01 -6.074128180381742e+00 -5.998384436843262e+00 3.280202980324993e+00 4.715135277029379e+00 9.212086677557305e+03 + 52760 9.625294627244371e-01 -6.139013145041465e+00 -5.957738136088665e+00 2.981342511306279e+00 5.022251664930236e+00 9.087767190534078e+03 + 52780 9.421180304247097e-01 -6.123480671523660e+00 -5.991617781624489e+00 2.966729963843154e+00 4.723907083360452e+00 9.191347806251410e+03 + 52800 9.017439956058222e-01 -6.071684516028905e+00 -6.000328419889358e+00 3.314900897680652e+00 4.724638644034120e+00 9.218058462909357e+03 + 52820 8.809311069732020e-01 -6.043051817701015e+00 -6.025253351158183e+00 3.434107977987476e+00 4.536309527180215e+00 9.294747337371980e+03 + 52840 9.192406504414496e-01 -6.093518050583311e+00 -6.020493958007533e+00 3.173658600520727e+00 4.592974240532651e+00 9.280061045684397e+03 + 52860 9.751891665855824e-01 -6.160017795697319e+00 -5.930475145776480e+00 2.838928181315891e+00 5.156997598771624e+00 9.004852764968229e+03 + 52880 9.220654058090462e-01 -6.051319690493046e+00 -5.932331955811561e+00 3.446257089189106e+00 5.129503075022630e+00 9.010486110627520e+03 + 52900 9.206411203608600e-01 -6.005960868694213e+00 -6.004654296414610e+00 3.664871132752228e+00 4.672373672973114e+00 9.231339341449991e+03 + 52920 9.923873427094940e-01 -6.062311296919027e+00 -6.010122635801002e+00 3.332445728483347e+00 4.632121096792257e+00 9.248169452478895e+03 + 52940 9.476312003974895e-01 -5.952308137914286e+00 -6.031099401616057e+00 3.955626020313908e+00 4.503194391229686e+00 9.312757663994498e+03 + 52960 9.785085847541517e-01 -5.964785443787379e+00 -5.976642239047610e+00 3.881398835487755e+00 4.813315282270371e+00 9.145466359134802e+03 + 52980 9.858943497234987e-01 -5.949545845245770e+00 -6.002713135362418e+00 3.965914236451569e+00 4.660619428990223e+00 9.225389634980178e+03 + 53000 1.047158013943823e+00 -6.020599823591636e+00 -5.970450449716902e+00 3.590268842237373e+00 4.878234307616625e+00 9.126551874946761e+03 + 53020 9.967117148527351e-01 -5.932623100185481e+00 -5.969483541026657e+00 4.077395915882134e+00 4.865737560437315e+00 9.123599112000404e+03 + 53040 1.045628106864340e+00 -5.993832056289270e+00 -5.984734165726517e+00 3.691121319533543e+00 4.743362815038880e+00 9.170253392119659e+03 + 53060 1.077581061485628e+00 -6.032221099981737e+00 -5.974564387659302e+00 3.518849587103792e+00 4.849923351606612e+00 9.139146369852333e+03 + 53080 1.033567968359189e+00 -5.962748206447381e+00 -5.995652377861083e+00 3.929547367926685e+00 4.740606523765142e+00 9.203676149047122e+03 + 53100 1.020182769541902e+00 -5.943664161463576e+00 -6.036452909032116e+00 3.963381791478610e+00 4.430574443927771e+00 9.329289792424681e+03 + 53120 1.035781421330477e+00 -5.971907486484643e+00 -5.986642821887978e+00 3.817980555684817e+00 4.733367979513083e+00 9.176095697870913e+03 + 53140 1.024051817070492e+00 -5.963279753665712e+00 -5.977307326212846e+00 3.950605756686849e+00 4.870057264361371e+00 9.147481161018057e+03 + 53160 1.006167006264120e+00 -5.947602533448166e+00 -5.965080567657208e+00 3.995946339380642e+00 4.895584762235274e+00 9.110188422122790e+03 + 53180 1.059112404441435e+00 -6.040347245447826e+00 -5.985621004172021e+00 3.541299447919948e+00 4.855545994184086e+00 9.172953395966946e+03 + 53200 9.833126318823051e-01 -5.947672475682264e+00 -5.995469749256512e+00 3.990510469415224e+00 4.716051127947713e+00 9.203119088425196e+03 + 53220 1.042686456548896e+00 -6.057698888500708e+00 -5.975898963392876e+00 3.380447609745609e+00 4.850155438212280e+00 9.143200648351438e+03 + 53240 9.919192437292238e-01 -6.009196042828121e+00 -5.981129887291858e+00 3.622868245879336e+00 4.784028454192092e+00 9.159214207365809e+03 + 53260 9.142078239177923e-01 -5.924379603297807e+00 -5.995808417736106e+00 4.090773366240192e+00 4.680618060162170e+00 9.204185701013372e+03 + 53280 9.681979357621973e-01 -6.033844684301380e+00 -5.981820075250809e+00 3.500043860521825e+00 4.798777216472432e+00 9.161305386507163e+03 + 53300 9.824100414042479e-01 -6.079851224906208e+00 -5.966786468546174e+00 3.298615396975175e+00 4.947850724708989e+00 9.115376267895206e+03 + 53320 9.880498905452690e-01 -6.110552025348452e+00 -6.007293846140247e+00 3.082606717820407e+00 4.675531161985511e+00 9.239452075205132e+03 + 53340 9.654876739908574e-01 -6.099573162647946e+00 -5.983800138221674e+00 3.132376798158012e+00 4.797163420231298e+00 9.167396662133422e+03 + 53360 9.005732988080296e-01 -6.020089630290336e+00 -5.978046846679827e+00 3.593882281595968e+00 4.835298451187247e+00 9.149763235346920e+03 + 53380 9.350862921986435e-01 -6.082359437207558e+00 -5.954543538964186e+00 3.251900931533116e+00 4.985839598692881e+00 9.078017706695866e+03 + 53400 9.324403204851189e-01 -6.082045364795309e+00 -5.959174425194975e+00 3.238124321898261e+00 4.943668271299829e+00 9.092128918619945e+03 + 53420 9.581983523622181e-01 -6.114919197799741e+00 -5.983537251636580e+00 3.020462884950990e+00 4.774878351110321e+00 9.166584575749115e+03 + 53440 9.682066613723298e-01 -6.113963755732841e+00 -5.981487288046214e+00 3.120894319046757e+00 4.881594697170485e+00 9.160307800905675e+03 + 53460 9.763051598658974e-01 -6.093701808954003e+00 -5.976411562397990e+00 3.198850683559711e+00 4.872349429891328e+00 9.144758856605968e+03 + 53480 9.748037827520839e-01 -6.040320643105482e+00 -5.973688142182439e+00 3.496305020644622e+00 4.878919152290927e+00 9.136430735330161e+03 + 53500 1.024332202353656e+00 -6.050630409221091e+00 -5.973706010587501e+00 3.439648005825598e+00 4.881359806791886e+00 9.136510244009511e+03 + 53520 9.934718692083070e-01 -5.952602788615796e+00 -5.967052868060925e+00 4.022237547259326e+00 4.939262954942824e+00 9.116175123881863e+03 + 53540 1.045735854252092e+00 -5.992352480397367e+00 -5.968329221644729e+00 3.738656333504130e+00 4.876601602849052e+00 9.120075820685188e+03 + 53560 1.012329952903900e+00 -5.915937117550793e+00 -5.987500835056214e+00 4.115783878357375e+00 4.704853937991754e+00 9.178705022749013e+03 + 53580 1.090512062805645e+00 -6.015101616661603e+00 -6.006124124904158e+00 3.620381652429128e+00 4.671931799362735e+00 9.235860578731346e+03 + 53600 1.066058284550854e+00 -5.969248832077673e+00 -5.983099796756106e+00 3.936670916211769e+00 4.857136533598352e+00 9.165235543972061e+03 + 53620 1.031500973242662e+00 -5.915852294965583e+00 -6.021215058808542e+00 4.135934570618623e+00 4.530925275797344e+00 9.282291802998590e+03 + 53640 1.036320740712101e+00 -5.926879519476611e+00 -6.016150435204389e+00 4.093286814689945e+00 4.580679401951481e+00 9.266689296332012e+03 + 53660 1.019796614328845e+00 -5.912466298103427e+00 -6.018295764400843e+00 4.217358382962037e+00 4.609669210425289e+00 9.273301884639866e+03 + 53680 1.049509278586028e+00 -5.972354553518539e+00 -6.025478908635984e+00 3.920678081251549e+00 4.615629813199790e+00 9.295426838492001e+03 + 53700 1.015827063620542e+00 -5.941884181154537e+00 -6.067512330111875e+00 3.932439294942653e+00 4.211063022736395e+00 9.425454356826285e+03 + 53720 1.066317268870032e+00 -6.041787755924706e+00 -6.016121967021018e+00 3.449333495657972e+00 4.596710427310947e+00 9.266607951690019e+03 + 53740 1.009152285426432e+00 -5.988404333453033e+00 -5.977817387056385e+00 3.754007193963482e+00 4.814799078497697e+00 9.149074946491934e+03 + 53760 1.005888533900545e+00 -6.013515969048251e+00 -6.014359567197319e+00 3.621929300519763e+00 4.617085229401426e+00 9.261154819981715e+03 + 53780 9.740195738397511e-01 -5.993037600894319e+00 -6.003908486189179e+00 3.734666622824311e+00 4.672244317197166e+00 9.229059589308286e+03 + 53800 9.888211201948007e-01 -6.039301239101434e+00 -5.989606432202445e+00 3.442586026005416e+00 4.727941297465923e+00 9.185191683476667e+03 + 53820 9.366781357172129e-01 -5.981494995247095e+00 -5.972926192691637e+00 3.794266829553238e+00 4.843470219844585e+00 9.134100706232966e+03 + 53840 9.985257261976814e-01 -6.086776515579849e+00 -5.944926228174154e+00 3.266643417445768e+00 5.081169718990298e+00 9.048737280272417e+03 + 53860 9.161384630146986e-01 -5.972279508706477e+00 -5.947659552217059e+00 3.892344737757261e+00 5.033716337845449e+00 9.057066013278098e+03 + 53880 9.504933689056781e-01 -6.024183799456113e+00 -5.965513917442823e+00 3.590990584678122e+00 4.927882126333334e+00 9.111480138415120e+03 + 53900 1.021503263531397e+00 -6.125090896729225e+00 -5.989162409781778e+00 3.039081931395035e+00 4.819604338312653e+00 9.183818011675961e+03 + 53920 9.293409675632341e-01 -5.981538146678229e+00 -6.033153582629820e+00 3.814303365438758e+00 4.517919544741821e+00 9.319098227903422e+03 + 53940 9.547529800794669e-01 -6.009369630434335e+00 -5.983335958344538e+00 3.692553371142227e+00 4.842042744979574e+00 9.165974546384066e+03 + 53960 9.640786502973677e-01 -6.006611310227600e+00 -5.995812043066360e+00 3.647755022481939e+00 4.709766085702973e+00 9.204196727849705e+03 + 53980 9.828590500359659e-01 -6.010517641453788e+00 -6.044763327006184e+00 3.621591277069554e+00 4.424947251124982e+00 9.354968477078628e+03 + 54000 9.542817800543673e-01 -5.937200463836628e+00 -6.048595446985419e+00 3.989740260810167e+00 4.350093029251879e+00 9.366812732474069e+03 + 54020 1.033713508276771e+00 -6.015401212962604e+00 -6.006494502154199e+00 3.614622913610508e+00 4.665766625381413e+00 9.236985238388419e+03 + 54040 1.036699406649471e+00 -5.969406364322110e+00 -6.021572122008326e+00 3.810240959313572e+00 4.510697106054406e+00 9.283384181863556e+03 + 54060 1.058003150381767e+00 -5.946392934740738e+00 -5.987569918431102e+00 3.995725023571098e+00 4.759280411103399e+00 9.178921213822821e+03 + 54080 1.045489089997446e+00 -5.880201647116905e+00 -6.069670710326415e+00 4.273160525107251e+00 4.185199843915476e+00 9.432158563524681e+03 + 54100 1.126789782916441e+00 -5.970599098605202e+00 -6.016700892311624e+00 3.801607883002057e+00 4.536884249310265e+00 9.268394934206884e+03 + 54120 1.055950701133109e+00 -5.853505281017144e+00 -5.994158397538452e+00 4.477141497077053e+00 4.669489536012263e+00 9.199130649279681e+03 + 54140 1.031905892686318e+00 -5.817831323058218e+00 -6.036116217178905e+00 4.643195071419272e+00 4.389769429900094e+00 9.328218845367408e+03 + 54160 1.093846693865381e+00 -5.917720629738016e+00 -6.026639180864027e+00 4.088060656756259e+00 4.462633481099386e+00 9.298991791049375e+03 + 54180 1.040180597238881e+00 -5.851046729352469e+00 -6.058043556102183e+00 4.492099437049617e+00 4.303491625197342e+00 9.396059035135466e+03 + 54200 1.079979498538350e+00 -5.929437673723467e+00 -6.040825200477803e+00 4.075372491735781e+00 4.435768075948328e+00 9.342778873832707e+03 + 54220 1.103988771413004e+00 -5.991141939199633e+00 -5.958875123116957e+00 3.782344810306861e+00 4.967625861527235e+00 9.091220649102326e+03 + 54240 9.850477770929047e-01 -5.838188436444661e+00 -5.965336079812483e+00 4.617425385817635e+00 4.887323941565380e+00 9.110924809627688e+03 + 54260 1.060312439210135e+00 -5.972413846739126e+00 -5.976974101701881e+00 3.874430576139957e+00 4.848244886446645e+00 9.146467604601825e+03 + 54280 1.039796427072599e+00 -5.963775235762218e+00 -6.021020354960616e+00 3.878514043386912e+00 4.549803710296147e+00 9.281687537981750e+03 + 54300 1.042200490152169e+00 -5.994630698587713e+00 -6.004774365083728e+00 3.695990705982782e+00 4.637744203235346e+00 9.231719290192761e+03 + 54320 9.936228400616660e-01 -5.947668161796854e+00 -5.995827901903258e+00 3.969126748960974e+00 4.692586068574311e+00 9.204220942932227e+03 + 54340 9.994455718171762e-01 -5.979037065815650e+00 -5.995044165302458e+00 3.765304645017273e+00 4.673389402673382e+00 9.201825450587108e+03 + 54360 1.023558470885400e+00 -6.034870890013749e+00 -5.971311988939481e+00 3.499489934107431e+00 4.864454979784029e+00 9.129191643738573e+03 + 54380 1.009769062490763e+00 -6.030416999039778e+00 -6.018979252975029e+00 3.526745517661889e+00 4.592422825551161e+00 9.275382468118903e+03 + 54400 1.008936878668633e+00 -6.043384428318426e+00 -5.974448251142420e+00 3.496870809488237e+00 4.892713006671808e+00 9.138795631339106e+03 + 54420 1.004159214485255e+00 -6.048321033931861e+00 -5.982262553053785e+00 3.460069319300547e+00 4.839387339019342e+00 9.162700172077946e+03 + 54440 1.022098899461534e+00 -6.086000864210757e+00 -5.996984311856679e+00 3.240301955565487e+00 4.751448774449555e+00 9.207795916528401e+03 + 54460 9.669256446890889e-01 -6.012404404036343e+00 -5.984400840165597e+00 3.628654612045816e+00 4.789455409329149e+00 9.169230489981876e+03 + 54480 9.488636706479081e-01 -5.990376893415181e+00 -6.022236427978559e+00 3.806289925912975e+00 4.623347548203024e+00 9.285428962524944e+03 + 54500 9.487049495179799e-01 -5.993127515865922e+00 -6.084496769546400e+00 3.686542018878511e+00 4.161885624898898e+00 9.478258982167739e+03 + 54520 9.684836135732350e-01 -6.024646412199617e+00 -6.021802158728037e+00 3.561008615939149e+00 4.577340759519767e+00 9.284105451298017e+03 + 54540 1.010972370845267e+00 -6.087545798748540e+00 -6.015999864728256e+00 3.206634550886089e+00 4.617462375728067e+00 9.266237517060004e+03 + 54560 9.072906522979783e-01 -5.931512107495578e+00 -5.972449427792554e+00 4.077884482410949e+00 4.842816054235867e+00 9.132663021812137e+03 + 54580 1.013258391744621e+00 -6.078494879820542e+00 -5.984519516586408e+00 3.323801924336489e+00 4.863423002667346e+00 9.169599555253109e+03 + 54600 1.007048713817384e+00 -6.051542756564180e+00 -5.996744671169080e+00 3.404251783221054e+00 4.718910869536024e+00 9.207049129474808e+03 + 54620 9.739597160247053e-01 -5.975478440834744e+00 -5.981274135605397e+00 3.812106955517787e+00 4.778827179263828e+00 9.159635155451602e+03 + 54640 9.885595975631052e-01 -5.956265705142274e+00 -5.983863310722824e+00 3.940607573950969e+00 4.782137851991794e+00 9.167549434342114e+03 + 54660 1.048652475769583e+00 -5.995318542665142e+00 -6.017355765739199e+00 3.705173562225474e+00 4.578632417084995e+00 9.270385289108230e+03 + 54680 1.067934562053304e+00 -5.975173726532505e+00 -6.002497289947861e+00 3.833820570722007e+00 4.676924441283259e+00 9.224702882243444e+03 + 54700 1.067856696534770e+00 -5.939403616652037e+00 -6.010622536800279e+00 3.999620581874733e+00 4.590670521291252e+00 9.249685727164921e+03 + 54720 1.070134708261087e+00 -5.920110063541051e+00 -6.012913795526518e+00 4.158335160256127e+00 4.625441769864467e+00 9.256711757315463e+03 + 54740 1.093017340973719e+00 -5.941472120875195e+00 -6.062182597968621e+00 3.985025628350265e+00 4.291887388993853e+00 9.408921775146819e+03 + 54760 1.064547972941710e+00 -5.900049220961904e+00 -6.022800225759704e+00 4.204477334762029e+00 4.499622069556461e+00 9.287158028543708e+03 + 54780 1.091316590018926e+00 -5.948511122951268e+00 -5.984770116228481e+00 3.958939135541713e+00 4.750734385082877e+00 9.170336377290851e+03 + 54800 1.095390699352464e+00 -5.970244653732164e+00 -5.979171772007548e+00 3.832328924262097e+00 4.781068029657751e+00 9.153212071460603e+03 + 54820 1.038658548615393e+00 -5.908855857906299e+00 -6.001430147588261e+00 4.219467072525084e+00 4.687891175346231e+00 9.221415147822556e+03 + 54840 1.067002225214245e+00 -5.979896107607225e+00 -6.018066678994483e+00 3.763879882759383e+00 4.544698554976913e+00 9.272610304890330e+03 + 54860 1.028021292575066e+00 -5.954849696436385e+00 -5.990418746859473e+00 3.930299003253635e+00 4.726056011431504e+00 9.187666865891502e+03 + 54880 9.944301961955102e-01 -5.938318243869601e+00 -6.034122801510027e+00 4.031731813619949e+00 4.481607217941241e+00 9.322065155728695e+03 + 54900 9.696066971873122e-01 -5.930387545021663e+00 -6.039248700920651e+00 4.014604627112691e+00 4.389507023731270e+00 9.337920572078605e+03 + 54920 1.008829824317309e+00 -6.016067761888137e+00 -6.024558054456929e+00 3.603748125070688e+00 4.554995551272160e+00 9.292601941897912e+03 + 54940 1.017815995347930e+00 -6.052043929901189e+00 -5.970727772781490e+00 3.415540799595846e+00 4.882470757411808e+00 9.127411577998113e+03 + 54960 9.198074710167056e-01 -5.921409705978636e+00 -5.979154995206325e+00 4.101891399446464e+00 4.770309012646449e+00 9.153153650089633e+03 + 54980 9.285353959960526e-01 -5.940660953829389e+00 -5.994310856781295e+00 3.993595964073992e+00 4.685529919028497e+00 9.199591122457834e+03 + 55000 1.017294981616800e+00 -6.074854332169742e+00 -6.002314913447890e+00 3.310284466013174e+00 4.726817033752813e+00 9.224147208875169e+03 + 55020 9.498205676961138e-01 -5.975639998750500e+00 -6.079314714855811e+00 3.789667824332950e+00 4.194351560845789e+00 9.462135902386499e+03 + 55040 9.461729098551501e-01 -5.970936894531246e+00 -6.072557305089658e+00 3.806543798529042e+00 4.223023675394925e+00 9.441131036875513e+03 + 55060 9.337477258236849e-01 -5.953001256718920e+00 -6.030869887190547e+00 3.928731787382902e+00 4.481598061083203e+00 9.312064005024293e+03 + 55080 1.056674794888727e+00 -6.132429517887268e+00 -6.002393166202086e+00 3.032411148705231e+00 4.779100003141933e+00 9.224396448887705e+03 + 55100 1.000271890196097e+00 -6.045248058573978e+00 -6.022306179235710e+00 3.470333496023810e+00 4.602069317428495e+00 9.285655434977065e+03 + 55120 9.985034313765137e-01 -6.038213568048285e+00 -6.004911730829888e+00 3.482001347336144e+00 4.673225650086831e+00 9.232154467795275e+03 + 55140 9.674092330321477e-01 -5.988445136760769e+00 -6.028133794722922e+00 3.714599214139536e+00 4.486700798320882e+00 9.303604826012745e+03 + 55160 9.472965820390548e-01 -5.953562660505895e+00 -5.959952764327043e+00 3.970872781472152e+00 4.934179816465752e+00 9.094507440766622e+03 + 55180 9.831413338772073e-01 -5.996515999398680e+00 -6.010926595340568e+00 3.716586905028739e+00 4.633839033097900e+00 9.250597854800999e+03 + 55200 1.022932063234721e+00 -6.042260132103272e+00 -5.948091430959963e+00 3.499188618560086e+00 5.039919873084377e+00 9.058376620517478e+03 + 55220 9.757458458560104e-01 -5.954292452735425e+00 -6.011179630911383e+00 3.900687110733684e+00 4.574032130384962e+00 9.251361420952138e+03 + 55240 9.389649213523840e-01 -5.874140103945586e+00 -6.033319059406761e+00 4.298764354131391e+00 4.384734159009579e+00 9.319601239366635e+03 + 55260 9.946657597009888e-01 -5.922339478330656e+00 -6.038766369377173e+00 4.019102565512342e+00 4.350561340120081e+00 9.336432358150641e+03 + 55280 1.003719620372902e+00 -5.890714058554066e+00 -5.987451573450800e+00 4.289769854373478e+00 4.734288073754383e+00 9.178533761435941e+03 + 55300 1.050497913464824e+00 -5.905530937036614e+00 -6.024943988755128e+00 4.117169829904961e+00 4.431481607827222e+00 9.293766085160343e+03 + 55320 1.112526671971221e+00 -5.948367231417799e+00 -5.980672161725514e+00 3.936704279960938e+00 4.751204370962229e+00 9.157780324115078e+03 + 55340 1.016488154602651e+00 -5.771073711879894e+00 -5.987595836630696e+00 4.912957651850943e+00 4.669654104841324e+00 9.178992888509098e+03 + 55360 1.105611828822873e+00 -5.880475598691084e+00 -6.014110082729380e+00 4.308703877871091e+00 4.541353990653623e+00 9.260402622250651e+03 + 55380 1.089980409436933e+00 -5.849580734757785e+00 -6.047324238803346e+00 4.432728315479078e+00 4.297254514541114e+00 9.362905238681187e+03 + 55400 1.097075063278465e+00 -5.866890546706975e+00 -6.036525779544235e+00 4.386364301712217e+00 4.412292543793226e+00 9.329505279566192e+03 + 55420 1.156385398999602e+00 -5.971583433138955e+00 -6.015968299563276e+00 3.795896826138697e+00 4.541032054594366e+00 9.266132231199490e+03 + 55440 1.124125805405444e+00 -5.952429483686296e+00 -6.010160664398855e+00 3.970964883794006e+00 4.639463510271151e+00 9.248266180271212e+03 + 55460 1.084730616358355e+00 -5.925355026669000e+00 -6.013644109129942e+00 4.107280211759968e+00 4.600310637577887e+00 9.258956938090307e+03 + 55480 1.042071564802017e+00 -5.894735566860745e+00 -6.039219353097935e+00 4.210162146066237e+00 4.380513886698632e+00 9.337818467100195e+03 + 55500 1.088584166860195e+00 -5.990132025178116e+00 -6.012086596631864e+00 3.733941824554420e+00 4.607875277808050e+00 9.254191220850749e+03 + 55520 1.061617716597617e+00 -5.975868640789428e+00 -6.047548502808436e+00 3.780379743758998e+00 4.368782883623060e+00 9.363598324419467e+03 + 55540 1.034121915376424e+00 -5.959283875638091e+00 -6.008456345762722e+00 3.912623106705584e+00 4.630267173834794e+00 9.243025501960459e+03 + 55560 1.093859992234341e+00 -6.070580067656937e+00 -5.980007397065632e+00 3.337672564106120e+00 4.857754854716863e+00 9.155759791247579e+03 + 55580 9.566203413833300e-01 -5.887531972194019e+00 -6.037963592697292e+00 4.252954855630685e+00 4.389153211482850e+00 9.333960550969021e+03 + 55600 1.025480205622033e+00 -6.007681018618406e+00 -5.999278889688592e+00 3.645061854153735e+00 4.693308178693976e+00 9.214829863611423e+03 + 55620 9.513038289856632e-01 -5.913230795278197e+00 -6.033666116684616e+00 4.063462268589619e+00 4.371904015768207e+00 9.320721088537837e+03 + 55640 1.020012619693743e+00 -6.030985173723627e+00 -5.991087301259124e+00 3.554355207188761e+00 4.783454965055747e+00 9.189727604227030e+03 + 55660 9.955084976156965e-01 -6.009609723541578e+00 -6.013743522741241e+00 3.614308072157878e+00 4.590571157450053e+00 9.259300975532864e+03 + 55680 9.734126186978457e-01 -5.991450905440539e+00 -5.974970560861168e+00 3.790911455737395e+00 4.885544144637227e+00 9.140375517365046e+03 + 55700 1.017463561659404e+00 -6.068633190370437e+00 -5.974167564515071e+00 3.334161740157576e+00 4.876597982327446e+00 9.137924059292682e+03 + 55720 9.016848687903686e-01 -5.907412272007081e+00 -6.044157383348771e+00 4.175857516686893e+00 4.390645926125321e+00 9.353065338421307e+03 + 55740 9.316667071629132e-01 -5.959013416466711e+00 -6.002395104993873e+00 3.925452789562032e+00 4.676348420744459e+00 9.224400588417364e+03 + 55760 9.816967471595023e-01 -6.037058022086589e+00 -6.056485922305524e+00 3.412453721465548e+00 4.300895711950579e+00 9.391279121786994e+03 + 55780 1.050826436263069e+00 -6.143519535916854e+00 -5.999571041252516e+00 2.897027608413515e+00 4.723602140733705e+00 9.215763582231033e+03 + 55800 9.343570623732697e-01 -5.975632599346230e+00 -6.016620454024102e+00 3.832099339246892e+00 4.596740734836540e+00 9.268143109914625e+03 + 55820 8.920063680650064e-01 -5.915688413919550e+00 -6.006113624394009e+00 4.114076848809161e+00 4.594841297008720e+00 9.235842715184852e+03 + 55840 1.018585199258887e+00 -6.100168250479660e+00 -5.995918808549498e+00 3.155658339531565e+00 4.754274767643558e+00 9.204530856727113e+03 + 55860 1.027978787203595e+00 -6.106059380222162e+00 -5.965319799814040e+00 3.155703645541824e+00 4.963852095624945e+00 9.110908513294151e+03 + 55880 9.633849779374750e-01 -5.998530771623769e+00 -5.965098972454284e+00 3.747359767868500e+00 4.939330332253889e+00 9.110227169874686e+03 + 55900 9.655536608310907e-01 -5.981104058979021e+00 -5.982636216164012e+00 3.793151594231217e+00 4.784353710574440e+00 9.163810563161089e+03 + 55920 9.823924119874227e-01 -5.974510960398534e+00 -5.985313642262334e+00 3.818212715053187e+00 4.756182044081633e+00 9.172015432099062e+03 + 55940 1.032656885261784e+00 -6.011215459175149e+00 -5.976073850368974e+00 3.660861567971334e+00 4.862650123882776e+00 9.143746804605693e+03 + 55960 9.939667533199624e-01 -5.913112993646610e+00 -6.016688773488377e+00 4.181961101695908e+00 4.587212945544356e+00 9.268323804607100e+03 + 55980 9.983141832414656e-01 -5.880698794450320e+00 -6.042952651298353e+00 4.326256037608383e+00 4.394569282883784e+00 9.349353386667161e+03 + 56000 1.039149018701382e+00 -5.913084977086940e+00 -6.054488903224580e+00 4.146310074314796e+00 4.334346848245617e+00 9.385077244215072e+03 + 56020 1.025451422798633e+00 -5.873116958264387e+00 -6.052089726505939e+00 4.347904218908828e+00 4.320214887719460e+00 9.377672502415082e+03 + 56040 1.021208319214640e+00 -5.857100326995289e+00 -6.035330016219193e+00 4.475947618407144e+00 4.452525161928213e+00 9.325812549814656e+03 + 56060 1.030858021307608e+00 -5.869880559313112e+00 -6.021892795614305e+00 4.380976252301828e+00 4.508098467642837e+00 9.284387117811446e+03 + 56080 1.065852500831557e+00 -5.927300597434035e+00 -6.076238924764858e+00 4.058357306633727e+00 4.203130382968475e+00 9.452550266989369e+03 + 56100 1.074075861116391e+00 -5.955924391731622e+00 -6.030868297415966e+00 3.908348853706138e+00 4.478009349734716e+00 9.312026788604937e+03 + 56120 1.025670796687410e+00 -5.906532867536681e+00 -6.042144879774038e+00 4.168021381435588e+00 4.389316221277615e+00 9.346863565357722e+03 + 56140 1.054818571698804e+00 -5.980082417718068e+00 -5.992762015454076e+00 3.807986750527896e+00 4.735178538166328e+00 9.194814605547002e+03 + 56160 9.409868717810627e-01 -5.845145403813857e+00 -6.010183019715241e+00 4.564794814707497e+00 4.617123284713230e+00 9.248300628329036e+03 + 56180 1.055596169298405e+00 -6.049438716939580e+00 -5.968341160540373e+00 3.483142603507695e+00 4.948817322158234e+00 9.120093940126502e+03 + 56200 1.045716103145949e+00 -6.064447490145087e+00 -5.968478415029199e+00 3.350172839431433e+00 4.901242119913240e+00 9.120550001926709e+03 + 56220 9.755951976669409e-01 -5.985229544020561e+00 -6.046303361110106e+00 3.775967413321307e+00 4.425272104450487e+00 9.359733138495430e+03 + 56240 1.026079325251729e+00 -6.079483167986101e+00 -6.017662865518167e+00 3.299141869187946e+00 4.654123612619711e+00 9.271362393128948e+03 + 56260 9.945850069097829e-01 -6.047616465830705e+00 -6.029298684258867e+00 3.472515564667849e+00 4.577699101120877e+00 9.307232902222595e+03 + 56280 9.988156772943324e-01 -6.064912080539905e+00 -6.022754365581736e+00 3.340456937985919e+00 4.582533061161027e+00 9.287055085978363e+03 + 56300 9.823705468889617e-01 -6.047699836042675e+00 -6.003558300431317e+00 3.460867563241248e+00 4.714335091602222e+00 9.227978900589800e+03 + 56320 1.033589837614554e+00 -6.125765140487413e+00 -5.988513581527479e+00 2.973265320312772e+00 4.761385011470823e+00 9.181844810621227e+03 + 56340 9.417874200101379e-01 -5.989156383444662e+00 -5.979039338247480e+00 3.828400792981507e+00 4.886494432111414e+00 9.152823359135948e+03 + 56360 9.334070013992690e-01 -5.971421609174882e+00 -6.043305268954916e+00 3.879016956373971e+00 4.466249857956610e+00 9.350459522516427e+03 + 56380 1.015515181904099e+00 -6.086605856452263e+00 -5.997282120100904e+00 3.223500323506606e+00 4.736411040439638e+00 9.208714137453064e+03 + 56400 9.755823923099267e-01 -6.020370895600933e+00 -5.998850826841504e+00 3.584727384905610e+00 4.708298949942129e+00 9.213512619284733e+03 + 56420 9.851843191454546e-01 -6.025115211275429e+00 -6.011267639750456e+00 3.530935112416006e+00 4.610450011017167e+00 9.251681900666053e+03 + 56440 1.028269649981075e+00 -6.078692816190651e+00 -5.996338665471120e+00 3.296845437013372e+00 4.769735714708560e+00 9.205820374717281e+03 + 56460 9.089466572814471e-01 -5.892000696594678e+00 -6.021070986374909e+00 4.264845658933549e+00 4.523704081452676e+00 9.281857097538981e+03 + 56480 1.013110233826326e+00 -6.034863100746683e+00 -5.993118663296807e+00 3.486262069885783e+00 4.725965089653786e+00 9.195911844526729e+03 + 56500 9.886702349680662e-01 -5.983879248454703e+00 -5.984045134981699e+00 3.768288006784778e+00 4.767335460675914e+00 9.168132227536606e+03 + 56520 1.013906284555558e+00 -6.004329475575982e+00 -5.990091341160653e+00 3.616110556309172e+00 4.697868127466169e+00 9.186674374135604e+03 + 56540 9.855105038844005e-01 -5.943464012966727e+00 -6.020479963063310e+00 4.025168299469722e+00 4.582930795835384e+00 9.280016678033686e+03 + 56560 1.043172397299196e+00 -6.008598965030396e+00 -6.010197905886804e+00 3.673385395858497e+00 4.664204030025711e+00 9.248368710278683e+03 + 56580 1.023343623017774e+00 -5.958142121203055e+00 -6.039819234337847e+00 3.907255434347916e+00 4.438252811235531e+00 9.339688247693217e+03 + 56600 1.042007764319347e+00 -5.963496501934392e+00 -6.052569335342199e+00 3.888074089360232e+00 4.376604095956186e+00 9.379122786065747e+03 + 56620 1.063884652389014e+00 -5.973364932364444e+00 -6.017332654570086e+00 3.831074014335827e+00 4.578604549448007e+00 9.270324883452928e+03 + 56640 1.062321971838475e+00 -5.946057846264555e+00 -5.998338722768922e+00 3.988828803320648e+00 4.688623919993076e+00 9.211900223358711e+03 + 56660 1.022872875248082e+00 -5.858963800993803e+00 -5.991219871799985e+00 4.480941777114355e+00 4.721506951984446e+00 9.190059317487283e+03 + 56680 1.069754767079086e+00 -5.892087251754068e+00 -5.984355488514542e+00 4.295032096131870e+00 4.765213602189740e+00 9.169045797722283e+03 + 56700 1.042928382003904e+00 -5.811732267379496e+00 -6.031865657083053e+00 4.716461373367831e+00 4.452421384158042e+00 9.315121193834564e+03 + 56720 1.080094737627312e+00 -5.831886472625617e+00 -6.013165925960132e+00 4.631589328185113e+00 4.590654654233581e+00 9.257495152200509e+03 + 56740 1.109163808771727e+00 -5.849771890585469e+00 -6.017473815503898e+00 4.493429985222420e+00 4.530459580551795e+00 9.270761738506430e+03 + 56760 1.122903417993812e+00 -5.856923770969502e+00 -6.045075800221126e+00 4.430027111029858e+00 4.349629042634603e+00 9.355925115914017e+03 + 56780 1.151342591475217e+00 -5.902947549290310e+00 -6.012452976940498e+00 4.254494423834729e+00 4.625697312357187e+00 9.255298072410498e+03 + 56800 1.080357677372354e+00 -5.818592401894030e+00 -6.034483987144625e+00 4.656992975203304e+00 4.417310083579545e+00 9.323226527761772e+03 + 56820 1.096327290881824e+00 -5.881215646890295e+00 -6.020525808963447e+00 4.437635145363696e+00 4.637694636561755e+00 9.280145874786576e+03 + 56840 1.160402640937940e+00 -6.029348992004258e+00 -6.009935094157372e+00 3.547569445520745e+00 4.659047051248545e+00 9.247581332670306e+03 + 56860 1.059281607146096e+00 -5.934349560421052e+00 -6.034831366130899e+00 4.047995915223286e+00 4.471013837328162e+00 9.324284288998719e+03 + 56880 1.052277321125191e+00 -5.972654259348827e+00 -6.025917387038327e+00 3.884107363450663e+00 4.578262241815182e+00 9.296802837442336e+03 + 56900 1.044680114938570e+00 -5.996633305663630e+00 -6.037916108184477e+00 3.763585143706204e+00 4.526532903138454e+00 9.333799790540577e+03 + 56920 1.007494265013524e+00 -5.967378117126358e+00 -6.033166539086237e+00 3.939001680100704e+00 4.561234380481684e+00 9.319132072026696e+03 + 56940 1.036802536818388e+00 -6.029765513772059e+00 -6.029008850832159e+00 3.557888680597914e+00 4.562233556292036e+00 9.306303674225164e+03 + 56960 1.023911873511651e+00 -6.030893610476424e+00 -6.019342415759006e+00 3.547069041608787e+00 4.613397789217809e+00 9.276513347194441e+03 + 56980 9.817072566260552e-01 -5.984067445975617e+00 -6.017582310939507e+00 3.843938495012968e+00 4.651490953981719e+00 9.271108315011519e+03 + 57000 9.881310994650196e-01 -6.007637502929379e+00 -6.056292028966869e+00 3.616005428426002e+00 4.336623610655167e+00 9.390686429850237e+03 + 57020 9.932271150371151e-01 -6.030434013677722e+00 -6.000643093010705e+00 3.536701420034531e+00 4.707765496634615e+00 9.219027618904131e+03 + 57040 9.944474163092226e-01 -6.046335931354329e+00 -5.952004167152108e+00 3.458789126862821e+00 5.000456714705307e+00 9.070286975695562e+03 + 57060 9.583185620949127e-01 -6.001959682413293e+00 -5.961575805638782e+00 3.684676203445138e+00 4.916566673269116e+00 9.099440008091991e+03 + 57080 9.287422651177679e-01 -5.962847244577373e+00 -5.977009729309587e+00 3.918750699609405e+00 4.837427520639608e+00 9.146619273705972e+03 + 57100 1.049001310260238e+00 -6.142087480980150e+00 -5.963581505621869e+00 2.938581897679294e+00 4.963590831896952e+00 9.105610851167437e+03 + 57120 9.353906422856642e-01 -5.972667092302700e+00 -6.002778608932171e+00 3.820552664312164e+00 4.647647676083604e+00 9.225586775977030e+03 + 57140 1.017356441202684e+00 -6.089020286966928e+00 -5.977212437047312e+00 3.240259563641431e+00 4.882277540088723e+00 9.147220691358563e+03 + 57160 9.428899367323355e-01 -5.968490377358701e+00 -6.032484266455948e+00 3.859636782058146e+00 4.492173967839420e+00 9.317054517648134e+03 + 57180 9.899462962479102e-01 -6.026099141188388e+00 -6.027557761752623e+00 3.551842720385166e+00 4.543467095384520e+00 9.301842031793221e+03 + 57200 9.633362094653253e-01 -5.971626179262657e+00 -6.009738510388729e+00 3.849751340378201e+00 4.630904437188113e+00 9.246954035107818e+03 + 57220 9.855941318345693e-01 -5.984141230139588e+00 -5.980930765114614e+00 3.812147007925950e+00 4.830581994917205e+00 9.158595257489025e+03 + 57240 9.924719117544981e-01 -5.970521169475893e+00 -5.968321467264085e+00 3.831176395825086e+00 4.843807426328107e+00 9.120031065975980e+03 + 57260 1.012245615897856e+00 -5.968733817272671e+00 -5.981840224525186e+00 3.853518201688188e+00 4.778259183034283e+00 9.161360148450523e+03 + 57280 1.059622582346316e+00 -6.003984260960687e+00 -5.972144965366938e+00 3.664441527663695e+00 4.847267690078072e+00 9.131726165004691e+03 + 57300 1.057054458241929e+00 -5.967348296094404e+00 -5.955631902390244e+00 3.901245638874953e+00 4.968522984630303e+00 9.081322466063792e+03 + 57320 1.064254416556010e+00 -5.947339031076265e+00 -6.014480716611390e+00 3.941125156420452e+00 4.555587207935502e+00 9.261534830670427e+03 + 57340 1.044770959759344e+00 -5.895053069737464e+00 -6.033097933827868e+00 4.239085076468349e+00 4.446410104487569e+00 9.318895841940406e+03 + 57360 9.737701922261436e-01 -5.775944253237927e+00 -6.012805673177283e+00 4.845670450349269e+00 4.485575522871218e+00 9.256371885669823e+03 + 57380 1.107727648014548e+00 -5.965879532501098e+00 -5.988350372405630e+00 3.849266304574293e+00 4.720235264491235e+00 9.181280771435897e+03 + 57400 1.008694420225550e+00 -5.817132338480546e+00 -6.034744079716493e+00 4.698923861160863e+00 4.449363567675932e+00 9.323999093606748e+03 + 57420 1.105811393643516e+00 -5.969307673847702e+00 -6.013720910759660e+00 3.896340700518366e+00 4.641313021243700e+00 9.259202886070319e+03 + 57440 1.023618517384799e+00 -5.865914725180268e+00 -5.989594445565833e+00 4.446760138263000e+00 4.736572044434211e+00 9.185122623150686e+03 + 57460 1.062407034581622e+00 -5.952668616727086e+00 -6.004526511973320e+00 3.952167924999910e+00 4.654391865512683e+00 9.230949903871113e+03 + 57480 1.040886785353600e+00 -5.963029953947366e+00 -6.032563233604392e+00 3.865598482252332e+00 4.466327630221438e+00 9.317237323479048e+03 + 57500 9.790417855937503e-01 -5.922453568029830e+00 -6.069954425287847e+00 4.119591844033165e+00 4.272619095973744e+00 9.433008044887905e+03 + 57520 9.930817501617136e-01 -5.999308353778441e+00 -5.993705556230679e+00 3.688881443198354e+00 4.721053573747724e+00 9.197752725467595e+03 + 57540 9.876007018779281e-01 -6.034489428738645e+00 -5.991819320263332e+00 3.458217780975893e+00 4.703236147019089e+00 9.191968558355142e+03 + 57560 9.418113112230918e-01 -5.992578461623830e+00 -6.023310553550764e+00 3.727930972665919e+00 4.551462545045609e+00 9.288760697526192e+03 + 57580 1.004916956782298e+00 -6.098771133345769e+00 -6.003911592017036e+00 3.197577641938295e+00 4.742275807714464e+00 9.229073127371828e+03 + 57600 9.766607406040632e-01 -6.063090098960552e+00 -5.975426064675958e+00 3.370480900614292e+00 4.873861351441887e+00 9.141781752892832e+03 + 57620 9.545924470277579e-01 -6.031495924674497e+00 -5.988531779944429e+00 3.521457261600491e+00 4.768164029320451e+00 9.181869645858384e+03 + 57640 9.496310113316316e-01 -6.019649148273940e+00 -6.019078602903575e+00 3.561269130591984e+00 4.564545290400227e+00 9.275727725825323e+03 + 57660 9.662756568821931e-01 -6.036515837542882e+00 -6.020375784318530e+00 3.496159518074748e+00 4.588838201354143e+00 9.279720538069540e+03 + 57680 9.226061635702377e-01 -5.961195641010880e+00 -6.026249904950273e+00 3.933104573931325e+00 4.559552923276526e+00 9.297813879920295e+03 + 57700 9.728989657045495e-01 -6.023092392790147e+00 -6.013904586164516e+00 3.609250778579567e+00 4.662008586032417e+00 9.259780057112965e+03 + 57720 1.026857242939699e+00 -6.088064748481124e+00 -6.011892174236086e+00 3.218736023691536e+00 4.656130732674319e+00 9.253600034595955e+03 + 57740 9.616087958023901e-01 -5.974460289279401e+00 -6.018605149236064e+00 3.801944647927724e+00 4.548458030661565e+00 9.274251840686180e+03 + 57760 9.017365243110744e-01 -5.866155905888709e+00 -6.033897158540556e+00 4.414552523697464e+00 4.451356293095597e+00 9.321383147639672e+03 + 57780 1.009215416296311e+00 -6.001802484354576e+00 -6.048649601867689e+00 3.694891694523993e+00 4.425888296195692e+00 9.367008483551388e+03 + 57800 9.869540637013344e-01 -5.945129032735177e+00 -6.071369214271328e+00 3.967426448886344e+00 4.242535790900805e+00 9.437427182036952e+03 + 57820 1.079090528691349e+00 -6.063825653289923e+00 -5.975056177806851e+00 3.378637936292284e+00 4.888366001548018e+00 9.140633119438402e+03 + 57840 1.062168712706210e+00 -6.020752659478207e+00 -6.001054130768228e+00 3.611837708778588e+00 4.724949708968755e+00 9.220298538661389e+03 + 57860 1.012113268904240e+00 -5.933479122859675e+00 -6.023264783187129e+00 4.063021964185730e+00 4.547458808299463e+00 9.288603133355393e+03 + 57880 1.014029989602518e+00 -5.924458642866226e+00 -6.048437339494821e+00 4.103909568412108e+00 4.392004706729417e+00 9.366293338756879e+03 + 57900 1.034737059630698e+00 -5.946133345673997e+00 -5.991005235231488e+00 3.997775051975111e+00 4.740113718233530e+00 9.189442532993209e+03 + 57920 9.975769829732444e-01 -5.883932848960004e+00 -6.069157497684501e+00 4.267161889852428e+00 4.203573293454613e+00 9.430560822783234e+03 + 57940 1.056391573893178e+00 -5.970316289306072e+00 -5.993788590249609e+00 3.840423249348042e+00 4.705641665003421e+00 9.197965389400451e+03 + 57960 1.036136278117523e+00 -5.945496148064346e+00 -6.036434046227596e+00 3.937427514806779e+00 4.415248030959138e+00 9.329212612449717e+03 + 57980 1.055780350997631e+00 -5.988918749066907e+00 -5.951832263041441e+00 3.763980084153280e+00 4.976936426026670e+00 9.069774636076416e+03 + 58000 9.722186201223897e-01 -5.887921648978491e+00 -6.011406272439043e+00 4.284792441992179e+00 4.575724624897971e+00 9.252047334889430e+03 + 58020 9.892753563998048e-01 -5.944391353217111e+00 -5.958400841359021e+00 3.955493096255382e+00 4.875048447383253e+00 9.089755457590072e+03 + 58040 1.017090349879364e+00 -6.024261669526604e+00 -6.012492836787780e+00 3.583328741638772e+00 4.650907200446078e+00 9.255398206846623e+03 + 58060 9.609413814686971e-01 -5.987279903011562e+00 -5.985015657255357e+00 3.800995555038156e+00 4.813997204561188e+00 9.171082730402439e+03 + 58080 9.250515872857171e-01 -5.971300390703504e+00 -5.983791213497279e+00 3.850403997080369e+00 4.778679759649938e+00 9.167331015935142e+03 + 58100 1.028957759710241e+00 -6.156428038550610e+00 -5.960499631742572e+00 2.887147123536221e+00 5.012198355250941e+00 9.096194610195207e+03 + 58120 9.465074714557951e-01 -6.055516448960569e+00 -6.009353197949639e+00 3.372196236461099e+00 4.637272767505864e+00 9.245788737572311e+03 + 58140 9.009981557394455e-01 -6.000583998162687e+00 -6.011482039995545e+00 3.653772374838282e+00 4.591194132167493e+00 9.252347170197800e+03 + 58160 9.548890324936343e-01 -6.087497140621374e+00 -5.982368381751807e+00 3.213745511631184e+00 4.817411113683093e+00 9.163028007857531e+03 + 58180 9.345650586721894e-01 -6.057741609827429e+00 -5.985198312733669e+00 3.414879053632714e+00 4.831433891584032e+00 9.171670251939116e+03 + 58200 9.405401305137778e-01 -6.060977105640050e+00 -6.039589953910495e+00 3.301774842930443e+00 4.424583177812584e+00 9.338998112873498e+03 + 58220 9.626561454899512e-01 -6.084293176519750e+00 -5.969664768592448e+00 3.265293986804427e+00 4.923508043811789e+00 9.124160053826417e+03 + 58240 9.270180032990346e-01 -6.014741347393427e+00 -5.977841745455129e+00 3.618561246200657e+00 4.830444470725308e+00 9.149136326793328e+03 + 58260 9.463769950971712e-01 -6.018013687787561e+00 -5.995199538896647e+00 3.623873048097875e+00 4.754875421507637e+00 9.202304735408723e+03 + 58280 1.015795560186022e+00 -6.089140625158183e+00 -5.983081467365432e+00 3.228884303306965e+00 4.837892399954571e+00 9.165188960611073e+03 + 58300 9.735466747341770e-01 -5.993139092488436e+00 -6.039437567003294e+00 3.707200482835068e+00 4.441347477504975e+00 9.338511681890948e+03 + 58320 1.010679302683683e+00 -6.017902124342816e+00 -6.044744987872637e+00 3.520556012845598e+00 4.366420136537662e+00 9.354920242271317e+03 + 58340 9.862955960414929e-01 -5.957438907562468e+00 -6.029152647246574e+00 3.924506670394020e+00 4.512715279462530e+00 9.306749301335758e+03 + 58360 1.015716838369209e+00 -5.980523933430026e+00 -6.008644091437125e+00 3.824032900892910e+00 4.662562602035759e+00 9.243599075085338e+03 + 58380 1.000953129245683e+00 -5.944295554798329e+00 -6.047164505604340e+00 3.978475599436746e+00 4.387786164989943e+00 9.362399003050972e+03 + 58400 1.036237408123727e+00 -5.989256607088601e+00 -6.035462718770937e+00 3.739343585984721e+00 4.474020942332073e+00 9.326243935908011e+03 + 58420 1.049575671852772e+00 -6.008574264300758e+00 -6.013571430175532e+00 3.666446439310009e+00 4.637751939548137e+00 9.258763597952779e+03 + 58440 9.848895708128661e-01 -5.916241870635173e+00 -6.088689485486416e+00 4.089582052074520e+00 4.099361161416531e+00 9.491303864278783e+03 + 58460 9.997794403643350e-01 -5.944423608522742e+00 -6.006878710635573e+00 4.033470899491953e+00 4.674844038264260e+00 9.238152055147159e+03 + 58480 1.029745252334780e+00 -5.994204035883075e+00 -5.973477628551382e+00 3.754758900632710e+00 4.873773138932457e+00 9.135783552294077e+03 + 58500 9.824239811942896e-01 -5.927680904779300e+00 -6.005382219732033e+00 4.106446888337884e+00 4.660273913639661e+00 9.233554385645566e+03 + 58520 1.013785266788580e+00 -5.978359796179875e+00 -6.057679390289384e+00 3.808500461927653e+00 4.353035077883332e+00 9.394945204191306e+03 + 58540 1.020223915108273e+00 -5.995000101969616e+00 -6.034675127843400e+00 3.759027280633647e+00 4.531207142375971e+00 9.323810228861088e+03 + 58560 1.049820671769805e+00 -6.049538490087009e+00 -6.013435151050794e+00 3.452549896899854e+00 4.659860856619462e+00 9.258358882050312e+03 + 58580 1.023817606463530e+00 -6.025000183342135e+00 -5.979100938761216e+00 3.548228647283965e+00 4.811789212552741e+00 9.153007014583156e+03 + 58600 1.001786694671557e+00 -6.004001405144667e+00 -5.989820972987230e+00 3.687196579816750e+00 4.768622815679538e+00 9.185806519772372e+03 + 58620 9.760881353313391e-01 -5.979401440291658e+00 -6.052215553407965e+00 3.745134136918197e+00 4.327024231456778e+00 9.378023097258596e+03 + 58640 1.041041770283404e+00 -6.091352135929243e+00 -5.976831283966371e+00 3.168558675902915e+00 4.826155129918286e+00 9.146067276572352e+03 + 58660 8.907696890373128e-01 -5.880241590152331e+00 -6.040898313887606e+00 4.374932233941744e+00 4.452416464706151e+00 9.342999180858635e+03 + 58680 1.042110042844660e+00 -6.116891263112340e+00 -5.970412315760102e+00 3.068964151075133e+00 4.910068934315525e+00 9.126450842405946e+03 + 58700 9.564147636154118e-01 -6.000206546084813e+00 -5.992272859454530e+00 3.718103563471132e+00 4.763660019836260e+00 9.193319454168653e+03 + 58720 9.493533028151828e-01 -6.001615373072302e+00 -5.993906429687677e+00 3.674705604802272e+00 4.718971550671920e+00 9.198325514506814e+03 + 58740 9.778723369098564e-01 -6.057575189122179e+00 -5.978671594160485e+00 3.354849510727234e+00 4.807926163289142e+00 9.151680828292765e+03 + 58760 9.834853128029232e-01 -6.081419096241451e+00 -5.987781691200472e+00 3.219503922854200e+00 4.757184392941101e+00 9.179587018023905e+03 + 58780 9.232993974664780e-01 -6.008118864559579e+00 -6.038410195288225e+00 3.561699901435518e+00 4.387762392823354e+00 9.335360113518809e+03 + 58800 9.110415095794894e-01 -6.009812515306396e+00 -5.997068416983981e+00 3.663861854574672e+00 4.737040439284820e+00 9.208052963196506e+03 + 58820 9.171905442024617e-01 -6.038226507333606e+00 -5.953344046210603e+00 3.483919084406133e+00 4.971327311692824e+00 9.074372511507287e+03 + 58840 9.367233628599629e-01 -6.079964248527479e+00 -5.962563225052993e+00 3.295792494421328e+00 4.969927338961492e+00 9.102491936766615e+03 + 58860 9.490390579347927e-01 -6.105172693985501e+00 -6.002904290649671e+00 3.094225379504029e+00 4.681466377442635e+00 9.225992817715623e+03 + 58880 9.174405511196609e-01 -6.061021541710738e+00 -5.995624345518920e+00 3.324769962496906e+00 4.700290783213729e+00 9.203638699259171e+03 + 58900 9.326461484994001e-01 -6.079713223268204e+00 -5.961488583842024e+00 3.274276633133124e+00 4.953140807922074e+00 9.099202310953411e+03 + 58920 9.107726089232026e-01 -6.032820528488055e+00 -5.997525652005759e+00 3.544328132470887e+00 4.746996775096717e+00 9.209459443762575e+03 + 58940 9.484697630993920e-01 -6.062971743756291e+00 -6.032085452377691e+00 3.326591841704096e+00 4.503945706438163e+00 9.315820168886823e+03 + 58960 9.578025802011089e-01 -6.047473089778261e+00 -5.949978583372001e+00 3.445800540362444e+00 5.005629083373298e+00 9.064120104169011e+03 + 58980 9.324328469124796e-01 -5.973860725138090e+00 -5.979152487261608e+00 3.832670399513826e+00 4.802284282503045e+00 9.153134848223955e+03 + 59000 9.770465612525301e-01 -5.998081855298754e+00 -6.001402246666762e+00 3.649133619328003e+00 4.630067418263993e+00 9.221332833053100e+03 + 59020 9.690529917751355e-01 -5.949282382277953e+00 -5.975399660343177e+00 3.927877626563679e+00 4.777908174277447e+00 9.141694267949115e+03 + 59040 9.607198335883824e-01 -5.906335927435333e+00 -6.000766188161747e+00 4.164338615885382e+00 4.622105445758694e+00 9.219386821307584e+03 + 59060 9.714203768033525e-01 -5.896326777417968e+00 -6.052121065529901e+00 4.276731485878347e+00 4.382136574451459e+00 9.377749950615229e+03 + 59080 1.036719879096489e+00 -5.974027622621298e+00 -6.010333264044967e+00 3.825268702143613e+00 4.616796090809050e+00 9.248792131102942e+03 + 59100 1.009437856584863e+00 -5.921752542342842e+00 -6.008039599674184e+00 4.125439207453054e+00 4.629965571377524e+00 9.241724674575711e+03 + 59120 1.064047069353855e+00 -5.996074529125561e+00 -6.023325356042254e+00 3.711306045477918e+00 4.554827580270433e+00 9.288750641498613e+03 + 59140 1.049637957546836e+00 -5.974113174287741e+00 -6.017543930393512e+00 3.829027547174884e+00 4.579641424727757e+00 9.270979826588762e+03 + 59160 1.018443655585699e+00 -5.932516656195644e+00 -5.984004217109235e+00 4.027181295732369e+00 4.731531753292229e+00 9.168006894355121e+03 + 59180 1.013066231459751e+00 -5.933141750402662e+00 -5.995323797841847e+00 4.074008683216666e+00 4.716949744180121e+00 9.202651583414037e+03 + 59200 1.020371451201160e+00 -5.952854377219450e+00 -6.004750241920226e+00 3.921436656178513e+00 4.623442570207553e+00 9.231611043780409e+03 + 59220 9.400231403723474e-01 -5.846871115518299e+00 -6.004101566023746e+00 4.546626704136605e+00 4.643785126000746e+00 9.229644703297890e+03 + 59240 1.019175951535978e+00 -5.980260359986271e+00 -5.973638901098907e+00 3.829780716447849e+00 4.867802158046546e+00 9.136305954977397e+03 + 59260 1.050038092042660e+00 -6.046307093560191e+00 -5.985506266464984e+00 3.492217051380323e+00 4.841344809458585e+00 9.172611256263888e+03 + 59280 1.008644728926918e+00 -6.008098933173460e+00 -6.013669339736386e+00 3.694749307556707e+00 4.662763171054755e+00 9.259067365774032e+03 + 59300 1.025178838465051e+00 -6.061681506729784e+00 -6.004221662217742e+00 3.362014822830067e+00 4.691958141900408e+00 9.230021293322692e+03 + 59320 1.009999596539260e+00 -6.074111188253026e+00 -6.009601375003241e+00 3.307565166167515e+00 4.677990496709119e+00 9.246551387740146e+03 + 59340 9.571529198653401e-01 -6.032016587211084e+00 -5.959309814924160e+00 3.537453480594878e+00 4.954947018403041e+00 9.092559681131092e+03 + 59360 9.730176158996492e-01 -6.086479840587167e+00 -5.995548438274640e+00 3.254842929349143e+00 4.776985113016702e+00 9.203377713571293e+03 + 59380 9.422490241251077e-01 -6.069310340203559e+00 -5.999325151090934e+00 3.319405393992802e+00 4.721271180050508e+00 9.214984378986424e+03 + 59400 8.998180077430101e-01 -6.027697213675223e+00 -6.007077183445922e+00 3.594513659950045e+00 4.712917064466057e+00 9.238767494097203e+03 + 59420 9.283716461808557e-01 -6.082639440284149e+00 -5.971608666823439e+00 3.312745776276151e+00 4.950301659444214e+00 9.130078818810061e+03 + 59440 8.650928054087145e-01 -5.993012559235851e+00 -5.978882759084366e+00 3.739022569572030e+00 4.820158068621367e+00 9.152330564534343e+03 + 59460 9.271127993966845e-01 -6.080465765863948e+00 -5.940846669217246e+00 3.289057879848301e+00 5.090772338779047e+00 9.036352077727162e+03 + 59480 9.327592697897629e-01 -6.073082435670546e+00 -5.966136647441862e+00 3.339297754929326e+00 4.953397020745673e+00 9.113385467163474e+03 + 59500 9.489087681937811e-01 -6.071925329641404e+00 -6.007135973492290e+00 3.333708247400490e+00 4.705738756529163e+00 9.238981572497831e+03 + 59520 1.049537194971701e+00 -6.185191701009839e+00 -5.960710469084625e+00 2.746777958129803e+00 5.035783930202754e+00 9.096850926565003e+03 + 59540 9.918911676847204e-01 -6.058541227235890e+00 -5.992207536761911e+00 3.367235915385579e+00 4.748134231192592e+00 9.193137105638227e+03 + 59560 9.299704039608901e-01 -5.920906621461212e+00 -6.034284225865150e+00 4.165931851281940e+00 4.514900101666948e+00 9.322585897197956e+03 + 59580 9.962039681197576e-01 -5.979156580076983e+00 -6.005555770294974e+00 3.801576497415016e+00 4.649988261921830e+00 9.234122523699627e+03 + 59600 9.925396140775055e-01 -5.947039222818939e+00 -6.019673924090196e+00 3.967771845668251e+00 4.550692150785006e+00 9.277546202765519e+03 + 59620 1.049828763370723e+00 -6.019256482919420e+00 -5.992194816583073e+00 3.610960701454307e+00 4.766352977336942e+00 9.193099288463351e+03 + 59640 1.026193966706725e+00 -5.979146024444496e+00 -6.072350604850524e+00 3.732157809527806e+00 4.196962685474189e+00 9.440474347348141e+03 + 59660 9.812451572079391e-01 -5.912009138192795e+00 -6.035483743724102e+00 4.147093161249686e+00 4.438082868655472e+00 9.326307032059536e+03 + 59680 1.054008849222161e+00 -6.022918866306718e+00 -6.024655093687268e+00 3.579199205384703e+00 4.569229519085265e+00 9.292897829485279e+03 + 59700 1.097691374778930e+00 -6.095928785413954e+00 -6.004636740247515e+00 3.211884095587965e+00 4.736097146331987e+00 9.231308553133722e+03 + 59720 9.649649211003423e-01 -5.910083010300154e+00 -6.017181033064592e+00 4.175703458586566e+00 4.560730038507704e+00 9.269860339638544e+03 + 59740 1.017694556757348e+00 -6.000361721176006e+00 -5.974641598734785e+00 3.701608733675957e+00 4.849297656909538e+00 9.139364178665923e+03 + 59760 1.068763034483956e+00 -6.088926211299348e+00 -5.948739070476043e+00 3.240579371179659e+00 5.045555627677004e+00 9.060350919707487e+03 + 59780 9.928050003212269e-01 -5.987501683076895e+00 -6.005960981907740e+00 3.732515535823041e+00 4.626519385369070e+00 9.235377231819260e+03 + 59800 9.972606190020818e-01 -6.007385378181562e+00 -5.977126276687540e+00 3.661333564392177e+00 4.835086007751674e+00 9.146960868619482e+03 + 59820 9.718024577862364e-01 -5.982968338981941e+00 -6.041952094670615e+00 3.714267580554281e+00 4.375573727683225e+00 9.346273115332533e+03 + 59840 9.773207509236299e-01 -6.003801888793769e+00 -6.010312159843920e+00 3.662573296641228e+00 4.625190312810067e+00 9.248747227750526e+03 + 59860 1.050650717314819e+00 -6.123942101180395e+00 -5.963042498502828e+00 3.021650297059060e+00 4.945560714766693e+00 9.103955717885674e+03 + 59880 1.024674214855225e+00 -6.096581652866909e+00 -5.977956362299416e+00 3.147689338141797e+00 4.828854113784729e+00 9.149512241975426e+03 + 59900 9.304978070163682e-01 -5.968145472557999e+00 -5.948252070193631e+00 3.874384019858534e+00 4.988615014728803e+00 9.058871658143815e+03 + 59920 9.821434165550241e-01 -6.050363128219010e+00 -5.999785005895893e+00 3.451744776141788e+00 4.742172181460259e+00 9.216383771453568e+03 + 59940 9.834417200027225e-01 -6.056789615698548e+00 -5.979365147298608e+00 3.358308356081999e+00 4.802891635032219e+00 9.153821410350085e+03 + 59960 9.010491803828863e-01 -5.934876171215766e+00 -6.020640005049570e+00 4.003312858019507e+00 4.510843652235413e+00 9.280498005108017e+03 + 59980 9.690452672105401e-01 -6.030508043114470e+00 -5.970228865956464e+00 3.538443615542470e+00 4.884575978956253e+00 9.125885808505822e+03 + 60000 9.792381169541542e-01 -6.034751237862288e+00 -5.983096174736600e+00 3.552081089490495e+00 4.848692455553380e+00 9.165202854529103e+03 + 60020 9.548227516055019e-01 -5.981247466664838e+00 -5.994726304508069e+00 3.821688320127290e+00 4.744290747388048e+00 9.200855732182981e+03 + 60040 9.979527318874679e-01 -6.020634287683200e+00 -6.002072250127325e+00 3.546580302127317e+00 4.653166394239182e+00 9.223407830809057e+03 + 60060 9.985033154936550e-01 -5.990409367849090e+00 -6.005134909552597e+00 3.744657925246870e+00 4.660101586015127e+00 9.232830278076048e+03 + 60080 1.003067708535689e+00 -5.963590367700278e+00 -6.012646064949436e+00 3.866237030038262e+00 4.584551625088980e+00 9.255917759904125e+03 + 60100 1.039270235986645e+00 -5.983957752547511e+00 -5.959136776300924e+00 3.808606913142085e+00 4.951132799783646e+00 9.092021955211525e+03 + 60120 1.004922349870197e+00 -5.900627041618872e+00 -5.989785639144635e+00 4.226171483712165e+00 4.714209019470856e+00 9.185711212574932e+03 + 60140 1.116034624702739e+00 -6.035564755738976e+00 -5.996202134777989e+00 3.507938625061452e+00 4.733964885965348e+00 9.205401351321241e+03 + 60160 1.062322547961327e+00 -5.935779131173446e+00 -6.036085822892444e+00 4.004272295647070e+00 4.428295749386206e+00 9.328144822588676e+03 + 60180 1.057893635779811e+00 -5.919284229888382e+00 -5.961648108770857e+00 4.103807998337169e+00 4.860548050004926e+00 9.099708498175036e+03 + 60200 9.748560885129710e-01 -5.792233099321571e+00 -6.049048916596278e+00 4.759663285874439e+00 4.284987120963788e+00 9.368181588047355e+03 + 60220 9.494807721140246e-01 -5.755502452100460e+00 -6.094995377963203e+00 4.911676229656985e+00 3.962255312992633e+00 9.510957019835512e+03 + 60240 1.127967930151936e+00 -6.028807417451349e+00 -5.963752663535212e+00 3.543855050797900e+00 4.917409514974986e+00 9.106120673892225e+03 + 60260 1.012856649063352e+00 -5.874253113070846e+00 -6.036246795348310e+00 4.369594725178610e+00 4.439401933100100e+00 9.328641437095515e+03 + 60280 1.099011325657470e+00 -6.027386822475330e+00 -6.003367199971078e+00 3.534024184355423e+00 4.671948573799405e+00 9.227368295864970e+03 + 60300 9.852177145575878e-01 -5.892417339376038e+00 -6.044359308391131e+00 4.269462342128125e+00 4.396988043099749e+00 9.353708528428149e+03 + 60320 1.018985787282739e+00 -5.982526383550416e+00 -6.015077729936632e+00 3.756331762446513e+00 4.569416894192292e+00 9.263396435323310e+03 + 60340 9.897738465928323e-01 -5.984957416050903e+00 -5.990424352556690e+00 3.821899981614300e+00 4.790507986192380e+00 9.187661850442728e+03 + 60360 9.842374109992664e-01 -6.014569366289045e+00 -5.977213323282850e+00 3.641877038054353e+00 4.856381217824900e+00 9.147195798214496e+03 + 60380 9.907865090611933e-01 -6.049343604455718e+00 -5.966617815175850e+00 3.409752350715614e+00 4.884776634535136e+00 9.114875553835702e+03 + 60400 1.032105636957626e+00 -6.126717269635181e+00 -5.977985729021436e+00 3.035461722573926e+00 4.889501244909573e+00 9.149609049905668e+03 + 60420 9.771762255801024e-01 -6.054158480868370e+00 -5.994651073951631e+00 3.396392257669266e+00 4.738092996926644e+00 9.200642749607810e+03 + 60440 9.031762377939777e-01 -5.946680915494948e+00 -6.031760646233129e+00 3.893261781962646e+00 4.404720802018232e+00 9.314789654392420e+03 + 60460 9.388292718965763e-01 -5.996534727594168e+00 -6.010677745527714e+00 3.682733688091846e+00 4.601522290492470e+00 9.249856179857614e+03 + 60480 9.873627427179477e-01 -6.063133338478625e+00 -5.987900193740066e+00 3.343922368069780e+00 4.775922727450110e+00 9.179946513406374e+03 + 60500 9.370560782276102e-01 -5.980311267746004e+00 -6.005273045864255e+00 3.804205833589085e+00 4.660871440811404e+00 9.233237680831988e+03 + 60520 9.864765489939564e-01 -6.041914265441079e+00 -6.012446990843739e+00 3.478306384346034e+00 4.647512035129967e+00 9.255280256539812e+03 + 60540 9.326923661394546e-01 -5.949700351775981e+00 -6.001604042494281e+00 3.917980113984412e+00 4.619941089809748e+00 9.221989860013951e+03 + 60560 9.970234961616862e-01 -6.029285495676776e+00 -6.006098734346889e+00 3.534762767101518e+00 4.667904738797450e+00 9.235777197239040e+03 + 60580 9.940548889875369e-01 -6.009163445049239e+00 -5.964183412777984e+00 3.677644769921884e+00 4.935927075860927e+00 9.107424332804623e+03 + 60600 1.007146094020540e+00 -6.009531698598634e+00 -6.006001910714903e+00 3.620633909298536e+00 4.640902497559830e+00 9.235481109277813e+03 + 60620 1.069602061730301e+00 -6.082618459807985e+00 -5.993352104430206e+00 3.217816424605439e+00 4.730397651108489e+00 9.196658495219208e+03 + 60640 1.006650009157978e+00 -5.970609021872706e+00 -5.990071495507388e+00 3.861167337119631e+00 4.749410801701226e+00 9.186611010544573e+03 + 60660 1.005227828344915e+00 -5.950959067603270e+00 -6.008654136144559e+00 3.936463294842549e+00 4.605169282995465e+00 9.243628219609025e+03 + 60680 1.066582331049393e+00 -6.025528292841015e+00 -5.991019025785428e+00 3.583998910075301e+00 4.782156461800302e+00 9.189503917892309e+03 + 60700 1.117092348006975e+00 -6.088157060598327e+00 -5.939413761200118e+00 3.255319489259864e+00 5.109426532355569e+00 9.031996575744522e+03 + 60720 9.625956845734682e-01 -5.848589657197572e+00 -6.001309347295468e+00 4.510397566093252e+00 4.633457472255471e+00 9.221036613344224e+03 + 60740 1.044336167894014e+00 -5.959810663420306e+00 -5.973060575799828e+00 3.883834983855806e+00 4.807751936555283e+00 9.134525576274162e+03 + 60760 1.059695795975601e+00 -5.972380785556971e+00 -5.982012728209041e+00 3.806016915248799e+00 4.750708810002308e+00 9.161902853821541e+03 + 60780 1.055664797979835e+00 -5.957674587342302e+00 -6.030007144556853e+00 3.879104531388129e+00 4.463759794435123e+00 9.309402160326657e+03 + 60800 1.069816866277536e+00 -5.976586612145033e+00 -6.023304957502297e+00 3.804703642498488e+00 4.536439673816496e+00 9.288742986466101e+03 + 60820 1.062399476041358e+00 -5.971377993451959e+00 -6.044660621699075e+00 3.812441846816844e+00 4.391641654971833e+00 9.354671110984058e+03 + 60840 1.030151148547479e+00 -5.941656545636704e+00 -6.032160811080040e+00 3.995587231840990e+00 4.475897734175540e+00 9.316039944154305e+03 + 60860 1.002194306715984e+00 -5.928823785041410e+00 -6.024714434158351e+00 4.022775230193277e+00 4.472156283933811e+00 9.293077712145256e+03 + 60880 1.016163647544101e+00 -5.989169687206058e+00 -5.977939496252956e+00 3.768585335724272e+00 4.833070830043414e+00 9.149449495707766e+03 + 60900 9.994709456385514e-01 -6.006795951104308e+00 -5.967397431450641e+00 3.724017947105854e+00 4.950250343858417e+00 9.117234160601323e+03 + 60920 9.663820711266167e-01 -5.996811115649066e+00 -6.044946342532825e+00 3.687287045879680e+00 4.410887124210847e+00 9.355566324412746e+03 + 60940 1.038629516177633e+00 -6.143238297816589e+00 -5.992780070404690e+00 2.908649708630718e+00 4.772604133765292e+00 9.194920335132474e+03 + 60960 9.409447798703757e-01 -6.026441553907702e+00 -6.025880451294283e+00 3.523568775119218e+00 4.526790713155822e+00 9.296668941049915e+03 + 60980 9.161091875284963e-01 -6.008204018811431e+00 -6.045780121907536e+00 3.594303053199751e+00 4.378535254338752e+00 9.358136795974515e+03 + 61000 9.404640611654228e-01 -6.055943371085851e+00 -5.997783641996533e+00 3.432801395375576e+00 4.766763559995425e+00 9.210259864537036e+03 + 61020 9.599047657803804e-01 -6.089217354468517e+00 -6.001468480695396e+00 3.194239741510166e+00 4.698107353809761e+00 9.221571128010715e+03 + 61040 9.363109466619237e-01 -6.053073461651056e+00 -5.988950033009683e+00 3.392337623898882e+00 4.760544274226159e+00 9.183174540948299e+03 + 61060 9.468843179242923e-01 -6.062203950736469e+00 -5.993478175476405e+00 3.339855210975870e+00 4.734489247798512e+00 9.197047075835977e+03 + 61080 9.254280787390773e-01 -6.016051775186869e+00 -6.029507036881855e+00 3.526034206429098e+00 4.448772011581473e+00 9.307855635808994e+03 + 61100 1.039004291442854e+00 -6.165515527969873e+00 -5.973311425285971e+00 2.828690471019324e+00 4.932356172119059e+00 9.135320950635514e+03 + 61120 9.594959663539009e-01 -6.024361794236742e+00 -5.996879920463199e+00 3.572574759638818e+00 4.730379931652723e+00 9.207477677052811e+03 + 61140 1.007581561662352e+00 -6.069680199972549e+00 -5.990115400904527e+00 3.338359159865723e+00 4.795232548727172e+00 9.186736517631556e+03 + 61160 9.485937097594010e-01 -5.950863867520932e+00 -6.026824484704687e+00 3.993448246558033e+00 4.557270627821386e+00 9.299576312302102e+03 + 61180 9.944136862052958e-01 -5.989060783777992e+00 -6.006290567860121e+00 3.749665195698111e+00 4.650729109198052e+00 9.236351574160662e+03 + 61200 9.984887612195634e-01 -5.966814287731852e+00 -6.007668106307779e+00 3.884134660623560e+00 4.649545712252594e+00 9.240596839098775e+03 + 61220 1.040807427699743e+00 -6.005258145185499e+00 -5.985942422903285e+00 3.677064826200536e+00 4.787978692643366e+00 9.173940232929590e+03 + 61240 1.089414784366308e+00 -6.060090801225584e+00 -6.007082181327001e+00 3.373893873118884e+00 4.678277571633968e+00 9.238787440009199e+03 + 61260 1.046411786180701e+00 -5.985240352229604e+00 -6.030274068416206e+00 3.817413535158887e+00 4.558822967870365e+00 9.310190443775948e+03 + 61280 1.056035978912185e+00 -5.995959241522528e+00 -6.027415047340622e+00 3.745531696052654e+00 4.564907591274943e+00 9.301422745368667e+03 + 61300 1.033156974770224e+00 -5.965141774874835e+00 -6.039410480917681e+00 3.945910442428725e+00 4.519448039285590e+00 9.338431388439487e+03 + 61320 1.013312180328338e+00 -5.941551462691994e+00 -6.044411352501586e+00 4.021472605571063e+00 4.430835200767878e+00 9.353882963391035e+03 + 61340 1.037598281110481e+00 -5.983954260842314e+00 -6.064012964460832e+00 3.750651476967456e+00 4.290942011745580e+00 9.414617692818625e+03 + 61360 1.004998317508862e+00 -5.945428885874893e+00 -6.085228230945821e+00 3.980961834751506e+00 4.178212361475509e+00 9.480537194400116e+03 + 61380 1.018498702157547e+00 -5.978309606784621e+00 -6.040685374907138e+00 3.826226516739375e+00 4.468055203560963e+00 9.342372809802431e+03 + 61400 1.007716173671424e+00 -5.975462018777636e+00 -6.003514039234251e+00 3.853859666460119e+00 4.692780623962099e+00 9.227840060418508e+03 + 61420 9.880656526509789e-01 -5.956926822752814e+00 -6.042720833059705e+00 3.898191510991679e+00 4.405549027229331e+00 9.348666215615733e+03 + 61440 9.874291487349396e-01 -5.967071512064733e+00 -6.039586042098338e+00 3.883802295978281e+00 4.467412642938063e+00 9.338959027710413e+03 + 61460 9.924733247488995e-01 -5.985493713578509e+00 -5.996881111113571e+00 3.778586339306887e+00 4.713198140466488e+00 9.207471323719788e+03 + 61480 9.631281098509382e-01 -5.950982340350132e+00 -6.001048120617838e+00 3.937292676363648e+00 4.649807218412020e+00 9.220259219041198e+03 + 61500 9.361042557513533e-01 -5.918616241918593e+00 -6.013710878955661e+00 4.084007775800443e+00 4.537959654086078e+00 9.259196738327104e+03 + 61520 1.009468985185843e+00 -6.033395656617728e+00 -5.987169519466180e+00 3.514338262576454e+00 4.779775895572249e+00 9.177693111382318e+03 + 61540 9.556579681725801e-01 -5.957172580295218e+00 -6.017298306528891e+00 3.904178258574752e+00 4.558927034114937e+00 9.270215413067812e+03 + 61560 9.493016130907036e-01 -5.951123769430280e+00 -6.020912843343474e+00 3.938270706976001e+00 4.537531044742161e+00 9.281327491324368e+03 + 61580 1.037133609177831e+00 -6.083773028666744e+00 -5.961337793561862e+00 3.227619683112565e+00 4.930661749876199e+00 9.098745281281510e+03 + 61600 9.209993876193883e-01 -5.912683875298553e+00 -6.002464343208392e+00 4.129167001124174e+00 4.613633660903372e+00 9.224595407017185e+03 + 61620 1.012222573951757e+00 -6.047183087064413e+00 -5.965112585669097e+00 3.436039060176421e+00 4.907300579557374e+00 9.110253947074481e+03 + 61640 9.664280932335220e-01 -5.973504711746660e+00 -5.986885508384360e+00 3.774597786567704e+00 4.697763181602450e+00 9.176829978170630e+03 + 61660 1.036531160506776e+00 -6.065130922450602e+00 -6.007152881282404e+00 3.343551953980373e+00 4.676470838441042e+00 9.239031127924982e+03 + 61680 1.014199404011539e+00 -6.014874229730343e+00 -6.027816433136993e+00 3.614197544157571e+00 4.539881409397086e+00 9.302650967495252e+03 + 61700 1.016295471701983e+00 -5.997420507484690e+00 -6.000594426829979e+00 3.713019977643822e+00 4.694794841600741e+00 9.218873357462166e+03 + 61720 1.060831796567663e+00 -6.035962188316041e+00 -5.985337403125397e+00 3.497339565054176e+00 4.788034915779042e+00 9.172084354306195e+03 + 61740 1.035991851464412e+00 -5.967014161010237e+00 -6.006532667371546e+00 3.875933199721967e+00 4.649011820726231e+00 9.237119818548326e+03 + 61760 1.080023941157050e+00 -6.000579166758146e+00 -6.034217350568420e+00 3.696632132375853e+00 4.503476475445142e+00 9.322368273422075e+03 + 61780 1.062602893011554e+00 -5.950961623579061e+00 -6.009858696879664e+00 3.968022687923110e+00 4.629826578738411e+00 9.247323719914541e+03 + 61800 1.118335344043172e+00 -6.015475846394401e+00 -5.980909432842675e+00 3.599413862162734e+00 4.797899557911956e+00 9.158488227975347e+03 + 61820 9.610002317869664e-01 -5.768557617158664e+00 -6.024690141942383e+00 4.951543759679800e+00 4.480791165991579e+00 9.292980825482138e+03 + 61840 1.098420872777274e+00 -5.964453910789782e+00 -6.054651850838824e+00 3.853128526932120e+00 4.335197997084409e+00 9.385587797816775e+03 + 61860 1.119415722735803e+00 -5.998990463036236e+00 -5.989918173227140e+00 3.691034930448727e+00 4.743129422464862e+00 9.186124315691568e+03 + 61880 1.001699767413489e+00 -5.836786097264923e+00 -5.977728184221703e+00 4.560488750339738e+00 4.751177476316445e+00 9.148778409895034e+03 + 61900 1.101105259157638e+00 -6.002350162134237e+00 -5.994388917414124e+00 3.684674353016960e+00 4.730389052198491e+00 9.199804330202260e+03 + 61920 1.039551142340384e+00 -5.940931384539250e+00 -5.976452180464294e+00 4.057764312329887e+00 4.853798405302881e+00 9.144875624319682e+03 + 61940 1.037405410506732e+00 -5.972682296274963e+00 -5.964697660482469e+00 3.839291942830466e+00 4.885140957169362e+00 9.108958826526086e+03 + 61960 1.043446167178061e+00 -6.019473090481974e+00 -5.956644510137300e+00 3.582769076996329e+00 4.943540508026832e+00 9.084420124386215e+03 + 61980 9.589419657618914e-01 -5.928355678297665e+00 -5.991438818023042e+00 4.098911166457329e+00 4.736678016069892e+00 9.190768453901737e+03 + 62000 9.821405620457598e-01 -5.992649620525007e+00 -6.006455700600505e+00 3.702573201448218e+00 4.623296553170721e+00 9.236896578024307e+03 + 62020 9.842293825081374e-01 -6.020439686979874e+00 -6.005505616664406e+00 3.610226137823618e+00 4.695979880614947e+00 9.233972563026253e+03 + 62040 1.000551788281075e+00 -6.064314678382662e+00 -5.985112643750659e+00 3.400438728845703e+00 4.855229068177914e+00 9.171393246754955e+03 + 62060 9.593068364601743e-01 -6.015030097043269e+00 -5.996061753521810e+00 3.608884926969083e+00 4.717804090810970e+00 9.204948673939070e+03 + 62080 1.023472256985552e+00 -6.116734315578851e+00 -5.984083782340442e+00 3.041016604804892e+00 4.802716494263512e+00 9.168277009890386e+03 + 62100 9.762887797877424e-01 -6.050965579699074e+00 -5.998078885214180e+00 3.466713601933390e+00 4.770397185855176e+00 9.211161761834483e+03 + 62120 9.447407732966406e-01 -6.004985256120595e+00 -5.999653336523449e+00 3.688132561703374e+00 4.718749269142074e+00 9.215975014772112e+03 + 62140 9.933132964820502e-01 -6.072519951410456e+00 -5.977780611571165e+00 3.318984350281193e+00 4.862992300503858e+00 9.148981168243648e+03 + 62160 1.009551985966084e+00 -6.088909984053010e+00 -5.985461198268279e+00 3.230840174528006e+00 4.824859111151795e+00 9.172483647851468e+03 + 62180 9.763340907078902e-01 -6.031322237201060e+00 -5.986546614788339e+00 3.555813514048211e+00 4.812922066947229e+00 9.175795971341797e+03 + 62200 9.323589307472874e-01 -5.956211193106879e+00 -5.975315632102532e+00 3.979437486727563e+00 4.869736841612140e+00 9.141401099590341e+03 + 62220 9.921276796266080e-01 -6.032010190942015e+00 -5.953483249220325e+00 3.519514096861025e+00 4.970427948231929e+00 9.074806502756534e+03 + 62240 1.031795470403309e+00 -6.073394737109822e+00 -5.975621310147115e+00 3.363814138061624e+00 4.925244286070406e+00 9.142351020155264e+03 + 62260 9.536112681182901e-01 -5.941010123343466e+00 -6.017098952205382e+00 3.990864012669904e+00 4.553950182636570e+00 9.269579131694525e+03 + 62280 9.726710372682733e-01 -5.951866606819493e+00 -6.064821691377742e+00 3.904137240938172e+00 4.255531665661865e+00 9.417112208307291e+03 + 62300 1.041694028801626e+00 -6.040611859169137e+00 -6.016182569229875e+00 3.494766937278481e+00 4.635043700530121e+00 9.266816534616410e+03 + 62320 9.925665925326822e-01 -5.959190845944978e+00 -6.014172567323170e+00 3.908856189388596e+00 4.593142636841126e+00 9.260606731811275e+03 + 62340 1.013881059759537e+00 -5.981518206312482e+00 -6.024099340382332e+00 3.795905825467764e+00 4.551398364229489e+00 9.291175801670208e+03 + 62360 1.092360232183733e+00 -6.092675483993644e+00 -5.989566658670199e+00 3.232684683346760e+00 4.824751514393130e+00 9.185062222362441e+03 + 62380 9.552773004690862e-01 -5.888134196823943e+00 -6.078204050171570e+00 4.304062659803792e+00 4.212652148666976e+00 9.458679765310550e+03 + 62400 1.041221254466387e+00 -6.016961725408295e+00 -6.043056347443240e+00 3.556368285361887e+00 4.406528927507516e+00 9.349704430984682e+03 + 62420 9.881448993843789e-01 -5.941758463387218e+00 -6.028034201348557e+00 4.042513925707521e+00 4.547105287206215e+00 9.303283867627364e+03 + 62440 9.500091774352003e-01 -5.889110561049678e+00 -6.017635532659334e+00 4.332753172385853e+00 4.594742896228135e+00 9.271266324650172e+03 + 62460 1.045942099718244e+00 -6.034245581843242e+00 -5.990229476258861e+00 3.537263342832827e+00 4.790010632568669e+00 9.187108585145739e+03 + 62480 1.041267220510514e+00 -6.031799315898267e+00 -6.027085624843991e+00 3.568428332643041e+00 4.595495076118024e+00 9.300386961457316e+03 + 62500 1.015133324984090e+00 -5.997820906667676e+00 -6.034237312335010e+00 3.694762993830391e+00 4.485654357067993e+00 9.322444632233706e+03 + 62520 9.207585674399991e-01 -5.860863511680568e+00 -6.090763760628489e+00 4.420798014465952e+00 4.100675208058444e+00 9.497787003394165e+03 + 62540 9.799539536238322e-01 -5.953868800956807e+00 -6.025698070383503e+00 3.952119446535373e+00 4.539664665943770e+00 9.296106783440324e+03 + 62560 9.372357321256375e-01 -5.894654046886115e+00 -6.008913748105241e+00 4.262498999102810e+00 4.606402113070970e+00 9.244440377281002e+03 + 62580 1.004186675686261e+00 -5.996378856047244e+00 -5.997579892353412e+00 3.700146688628436e+00 4.693250152298653e+00 9.209609285987284e+03 + 62600 1.040755370728585e+00 -6.052610281810900e+00 -6.010377526584991e+00 3.434816672454946e+00 4.677323688459865e+00 9.248953849754813e+03 + 62620 9.496097883184544e-01 -5.921682269888001e+00 -6.085800819651408e+00 4.041137723039439e+00 4.098743613034460e+00 9.482330451516749e+03 + 62640 9.592711431186796e-01 -5.943179388812210e+00 -6.061478695649934e+00 3.938753673982306e+00 4.259460747361524e+00 9.406710323590094e+03 + 62660 9.505408697433528e-01 -5.936494254727672e+00 -6.004397087838798e+00 4.000724585280537e+00 4.610816009626987e+00 9.230547362491641e+03 + 62680 9.887608235021672e-01 -5.998039340307594e+00 -6.017020620553342e+00 3.629426255856961e+00 4.520432807342253e+00 9.269351089308431e+03 + 62700 9.535806300321217e-01 -5.951850506030696e+00 -6.026946260041028e+00 3.896256415330833e+00 4.465044974773135e+00 9.299956913181539e+03 + 62720 9.808653147112377e-01 -5.997834057687443e+00 -6.008898614797507e+00 3.669925498687258e+00 4.606391099526594e+00 9.244375769524222e+03 + 62740 9.939728060248710e-01 -6.021753472098739e+00 -6.004400870221325e+00 3.548416611570156e+00 4.648057936856735e+00 9.230564747109578e+03 + 62760 9.595626938313674e-01 -5.973989163775299e+00 -6.009209130175025e+00 3.847928156272395e+00 4.645689658932979e+00 9.245331499691067e+03 + 62780 1.038785530553660e+00 -6.094584750102364e+00 -5.982504882782291e+00 3.164588096572888e+00 4.808168039028162e+00 9.163427375525582e+03 + 62800 9.362208326602719e-01 -5.946202125227282e+00 -6.039942907344392e+00 3.982785769765413e+00 4.444511692509819e+00 9.340065965558764e+03 + 62820 9.802561974215329e-01 -6.015291345013821e+00 -6.032126282063255e+00 3.603209994133666e+00 4.506541180397724e+00 9.315938717151310e+03 + 62840 9.987509292056388e-01 -6.045058385066110e+00 -5.988875647776164e+00 3.485997207807608e+00 4.808607179576970e+00 9.182932591413235e+03 + 62860 9.968972976531207e-01 -6.044519275761417e+00 -5.972100256397201e+00 3.479877608147384e+00 4.895718824143745e+00 9.131564951422504e+03 + 62880 9.410044164211975e-01 -5.960201620236342e+00 -6.048849208050574e+00 3.854980487598586e+00 4.345952320199388e+00 9.367579203903319e+03 + 62900 9.309919540800997e-01 -5.942293960720907e+00 -6.009035903909819e+00 4.070177470257694e+00 4.686934904184629e+00 9.244773300186718e+03 + 62920 9.736347080751713e-01 -5.999049941115906e+00 -6.020748707029274e+00 3.690740800340071e+00 4.566143128592342e+00 9.280850188032719e+03 + 62940 9.723019485041715e-01 -5.985435939799022e+00 -6.008116200602258e+00 3.786045678251211e+00 4.655812110960015e+00 9.241985054443574e+03 + 62960 9.978929919981180e-01 -6.009337047123116e+00 -6.016034759536017e+00 3.640130496073930e+00 4.601671194931407e+00 9.266345357027192e+03 + 62980 1.019254025808548e+00 -6.025497904822311e+00 -5.987632241920867e+00 3.574885881588319e+00 4.792316377660808e+00 9.179100573120139e+03 + 63000 1.003169487026040e+00 -5.984122517482056e+00 -6.015452414939256e+00 3.754620831267056e+00 4.574719711781853e+00 9.264568342013066e+03 + 63020 9.676497819301970e-01 -5.912168855664488e+00 -6.047561826805097e+00 4.167440308500272e+00 4.389992916216324e+00 9.363624335001488e+03 + 63040 9.565425859529111e-01 -5.875982530335513e+00 -6.051408215110659e+00 4.366569811268846e+00 4.359248382252974e+00 9.375513406673968e+03 + 63060 1.067958257163999e+00 -6.021539261015828e+00 -5.980105855404756e+00 3.573404204162423e+00 4.811321230979996e+00 9.156056027586314e+03 + 63080 9.946599876636927e-01 -5.893957774742841e+00 -6.002282050612820e+00 4.291372390887616e+00 4.669357635714687e+00 9.224048738478006e+03 + 63100 1.089792442288648e+00 -6.017314007357442e+00 -5.979538346426750e+00 3.604474397393449e+00 4.821388088222113e+00 9.154350467366530e+03 + 63120 9.726452535579506e-01 -5.830765797444119e+00 -6.028357959621006e+00 4.636799562528878e+00 4.502194790020919e+00 9.304272590268925e+03 + 63140 9.735416466033833e-01 -5.822192481342206e+00 -6.024443646176032e+00 4.650996432021056e+00 4.489638945278620e+00 9.292188498274985e+03 + 63160 1.040035838520288e+00 -5.913879234620955e+00 -6.012294952823289e+00 4.060206572220924e+00 4.495088288519949e+00 9.254821057572992e+03 + 63180 1.067757413991905e+00 -5.952724203773219e+00 -5.957719729293175e+00 3.932977267674838e+00 4.904292187084172e+00 9.087696331810041e+03 + 63200 1.051236325078422e+00 -5.926754604541784e+00 -6.033236953731983e+00 4.083209543603873e+00 4.471771416463470e+00 9.319344456860643e+03 + 63220 1.035818133964888e+00 -5.911957496109834e+00 -6.042981958410058e+00 4.134838891773693e+00 4.382476153275797e+00 9.349473552506204e+03 + 63240 1.051097994216533e+00 -5.955218303861476e+00 -6.009131101455588e+00 4.020426590160113e+00 4.710850963396256e+00 9.245095004205272e+03 + 63260 1.051797539763915e+00 -5.988528570141257e+00 -6.017313130916915e+00 3.798827532460122e+00 4.633542130089904e+00 9.270256465046643e+03 + 63280 1.045175748241166e+00 -6.020585374904222e+00 -5.992258460238016e+00 3.622080871775229e+00 4.784738399364461e+00 9.193285966299331e+03 + 63300 1.035767515172722e+00 -6.054268053079390e+00 -5.959903248695666e+00 3.452035464448127e+00 4.993892774125758e+00 9.094373632438879e+03 + 63320 1.015026330337664e+00 -6.066835330791643e+00 -5.990318466121378e+00 3.358706176848615e+00 4.798077854731818e+00 9.187335266131149e+03 + 63340 9.970555028671690e-01 -6.074119722210478e+00 -5.991716586439683e+00 3.311886740136526e+00 4.785058297576477e+00 9.191643695491806e+03 + 63360 9.810017783266233e-01 -6.073658010202093e+00 -5.977892498282251e+00 3.349616434848223e+00 4.899516823957035e+00 9.149305590387963e+03 + 63380 9.412007876030098e-01 -6.028918703487610e+00 -6.015412211857866e+00 3.591688980111608e+00 4.669245345172426e+00 9.264425484014357e+03 + 63400 9.890615074255076e-01 -6.108043531385909e+00 -5.988648164586844e+00 3.166007308553706e+00 4.851593981087235e+00 9.182241638504895e+03 + 63420 9.341778757365110e-01 -6.030709756497517e+00 -6.006700611111914e+00 3.568556570728206e+00 4.706420798935578e+00 9.237614734038303e+03 + 63440 9.431517301872006e-01 -6.041912704524960e+00 -5.990189815162839e+00 3.459911971415075e+00 4.756912806223631e+00 9.186968925129273e+03 + 63460 9.724030191485896e-01 -6.077376288847645e+00 -6.030741523769957e+00 3.256717672097245e+00 4.524501709879904e+00 9.311671067761585e+03 + 63480 9.587000731377060e-01 -6.045475629840449e+00 -6.019802962996493e+00 3.495917176932145e+00 4.643333602782495e+00 9.277955724409121e+03 + 63500 9.758082618513113e-01 -6.055732366197238e+00 -6.037686743345152e+00 3.409396185721070e+00 4.513016944688863e+00 9.333116046426883e+03 + 63520 1.018554661161589e+00 -6.103709348471432e+00 -6.002403619862657e+00 3.133215493447401e+00 4.714928664129824e+00 9.224421320409414e+03 + 63540 9.578367941351583e-01 -5.995780988326104e+00 -5.959428345930609e+00 3.747924371305220e+00 4.956666869493375e+00 9.092900932048427e+03 + 63560 9.836339129491385e-01 -6.011622960492484e+00 -5.936206395847993e+00 3.662026562922744e+00 5.095080147787073e+00 9.022209492959721e+03 + 63580 1.033412068905945e+00 -6.054295168389799e+00 -5.946349270318334e+00 3.422230277243330e+00 5.042072328543416e+00 9.053062157580473e+03 + 63600 9.633518663308341e-01 -5.917994813366662e+00 -5.974590427552318e+00 4.165277041592708e+00 4.840296266795684e+00 9.139151289261952e+03 + 63620 1.079082895628374e+00 -6.057917503651106e+00 -5.988445387321409e+00 3.395420855696954e+00 4.794340498437334e+00 9.181602977145136e+03 + 63640 1.066937998134108e+00 -6.012031543523505e+00 -6.015986834747791e+00 3.647865266392897e+00 4.625153372103705e+00 9.266177275782313e+03 + 63660 9.590676294688957e-01 -5.835152013036339e+00 -6.015161639498864e+00 4.547121023721136e+00 4.513477892173653e+00 9.263641765780701e+03 + 63680 1.050004058555014e+00 -5.960081826383608e+00 -5.966087868823276e+00 3.908938302113195e+00 4.874450676992555e+00 9.113249083698343e+03 + 63700 9.970490695695864e-01 -5.875049817588802e+00 -6.056023678900576e+00 4.323227444074279e+00 4.284047526807540e+00 9.389839982689407e+03 + 63720 1.083089367344297e+00 -6.003965415036575e+00 -6.012463110061224e+00 3.645671099011806e+00 4.596876019166213e+00 9.255356971774141e+03 + 63740 1.051153336589059e+00 -5.961332354006992e+00 -6.040388512163151e+00 3.878079666453758e+00 4.424126972420159e+00 9.341444740003302e+03 + 63760 1.083365784035015e+00 -6.019219517544811e+00 -6.014347335876942e+00 3.620314324462615e+00 4.648291145567196e+00 9.261150429711006e+03 + 63780 1.032685919531419e+00 -5.957346737645543e+00 -5.971003760027084e+00 3.959490343707411e+00 4.881069607775220e+00 9.128251382842845e+03 + 63800 1.031562011414852e+00 -5.966715971027805e+00 -5.992356140146033e+00 3.847877141665916e+00 4.700647322785697e+00 9.193560409605112e+03 + 63820 9.826097130509681e-01 -5.905540093673393e+00 -5.967192268765917e+00 4.284850139611770e+00 4.930833809587237e+00 9.116584118599885e+03 + 63840 1.100853739646476e+00 -6.089504480569790e+00 -5.960360254057188e+00 3.205962216755573e+00 4.947528350395399e+00 9.095765532755844e+03 + 63860 9.849448545436508e-01 -5.928847265594642e+00 -6.022574632366561e+00 4.085189858624841e+00 4.546992814357351e+00 9.286470362955388e+03 + 63880 9.720291663615844e-01 -5.921380308032722e+00 -5.996957249363682e+00 4.164720457036360e+00 4.730745964420116e+00 9.207685268601112e+03 + 63900 1.047401620420432e+00 -6.045451087206579e+00 -6.009815172994442e+00 3.469849536443568e+00 4.674476470489564e+00 9.247174315891651e+03 + 63920 9.809733085804676e-01 -5.960149789772365e+00 -6.023239982916328e+00 3.884324132360903e+00 4.522050480152428e+00 9.288483149847350e+03 + 63940 1.053199632197324e+00 -6.080106765712756e+00 -6.013735751855746e+00 3.248032434096804e+00 4.629145066544958e+00 9.259248799059511e+03 + 63960 9.877683868624596e-01 -5.997542995359620e+00 -6.061201055691757e+00 3.675353555461201e+00 4.309819121981071e+00 9.405887542931845e+03 + 63980 1.023412254304517e+00 -6.068572196595353e+00 -6.037023337804508e+00 3.316363935803186e+00 4.497522365150341e+00 9.331051454147302e+03 + 64000 9.999428493318253e-01 -6.052234124500551e+00 -6.000743982801942e+00 3.464495468062789e+00 4.760159829769878e+00 9.219330110785777e+03 + 64020 9.788109166119257e-01 -6.038694633809921e+00 -5.990272997322874e+00 3.515270643167516e+00 4.793315173100173e+00 9.187228767440844e+03 + 64040 9.431802059214314e-01 -6.002256265297605e+00 -6.013522833961148e+00 3.743658299423639e+00 4.678963918661708e+00 9.258620186988923e+03 + 64060 9.959410490842744e-01 -6.097752835463974e+00 -5.961518996163914e+00 3.195947535217797e+00 4.978223322597238e+00 9.099306205061061e+03 + 64080 9.991437026211243e-01 -6.116395563626105e+00 -5.995673910249413e+00 3.068946390236556e+00 4.762148805541004e+00 9.203772492950140e+03 + 64100 9.012918200693659e-01 -5.986037504265739e+00 -6.012068394990893e+00 3.767635637969929e+00 4.618162235158776e+00 9.254126152055987e+03 + 64120 9.536172658211376e-01 -6.076830493393514e+00 -5.971744228244576e+00 3.313155259410928e+00 4.916576855943102e+00 9.130516818798313e+03 + 64140 9.284630465325070e-01 -6.050797924434632e+00 -5.984877701408317e+00 3.412095194996383e+00 4.790619316735028e+00 9.170695536385090e+03 + 64160 9.998991724579729e-01 -6.168173788979657e+00 -5.949919739300433e+00 2.749653268815461e+00 5.002901796778601e+00 9.063971633579207e+03 + 64180 9.439124970492788e-01 -6.092913662317181e+00 -5.956767015278292e+00 3.199348662237875e+00 4.981123778160713e+00 9.084813368912364e+03 + 64200 9.385852828956505e-01 -6.086118753526614e+00 -5.950661854440766e+00 3.247689945587998e+00 5.025504422026325e+00 9.066207414032049e+03 + 64220 9.148537615345610e-01 -6.042122505993161e+00 -5.973313163090566e+00 3.435077419313483e+00 4.830191314471584e+00 9.135273165151502e+03 + 64240 9.245475844427506e-01 -6.037806175121528e+00 -5.971605332050583e+00 3.568477932646315e+00 4.948613418107036e+00 9.130085711074324e+03 + 64260 9.848795098625867e-01 -6.099719151414170e+00 -6.010500232468728e+00 3.111559733132043e+00 4.623868572299852e+00 9.249320210605580e+03 + 64280 9.700409506299921e-01 -6.041682246506971e+00 -5.959574771135442e+00 3.489743346097691e+00 4.961217175771765e+00 9.093373406328697e+03 + 64300 9.737872241227268e-01 -6.008814554034523e+00 -6.016241951943336e+00 3.646814762793901e+00 4.604165494615392e+00 9.266969253243387e+03 + 64320 1.016064463553220e+00 -6.032558577175618e+00 -6.023308201655522e+00 3.520882209802991e+00 4.573999297530371e+00 9.288729412547880e+03 + 64340 1.037315711666094e+00 -6.031541456443989e+00 -6.007600111893867e+00 3.534835978147906e+00 4.672310883465808e+00 9.240404949706241e+03 + 64360 9.649142831509903e-01 -5.896972552677491e+00 -6.058551598388345e+00 4.215769125099045e+00 4.287957240350813e+00 9.397654582782283e+03 + 64380 1.025117706058997e+00 -5.966809639269153e+00 -5.986917515032474e+00 3.903565426230929e+00 4.788102891914217e+00 9.176928187464478e+03 + 64400 1.020933410005892e+00 -5.944262583515158e+00 -6.017443361356163e+00 4.037029147961219e+00 4.616813796909401e+00 9.270652578499083e+03 + 64420 1.027090491795923e+00 -5.941823694277510e+00 -6.030347418546517e+00 4.034122480802441e+00 4.525805557047749e+00 9.310429711275696e+03 + 64440 1.046640420097573e+00 -5.965068629878888e+00 -6.013342041069015e+00 3.819155700362068e+00 4.541962303022121e+00 9.258041950422437e+03 + 64460 1.034303980051276e+00 -5.945071456550881e+00 -6.007806346454960e+00 3.984747330179707e+00 4.624513884157647e+00 9.241021943580852e+03 + 64480 1.069040529355787e+00 -5.998658381675496e+00 -5.999314586795114e+00 3.690671452692228e+00 4.686903421347968e+00 9.214930940993607e+03 + 64500 1.050366223289714e+00 -5.979657760768457e+00 -6.012513298911346e+00 3.813499654857318e+00 4.624838070462753e+00 9.255478066821985e+03 + 64520 1.024220389518448e+00 -5.955721172545180e+00 -6.000350051796507e+00 3.939363493846116e+00 4.683097562888252e+00 9.218115310327361e+03 + 64540 9.686638425223425e-01 -5.893148984685073e+00 -5.969162556883545e+00 4.247731096008412e+00 4.811249401382502e+00 9.122599340269107e+03 + 64560 1.007566538529166e+00 -5.970480128273235e+00 -5.978455103265956e+00 3.899439408644982e+00 4.853645868113384e+00 9.150994555630596e+03 + 64580 1.061777414370436e+00 -6.074375128553481e+00 -5.997358452317220e+00 3.249049970713299e+00 4.691291643954038e+00 9.208941176148834e+03 + 64600 1.018431868111114e+00 -6.042026754401425e+00 -6.021148991222343e+00 3.471563606481154e+00 4.591446953478852e+00 9.282072800452497e+03 + 64620 1.029262285182320e+00 -6.096637947101426e+00 -5.946683812199510e+00 3.153458579688695e+00 5.014518427622882e+00 9.054096920132217e+03 + 64640 9.134714978100078e-01 -5.960016390640591e+00 -5.979065629924038e+00 3.886339670086495e+00 4.776955990260692e+00 9.152871573913413e+03 + 64660 9.420054659269362e-01 -6.031307049847252e+00 -5.989908942815747e+00 3.563332386623765e+00 4.801046723535025e+00 9.186075635613020e+03 + 64680 9.537796330940300e-01 -6.073486171931947e+00 -5.975957093140080e+00 3.259896325208257e+00 4.819923388207326e+00 9.143390278421350e+03 + 64700 9.000014209250177e-01 -6.008927568786804e+00 -5.996907326681081e+00 3.617032139815997e+00 4.686054230113515e+00 9.207533603663083e+03 + 64720 9.391145902626992e-01 -6.073534241902999e+00 -5.950645542947768e+00 3.268666940564259e+00 4.974312866929900e+00 9.066133227863767e+03 + 64740 9.146288719772045e-01 -6.035370666309253e+00 -5.975463930218833e+00 3.465042715376859e+00 4.809036464545505e+00 9.141859643353882e+03 + 64760 9.076184985577325e-01 -6.016356531816990e+00 -6.001078497550845e+00 3.571243151386206e+00 4.658971988410569e+00 9.220340560702023e+03 + 64780 9.500738065128423e-01 -6.065818570151616e+00 -5.971159900293564e+00 3.330284273328868e+00 4.873829004035618e+00 9.128726214208580e+03 + 64800 9.672868602691956e-01 -6.070252257671067e+00 -5.973831144058171e+00 3.310312532916163e+00 4.863977488400518e+00 9.136894988586977e+03 + 64820 9.664753299124628e-01 -6.043320016496931e+00 -6.012980407392427e+00 3.529458946498544e+00 4.703673677015943e+00 9.256930189246999e+03 + 64840 1.009254894978494e+00 -6.083905402931973e+00 -5.979721831199498e+00 3.291163401801165e+00 4.889401593044656e+00 9.154903732138358e+03 + 64860 9.163804821305365e-01 -5.927712742811967e+00 -6.043538323884180e+00 4.053852975147618e+00 4.388764564680229e+00 9.351162529101835e+03 + 64880 1.004335754429459e+00 -6.046168460384418e+00 -6.012922561121409e+00 3.395966662462893e+00 4.586869760817377e+00 9.256756406300470e+03 + 64900 9.785601404543814e-01 -5.998079173769749e+00 -5.996594971584521e+00 3.681360492122154e+00 4.689883010749279e+00 9.206583683093564e+03 + 64920 9.418083124871265e-01 -5.936704586594055e+00 -5.962354565768304e+00 4.069989736517211e+00 4.922703586777225e+00 9.101806072650708e+03 + 64940 1.012619760062547e+00 -6.033709330558290e+00 -5.942335565745022e+00 3.547634779361724e+00 5.072317076963913e+00 9.040851269551256e+03 + 64960 9.779389512979354e-01 -5.973677078602233e+00 -6.021578174883611e+00 3.868243757715872e+00 4.593188250197503e+00 9.283348066337887e+03 + 64980 1.026584869206489e+00 -6.037793852602053e+00 -5.968670948976789e+00 3.538189305087060e+00 4.935103714438090e+00 9.121132064253348e+03 + 65000 1.067320443101444e+00 -6.088564064523519e+00 -5.985956280975747e+00 3.235496913915009e+00 4.824686685549507e+00 9.174010163653107e+03 + 65020 1.029673062480023e+00 -6.027275475778575e+00 -6.027297861084548e+00 3.559551650318989e+00 4.559423110427975e+00 9.301027229893471e+03 + 65040 1.003843487973755e+00 -5.985678054646538e+00 -6.011318927153048e+00 3.753035770641685e+00 4.605801912797109e+00 9.251822818791636e+03 + 65060 9.384906951971138e-01 -5.885053660365489e+00 -6.034089932465076e+00 4.360484697480792e+00 4.504695359796398e+00 9.321997799160343e+03 + 65080 1.014985074561174e+00 -5.996578142215457e+00 -5.981380839725297e+00 3.761363707288488e+00 4.848628969961949e+00 9.159978894482419e+03 + 65100 1.006127457841999e+00 -5.982226365677290e+00 -6.005286813221590e+00 3.824396016630733e+00 4.691979358238637e+00 9.233255265620492e+03 + 65120 1.057079849448710e+00 -6.056032506821980e+00 -5.960761782739610e+00 3.448938388987679e+00 4.995997629765552e+00 9.096973977851269e+03 + 65140 9.903610856138942e-01 -5.955277711245982e+00 -6.010610842866301e+00 3.905726954719058e+00 4.587995550180739e+00 9.249657267387141e+03 + 65160 1.035476465765714e+00 -6.022076625451336e+00 -5.990924337993498e+00 3.593929009528255e+00 4.772810264912069e+00 9.189217584941072e+03 + 65180 1.024168478001474e+00 -6.007248065976556e+00 -6.007640659200170e+00 3.639812455979983e+00 4.637558124936384e+00 9.240512647310392e+03 + 65200 1.037538230851910e+00 -6.030355859083431e+00 -5.992645483484951e+00 3.539139371737331e+00 4.755678184085564e+00 9.194475911953839e+03 + 65220 9.709320167017754e-01 -5.936597078312797e+00 -6.025931880681961e+00 4.076361857974038e+00 4.563387598254309e+00 9.296814953241024e+03 + 65240 1.011848355317985e+00 -6.004868698169473e+00 -6.025245751577766e+00 3.670019131092265e+00 4.553010937083019e+00 9.294717432464824e+03 + 65260 1.003083360316010e+00 -6.005002877391429e+00 -6.001470092435295e+00 3.657537947055058e+00 4.677823744969885e+00 9.221577859794483e+03 + 65280 9.683333856162043e-01 -5.969752795817261e+00 -5.975427521017936e+00 3.885502785680778e+00 4.852917635417615e+00 9.141774253391281e+03 + 65300 1.038412366021512e+00 -6.091147939071012e+00 -5.956789767536760e+00 3.308143917381589e+00 5.079649330191115e+00 9.084871340500720e+03 + 65320 9.925924209430970e-01 -6.039985299828668e+00 -6.020393983662579e+00 3.496458617817496e+00 4.608954986989559e+00 9.279756171725643e+03 + 65340 1.010008596808134e+00 -6.086734220465566e+00 -5.996513120714971e+00 3.232162502072427e+00 4.750226018510409e+00 9.206368857462694e+03 + 65360 9.799924558539395e-01 -6.064151136444650e+00 -6.031023880036420e+00 3.291011859489346e+00 4.481233692211761e+00 9.312544276754390e+03 + 65380 9.012529040917340e-01 -5.968171219025514e+00 -6.043665424280020e+00 3.898135853912164e+00 4.464636444650285e+00 9.351598052723786e+03 + 65400 9.642036714007344e-01 -6.080606681974887e+00 -5.982343121207280e+00 3.258656819141077e+00 4.822901391305560e+00 9.162939028336295e+03 + 65420 9.039621025853570e-01 -6.005243006138436e+00 -6.023360700358520e+00 3.667862640113202e+00 4.563828036197359e+00 9.288912686773288e+03 + 65440 9.496784284127945e-01 -6.081372628716927e+00 -6.015455702074739e+00 3.296880524606193e+00 4.675385717997068e+00 9.264566402577902e+03 + 65460 9.560247752394526e-01 -6.097050538188340e+00 -5.984841481842047e+00 3.174785640158057e+00 4.819107405993822e+00 9.170596573162375e+03 + 65480 8.897071586753078e-01 -5.998160502356225e+00 -6.003138140084513e+00 3.688669631673723e+00 4.660087265550948e+00 9.226695077685928e+03 + 65500 9.236939524587462e-01 -6.040874936089637e+00 -5.958076305611851e+00 3.571311431775914e+00 5.046753981026018e+00 9.088777933226927e+03 + 65520 8.926273735148095e-01 -5.976039401548469e+00 -6.004281606456678e+00 3.870696670831116e+00 4.708525559781101e+00 9.230169476704792e+03 + 65540 1.004628263302945e+00 -6.109323879684482e+00 -5.978979818912937e+00 3.115000110958515e+00 4.863455878586937e+00 9.152638205697107e+03 + 65560 9.869444908529879e-01 -6.040084528575243e+00 -5.984210842090697e+00 3.499814479920748e+00 4.820649834140057e+00 9.168645807772566e+03 + 65580 9.873381112222560e-01 -5.995383254057569e+00 -5.991359297255277e+00 3.747231364349282e+00 4.770337547013346e+00 9.190510404304303e+03 + 65600 1.009087101763911e+00 -5.985141372284248e+00 -5.999489335263834e+00 3.792665629162518e+00 4.710277405393641e+00 9.215465285206836e+03 + 65620 1.006374393719334e+00 -5.945954033771187e+00 -5.964021731258882e+00 3.983479218716111e+00 4.879731703774622e+00 9.106920411561478e+03 + 65640 1.051625152358919e+00 -5.988803663372094e+00 -5.930860814378379e+00 3.795478350712310e+00 5.128195156261128e+00 9.006013941773670e+03 + 65660 1.027173570656162e+00 -5.935844075734046e+00 -6.008215015130796e+00 3.988209467142583e+00 4.572644333759770e+00 9.242254966231147e+03 + 65680 1.037263720448094e+00 -5.940491094624026e+00 -6.004130739484976e+00 4.020172792703154e+00 4.654744103708365e+00 9.229714471618590e+03 + 65700 1.084085947395097e+00 -6.005852054149685e+00 -5.975157787896073e+00 3.644440109079292e+00 4.820691335829882e+00 9.140948357116173e+03 + 65720 1.021761627670598e+00 -5.915823574383295e+00 -6.001769146410700e+00 4.171802136086452e+00 4.678289361470806e+00 9.222457120824361e+03 + 65740 1.033934755220310e+00 -5.940126940296423e+00 -5.976461440512929e+00 4.021786679448097e+00 4.813148356459184e+00 9.144898209822917e+03 + 65760 1.036441992390758e+00 -5.952787181425724e+00 -5.977604823172205e+00 3.898388226281408e+00 4.755881486855470e+00 9.148378541275106e+03 + 65780 1.030850235373520e+00 -5.954660149639988e+00 -5.991733005644645e+00 3.906453683794074e+00 4.693575607609407e+00 9.191667521652489e+03 + 65800 1.050284424259468e+00 -5.998288856097114e+00 -5.987344594279081e+00 3.681581368265392e+00 4.744425013243579e+00 9.178265888476664e+03 + 65820 1.048424297951453e+00 -6.014298556954945e+00 -5.994216516240106e+00 3.605839788498586e+00 4.721153973968944e+00 9.199306971269385e+03 + 65840 9.826398690321234e-01 -5.937806110113588e+00 -6.047868363229944e+00 4.007036953895847e+00 4.375042464423106e+00 9.364575751794138e+03 + 65860 9.507494460634326e-01 -5.918546221309120e+00 -6.045657876051258e+00 4.144769902491953e+00 4.414875110497596e+00 9.357744211436040e+03 + 65880 9.678010132556403e-01 -5.971177177239504e+00 -5.981712048091866e+00 3.832975320548464e+00 4.772482461848202e+00 9.160990161708822e+03 + 65900 9.806523536526537e-01 -6.016506413659373e+00 -6.018009402919178e+00 3.587640243152220e+00 4.579009846235585e+00 9.272376971936599e+03 + 65920 1.001996832718228e+00 -6.072640247923573e+00 -5.974638947129709e+00 3.307789107795037e+00 4.870527742605686e+00 9.139338706694680e+03 + 65940 8.362494505360685e-01 -5.845763840940982e+00 -6.033986838383822e+00 4.581840166405690e+00 4.501034587674185e+00 9.321634277470328e+03 + 65960 9.685513427013865e-01 -6.054775826518066e+00 -6.020480638600156e+00 3.411766486757421e+00 4.608694762945237e+00 9.280017166913136e+03 + 65980 1.000186941491519e+00 -6.111611955304877e+00 -6.017308216337502e+00 3.103497600416114e+00 4.645004263023223e+00 9.270279126783626e+03 + 66000 9.489219361313744e-01 -6.044266879635019e+00 -5.997940290008605e+00 3.463108118783460e+00 4.729122565434905e+00 9.210747325041646e+03 + 66020 9.086926446539003e-01 -5.989472255321003e+00 -6.000297832461674e+00 3.756564235457341e+00 4.694402096262952e+00 9.217968081998026e+03 + 66040 9.277615129053453e-01 -6.017352757286945e+00 -6.010038721248334e+00 3.635680278203657e+00 4.677678604980779e+00 9.247902358605816e+03 + 66060 9.794090038239940e-01 -6.086187501379802e+00 -5.987340074726680e+00 3.168441835601116e+00 4.736039056033186e+00 9.178243522210916e+03 + 66080 9.417669373413964e-01 -6.008690786281882e+00 -5.976708207053990e+00 3.678000555376230e+00 4.861649474590924e+00 9.145683887280740e+03 + 66100 1.000215049339553e+00 -6.052678144365359e+00 -5.993653542982336e+00 3.432429232489508e+00 4.771357627658372e+00 9.197577922340170e+03 + 66120 1.028825314580359e+00 -6.034443765971251e+00 -6.022993388571798e+00 3.470564400696274e+00 4.536314239664108e+00 9.287778826239575e+03 + 66140 1.059935851645271e+00 -6.023614309514848e+00 -5.999584225678230e+00 3.632705578667405e+00 4.770690038700721e+00 9.215777071489298e+03 + 66160 9.943458397351257e-01 -5.881515535691016e+00 -6.079259654071235e+00 4.302286561533712e+00 4.166809232991076e+00 9.461966536610344e+03 + 66180 1.038513027392710e+00 -5.918312898995234e+00 -6.030028781513463e+00 4.153125524339658e+00 4.511635638943038e+00 9.309445311974983e+03 + 66200 1.039159144016930e+00 -5.900715105194053e+00 -6.012811675723380e+00 4.270247900368642e+00 4.626572045501020e+00 9.256393245515907e+03 + 66220 1.017344842690053e+00 -5.856375271147563e+00 -6.078088269222683e+00 4.462091269866718e+00 4.188980924943811e+00 9.458293276741186e+03 + 66240 1.098874202506519e+00 -5.975904190827492e+00 -6.002415928529254e+00 3.775197110290220e+00 4.622962609728551e+00 9.224470784238101e+03 + 66260 1.021910740955346e+00 -5.868599591197086e+00 -6.033830672377805e+00 4.350607704021588e+00 4.401825266454720e+00 9.321172765028748e+03 + 66280 1.036896364342283e+00 -5.902700980366088e+00 -5.978564734365579e+00 4.264910292913122e+00 4.829288877570055e+00 9.151350441953069e+03 + 66300 1.056316060038446e+00 -5.950485955261097e+00 -6.009379716435562e+00 4.002631820567734e+00 4.664454730123869e+00 9.245855476495253e+03 + 66320 1.061106089337134e+00 -5.983950321191948e+00 -6.042194041750245e+00 3.776869866940574e+00 4.442425410308203e+00 9.347013184925141e+03 + 66340 1.028227756942927e+00 -5.966705195385762e+00 -6.039706573178593e+00 3.829236105727062e+00 4.410050897513921e+00 9.339320019430890e+03 + 66360 1.009642267512452e+00 -5.975541743516080e+00 -6.031870641667219e+00 3.778378275514280e+00 4.454929025461619e+00 9.315141589134480e+03 + 66380 1.001259269424995e+00 -5.999262095099518e+00 -5.962426830428608e+00 3.720313085744203e+00 4.931826875723354e+00 9.102069121245207e+03 + 66400 9.808064890756144e-01 -5.996607716908096e+00 -5.986143317378830e+00 3.712107937065821e+00 4.772196138523463e+00 9.174565021907893e+03 + 66420 1.021969614834881e+00 -6.078796615315443e+00 -5.960398230718621e+00 3.306158372626605e+00 4.986020219072358e+00 9.095875325393972e+03 + 66440 1.008992778473687e+00 -6.075740271776201e+00 -6.000497024864034e+00 3.265584124303698e+00 4.697642491928189e+00 9.218576962236022e+03 + 66460 9.707859594392138e-01 -6.031865596499809e+00 -5.993764792980953e+00 3.509778023369268e+00 4.728558733254836e+00 9.197912243302902e+03 + 66480 9.674582828572478e-01 -6.035874514306466e+00 -5.978438312000026e+00 3.523455593067601e+00 4.853263154934758e+00 9.150939056174198e+03 + 66500 1.011028275251947e+00 -6.104478554816213e+00 -5.957977229681997e+00 3.128481771363345e+00 4.969715051290809e+00 9.088497147669861e+03 + 66520 9.502387219030255e-01 -6.012459575134059e+00 -5.979313899490331e+00 3.650642406741583e+00 4.840970005564605e+00 9.153646469345460e+03 + 66540 9.812583064152390e-01 -6.053666709093042e+00 -5.974959501882983e+00 3.383037952630608e+00 4.834986916331717e+00 9.140359262247450e+03 + 66560 1.005096735630868e+00 -6.079169725195517e+00 -6.002865489373760e+00 3.242606654428866e+00 4.680757384559727e+00 9.225869155006754e+03 + 66580 9.856015989794916e-01 -6.037726468804369e+00 -5.988099357367100e+00 3.531486001132701e+00 4.816452554776172e+00 9.180564972122798e+03 + 66600 1.048041396884860e+00 -6.115813113591607e+00 -6.015858040122514e+00 3.057793715233170e+00 4.631751215090333e+00 9.265792308425380e+03 + 66620 9.515362309107479e-01 -5.955568073369918e+00 -6.001708506613787e+00 3.984684510038653e+00 4.719739002143386e+00 9.222293716203998e+03 + 66640 9.667443991818453e-01 -5.955054298416461e+00 -5.998908789975001e+00 3.953817882218950e+00 4.701998605229178e+00 9.213707138543801e+03 + 66660 1.049771411269174e+00 -6.046665160704982e+00 -6.007509090243469e+00 3.414495034433906e+00 4.639335250406230e+00 9.240129352248900e+03 + 66680 1.053909361415176e+00 -6.012327492144130e+00 -6.028049558773636e+00 3.627871876363014e+00 4.537593336794436e+00 9.303383837420297e+03 + 66700 1.095141144734686e+00 -6.025159775163508e+00 -6.014240101003487e+00 3.594268996625141e+00 4.656971455466095e+00 9.260811879148709e+03 + 66720 1.026965082676056e+00 -5.880312190285263e+00 -6.018750122208087e+00 4.339686530909246e+00 4.544754502607664e+00 9.274676773089766e+03 + 66740 1.010145147482338e+00 -5.815487937938616e+00 -6.005711378019738e+00 4.654569877237144e+00 4.562277447309124e+00 9.234555626392568e+03 + 66760 1.048762111081591e+00 -5.837736189181189e+00 -5.995657693440072e+00 4.621929162544646e+00 4.715119446816336e+00 9.203702238019401e+03 + 66780 1.115762964018743e+00 -5.911906356752661e+00 -6.015723986964097e+00 4.157036662960107e+00 4.560899764559687e+00 9.265375414561524e+03 + 66800 1.116268487657590e+00 -5.903186854658027e+00 -6.081795410689168e+00 4.176823700701704e+00 4.151225732386176e+00 9.469847933622794e+03 + 66820 1.095134352761502e+00 -5.880257532104053e+00 -6.020076811910725e+00 4.308386239376802e+00 4.505522297763269e+00 9.278795665326030e+03 + 66840 1.078127823531492e+00 -5.872742073277237e+00 -6.015611673989055e+00 4.323527317778314e+00 4.503147961491802e+00 9.265027402414187e+03 + 66860 1.137973816295192e+00 -5.981754680925326e+00 -5.989274338927561e+00 3.793762207374999e+00 4.750583167462853e+00 9.184135089951440e+03 + 66880 1.036874470606254e+00 -5.855342843920053e+00 -6.006138197315748e+00 4.447567942029046e+00 4.581677687325445e+00 9.235889011285606e+03 + 66900 1.070158445527667e+00 -5.926512521077340e+00 -5.972705181102745e+00 4.079373587288482e+00 4.814128185131570e+00 9.133409982798079e+03 + 66920 1.088564430202816e+00 -5.972142382717666e+00 -5.993601005026102e+00 3.805342506233287e+00 4.682123776227175e+00 9.197421557218202e+03 + 66940 1.006426755327136e+00 -5.869971822154353e+00 -6.028166440119970e+00 4.417048843452437e+00 4.508670866555851e+00 9.303719582091559e+03 + 66960 1.081900197157130e+00 -6.002306888112274e+00 -5.967119161378948e+00 3.675281130655204e+00 4.877334502841082e+00 9.116387924530405e+03 + 66980 1.088097451201461e+00 -6.031423165507640e+00 -5.968239967093509e+00 3.521331181368849e+00 4.884138884231144e+00 9.119794393217377e+03 + 67000 1.103228995250296e+00 -6.076021468861845e+00 -5.958982023074690e+00 3.336552354408358e+00 5.008610963913902e+00 9.091541335409187e+03 + 67020 1.027583359717498e+00 -5.986653485669094e+00 -5.997495118330890e+00 3.761345551983900e+00 4.699091219502638e+00 9.209339501114942e+03 + 67040 1.014706612148430e+00 -5.989934009189948e+00 -5.997156832530576e+00 3.754800494626177e+00 4.713325925275992e+00 9.208313116772029e+03 + 67060 1.040635173676036e+00 -6.050799484830972e+00 -5.991319681653319e+00 3.462073760722270e+00 4.803615995038147e+00 9.190419908470925e+03 + 67080 9.698011664835811e-01 -5.966980392218113e+00 -6.039105405882834e+00 3.866567646890093e+00 4.452414657117471e+00 9.337491527374495e+03 + 67100 1.016328484648592e+00 -6.055741912859453e+00 -6.001822375230550e+00 3.392924029959580e+00 4.702538359046229e+00 9.222650045968225e+03 + 67120 9.557520264875738e-01 -5.983660194742318e+00 -5.982653333450770e+00 3.838982628312434e+00 4.844764181659784e+00 9.163872304303752e+03 + 67140 1.019054589811699e+00 -6.091309016576842e+00 -5.990400483389245e+00 3.246341536623550e+00 4.825773949731774e+00 9.187597138523643e+03 + 67160 9.915328225313034e-01 -6.060778764218854e+00 -6.017977773498224e+00 3.371108377924387e+00 4.616878290074155e+00 9.272331784289152e+03 + 67180 9.797132048054482e-01 -6.054474270656016e+00 -5.967256539502397e+00 3.428317288122126e+00 4.929134997306477e+00 9.116816226790017e+03 + 67200 9.345195194065260e-01 -5.994812521895781e+00 -5.977431263349357e+00 3.760857023160169e+00 4.860662899474806e+00 9.147883485213832e+03 + 67220 1.003377521671321e+00 -6.097177291491713e+00 -5.993972075669360e+00 3.189320733829012e+00 4.781941054036496e+00 9.198569881132695e+03 + 67240 9.546442102043721e-01 -6.022419168833876e+00 -5.998959243423464e+00 3.618307026090377e+00 4.753017548208689e+00 9.213859248063514e+03 + 67260 9.678491396713700e-01 -6.036449700749381e+00 -6.006381804476407e+00 3.481589931986799e+00 4.654244445378132e+00 9.236661668033212e+03 + 67280 9.962405040836424e-01 -6.066228666249370e+00 -6.003467747661274e+00 3.382320103174941e+00 4.742703009928553e+00 9.227688911367388e+03 + 67300 1.020212172084835e+00 -6.082418223474006e+00 -5.970584510195091e+00 3.291506201502911e+00 4.933672689361639e+00 9.126942942537040e+03 + 67320 9.928949344478569e-01 -6.010845662997401e+00 -5.965180181310235e+00 3.594260160795600e+00 4.856478423353758e+00 9.110459511567657e+03 + 67340 9.856079590311468e-01 -5.958527608794398e+00 -5.990866575734909e+00 3.980608240359346e+00 4.794912887747974e+00 9.188971501080820e+03 + 67360 1.043283510469743e+00 -5.994222007634857e+00 -5.974063776096210e+00 3.738326097246118e+00 4.854077782217278e+00 9.137602572502101e+03 + 67380 1.043846087696103e+00 -5.946161940339536e+00 -6.037293512349077e+00 3.950551494149342e+00 4.427259905105365e+00 9.331893400728059e+03 + 67400 1.046429468372025e+00 -5.915281201213435e+00 -5.990180170725436e+00 4.147378769229214e+00 4.717297295713229e+00 9.186939907353528e+03 + 67420 1.122460512161498e+00 -6.005906514982960e+00 -5.970234743751491e+00 3.631020468335558e+00 4.835853298935407e+00 9.125890441610976e+03 + 67440 1.015434321342362e+00 -5.834627956780679e+00 -6.011704940725734e+00 4.561391755898439e+00 4.544588311511231e+00 9.252995649051925e+03 + 67460 1.147148237960281e+00 -6.026490566956131e+00 -5.966454008886611e+00 3.579036279715770e+00 4.923775486778290e+00 9.114338078953115e+03 + 67480 1.033007583873164e+00 -5.860699626104386e+00 -6.033297137646365e+00 4.464026272102960e+00 4.472944651450324e+00 9.319547125046794e+03 + 67500 1.115359567344386e+00 -5.997106790439982e+00 -6.038348068986302e+00 3.687757911132608e+00 4.450944107652409e+00 9.335172962432353e+03 + 67520 1.058842658628058e+00 -5.936201707375269e+00 -6.013652305122526e+00 4.033041940968732e+00 4.588308623262719e+00 9.258984225241795e+03 + 67540 1.062153755763514e+00 -5.967502297206039e+00 -6.012135286155704e+00 3.873764540860312e+00 4.617475011378618e+00 9.254325139448156e+03 + 67560 1.049341002572320e+00 -5.977159211308033e+00 -6.031683851280108e+00 3.789279926024648e+00 4.476191005644228e+00 9.314583206147710e+03 + 67580 1.063909873548825e+00 -6.030748851712305e+00 -5.998749483474892e+00 3.581583544413985e+00 4.765328868719441e+00 9.213203769125246e+03 + 67600 9.502053376032908e-01 -5.891028964519083e+00 -6.019843720721611e+00 4.242526487688874e+00 4.502852223554856e+00 9.278044793397996e+03 + 67620 9.857867079416553e-01 -5.964536552697289e+00 -5.946996709170900e+00 3.861980769119065e+00 4.962697264929600e+00 9.055047337029149e+03 + 67640 9.791265232352180e-01 -5.968344601761608e+00 -6.000088254803195e+00 3.842066437388822e+00 4.659789469309592e+00 9.217283121526945e+03 + 67660 1.031512721474458e+00 -6.055011082179217e+00 -5.995347503394845e+00 3.397648258671969e+00 4.740245760960813e+00 9.202773492549168e+03 + 67680 1.042123068972493e+00 -6.078713776765717e+00 -5.986340639852092e+00 3.237966004154443e+00 4.768386851009216e+00 9.175188758164808e+03 + 67700 9.985602200331072e-01 -6.021464447405358e+00 -6.012387087569607e+00 3.607892410868214e+00 4.660016015761993e+00 9.255107629751708e+03 + 67720 9.413736203299270e-01 -5.943062023041481e+00 -6.012037041248031e+00 3.966983100151617e+00 4.570917871760034e+00 9.254037109577019e+03 + 67740 9.921510289018264e-01 -6.021080464513977e+00 -5.969221090779202e+00 3.545066297682795e+00 4.842850846880022e+00 9.122798150870938e+03 + 67760 9.974063329813589e-01 -6.028001329406512e+00 -5.996339439210219e+00 3.534212931834238e+00 4.716020405003021e+00 9.205825543985573e+03 + 67780 1.032962702341072e+00 -6.080362005009950e+00 -5.978577798485661e+00 3.293601039821403e+00 4.878061704738924e+00 9.151402506680242e+03 + 67800 9.519916695852990e-01 -5.958124082027517e+00 -5.976242169769849e+00 3.923416111334643e+00 4.819379247753154e+00 9.144262943488986e+03 + 67820 9.915013753908322e-01 -6.011633899078660e+00 -6.017272558648113e+00 3.597637835776026e+00 4.565259779948484e+00 9.270130226149047e+03 + 67840 9.951634112675780e-01 -6.011021234212349e+00 -6.023434430733875e+00 3.661840969457292e+00 4.590562474094737e+00 9.289121021446930e+03 + 67860 1.008065062882461e+00 -6.023563897405602e+00 -6.013413359375927e+00 3.605617627789750e+00 4.663903587946825e+00 9.258274675899502e+03 + 67880 9.949580494254943e-01 -5.996859467459052e+00 -6.010301238899324e+00 3.694450576563940e+00 4.617265844846493e+00 9.248710938177252e+03 + 67900 1.001214805068908e+00 -5.998673085315211e+00 -6.008509596597096e+00 3.676515906484298e+00 4.620033136508513e+00 9.243186347842264e+03 + 67920 1.031106384927096e+00 -6.030830689585008e+00 -6.029955103643099e+00 3.490419883541358e+00 4.495447633516286e+00 9.309232410593648e+03 + 67940 1.012797806773031e+00 -5.990121606341085e+00 -5.983211310971291e+00 3.769554258934625e+00 4.809234244312735e+00 9.165558248004381e+03 + 67960 9.742241799612994e-01 -5.910424611627523e+00 -6.021950068905051e+00 4.171966035801468e+00 4.531569601605162e+00 9.284552042151807e+03 + 67980 1.058185621435930e+00 -6.000040282678182e+00 -6.014496215331213e+00 3.685599610040958e+00 4.602591407698910e+00 9.261614975452863e+03 + 68000 1.058759898933093e+00 -5.963224505708912e+00 -6.005436712512541e+00 3.922713673867777e+00 4.680324650083448e+00 9.233742396732931e+03 + 68020 1.112093547910427e+00 -6.005732109161148e+00 -6.016874254924848e+00 3.703881914262826e+00 4.639901989046175e+00 9.268927580710226e+03 + 68040 1.122271603299534e+00 -5.989599008918682e+00 -6.044128706592600e+00 3.729052294896074e+00 4.415934332408995e+00 9.352998171172463e+03 + 68060 1.025939157469000e+00 -5.827027338905353e+00 -6.050639975171610e+00 4.615310170150081e+00 4.331291808765603e+00 9.373124313656803e+03 + 68080 1.071387464770243e+00 -5.883874219742358e+00 -5.989770670213702e+00 4.354081946799395e+00 4.746008140770190e+00 9.185653654116059e+03 + 68100 1.129788265624405e+00 -5.966494135969281e+00 -6.022778717631950e+00 3.841718546299201e+00 4.518523768381295e+00 9.287128844478131e+03 + 68120 1.105852428360460e+00 -5.938551888920712e+00 -6.058719691963141e+00 3.991485700989631e+00 4.301463580012578e+00 9.398195115153696e+03 + 68140 1.117195446445403e+00 -5.980746644690299e+00 -6.010306360417205e+00 3.814719025770703e+00 4.644982563715585e+00 9.248728221621162e+03 + 68160 1.079094923508159e+00 -5.962258034166494e+00 -5.994935101414271e+00 3.928942620393838e+00 4.741305843497288e+00 9.201475303563087e+03 + 68180 1.022960723262422e+00 -5.923908053792106e+00 -5.960494292942165e+00 4.168366329812521e+00 4.958282482910667e+00 9.096133470962439e+03 + 68200 9.585438051985593e-01 -5.867967542309847e+00 -6.013710933027940e+00 4.395083836523036e+00 4.558202733302923e+00 9.259158090609058e+03 + 68220 1.070153856184508e+00 -6.068113338160353e+00 -5.968597846446791e+00 3.340033503998526e+00 4.911466857390373e+00 9.120880883758377e+03 + 68240 9.880069422610592e-01 -5.973087248170760e+00 -5.995407175437583e+00 3.846844886548975e+00 4.718680410185296e+00 9.202938534366311e+03 + 68260 1.007799367499914e+00 -6.021647088021457e+00 -6.019345769759562e+00 3.520861469671916e+00 4.534075995259570e+00 9.276552360491722e+03 + 68280 1.010667214230770e+00 -6.040521633712714e+00 -6.024177480165614e+00 3.539706111178801e+00 4.633556770095838e+00 9.291418110519568e+03 + 68300 9.704812877450659e-01 -5.993231819562112e+00 -6.039984524223462e+00 3.681069597082109e+00 4.412608331958971e+00 9.340237516812715e+03 + 68320 9.740335027287123e-01 -6.008506299437751e+00 -6.039262446732052e+00 3.632601115051928e+00 4.455994557789637e+00 9.337975402692264e+03 + 68340 1.041557829587395e+00 -6.115976208677132e+00 -5.968110044434072e+00 3.084359449581695e+00 4.933429846880310e+00 9.119425195244772e+03 + 68360 9.591470654452954e-01 -5.998425190807611e+00 -5.999072632852793e+00 3.685842266160392e+00 4.682124553745621e+00 9.214204913630194e+03 + 68380 9.147543554600593e-01 -5.933413316473539e+00 -6.013931243950524e+00 4.016690751102507e+00 4.554344351420650e+00 9.259860892415572e+03 + 68400 9.624910953020491e-01 -6.000419115996491e+00 -6.034493521770977e+00 3.666801941580529e+00 4.471141430626183e+00 9.323246278852652e+03 + 68420 9.652778807148510e-01 -6.000811497696446e+00 -6.016800220627139e+00 3.664732705372431e+00 4.572922984057520e+00 9.268686995953976e+03 + 68440 9.550755668895630e-01 -5.979311652092239e+00 -6.028409423805362e+00 3.761029133106871e+00 4.479102130074498e+00 9.304477893477066e+03 + 68460 1.041159215439323e+00 -6.097247953482685e+00 -6.034154993129718e+00 3.145535406712026e+00 4.507824948662820e+00 9.322207397598995e+03 + 68480 9.721095945884929e-01 -5.985553720229149e+00 -6.003058535721800e+00 3.701695714038815e+00 4.601180354618565e+00 9.226462787375773e+03 + 68500 9.667722008121157e-01 -5.964862365856964e+00 -5.965486234985314e+00 3.876788942489495e+00 4.873206589411075e+00 9.111379446124642e+03 + 68520 1.017862991400501e+00 -6.017864752707028e+00 -6.016096091225450e+00 3.556934887655836e+00 4.567090815582530e+00 9.266518865516362e+03 + 68540 1.028579212574062e+00 -6.006141758090282e+00 -6.001707558072829e+00 3.667614284118931e+00 4.693076146809381e+00 9.222304830623647e+03 + 68560 1.044070041902980e+00 -5.996127288765649e+00 -6.009839419928474e+00 3.733141097271058e+00 4.654403918188677e+00 9.247280860130231e+03 + 68580 1.056201068147089e+00 -5.974829711530926e+00 -5.999387311150238e+00 3.810025263625354e+00 4.669011726335002e+00 9.215151685520430e+03 + 68600 1.077268258386165e+00 -5.965960417919236e+00 -5.999857966284161e+00 3.868822324552526e+00 4.674177356212470e+00 9.216571930574552e+03 + 68620 1.022937887654411e+00 -5.845113263293216e+00 -6.016577649980578e+00 4.490148141050376e+00 4.505573098663464e+00 9.267992716838227e+03 + 68640 1.102924582639815e+00 -5.932357270652266e+00 -6.007767549684701e+00 4.026235496269465e+00 4.593218004362259e+00 9.240892775362829e+03 + 68660 1.063833538139233e+00 -5.853151871097818e+00 -6.023184893390062e+00 4.496051955946119e+00 4.519696029418895e+00 9.288325071753545e+03 + 68680 1.172491892356842e+00 -6.005782608356718e+00 -5.952373796700607e+00 3.666283947748714e+00 4.972965609264997e+00 9.071413601411577e+03 + 68700 1.031048135885724e+00 -5.798511284780354e+00 -5.963288118215153e+00 4.814330608866713e+00 4.868156532151538e+00 9.104660950449434e+03 + 68720 1.031969781898240e+00 -5.810004205158496e+00 -5.996203882140411e+00 4.746789710085814e+00 4.677602350548767e+00 9.205343112214834e+03 + 68740 1.106598265379271e+00 -5.939219394895012e+00 -5.969942363349176e+00 4.075854971292252e+00 4.899438932064439e+00 9.124958639171578e+03 + 68760 1.031143647261670e+00 -5.856648603940637e+00 -6.009945140710549e+00 4.472735589694690e+00 4.592483152999460e+00 9.247580725756978e+03 + 68780 1.113787694521319e+00 -6.020713644797879e+00 -5.963228585083110e+00 3.599040227607729e+00 4.929128336274170e+00 9.104510043767186e+03 + 68800 1.030959685684618e+00 -5.947121555494259e+00 -6.005457514968761e+00 3.957670855921745e+00 4.622696749158601e+00 9.233818949412806e+03 + 68820 1.047320899711323e+00 -6.020661544814970e+00 -5.994389378393421e+00 3.624582229434301e+00 4.775441074631448e+00 9.199825893821369e+03 + 68840 1.017275824761126e+00 -6.014838586466671e+00 -5.987004421084047e+00 3.587472000329516e+00 4.747300085279718e+00 9.177179532073966e+03 + 68860 1.011735645672689e+00 -6.029469475514320e+00 -5.983202095178306e+00 3.559418148104457e+00 4.825092605847821e+00 9.165541777403114e+03 + 68880 9.039255854469510e-01 -5.880603504826577e+00 -6.048154803535372e+00 4.345052933703627e+00 4.382947448038049e+00 9.365446658451310e+03 + 68900 1.064168037297821e+00 -6.124645769847694e+00 -5.973707631985236e+00 3.054046078688467e+00 4.920756223896051e+00 9.136529162824945e+03 + 68920 9.675957211968103e-01 -5.985366245032504e+00 -6.024620428451745e+00 3.809556106675948e+00 4.584152510917412e+00 9.292766708737408e+03 + 68940 9.761932849515360e-01 -6.000915652923100e+00 -5.978868236394590e+00 3.663667240243435e+00 4.790266917776823e+00 9.152292253078402e+03 + 68960 9.947124765534825e-01 -6.027720303903888e+00 -6.005074094475846e+00 3.554332651561972e+00 4.684370690587370e+00 9.232618487504471e+03 + 68980 9.906057004045660e-01 -6.020411971057026e+00 -6.041885876376416e+00 3.530922331174645e+00 4.407615843754600e+00 9.346084654755450e+03 + 69000 9.763293818763045e-01 -5.996610684776140e+00 -6.023769359011592e+00 3.739079572872795e+00 4.583130262621580e+00 9.290157458996417e+03 + 69020 9.553332442362521e-01 -5.963113664142963e+00 -6.030109120696441e+00 3.879581034914167e+00 4.494882755870702e+00 9.309711289148087e+03 + 69040 9.905965692528158e-01 -6.010250273679377e+00 -6.019074882482570e+00 3.620830552467076e+00 4.570158283115344e+00 9.275727617843337e+03 + 69060 1.014009329505017e+00 -6.040337137167427e+00 -6.020171579017079e+00 3.472817838459469e+00 4.588611593968803e+00 9.279089639608706e+03 + 69080 1.012275793212847e+00 -6.033106740344106e+00 -6.002902161810868e+00 3.523081250198133e+00 4.696520614279406e+00 9.225973955298950e+03 + 69100 1.028565802408747e+00 -6.049058695473033e+00 -6.021349190992324e+00 3.493085446907488e+00 4.652197709667675e+00 9.282707937539701e+03 + 69120 9.945157154226723e-01 -5.992390225114523e+00 -6.040482323287392e+00 3.737167392898005e+00 4.461015122961250e+00 9.341750005780248e+03 + 69140 1.038333255440966e+00 -6.051117268212847e+00 -6.004192447339080e+00 3.416638093764585e+00 4.686087676814315e+00 9.229942028695727e+03 + 69160 9.883890664940971e-01 -5.971726164455381e+00 -6.006988257236001e+00 3.916167956821527e+00 4.713687563283987e+00 9.238504651613111e+03 + 69180 1.057386555966456e+00 -6.068203481263609e+00 -5.979434834898930e+00 3.290323892418878e+00 4.800047196748492e+00 9.154030190014399e+03 + 69200 9.533693440535429e-01 -5.905556989868501e+00 -6.056559726487909e+00 4.151454872947294e+00 4.284373791680681e+00 9.391518643401398e+03 + 69220 1.040738134918848e+00 -6.027782722845318e+00 -6.038829499747291e+00 3.532434850757267e+00 4.469002548302937e+00 9.336662305077858e+03 + 69240 9.713037903605732e-01 -5.918993695912039e+00 -6.059745850353981e+00 4.071832468572653e+00 4.263611816441522e+00 9.401373667541577e+03 + 69260 1.046048801579955e+00 -6.025313467269189e+00 -5.995517501492674e+00 3.597325934507529e+00 4.768418980907084e+00 9.203299953190959e+03 + 69280 1.000497256900058e+00 -5.955059108042871e+00 -6.058987165753200e+00 3.908876720370353e+00 4.312105730182692e+00 9.399006937829910e+03 + 69300 1.011452198015059e+00 -5.971106928925900e+00 -6.051035660728070e+00 3.883820888896827e+00 4.424857741957489e+00 9.374385945518439e+03 + 69320 1.020563688904726e+00 -5.987845203591353e+00 -6.017543382453725e+00 3.768752021802991e+00 4.598220482996918e+00 9.271001934929609e+03 + 69340 1.045943242228663e+00 -6.033502117902223e+00 -6.006721333158722e+00 3.546307784777368e+00 4.700087195087599e+00 9.237695659279701e+03 + 69360 9.806687953149080e-01 -5.948641703923162e+00 -6.045261453173865e+00 3.931574878732899e+00 4.376769326677486e+00 9.356490705408236e+03 + 69380 9.857256539913615e-01 -5.971382391363642e+00 -6.010747401340799e+00 3.832545440674831e+00 4.606505461670391e+00 9.250076428298547e+03 + 69400 1.022409869359430e+00 -6.044027074030524e+00 -6.001708899923193e+00 3.425537261769976e+00 4.668534766210551e+00 9.222314647945832e+03 + 69420 1.035644291220285e+00 -6.087581175133526e+00 -5.958354065124738e+00 3.224902741263812e+00 4.966944804764913e+00 9.089647653689444e+03 + 69440 9.095007837062773e-01 -5.923743736473114e+00 -5.958374519506590e+00 4.132750713076492e+00 4.933895397801920e+00 9.089706482071162e+03 + 69460 1.027389157396801e+00 -6.120124126966548e+00 -5.956904618554155e+00 3.053114838543544e+00 4.990346513984798e+00 9.085238222539620e+03 + 69480 9.683497964535380e-01 -6.051763216451542e+00 -5.997284783304460e+00 3.414135583560245e+00 4.726959177201076e+00 9.208706735175516e+03 + 69500 9.212536250790382e-01 -5.997185319223476e+00 -6.011614979188901e+00 3.718076372814169e+00 4.635219032310035e+00 9.252716032455261e+03 + 69520 9.721843555603263e-01 -6.084044501838047e+00 -6.015748332395084e+00 3.205210678190241e+00 4.597377851929799e+00 9.265464249482458e+03 + 69540 9.590111536189274e-01 -6.073618444084130e+00 -6.010953032221784e+00 3.284581101136580e+00 4.644415593491315e+00 9.250718968163434e+03 + 69560 9.074528081860608e-01 -6.003511697475989e+00 -6.021107183515619e+00 3.605739801222620e+00 4.504703797490398e+00 9.281961481687993e+03 + 69580 9.627918049178775e-01 -6.085899804983935e+00 -5.982005752607584e+00 3.246873528130267e+00 4.843449254427920e+00 9.161898579351817e+03 + 69600 9.578933697392338e-01 -6.071459845416175e+00 -6.007711994427105e+00 3.345017152004345e+00 4.711067177331648e+00 9.240746692495073e+03 + 69620 9.162422527648463e-01 -5.995539496112285e+00 -6.032129723599314e+00 3.678608003307011e+00 4.468501254757083e+00 9.315954445399746e+03 + 69640 9.416143456138271e-01 -6.010515158476538e+00 -5.973266283913429e+00 3.662236788552766e+00 4.876125590538853e+00 9.135160880491110e+03 + 69660 1.027074588764636e+00 -6.100173537029955e+00 -5.973109037536418e+00 3.185278939114705e+00 4.914902958374341e+00 9.134661571271552e+03 + 69680 9.791875397304717e-01 -5.983851139923420e+00 -5.993850303412422e+00 3.821142840621260e+00 4.763726096501858e+00 9.198162543398916e+03 + 69700 9.697375462528828e-01 -5.922042522891428e+00 -5.963026793051449e+00 4.189162596669043e+00 4.953824575114895e+00 9.103881697766557e+03 + 69720 9.705280689973462e-01 -5.882312153407899e+00 -6.035165505383523e+00 4.345987591997969e+00 4.468279990974167e+00 9.325291757147959e+03 + 69740 1.070249888159113e+00 -5.998500338957355e+00 -5.977651785444197e+00 3.735347461609882e+00 4.855063082185666e+00 9.148582692650780e+03 + 69760 1.035725922480138e+00 -5.927823499787365e+00 -6.033416060720538e+00 4.037601983583679e+00 4.431273158309409e+00 9.319910245070272e+03 + 69780 1.085301734272217e+00 -5.990521970151159e+00 -5.997856704985521e+00 3.735857462943937e+00 4.693740280478481e+00 9.210461730390949e+03 + 69800 1.071316322451426e+00 -5.968649423321914e+00 -5.984772924585506e+00 3.884202954031527e+00 4.791619314672223e+00 9.170337491001463e+03 + 69820 1.034915375954556e+00 -5.919132923591999e+00 -6.022728640037766e+00 4.081414592968081e+00 4.486551957751177e+00 9.286893631276196e+03 + 69840 1.017085465824558e+00 -5.901541081957431e+00 -5.983557129569766e+00 4.196777016647249e+00 4.725828179314876e+00 9.166597123580881e+03 + 69860 1.067378374846961e+00 -5.987401345859645e+00 -5.987026055489959e+00 3.807615206262764e+00 4.809770181641498e+00 9.177257793025730e+03 + 69880 1.006665643882750e+00 -5.911918328804356e+00 -6.057418956341202e+00 4.095885398547504e+00 4.260398279081594e+00 9.394134204315485e+03 + 69900 1.043019348693840e+00 -5.986273419824903e+00 -5.991299533259530e+00 3.785403688681771e+00 4.756542967551603e+00 9.190345445302723e+03 + 69920 1.028027544765967e+00 -5.987390533070998e+00 -5.991722359386385e+00 3.776373834394545e+00 4.751499817343636e+00 9.191637105859843e+03 + 69940 1.015912278710633e+00 -5.997006573586981e+00 -5.986648840548153e+00 3.701864269887158e+00 4.761339975850117e+00 9.176092548530603e+03 + 69960 1.045185220598861e+00 -6.063541906188206e+00 -5.974751373127927e+00 3.363915204433888e+00 4.873764185556594e+00 9.139707294393138e+03 + 69980 9.477117614004495e-01 -5.943452371574800e+00 -6.026679157623763e+00 3.982193124407448e+00 4.504292039610784e+00 9.299127058796066e+03 + 70000 9.707915352604647e-01 -5.997467646211382e+00 -5.972020959127436e+00 3.707216247618308e+00 4.853335062716425e+00 9.131360425946097e+03 + 70020 1.015120481064699e+00 -6.078819356331223e+00 -5.983630767330641e+00 3.284250054209212e+00 4.830837662637096e+00 9.166847953507689e+03 + 70040 1.000672012097999e+00 -6.070211256449978e+00 -6.004674633853817e+00 3.340266284909391e+00 4.716587713616121e+00 9.231409250086712e+03 + 70060 9.686696512221833e-01 -6.032853416319805e+00 -6.019663257627252e+00 3.490397418024501e+00 4.566137350407597e+00 9.277522863225144e+03 + 70080 9.693827728203237e-01 -6.041044825893208e+00 -5.977113868821069e+00 3.588547553347973e+00 4.955649002139833e+00 9.146881744358072e+03 + 70100 9.967754524580520e-01 -6.083007609448023e+00 -5.945230989973715e+00 3.326064204642445e+00 5.117198874526879e+00 9.049670714756514e+03 + 70120 9.828767386894930e-01 -6.059066470857852e+00 -5.985857131303471e+00 3.372438585682287e+00 4.792817942512224e+00 9.173679575131982e+03 + 70140 9.660478922086816e-01 -6.027507503199844e+00 -5.988397179497724e+00 3.569471628738232e+00 4.794049159738837e+00 9.181449129958715e+03 + 70160 9.905858216119811e-01 -6.054146956497530e+00 -6.007541078146814e+00 3.415842135823104e+00 4.683460301549282e+00 9.240207099764941e+03 + 70180 8.950074121801050e-01 -5.903327348825036e+00 -6.039728002586196e+00 4.232624189947325e+00 4.449390528117786e+00 9.339417308997656e+03 + 70200 9.794185106957350e-01 -6.018914841736214e+00 -5.993811010639088e+00 3.579670079755907e+00 4.723820162720910e+00 9.198059380683255e+03 + 70220 1.078837683433257e+00 -6.156914232003524e+00 -5.961253571386543e+00 2.847060916209562e+00 4.970574707861644e+00 9.098498049056390e+03 + 70240 9.366281851987736e-01 -5.939655619514205e+00 -5.970678119956508e+00 4.043978709796065e+00 4.865842711539936e+00 9.127237668088896e+03 + 70260 9.752575082414875e-01 -5.990497852886199e+00 -5.992604915988102e+00 3.752548668981822e+00 4.740449586583734e+00 9.194338944782810e+03 + 70280 9.977503004211432e-01 -6.016864548592773e+00 -5.999224733959485e+00 3.638336004035229e+00 4.739626549412058e+00 9.214652885976906e+03 + 70300 1.046315509728615e+00 -6.083932480389105e+00 -5.963565114341437e+00 3.217506786386298e+00 4.908674829021706e+00 9.105543934919517e+03 + 70320 9.613133272941515e-01 -5.951631121426818e+00 -6.020672062458349e+00 3.953707572723203e+00 4.557263805269057e+00 9.280607438591614e+03 + 70340 1.036977662652044e+00 -6.059603673747147e+00 -5.978937081932203e+00 3.396796604012314e+00 4.859996657328457e+00 9.152523746240680e+03 + 70360 9.872912234407855e-01 -5.981937936786707e+00 -6.020763258120032e+00 3.867383395781342e+00 4.644442392486335e+00 9.280888369667431e+03 + 70380 1.008020251973274e+00 -6.009656073949808e+00 -6.000397112871131e+00 3.619545320007460e+00 4.672711707340818e+00 9.218270252549011e+03 + 70400 9.672419385395381e-01 -5.944746366645802e+00 -6.028716125285468e+00 3.968094807388925e+00 4.485927459001807e+00 9.305416550712849e+03 + 70420 1.039108528810288e+00 -6.047971162607112e+00 -5.973185045622053e+00 3.501634726434424e+00 4.931068183276834e+00 9.134909217872908e+03 + 70440 9.948620202841731e-01 -5.978934143725552e+00 -5.988820292240692e+00 3.854529551607751e+00 4.797761756957282e+00 9.182769192243308e+03 + 70460 1.012261133289885e+00 -6.000936856054676e+00 -6.018539852025659e+00 3.725906460470468e+00 4.624827333550267e+00 9.274047005882081e+03 + 70480 1.103871442853379e+00 -6.133849440238432e+00 -5.941750270228090e+00 2.979184411960951e+00 5.082247573410816e+00 9.039121992033910e+03 + 70500 9.653908683193807e-01 -5.925649498347066e+00 -6.034605815376758e+00 4.105814009384024e+00 4.480169976063963e+00 9.323598231267842e+03 + 70520 9.951999102107326e-01 -5.967997848100517e+00 -6.032156397354760e+00 3.869573695621772e+00 4.501165377300497e+00 9.316023326454024e+03 + 70540 1.002694821429421e+00 -5.979047797071523e+00 -6.018978029477211e+00 3.841215552995981e+00 4.611929979339029e+00 9.275397392270268e+03 + 70560 9.875572520475007e-01 -5.956519830569903e+00 -6.038585229625601e+00 3.910299574181157e+00 4.439067353223879e+00 9.335885177063705e+03 + 70580 1.014939997971462e+00 -6.001027241523534e+00 -6.019789987737560e+00 3.725736566909954e+00 4.617997974623425e+00 9.277900414774411e+03 + 70600 1.000818343697304e+00 -5.986433041409258e+00 -6.013303130518302e+00 3.736378894440388e+00 4.582086684643411e+00 9.257933365069375e+03 + 70620 9.740126506711496e-01 -5.956217898819240e+00 -5.962656686060202e+00 4.000065225531714e+00 4.963092712795004e+00 9.102763074815577e+03 + 70640 9.981058339661091e-01 -6.002167301288491e+00 -6.004026576407494e+00 3.661612031579891e+00 4.650935786124684e+00 9.229401136049866e+03 + 70660 9.965906771533984e-01 -6.012427642129120e+00 -5.958140479663692e+00 3.663359967809839e+00 4.975085255597566e+00 9.088988325179287e+03 + 70680 9.382838027365347e-01 -5.939089088221248e+00 -5.999087413120754e+00 4.048350072841886e+00 4.703830406558155e+00 9.214230502644094e+03 + 70700 1.023240153569715e+00 -6.076832120326600e+00 -5.973278143728370e+00 3.268182881565733e+00 4.862805840118853e+00 9.135216608553872e+03 + 70720 9.530975911293852e-01 -5.984648090030053e+00 -6.024151004207491e+00 3.773230103266596e+00 4.546398257003531e+00 9.291303613865319e+03 + 70740 9.992495439373592e-01 -6.067741907079502e+00 -5.979988340058652e+00 3.317441731645641e+00 4.821336293299969e+00 9.155716166945285e+03 + 70760 9.199984095504502e-01 -5.962595449051627e+00 -5.989150323659540e+00 3.946533265366682e+00 4.794051066014477e+00 9.183744982626557e+03 + 70780 9.617289887022529e-01 -6.032282293212178e+00 -5.978354666734342e+00 3.581601087280179e+00 4.891261863789141e+00 9.150720815830018e+03 + 70800 9.783795905178989e-01 -6.060038823915549e+00 -6.043090670015435e+00 3.344089601820642e+00 4.441408524233434e+00 9.349812523472539e+03 + 70820 9.503296099671792e-01 -6.022988382354976e+00 -6.014281410033853e+00 3.601177916992074e+00 4.651174699459578e+00 9.260943300505580e+03 + 70840 9.269698495274009e-01 -5.990169279207143e+00 -5.984208296283782e+00 3.758828763059255e+00 4.793057649464320e+00 9.168641562492510e+03 + 70860 9.502038762661766e-01 -6.019852626647474e+00 -5.980514248844599e+00 3.583575070135891e+00 4.809462123074290e+00 9.157326945480901e+03 + 70880 9.646639112807736e-01 -6.029823085837029e+00 -6.010592778601673e+00 3.508161176736802e+00 4.618584576762640e+00 9.249589621868949e+03 + 70900 1.038008729876569e+00 -6.119866899931527e+00 -5.955381058418338e+00 3.116701280165225e+00 5.061204436235668e+00 9.080587463363865e+03 + 70920 1.000887252368635e+00 -6.040786120019872e+00 -5.974226306834627e+00 3.485646288947786e+00 4.867843036355266e+00 9.138111997870850e+03 + 70940 9.950406566219961e-01 -6.002143253159398e+00 -5.991559806985427e+00 3.734741026954325e+00 4.795512812668273e+00 9.191151206731594e+03 + 70960 1.022482460129016e+00 -6.008666826086580e+00 -5.994843294251231e+00 3.645842485133266e+00 4.725219344116478e+00 9.201234446200129e+03 + 70980 1.057750807985447e+00 -6.026665060525588e+00 -5.971510130506083e+00 3.586058483713317e+00 4.902766627083153e+00 9.129721824753598e+03 + 71000 1.021041222926839e+00 -5.940230591509149e+00 -6.012411958396694e+00 4.004143202725475e+00 4.589666624026768e+00 9.255189507624971e+03 + 71020 1.070634466967631e+00 -5.987429807048340e+00 -6.026043142671919e+00 3.722429889830744e+00 4.500706141285777e+00 9.297179997588075e+03 + 71040 1.066945226785466e+00 -5.963862137476182e+00 -6.027828740851643e+00 3.864838998453726e+00 4.497532863071954e+00 9.302677691768688e+03 + 71060 1.055890863954758e+00 -5.938936219966685e+00 -6.014655210841430e+00 4.013409359351689e+00 4.578619196272935e+00 9.262066503781221e+03 + 71080 1.039855635137347e+00 -5.911400509930479e+00 -6.005082470121936e+00 4.192372071589639e+00 4.654435758933809e+00 9.232641040677694e+03 + 71100 1.053677967158585e+00 -5.934018991247677e+00 -6.036911032500970e+00 4.066469742196070e+00 4.475647718827738e+00 9.330706836157968e+03 + 71120 1.079192384974004e+00 -5.981496709035496e+00 -6.022169759484532e+00 3.776071191946868e+00 4.542520242134289e+00 9.285257127014582e+03 + 71140 1.046337587084948e+00 -5.952422353911435e+00 -6.022329251094123e+00 3.942178836425513e+00 4.540762614745137e+00 9.285735356084175e+03 + 71160 1.009567219050481e+00 -5.926498786025287e+00 -5.995357414956178e+00 4.073330344931237e+00 4.677933441771674e+00 9.202786527801039e+03 + 71180 1.014990170250464e+00 -5.965696261738615e+00 -6.007628315977416e+00 3.835945279178671e+00 4.595164934775055e+00 9.240471974228722e+03 + 71200 1.029173132532460e+00 -6.022011662890177e+00 -5.990208651027154e+00 3.559186033413883e+00 4.741803849031538e+00 9.187019307974540e+03 + 71220 1.012138071985217e+00 -6.033844609239373e+00 -6.011514953121693e+00 3.484155727752280e+00 4.612376068683117e+00 9.252434792298589e+03 + 71240 1.025917967794872e+00 -6.089231769136369e+00 -5.985025697996741e+00 3.217168782824900e+00 4.815536169146036e+00 9.171157539428934e+03 + 71260 9.809942674716783e-01 -6.052012306116996e+00 -5.989470348912601e+00 3.400728671118710e+00 4.759854267722943e+00 9.184750632348270e+03 + 71280 9.021656796980402e-01 -5.954258760076265e+00 -6.004869198070065e+00 3.959333838373098e+00 4.668720871472729e+00 9.232004297132007e+03 + 71300 9.497922217545449e-01 -6.033057306956294e+00 -5.962910687959932e+00 3.559307643167286e+00 4.962100384598612e+00 9.103542218241142e+03 + 71320 9.749837955733420e-01 -6.070326882077335e+00 -6.027363698450371e+00 3.298519424963276e+00 4.545220673880488e+00 9.301243138679869e+03 + 71340 9.660823418425656e-01 -6.055399562706856e+00 -6.027590255915229e+00 3.355539282573889e+00 4.515224625647727e+00 9.301949012358944e+03 + 71360 9.187606548944648e-01 -5.979929752717196e+00 -6.049734439273840e+00 3.781919954718389e+00 4.381090642269799e+00 9.370376242774466e+03 + 71380 1.024283947537621e+00 -6.129366491622552e+00 -6.026736133858835e+00 2.960834979253221e+00 4.550154375529022e+00 9.299334065604191e+03 + 71400 1.002137868858481e+00 -6.089800241413615e+00 -6.004566230915030e+00 3.233014673876009e+00 4.722441552079383e+00 9.231073648795107e+03 + 71420 9.695674030826034e-01 -6.033693207820598e+00 -5.999031680513342e+00 3.517424306674779e+00 4.716456160327053e+00 9.214084663559172e+03 + 71440 9.347608204037869e-01 -5.971319079686294e+00 -6.017244968010957e+00 3.928156929085375e+00 4.664443371316914e+00 9.270063452489039e+03 + 71460 9.885873963879660e-01 -6.036938991973262e+00 -6.008396850466092e+00 3.486755509419020e+00 4.650648902835319e+00 9.242844882882900e+03 + 71480 1.006250283318458e+00 -6.046978007860598e+00 -6.008171242234155e+00 3.432939106299894e+00 4.655773559854502e+00 9.242149331584393e+03 + 71500 9.633713759708148e-01 -5.965819070061725e+00 -5.995256800994655e+00 3.874017261051561e+00 4.704981254560535e+00 9.202488180353943e+03 + 71520 1.056067018329791e+00 -6.081989528969133e+00 -5.998926891446316e+00 3.264828825185319e+00 4.741787343742947e+00 9.213770728463212e+03 + 71540 9.778016502589417e-01 -5.945677647536491e+00 -6.007842032934904e+00 3.952163684048537e+00 4.595206163183301e+00 9.241159800734624e+03 + 71560 1.010022537433354e+00 -5.976759792983303e+00 -5.977544960694596e+00 3.805800442467798e+00 4.801291887965242e+00 9.148221496655919e+03 + 71580 1.001353899717096e+00 -5.944191141072666e+00 -6.001598713213761e+00 3.966863977589671e+00 4.637220814562427e+00 9.221948061761279e+03 + 71600 1.042614861595804e+00 -5.983834060640207e+00 -6.037929670151215e+00 3.719313132468340e+00 4.408687771387614e+00 9.333857102659678e+03 + 71620 1.014360341707726e+00 -5.923486040209365e+00 -6.015373949858654e+00 4.087071567636482e+00 4.559436970822202e+00 9.264272981369902e+03 + 71640 1.060092960321166e+00 -5.976268472739040e+00 -5.988224873490177e+00 3.829401340134444e+00 4.760745836774383e+00 9.180908657025637e+03 + 71660 1.101660772109465e+00 -6.025999638105516e+00 -5.963427114420098e+00 3.561851215342017e+00 4.921152329410431e+00 9.105109841800910e+03 + 71680 1.019476398754853e+00 -5.896646246523181e+00 -5.989380866768085e+00 4.262227235988544e+00 4.729730695906205e+00 9.184429530645475e+03 + 71700 1.013067314508968e+00 -5.880575580475333e+00 -6.009736614047698e+00 4.366492058620811e+00 4.624829416242942e+00 9.246933826535524e+03 + 71720 1.051359132139104e+00 -5.931087566622304e+00 -6.017182311054659e+00 4.027836432239109e+00 4.533467086589882e+00 9.269890314896569e+03 + 71740 1.054603422187828e+00 -5.937443699584298e+00 -6.044248870232007e+00 4.048216016550339e+00 4.434924198644455e+00 9.353374224651739e+03 + 71760 1.039660580793031e+00 -5.927883600115812e+00 -6.016908705301013e+00 4.048569758317579e+00 4.537373827753653e+00 9.269008116703695e+03 + 71780 1.025747930132632e+00 -5.928424739469065e+00 -6.007564996616503e+00 4.085248485645741e+00 4.630812882189934e+00 9.240247936630914e+03 + 71800 1.107578329825317e+00 -6.083312515958898e+00 -6.006293441696588e+00 3.266653212662347e+00 4.708908655739755e+00 9.236370946567660e+03 + 71820 1.016990557480097e+00 -5.995082823234838e+00 -6.023055097502324e+00 3.738706013150396e+00 4.578084885611040e+00 9.287939383405237e+03 + 71840 9.264024913368424e-01 -5.907588749760180e+00 -6.034039089548677e+00 4.148719289400604e+00 4.422621870208213e+00 9.321831661510323e+03 + 71860 1.033909187919626e+00 -6.104585291959766e+00 -5.946695712749326e+00 3.129267105378001e+00 5.035893502537766e+00 9.054149487456509e+03 + 71880 1.001354788509192e+00 -6.084727101703975e+00 -5.982498194001491e+00 3.232948738739945e+00 4.819962946639947e+00 9.163394372863633e+03 + 71900 9.835514598576397e-01 -6.079514307423918e+00 -5.963645123068739e+00 3.248542695858498e+00 4.913881483124266e+00 9.105800189567453e+03 + 71920 8.829928019528501e-01 -5.943089219554238e+00 -5.997490276429883e+00 3.961663549303919e+00 4.649284262187628e+00 9.209324646334553e+03 + 71940 9.627508206191743e-01 -6.068412788000298e+00 -5.961839794832189e+00 3.295080386661994e+00 4.907039005550669e+00 9.100280505853712e+03 + 71960 9.702505683692159e-01 -6.080883011773426e+00 -5.978208058793721e+00 3.282792833683917e+00 4.872368302591010e+00 9.150280517290556e+03 + 71980 8.779140154103519e-01 -5.938386417148360e+00 -6.052222931487897e+00 4.019626740990987e+00 4.365959859509704e+00 9.378057085114166e+03 + 72000 9.692840038197904e-01 -6.064069417931561e+00 -5.971123729960807e+00 3.378974529190282e+00 4.912683052817082e+00 9.128614748407430e+03 + 72020 9.885005812406391e-01 -6.076529438965784e+00 -5.978131809790245e+00 3.243379661361396e+00 4.808394075071244e+00 9.150048352967091e+03 + 72040 1.007114140287485e+00 -6.082095634505736e+00 -6.006816222712280e+00 3.315407309135362e+00 4.747673341104709e+00 9.238004237761434e+03 + 72060 9.436526799685707e-01 -5.961129074014891e+00 -6.069174796479659e+00 3.889357149440118e+00 4.268941891025908e+00 9.430654331575221e+03 + 72080 1.025446156098957e+00 -6.056560286085652e+00 -6.016222071584070e+00 3.380304561053606e+00 4.611932831040212e+00 9.266936970954433e+03 + 72100 9.673429470591209e-01 -5.942926359305398e+00 -6.006071616955257e+00 4.006821794380816e+00 4.644231953258286e+00 9.235687911210844e+03 + 72120 1.076109701708345e+00 -6.075492548551919e+00 -5.951437940083753e+00 3.372147805509516e+00 5.084488564722344e+00 9.068564740289754e+03 + 72140 1.052063419745957e+00 -6.011974858631113e+00 -6.002007187257209e+00 3.641997181415203e+00 4.699233092936321e+00 9.223181051277681e+03 + 72160 9.889327526422871e-01 -5.896777895197650e+00 -6.016254497282827e+00 4.226945622404854e+00 4.540892484287347e+00 9.266988935274836e+03 + 72180 1.030426696758700e+00 -5.941565784478201e+00 -5.975998700735959e+00 4.006227391298908e+00 4.808508257670298e+00 9.143499426995846e+03 + 72200 1.060346588740650e+00 -5.971354774290645e+00 -5.967719282569290e+00 3.835195911823096e+00 4.856071467877639e+00 9.118185723323058e+03 + 72220 1.004155716955443e+00 -5.877994572684685e+00 -6.024969063165532e+00 4.300528195844373e+00 4.456577927274452e+00 9.293835559863985e+03 + 72240 1.024295760753139e+00 -5.904135706042736e+00 -5.935521598883210e+00 4.300478893856221e+00 5.120256240214998e+00 9.020129012012143e+03 + 72260 1.056794444372592e+00 -5.950095911486052e+00 -5.963206819130766e+00 3.967748716473400e+00 4.892463855871050e+00 9.104416390393446e+03 + 72280 9.753259447096679e-01 -5.830845910769913e+00 -6.001928689152051e+00 4.615487269334664e+00 4.633103480890035e+00 9.222913718649555e+03 + 72300 1.024328505548032e+00 -5.909413017359982e+00 -6.048300169600111e+00 4.123846497902045e+00 4.326334977021872e+00 9.365884342484200e+03 + 72320 1.085568188852727e+00 -6.015137226153978e+00 -5.997392990391079e+00 3.616787134683953e+00 4.718677282346134e+00 9.209052618705000e+03 + 72340 1.065595641762248e+00 -6.015008101822858e+00 -5.993867705688645e+00 3.594330813413744e+00 4.715722239482124e+00 9.198223975579322e+03 + 72360 1.019416689152659e+00 -6.001685528748026e+00 -5.987128719805158e+00 3.713848098115320e+00 4.797435547724170e+00 9.177591508713300e+03 + 72380 9.905270035329032e-01 -6.032412090052161e+00 -6.003219528571488e+00 3.509740012945390e+00 4.677368218501700e+00 9.226938711663375e+03 + 72400 9.296240819384755e-01 -6.009041962058177e+00 -5.988165620669675e+00 3.656340740757732e+00 4.776215923613898e+00 9.180777368292824e+03 + 72420 9.328665435652380e-01 -6.051579303338874e+00 -5.987827404840168e+00 3.425846439736976e+00 4.791919706490960e+00 9.179709445583892e+03 + 72440 9.613782984246148e-01 -6.112660007703798e+00 -5.964117939541906e+00 3.083369340119873e+00 4.936320882316211e+00 9.107239036103767e+03 + 72460 9.604834131242277e-01 -6.118326196879747e+00 -5.985339608751298e+00 3.058491114850105e+00 4.822120683491663e+00 9.172110418675380e+03 + 72480 9.679405581378538e-01 -6.129614542692619e+00 -5.977851321883492e+00 3.006005752239879e+00 4.877453651408409e+00 9.149189633129146e+03 + 72500 9.150712450642432e-01 -6.044728725663223e+00 -5.976991795679017e+00 3.501072526666415e+00 4.890028460891764e+00 9.146550699383255e+03 + 72520 9.665448243271305e-01 -6.108039066141674e+00 -5.984367540168226e+00 3.127516779427391e+00 4.837657819673719e+00 9.169120388347383e+03 + 72540 9.183810617074951e-01 -6.017536439154661e+00 -6.014539778119937e+00 3.572982841884646e+00 4.590190133277821e+00 9.261757325341860e+03 + 72560 9.461344392215894e-01 -6.033336571275933e+00 -5.966321956735404e+00 3.547996782444740e+00 4.932805069614542e+00 9.113946458618715e+03 + 72580 9.173246130269320e-01 -5.960539493740429e+00 -6.004286651618675e+00 3.914256168791905e+00 4.663053218404214e+00 9.230191886583694e+03 + 72600 9.393550388652162e-01 -5.959128513907172e+00 -6.033142939610921e+00 3.896589513720402e+00 4.471587227634110e+00 9.319056824929668e+03 + 72620 9.850243104538540e-01 -5.993293763707370e+00 -5.984232442869025e+00 3.738941511217701e+00 4.790973017706341e+00 9.168699224166536e+03 + 72640 1.024325434842339e+00 -6.020519380405931e+00 -5.980483275282700e+00 3.560088519276019e+00 4.789982030460854e+00 9.157229032329880e+03 + 72660 1.015675733732020e+00 -5.980742664226510e+00 -6.019912245363479e+00 3.808606402237166e+00 4.583688605875601e+00 9.278273658364073e+03 + 72680 9.742259500825656e-01 -5.899507991734384e+00 -6.002106289781164e+00 4.195827051378737e+00 4.606691746958822e+00 9.223513298934795e+03 + 72700 1.055969606268226e+00 -6.006207806379660e+00 -5.951536330102525e+00 3.630286793610344e+00 4.944218870777266e+00 9.068868861803923e+03 + 72720 1.021595246853594e+00 -5.943295321379082e+00 -5.992003510911981e+00 3.981949725284911e+00 4.702259763419041e+00 9.192501946840819e+03 + 72740 1.037188966076422e+00 -5.958667751745817e+00 -5.976647656877137e+00 3.916817662971957e+00 4.813574265326590e+00 9.145496850070342e+03 + 72760 1.047833886900276e+00 -5.968758454973336e+00 -5.964551538967227e+00 3.857167827479551e+00 4.881324590204775e+00 9.108534511318219e+03 + 72780 9.658054618636885e-01 -5.846283266235456e+00 -5.969943808516325e+00 4.546419966044327e+00 4.836341995860511e+00 9.124891524893375e+03 + 72800 1.058002979624345e+00 -5.981803573160906e+00 -6.003887959413035e+00 3.776653025189787e+00 4.649841061782335e+00 9.228956293605293e+03 + 72820 1.053777964199003e+00 -5.979188793120241e+00 -5.994141247565545e+00 3.852432135262617e+00 4.766572827952836e+00 9.199054834048617e+03 + 72840 1.022364730638935e+00 -5.941322834362438e+00 -6.016845319761229e+00 4.010401969176714e+00 4.576740170950012e+00 9.268822543281320e+03 + 72860 1.037561485102724e+00 -5.979086308878691e+00 -6.012290618666830e+00 3.817982767730245e+00 4.627318482576417e+00 9.254805997212261e+03 + 72880 1.009164477343931e+00 -5.960241969863128e+00 -6.019878907357963e+00 3.887391883818386e+00 4.544947359936794e+00 9.278187541451096e+03 + 72900 1.066736862082941e+00 -6.080005472524819e+00 -5.975125118827476e+00 3.264824451125244e+00 4.867063672237672e+00 9.140846841802993e+03 + 72920 1.003399253080656e+00 -6.029514267911638e+00 -5.978707241909753e+00 3.509022454205784e+00 4.800764259870475e+00 9.151775325010045e+03 + 72940 9.535761167765118e-01 -6.001615836280941e+00 -5.954632160062701e+00 3.731703458704696e+00 5.001490998250222e+00 9.078290934050972e+03 + 72960 9.196298383619387e-01 -5.987269461269023e+00 -5.978560263851897e+00 3.805059703354952e+00 4.855069262668036e+00 9.151337730454492e+03 + 72980 1.020585762533329e+00 -6.167090803238928e+00 -5.954835678171033e+00 2.831065740004589e+00 5.049867514518892e+00 9.078944507191225e+03 + 73000 9.621241155304027e-01 -6.101125246511409e+00 -5.980738179444289e+00 3.097751160944852e+00 4.789032329882674e+00 9.158019567042968e+03 + 73020 9.090859665793796e-01 -6.032119407713447e+00 -5.978809183999481e+00 3.506135737145520e+00 4.812251291441573e+00 9.152120049149718e+03 + 73040 8.931885141968973e-01 -6.008852108101132e+00 -6.031736567598451e+00 3.592191671398244e+00 4.460785563605972e+00 9.314757023904172e+03 + 73060 9.624623816456107e-01 -6.105908641321625e+00 -6.029303866979906e+00 3.094868196543592e+00 4.534744665364256e+00 9.307232013232511e+03 + 73080 9.589855232223315e-01 -6.092052100563207e+00 -6.012355409949041e+00 3.174713604240505e+00 4.632344334770058e+00 9.255026730558202e+03 + 73100 9.513983614694118e-01 -6.069742644660746e+00 -5.965585402751850e+00 3.349465180483686e+00 4.947552181805662e+00 9.111705695140459e+03 + 73120 9.216360532766519e-01 -6.011555531518292e+00 -5.951396103555972e+00 3.633435605529262e+00 4.978880350530298e+00 9.068431151905388e+03 + 73140 9.081053927870062e-01 -5.972153949279168e+00 -5.994845181372799e+00 3.817844021358846e+00 4.687547455220395e+00 9.201225144622225e+03 + 73160 1.002279091406740e+00 -6.089720883028985e+00 -6.000236091409096e+00 3.208025968660132e+00 4.721861489868288e+00 9.217778013995548e+03 + 73180 9.673261717878381e-01 -6.018428204780073e+00 -6.027708050115123e+00 3.539136878443993e+00 4.485850570478709e+00 9.302321009617306e+03 + 73200 1.024808483069570e+00 -6.088650571211963e+00 -5.973827864871935e+00 3.267029007600742e+00 4.926358756161564e+00 9.136877476772252e+03 + 73220 9.858641202999791e-01 -6.016487656433947e+00 -6.011121119602571e+00 3.567101056749535e+00 4.597916541704189e+00 9.251228372612824e+03 + 73240 9.814061938662246e-01 -5.996627015684751e+00 -6.017187987657898e+00 3.670597748070839e+00 4.552533465200898e+00 9.269870380360822e+03 + 73260 9.223904082799604e-01 -5.896881345748175e+00 -6.030352983516607e+00 4.277463639517563e+00 4.511048840782040e+00 9.310425922711258e+03 + 73280 1.037227289119591e+00 -6.055534268629772e+00 -5.974550961430557e+00 3.504767143951465e+00 4.969785826015649e+00 9.139079517388138e+03 + 73300 1.050128691349970e+00 -6.063639043032901e+00 -6.018493700781201e+00 3.400403793144012e+00 4.659635334572403e+00 9.273915622794624e+03 + 73320 9.565537679956597e-01 -5.919066582445882e+00 -6.082128561031999e+00 4.114059549942152e+00 4.177732435141037e+00 9.470903868989584e+03 + 73340 9.536494504923420e-01 -5.912501590176619e+00 -6.065110791960501e+00 4.177822309905687e+00 4.301516657064988e+00 9.418022999433575e+03 + 73360 9.726176998146778e-01 -5.939386401072793e+00 -5.990000350520825e+00 4.031598440696006e+00 4.740965310482047e+00 9.186365816889293e+03 + 73380 1.010977450629653e+00 -5.993293501225906e+00 -5.974321773710351e+00 3.760093074312020e+00 4.869031669571682e+00 9.138370782448190e+03 + 73400 9.719934782163319e-01 -5.930561070974967e+00 -6.047650188750539e+00 4.033218560437811e+00 4.360874726688064e+00 9.363912091845508e+03 + 73420 1.020520366949907e+00 -6.000284264454055e+00 -6.026836640020360e+00 3.681977815455648e+00 4.529509965987089e+00 9.299645180281510e+03 + 73440 1.006110181453964e+00 -5.980374938229298e+00 -5.980521559818353e+00 3.812154098251699e+00 4.811312174397727e+00 9.157353353892939e+03 + 73460 9.295980156710294e-01 -5.869835617537896e+00 -5.994195610784443e+00 4.445061182457845e+00 4.730966856589410e+00 9.199208535107184e+03 + 73480 1.006779851724471e+00 -5.985638852642568e+00 -6.019184614123278e+00 3.770141649171733e+00 4.577516695559686e+00 9.276028164811356e+03 + 73500 1.080322651491789e+00 -6.095755477394412e+00 -5.977967927656576e+00 3.215581656810278e+00 4.891935994969343e+00 9.149544245588007e+03 + 73520 1.042399140691672e+00 -6.043479119791276e+00 -6.005633269013389e+00 3.533435351456823e+00 4.750752083249935e+00 9.234347564666839e+03 + 73540 9.419937645538990e-01 -5.905377665582979e+00 -6.045831205211638e+00 4.238433128929310e+00 4.431927169266539e+00 9.358241104489192e+03 + 73560 1.008266246960170e+00 -6.019587895413151e+00 -6.032911347174870e+00 3.562899600127392e+00 4.486394278314108e+00 9.318362358035660e+03 + 73580 1.017697861944102e+00 -6.056916279079955e+00 -6.020795597932734e+00 3.437820205151820e+00 4.645230745956508e+00 9.281006407327552e+03 + 73600 9.528381417543579e-01 -5.987310125229060e+00 -6.011506082236833e+00 3.818728210475375e+00 4.679791281024496e+00 9.252411770002522e+03 + 73620 9.897162234087546e-01 -6.069695282451325e+00 -5.987607518882977e+00 3.398423307974358e+00 4.869783949424168e+00 9.179054434023268e+03 + 73640 9.573086088792493e-01 -6.044944960108083e+00 -5.984677652632372e+00 3.493676974322121e+00 4.839741180183347e+00 9.170098310268995e+03 + 73660 9.671914427421177e-01 -6.081794593296113e+00 -5.964148115110261e+00 3.315945392752551e+00 4.991489676229378e+00 9.107318513455997e+03 + 73680 9.390865324405192e-01 -6.055261041865697e+00 -5.942310392565254e+00 3.428115301656125e+00 5.076695408995757e+00 9.040805230159187e+03 + 73700 1.009211813209879e+00 -6.166775701426771e+00 -5.940259775630715e+00 2.832580807951647e+00 5.133270307098836e+00 9.034570102592023e+03 + 73720 9.063290412548513e-01 -6.015951183371519e+00 -5.993448813660751e+00 3.596612841682744e+00 4.725824930792433e+00 9.196949432748070e+03 + 73740 9.028921735355224e-01 -6.006589862600302e+00 -5.972364442960016e+00 3.687328638291888e+00 4.883856294232983e+00 9.132400790806563e+03 + 73760 9.589026309378389e-01 -6.075255982313986e+00 -5.979549216841307e+00 3.289640830425925e+00 4.839203888344140e+00 9.154371203431461e+03 + 73780 9.345316043805485e-01 -6.017158950059915e+00 -5.986514049210983e+00 3.644508353653457e+00 4.820476116611104e+00 9.175684320450217e+03 + 73800 9.231559534117376e-01 -5.972274872762460e+00 -5.970893005163768e+00 3.816613163967305e+00 4.824548061562316e+00 9.127914202483094e+03 + 73820 9.705735591298116e-01 -6.008511345760110e+00 -5.975714046069624e+00 3.624088023084399e+00 4.812415193272894e+00 9.142620859156037e+03 + 73840 9.972819162596961e-01 -6.008389627377813e+00 -5.968518774103595e+00 3.635201492404540e+00 4.864146101899701e+00 9.120653456879274e+03 + 73860 9.817189284040141e-01 -5.949218718504712e+00 -5.976056036574786e+00 3.976773834825202e+00 4.822669801405288e+00 9.143679446530907e+03 + 73880 1.040166414937262e+00 -6.004919505676765e+00 -5.969685342630910e+00 3.679460581479818e+00 4.881780598158228e+00 9.124223152864846e+03 + 73900 1.079914675346431e+00 -6.040884731609309e+00 -6.002124527555193e+00 3.535944619586100e+00 4.758511709387030e+00 9.223569063949006e+03 + 73920 1.047829509588579e+00 -5.979487733011665e+00 -6.032549569633018e+00 3.781282157949619e+00 4.476592880777133e+00 9.317241153472331e+03 + 73940 1.019810193658677e+00 -5.932476392884114e+00 -6.075917325311146e+00 4.039195514559704e+00 4.215535483151132e+00 9.451563527228864e+03 + 73960 1.037729672454579e+00 -5.961426844547875e+00 -6.007704840816306e+00 3.869478786332632e+00 4.603743370262522e+00 9.240701439990828e+03 + 73980 1.102026119111210e+00 -6.061451296932031e+00 -5.953672421070395e+00 3.396197484600524e+00 5.015080468525175e+00 9.075367123104703e+03 + 74000 1.006672094511474e+00 -5.926467505986917e+00 -6.002406971215061e+00 4.095271284290035e+00 4.659215123355766e+00 9.224440497945985e+03 + 74020 1.056884738107506e+00 -6.009632082653363e+00 -6.011765403975296e+00 3.625905269189227e+00 4.613655408028276e+00 9.253209970679931e+03 + 74040 1.039636399233511e+00 -5.998278829677089e+00 -6.001560854848362e+00 3.699170887765238e+00 4.680324991340035e+00 9.221836785987163e+03 + 74060 9.688754430013009e-01 -5.908286021778902e+00 -6.009212893352297e+00 4.242043157154411e+00 4.662505442197076e+00 9.245344872767841e+03 + 74080 1.040483318226725e+00 -6.031770266090712e+00 -5.986843777372107e+00 3.475071136031926e+00 4.733045986605817e+00 9.176712530643745e+03 + 74100 9.645288998075801e-01 -5.937955009317080e+00 -6.008977019358065e+00 4.024033640297134e+00 4.616214268021268e+00 9.244630159261613e+03 + 74120 9.803070171406298e-01 -5.980843609629494e+00 -6.009911909613690e+00 3.803625088395291e+00 4.636710411581150e+00 9.247504755482591e+03 + 74140 9.999997113074159e-01 -6.030798533361322e+00 -5.997983766583035e+00 3.495907900029331e+00 4.684335368939005e+00 9.210857272552896e+03 + 74160 9.264525276868963e-01 -5.942125733020693e+00 -5.970562345907128e+00 4.075630905750844e+00 4.912343474005310e+00 9.126872718634690e+03 + 74180 9.180508610076498e-01 -5.945308621464712e+00 -5.943455882291880e+00 4.044326120048284e+00 5.054964835089151e+00 9.044267248308415e+03 + 74200 9.822562377756259e-01 -6.053687427702259e+00 -5.994404109993441e+00 3.372367880472150e+00 4.712781864819949e+00 9.199869006592580e+03 + 74220 9.485140274067376e-01 -6.018207944563933e+00 -5.967141174133536e+00 3.596376329164537e+00 4.889609627533062e+00 9.116478001217803e+03 + 74240 9.623867966372879e-01 -6.055213430180357e+00 -5.988939693589677e+00 3.373948730077733e+00 4.754502781409008e+00 9.183145481648467e+03 + 74260 9.585272131675899e-01 -6.068527526050202e+00 -5.992391176609820e+00 3.321143495477575e+00 4.758330196026249e+00 9.193725211683433e+03 + 74280 9.196119465426698e-01 -6.036674130672638e+00 -6.017429096414313e+00 3.533322536836802e+00 4.643830501707531e+00 9.270627390581209e+03 + 74300 9.357129504306640e-01 -6.089750562043562e+00 -5.992196571528278e+00 3.190429748988795e+00 4.750599858958802e+00 9.193138774969077e+03 + 74320 9.054852053433827e-01 -6.073520136401093e+00 -6.009740008190021e+00 3.322745827227579e+00 4.688981193358500e+00 9.246972467195035e+03 + 74340 9.627120106480778e-01 -6.182961160617626e+00 -5.947872911458736e+00 2.779982140037472e+00 5.129895246496801e+00 9.057741214538777e+03 + 74360 8.851872224222322e-01 -6.085246424963919e+00 -6.001031785758791e+00 3.220131911266630e+00 4.703705401755777e+00 9.220185250074148e+03 + 74380 8.460306141218816e-01 -6.034933062541751e+00 -5.962794647628597e+00 3.545861187821419e+00 4.960091129636380e+00 9.103155731831766e+03 + 74400 8.821771276803232e-01 -6.083960514819410e+00 -5.946327737813338e+00 3.231417820616046e+00 5.021726524788317e+00 9.053004871906396e+03 + 74420 9.186679364848320e-01 -6.120687508885935e+00 -5.961099991514843e+00 2.987252890226940e+00 4.903629111060251e+00 9.098007552959249e+03 + 74440 9.367573541293815e-01 -6.117978660265644e+00 -5.939682084807707e+00 3.095847103167368e+00 5.119653630752725e+00 9.032803410251776e+03 + 74460 9.159588617796250e-01 -6.046055643208772e+00 -5.981136831691625e+00 3.444249084659588e+00 4.817022946544663e+00 9.159240345208824e+03 + 74480 9.789491483887546e-01 -6.096142293300542e+00 -5.978103552855586e+00 3.194306499672160e+00 4.872103213743146e+00 9.149951415732172e+03 + 74500 9.766268254907194e-01 -6.053118022779135e+00 -5.966927551735280e+00 3.421112342520206e+00 4.916031365186312e+00 9.115796295156959e+03 + 74520 9.787978868597506e-01 -6.022748002520350e+00 -5.985726188705568e+00 3.610194682313442e+00 4.822779666345094e+00 9.173276749880035e+03 + 74540 9.681277366746442e-01 -5.978780734654702e+00 -6.016478609731580e+00 3.759555968043839e+00 4.543088935625092e+00 9.267696902322177e+03 + 74560 9.664053462108696e-01 -5.954560344029079e+00 -6.015148252516609e+00 3.934284866975612e+00 4.586379720491674e+00 9.263594529280615e+03 + 74580 1.020760381627576e+00 -6.016891155567022e+00 -6.001335523185948e+00 3.584228670792708e+00 4.673551519151165e+00 9.221150061831795e+03 + 74600 1.022121115268821e+00 -6.003170132822634e+00 -6.006893670733271e+00 3.659515655526804e+00 4.638134524628292e+00 9.238247565085869e+03 + 74620 1.030144663821612e+00 -6.004008252392195e+00 -5.988346371278444e+00 3.670520968339323e+00 4.760453913362751e+00 9.181291989193436e+03 + 74640 1.013050515429063e+00 -5.969065498348031e+00 -5.965481799243464e+00 3.897376209352586e+00 4.917954364186656e+00 9.111378579113883e+03 + 74660 1.022617120339047e+00 -5.973786728425058e+00 -5.956941673304435e+00 3.848822780665006e+00 4.945549693931481e+00 9.085347157083586e+03 + 74680 1.007914393451495e+00 -5.943951653503214e+00 -6.016348972920043e+00 3.984896380438069e+00 4.569179768897667e+00 9.267283602500569e+03 + 74700 9.986802449413656e-01 -5.923986178274326e+00 -6.016126700048874e+00 4.044904963953804e+00 4.515819829224692e+00 9.266607958886227e+03 + 74720 1.005886916511639e+00 -5.931122117685076e+00 -6.006153544338350e+00 4.054383017028403e+00 4.623540954109557e+00 9.235939919845003e+03 + 74740 1.028329530845373e+00 -5.964032754698774e+00 -6.022562978593945e+00 3.861041022236075e+00 4.524951419107128e+00 9.286410702605079e+03 + 74760 9.803145559323311e-01 -5.896512907028589e+00 -6.008043692727307e+00 4.201627827211692e+00 4.561200796396343e+00 9.241752286097399e+03 + 74780 1.050448019390488e+00 -6.006849466827832e+00 -5.964229877028570e+00 3.674704412337950e+00 4.919432692325519e+00 9.107562003843244e+03 + 74800 1.079249698980009e+00 -6.059677305946659e+00 -5.984593427073376e+00 3.325709555183013e+00 4.756852806866105e+00 9.169823458012339e+03 + 74820 9.799916835240782e-01 -5.929631655063591e+00 -6.001980596002301e+00 4.077363101655057e+00 4.661924286822559e+00 9.223130476131559e+03 + 74840 9.859467339506287e-01 -5.960359460496969e+00 -6.018513611396257e+00 3.929788156432520e+00 4.595858022643043e+00 9.273953206138536e+03 + 74860 1.033635826269025e+00 -6.060767619824266e+00 -6.017822274484399e+00 3.399355091867636e+00 4.645953910579863e+00 9.271863945455072e+03 + 74880 9.759721785558156e-01 -6.013229162277334e+00 -6.053383192980586e+00 3.647891779961840e+00 4.417321121847592e+00 9.381660483482174e+03 + 74900 9.714687453810785e-01 -6.047452204960190e+00 -5.965001404946334e+00 3.455326756932231e+00 4.928772009831857e+00 9.109932519930268e+03 + 74920 9.145583147103661e-01 -5.995908172418925e+00 -6.015023393295445e+00 3.701933716315916e+00 4.592171159972068e+00 9.263217256916281e+03 + 74940 9.653273851456586e-01 -6.096428436032460e+00 -5.985841554844472e+00 3.236334610854196e+00 4.871341595900179e+00 9.173647519578228e+03 + 74960 9.424963885077904e-01 -6.080469848322861e+00 -5.996300981389869e+00 3.353135343584635e+00 4.836446002603942e+00 9.205690801787901e+03 + 74980 9.506503164090532e-01 -6.104357127865349e+00 -5.960936668558809e+00 3.170102272240164e+00 4.993644743822664e+00 9.097503244613514e+03 + 75000 8.700904293810257e-01 -5.987458303524590e+00 -6.010619711951475e+00 3.721728973462096e+00 4.588732582058554e+00 9.249665665565244e+03 + 75020 9.109249801658880e-01 -6.041616508048135e+00 -6.013570361604731e+00 3.451909150539392e+00 4.612954463544551e+00 9.258772582208532e+03 + 75040 9.933322068281094e-01 -6.149541974964728e+00 -6.007680433773741e+00 2.882601495519751e+00 4.697192418040948e+00 9.240679661976419e+03 + 75060 9.609513030287639e-01 -6.082523143000262e+00 -6.027742168932669e+00 3.229558844043006e+00 4.544119674467460e+00 9.302432561895517e+03 + 75080 9.449910725191065e-01 -6.037272041552976e+00 -6.018417057081827e+00 3.507258180847169e+00 4.615526419479927e+00 9.273676977975101e+03 + 75100 9.491350982879939e-01 -6.018734955585298e+00 -6.001417919326830e+00 3.583420173141896e+00 4.682857275140719e+00 9.221403143323339e+03 + 75120 9.535680026247864e-01 -5.995239583519211e+00 -5.937812097532492e+00 3.742362995962986e+00 5.072120507373468e+00 9.027126647794794e+03 + 75140 9.942484227699008e-01 -6.022018546408974e+00 -5.960944055624526e+00 3.603825964486139e+00 4.954525141817343e+00 9.097527379321546e+03 + 75160 1.027873631379090e+00 -6.037984826370608e+00 -6.014628130455152e+00 3.518315957475176e+00 4.652433719858738e+00 9.262003524501955e+03 + 75180 9.962045495131849e-01 -5.968625199310502e+00 -6.095706266078723e+00 3.803277386555143e+00 4.073558235440487e+00 9.513169474446655e+03 + 75200 1.005485192065467e+00 -5.972095288743114e+00 -6.024462460911707e+00 3.831942033980300e+00 4.531241627594541e+00 9.292281309877082e+03 + 75220 9.639440305854408e-01 -5.904765452569521e+00 -6.042682077053646e+00 4.139088241842245e+00 4.347149641525733e+00 9.348546171238233e+03 + 75240 1.100348312849856e+00 -6.105214989262095e+00 -5.964343507400673e+00 3.146828763849312e+00 4.955734612488966e+00 9.107914207085378e+03 + 75260 1.056228523516504e+00 -6.039575006170219e+00 -5.967016735483449e+00 3.521745798166965e+00 4.938386616806499e+00 9.116055523900181e+03 + 75280 1.028838265900209e+00 -6.000037471681031e+00 -6.008139818689394e+00 3.675760589673192e+00 4.629235659317025e+00 9.242072454129033e+03 + 75300 1.018865487876142e+00 -5.989129081903224e+00 -6.048353767935232e+00 3.750205996587058e+00 4.410128684400721e+00 9.366093892289990e+03 + 75320 1.017782367439038e+00 -5.995538006422554e+00 -6.008318703742540e+00 3.749651007813259e+00 4.676262265995383e+00 9.242610486061058e+03 + 75340 1.071290944018869e+00 -6.084598345371083e+00 -5.956463019506284e+00 3.230477810068202e+00 4.966250680061470e+00 9.083892865203470e+03 + 75360 9.877491482691030e-01 -5.971185820990510e+00 -5.971756603105517e+00 3.846847198281965e+00 4.843569679049351e+00 9.130529648337855e+03 + 75380 9.808452817333607e-01 -5.971352607742769e+00 -5.981138097856833e+00 3.894796024025719e+00 4.838606225491058e+00 9.159211078145969e+03 + 75400 1.037038295316925e+00 -6.064265249728187e+00 -5.949850864363729e+00 3.346781622734711e+00 5.003766729066347e+00 9.063731573688070e+03 + 75420 9.840219089987409e-01 -5.993678390346595e+00 -5.973200831648965e+00 3.760001388235666e+00 4.877586699169426e+00 9.134926175657400e+03 + 75440 9.948334277117568e-01 -6.017392759569398e+00 -5.938807060731495e+00 3.615381099452960e+00 5.066632343277792e+00 9.030130276400947e+03 + 75460 9.896458641573308e-01 -6.015972047806883e+00 -5.967456517945833e+00 3.605985471387829e+00 4.884569151603962e+00 9.117398429097395e+03 + 75480 9.934613001299268e-01 -6.025510613901039e+00 -5.970354230591690e+00 3.553212218220808e+00 4.869928706605823e+00 9.126256412388377e+03 + 75500 1.002793901060188e+00 -6.041588045741925e+00 -5.980432002989019e+00 3.481903121725062e+00 4.833070583079277e+00 9.157062131920951e+03 + 75520 9.558324051356426e-01 -5.973735917190573e+00 -5.998751254103208e+00 3.801190804632830e+00 4.657548868969602e+00 9.213244215413853e+03 + 75540 9.856201869383434e-01 -6.017123277830004e+00 -6.022670514561842e+00 3.553919604419966e+00 4.522066512673646e+00 9.286780915758225e+03 + 75560 9.539124603872683e-01 -5.968159645067333e+00 -6.050608970972844e+00 3.865644433700548e+00 4.392207645359153e+00 9.373061011720489e+03 + 75580 9.431429554037259e-01 -5.949508230117665e+00 -6.063763285413580e+00 3.930384795060713e+00 4.274314586638908e+00 9.413828371855889e+03 + 75600 1.034053647388524e+00 -6.080879903000408e+00 -5.981950159149587e+00 3.269247744205254e+00 4.837317642725052e+00 9.161726533907262e+03 + 75620 1.004190179090731e+00 -6.029021373549702e+00 -6.009415077515493e+00 3.595222935501313e+00 4.707805321394249e+00 9.245969720949764e+03 + 75640 9.718085322803021e-01 -5.971874941066882e+00 -5.998909240844970e+00 3.829077901226786e+00 4.673842768356635e+00 9.213697081999937e+03 + 75660 9.730190163301217e-01 -5.960155139837681e+00 -6.040333335692218e+00 3.841720549647667e+00 4.381324941515206e+00 9.341266010075447e+03 + 75680 1.012869534048571e+00 -6.002747971882565e+00 -5.973591583223703e+00 3.705479803676918e+00 4.872900299292669e+00 9.136155279166231e+03 + 75700 1.023855579712104e+00 -6.000208912667226e+00 -6.008372568227969e+00 3.688902714402673e+00 4.642025740851272e+00 9.242749438761124e+03 + 75720 1.041769066119272e+00 -6.006764978630788e+00 -6.035015498849567e+00 3.636503418039051e+00 4.474284559188940e+00 9.324874003337341e+03 + 75740 9.584135189899680e-01 -5.865192773132172e+00 -6.063090906379620e+00 4.409265943954011e+00 4.272904238210019e+00 9.411738152032245e+03 + 75760 1.002279077437801e+00 -5.914305647717590e+00 -6.041233079982685e+00 4.163685211749369e+00 4.434848253726529e+00 9.344074540587113e+03 + 75780 1.059619457402267e+00 -5.985624395891827e+00 -6.038748500824565e+00 3.788756047672038e+00 4.483709216219589e+00 9.336387436068724e+03 + 75800 1.001152575729453e+00 -5.890488791627259e+00 -6.105338308884127e+00 4.249146039746309e+00 4.015446863802031e+00 9.543251916526711e+03 + 75820 1.002694792806448e+00 -5.891353014514380e+00 -6.068105747318249e+00 4.303260862136042e+00 4.288319317979222e+00 9.427300828426283e+03 + 75840 1.060172212791630e+00 -5.982208807021923e+00 -5.978453729784905e+00 3.804545700669832e+00 4.826107935261118e+00 9.151037981985064e+03 + 75860 1.001891310047016e+00 -5.905333660527308e+00 -6.038829661548118e+00 4.203047381384064e+00 4.436492685083180e+00 9.336612782716425e+03 + 75880 1.056839936818774e+00 -6.003078416065223e+00 -6.011501353209184e+00 3.625578885876592e+00 4.577213077350655e+00 9.252382743846909e+03 + 75900 1.036454381224847e+00 -5.998323619011718e+00 -5.966704740524631e+00 3.680800874826888e+00 4.862361368105377e+00 9.115115829592716e+03 + 75920 9.308545586627783e-01 -5.870946164710370e+00 -6.042481757755157e+00 4.395105320588135e+00 4.410121400277737e+00 9.347878252505283e+03 + 75940 9.685868991514517e-01 -5.961776544641721e+00 -6.026809342915873e+00 3.884293556842776e+00 4.510865165359585e+00 9.299528939809330e+03 + 75960 9.432709371698157e-01 -5.961260649655257e+00 -6.028060791513147e+00 3.885047172826419e+00 4.501470420989876e+00 9.303382943355517e+03 + 75980 9.478989028861291e-01 -6.000584462762107e+00 -6.004712975991136e+00 3.696454038647478e+00 4.672747476801037e+00 9.231524987642879e+03 + 76000 9.970805418490873e-01 -6.100005093039072e+00 -6.023827395257143e+00 3.159532416669891e+00 4.596956545794359e+00 9.290325003757849e+03 + 76020 9.307165834568024e-01 -6.023602742724633e+00 -5.992871600527642e+00 3.565116144470216e+00 4.741579118594224e+00 9.195204294598163e+03 + 76040 1.035133617364431e+00 -6.193660547859423e+00 -5.965520092636967e+00 2.614139164365656e+00 4.924156962874343e+00 9.111518630276571e+03 + 76060 9.189639013834705e-01 -6.028719124581639e+00 -5.972871572918073e+00 3.561535542966884e+00 4.882220826999765e+00 9.133965785951170e+03 + 76080 9.039653159019446e-01 -6.006107969407191e+00 -6.006886498564500e+00 3.677520562380957e+00 4.673050127482695e+00 9.238199199890127e+03 + 76100 9.816044131330260e-01 -6.115375541095547e+00 -5.981101084475158e+00 3.061168142632209e+00 4.832192851451490e+00 9.159132247586693e+03 + 76120 9.917282157104250e-01 -6.119952364895518e+00 -5.987866042806566e+00 3.032194841162021e+00 4.790654942889068e+00 9.179848548233413e+03 + 76140 9.866683166815886e-01 -6.096782918954821e+00 -5.990411198123923e+00 3.172624339474438e+00 4.783427221456058e+00 9.187652564717142e+03 + 76160 1.016286866592405e+00 -6.121962609910415e+00 -5.989310646649686e+00 3.009595116474608e+00 4.771303217342686e+00 9.184278300601125e+03 + 76180 9.073114366156748e-01 -5.939094771659452e+00 -6.011830012918007e+00 4.033663372352329e+00 4.616006361303500e+00 9.253389745876337e+03 + 76200 9.272607892783477e-01 -5.943457650205709e+00 -6.034038738651557e+00 3.963349395170041e+00 4.443218767935848e+00 9.321846380787791e+03 + 76220 9.797688687292769e-01 -5.993923800528484e+00 -6.025374403658489e+00 3.802918524110440e+00 4.622324293972848e+00 9.295102978187904e+03 + 76240 1.068949210828011e+00 -6.102751839550146e+00 -5.989361331632303e+00 3.136913512792053e+00 4.788019356380704e+00 9.184423482739288e+03 + 76260 1.032941179821768e+00 -6.032260146230769e+00 -5.964606067763217e+00 3.531540387455571e+00 4.920020575451062e+00 9.108730019293786e+03 + 76280 1.010422647037766e+00 -5.987230551271983e+00 -5.975248957347688e+00 3.829518554361889e+00 4.898318720820861e+00 9.141202766395769e+03 + 76300 9.826665999466337e-01 -5.938329619151382e+00 -5.995993466059112e+00 4.043963769276472e+00 4.712849036880820e+00 9.204734552133135e+03 + 76320 1.038975357599377e+00 -6.016212792170080e+00 -6.006202006382857e+00 3.637623246159619e+00 4.695106727313947e+00 9.236099355224593e+03 + 76340 1.035566086715203e+00 -6.010323195699391e+00 -6.016081781540890e+00 3.634419243299490e+00 4.601352552259319e+00 9.266493131598751e+03 + 76360 1.037550475135629e+00 -6.016540715284439e+00 -6.038028048718242e+00 3.566676184169583e+00 4.443292590438585e+00 9.334175145317326e+03 + 76380 9.909138773456484e-01 -5.952862123002911e+00 -6.020140843316710e+00 3.955034674384347e+00 4.568709850994191e+00 9.278986144962013e+03 + 76400 1.011861820493628e+00 -5.991083348276138e+00 -5.962437852511718e+00 3.759912806094825e+00 4.924399675650275e+00 9.102106940913922e+03 + 76420 1.022021304405100e+00 -6.011338113971354e+00 -5.976782612171760e+00 3.636218604654656e+00 4.834641643434547e+00 9.145877102323833e+03 + 76440 9.414676351261720e-01 -5.896822642094934e+00 -6.023361350568062e+00 4.200200346630318e+00 4.473595500775767e+00 9.288918895120643e+03 + 76460 1.006478598724460e+00 -5.997119061904542e+00 -6.027839507201659e+00 3.685123662747557e+00 4.508722111877965e+00 9.302712258571783e+03 + 76480 1.031694968442922e+00 -6.040604022557227e+00 -6.024623088477257e+00 3.476603660239339e+00 4.568368656768086e+00 9.292801370289211e+03 + 76500 9.624381201586054e-01 -5.947227611602189e+00 -6.060315138924301e+00 4.005376349955112e+00 4.356010267833255e+00 9.403140002497948e+03 + 76520 9.778285260878747e-01 -5.981747265498200e+00 -6.022602841750017e+00 3.812721431268407e+00 4.578122390050478e+00 9.286570984818478e+03 + 76540 9.679030458269198e-01 -5.979190053950963e+00 -5.998795838165444e+00 3.867606476229402e+00 4.755027029284553e+00 9.213326925149458e+03 + 76560 1.023878453132180e+00 -6.074288374033142e+00 -5.970087285798999e+00 3.293356744763868e+00 4.891695518470611e+00 9.125450135002930e+03 + 76580 9.842978815665397e-01 -6.024663970855451e+00 -6.024761520816134e+00 3.533590490874299e+00 4.533030343904251e+00 9.293219360648667e+03 + 76600 9.935504345598720e-01 -6.052369800641815e+00 -5.976084401691383e+00 3.470770565811327e+00 4.908813131712044e+00 9.143771660127029e+03 + 76620 1.008605568746383e+00 -6.088169372154105e+00 -5.961671382026655e+00 3.240731408844999e+00 4.967102443657531e+00 9.099762038200355e+03 + 76640 1.001510717045568e+00 -6.090334289765228e+00 -5.979687391292297e+00 3.217942792821951e+00 4.853294406405725e+00 9.154804744287936e+03 + 76660 9.732512587642480e-01 -6.061787389935800e+00 -5.963240688526579e+00 3.385358593990081e+00 4.951229003534588e+00 9.104543546314215e+03 + 76680 9.604090261013933e-01 -6.053089554960540e+00 -5.988864863648185e+00 3.353289087716155e+00 4.722077203970557e+00 9.182901355375647e+03 + 76700 9.345753650146791e-01 -6.021502345435197e+00 -5.966072163346588e+00 3.671563980322076e+00 4.989852663667822e+00 9.113192111774759e+03 + 76720 9.658598868509626e-01 -6.071572278476234e+00 -6.011075539483307e+00 3.278388840438405e+00 4.625770477575893e+00 9.251095622911058e+03 + 76740 9.242725953504218e-01 -6.009810742278886e+00 -6.029097414876126e+00 3.651246792089217e+00 4.540499733432925e+00 9.306588190395401e+03 + 76760 9.432580747690660e-01 -6.031846918418294e+00 -5.990117591761117e+00 3.519893145858240e+00 4.759509397116179e+00 9.186745839769685e+03 + 76780 9.929383171070868e-01 -6.090675382790504e+00 -6.003359943367769e+00 3.188942249037066e+00 4.690321014222993e+00 9.227381993143721e+03 + 76800 9.512423481561035e-01 -6.007941843120177e+00 -6.043160579896435e+00 3.590986856285561e+00 4.388755419634384e+00 9.350034257514497e+03 + 76820 1.030017380644078e+00 -6.097852273708975e+00 -5.990397493063930e+00 3.129948737393463e+00 4.746970716430875e+00 9.187609386484237e+03 + 76840 9.014301950337887e-01 -5.874824226311594e+00 -6.016750181116633e+00 4.418086928309100e+00 4.603126132848044e+00 9.268556364947779e+03 + 76860 1.059641074422038e+00 -6.073350272459393e+00 -6.010551293563649e+00 3.278751569498670e+00 4.639353024428608e+00 9.249481379358254e+03 + 76880 1.073141595340660e+00 -6.057175771755169e+00 -5.981912793133798e+00 3.397960491043853e+00 4.830132161196063e+00 9.161620118422265e+03 + 76900 9.960642417247977e-01 -5.914974620016306e+00 -6.017160770177630e+00 4.133535145274797e+00 4.546766457792845e+00 9.269779364894697e+03 + 76920 9.998858227000335e-01 -5.898519377431553e+00 -6.022812168229408e+00 4.202083583711725e+00 4.488375144703226e+00 9.287157737108979e+03 + 76940 1.049200594823602e+00 -5.954218654048367e+00 -6.003446477029344e+00 3.942293830653328e+00 4.659620053115568e+00 9.227640210484751e+03 + 76960 1.076997850088828e+00 -5.983166272066539e+00 -6.011182485390131e+00 3.765810415667917e+00 4.604936983268850e+00 9.251415540349350e+03 + 76980 1.046313525807467e+00 -5.932794538243369e+00 -6.033928638756063e+00 4.025290436567843e+00 4.444562780972486e+00 9.321474514059821e+03 + 77000 1.070218571873248e+00 -5.971988986186425e+00 -6.001966085807163e+00 3.870038617211882e+00 4.697905472248435e+00 9.223065679919426e+03 + 77020 1.040367491223628e+00 -5.936908002350227e+00 -6.028230102709736e+00 4.062043300852292e+00 4.537657668538636e+00 9.303893037376198e+03 + 77040 1.030935905723028e+00 -5.938004684832507e+00 -6.006803802815046e+00 4.034249846264656e+00 4.639194664179820e+00 9.237934859465682e+03 + 77060 9.818232820172352e-01 -5.884163213933947e+00 -6.013509802876924e+00 4.342765509325186e+00 4.600037379294661e+00 9.258548940883838e+03 + 77080 1.052890937622306e+00 -6.015308955999066e+00 -5.992379725893143e+00 3.618952748292556e+00 4.750615935847657e+00 9.193664292157426e+03 + 77100 1.000695741104531e+00 -5.969450293300017e+00 -5.996618768199244e+00 3.862766134083425e+00 4.706760546904164e+00 9.206658063263250e+03 + 77120 9.810953773368571e-01 -5.974029890115113e+00 -6.015382847371840e+00 3.804500568002720e+00 4.567045488085140e+00 9.264323310523459e+03 + 77140 9.738470342731991e-01 -5.998905391792707e+00 -6.031828547204700e+00 3.723100234015637e+00 4.534050380798143e+00 9.315005395966811e+03 + 77160 1.077665471789641e+00 -6.190872450679098e+00 -5.938367534322178e+00 2.716682841818992e+00 5.166605146549951e+00 9.028840906547242e+03 + 77180 9.117984638462541e-01 -5.976129095854976e+00 -6.032183680895669e+00 3.796443251533684e+00 4.474569149811026e+00 9.316114569743175e+03 + 77200 8.968290412047899e-01 -5.976796748734516e+00 -6.054221869553881e+00 3.832571044636072e+00 4.387984019392556e+00 9.384234217592500e+03 + 77220 9.542175354742580e-01 -6.074838968198442e+00 -6.029844805097509e+00 3.296669776464889e+00 4.555033223814684e+00 9.308907415975911e+03 + 77240 9.869319200610509e-01 -6.128386911683827e+00 -5.989263632612101e+00 3.036979550349304e+00 4.835846948037015e+00 9.184137856371819e+03 + 77260 9.020075899348160e-01 -6.002087552723443e+00 -6.018939955998020e+00 3.710535747079130e+00 4.613766639575527e+00 9.275300086894984e+03 + 77280 9.811304812337647e-01 -6.115531072428597e+00 -6.006379620394696e+00 3.089308545848877e+00 4.716073074560151e+00 9.236658539063654e+03 + 77300 9.154856231678089e-01 -6.011307939290251e+00 -6.020312901899822e+00 3.653728875762927e+00 4.602020986945312e+00 9.279499555776621e+03 + 77320 9.088646359801265e-01 -5.990875384721905e+00 -6.020940960193702e+00 3.737419922237067e+00 4.564778735245239e+00 9.281449789462811e+03 + 77340 9.617580495484664e-01 -6.055293314466826e+00 -6.020453387388024e+00 3.427216952413656e+00 4.627273205161430e+00 9.279958938866881e+03 + 77360 9.918622494114218e-01 -6.085771288375033e+00 -6.015323047638994e+00 3.249167163685519e+00 4.653691863821882e+00 9.264143519956750e+03 + 77380 9.878430369076583e-01 -6.066049339052080e+00 -5.984609637129328e+00 3.343498989353615e+00 4.811138360547205e+00 9.169868907666480e+03 + 77400 9.881055693255767e-01 -6.049696724138380e+00 -6.029784691044545e+00 3.398505766286097e+00 4.512843741688060e+00 9.308701006247833e+03 + 77420 9.442380569343753e-01 -5.967892521588066e+00 -6.044063971309662e+00 3.871653930749631e+00 4.434265678954483e+00 9.352799284775991e+03 + 77440 9.635302367626096e-01 -5.978097309494858e+00 -5.976516352698919e+00 3.809318551631544e+00 4.818396650206101e+00 9.145095411823604e+03 + 77460 1.031071569587829e+00 -6.057656574983576e+00 -5.956341965539268e+00 3.373677298506261e+00 4.955441464320614e+00 9.083513768963112e+03 + 77480 9.561783210016561e-01 -5.925689405622222e+00 -5.991289881508632e+00 4.146382080806897e+00 4.769693996626294e+00 9.190304699357481e+03 + 77500 9.875461942006877e-01 -5.948762602922740e+00 -6.009947882320335e+00 3.966599929615583e+00 4.615264586923201e+00 9.247613070232639e+03 + 77520 1.011987223196080e+00 -5.965030148313156e+00 -6.016512998064790e+00 3.905044081345964e+00 4.609421591126831e+00 9.267810875947282e+03 + 77540 9.828437310988670e-01 -5.905267705646450e+00 -6.030277334249933e+00 4.156407641238356e+00 4.438583008619652e+00 9.310227962311310e+03 + 77560 1.031844168249039e+00 -5.963551695360975e+00 -6.013748120198509e+00 3.859393563926826e+00 4.571157924638064e+00 9.259299902743554e+03 + 77580 1.025344712619901e+00 -5.943603078798919e+00 -6.001479321445190e+00 3.989168879522360e+00 4.656834537927866e+00 9.221598692723452e+03 + 77600 9.876858960331456e-01 -5.878521182742517e+00 -6.057233169864478e+00 4.373423279690803e+00 4.347231394045875e+00 9.393557726678064e+03 + 77620 1.048405377269466e+00 -5.965283697591902e+00 -6.043820423204854e+00 3.837933183406482e+00 4.386963151417897e+00 9.351969485223646e+03 + 77640 1.049955522935665e+00 -5.970416280113805e+00 -6.004421453615732e+00 3.815161984956450e+00 4.619899016424793e+00 9.230606844709877e+03 + 77660 1.016012943430498e+00 -5.929341770299764e+00 -5.970832653725770e+00 4.094919028946958e+00 4.856671955621375e+00 9.127713636099425e+03 + 77680 1.075730305499723e+00 -6.033618318249268e+00 -5.981874097317982e+00 3.537572920289043e+00 4.834696244268795e+00 9.161474450526517e+03 + 77700 1.003903577665351e+00 -5.957388514035513e+00 -6.018971590985894e+00 3.882014493859845e+00 4.528394936060398e+00 9.275362638712924e+03 + 77720 1.001423546409892e+00 -5.997831458287514e+00 -5.971801816688876e+00 3.724728599868541e+00 4.874194830001944e+00 9.130693350045449e+03 + 77740 9.701279831440369e-01 -6.005169724464868e+00 -6.028549520737738e+00 3.595423176941391e+00 4.461172768730792e+00 9.304917555972950e+03 + 77760 9.037146612667915e-01 -5.960351562793937e+00 -6.063517714322702e+00 3.869888730442883e+00 4.277492723454358e+00 9.413077780618514e+03 + 77780 9.056387633003206e-01 -6.004177817156937e+00 -6.044579374924515e+00 3.635713005101290e+00 4.403721008279000e+00 9.354414398153249e+03 + 77800 9.894580800366596e-01 -6.154292053483897e+00 -5.977088926144186e+00 2.883779277732085e+00 4.901307057012045e+00 9.146869257715724e+03 + 77820 9.276545718061032e-01 -6.075786898284290e+00 -6.016539776362106e+00 3.297559295049870e+00 4.637765437589540e+00 9.267889982641193e+03 + 77840 9.031435911169059e-01 -6.044319129697051e+00 -6.031435691308593e+00 3.422134257207110e+00 4.496112954139288e+00 9.313822246417190e+03 + 77860 9.304128498381903e-01 -6.083465664409365e+00 -5.983680664859659e+00 3.265807380532507e+00 4.838788289625693e+00 9.167028448351466e+03 + 77880 8.966850248779551e-01 -6.025209185929398e+00 -5.984858124352200e+00 3.605387593113622e+00 4.837089632996497e+00 9.170607331043226e+03 + 77900 9.662730650492308e-01 -6.111241630646713e+00 -5.981737843583330e+00 3.062651850535675e+00 4.806282636499903e+00 9.161086712124938e+03 + 77920 9.124033851557393e-01 -6.007066174020688e+00 -6.007644014182054e+00 3.672637988384815e+00 4.669319940757773e+00 9.240520913100581e+03 + 77940 9.433469773732464e-01 -6.025429101271422e+00 -6.014134140360269e+00 3.552608638110908e+00 4.617466051552298e+00 9.260478697458148e+03 + 77960 9.471660061161816e-01 -6.000295273194393e+00 -6.009031366903246e+00 3.732733950107298e+00 4.682569948124932e+00 9.244740220369367e+03 + 77980 9.583237299776859e-01 -5.985520496793974e+00 -6.026397477118721e+00 3.771325309501922e+00 4.536603362784964e+00 9.298273375083591e+03 + 78000 9.822443607144675e-01 -5.994084185622157e+00 -5.990173665022997e+00 3.747826540653387e+00 4.770281355084866e+00 9.186922753955916e+03 + 78020 1.000549554755738e+00 -5.999050137171565e+00 -5.998020982392176e+00 3.679669405921632e+00 4.685578971926073e+00 9.210978037261983e+03 + 78040 9.825939859159107e-01 -5.953431332958740e+00 -6.023834239652474e+00 3.951961590988343e+00 4.547697205938323e+00 9.290361900106423e+03 + 78060 1.027101771833677e+00 -6.003964232450689e+00 -6.009809411093721e+00 3.711772305892965e+00 4.678208385586207e+00 9.247178785062517e+03 + 78080 1.069617088928239e+00 -6.057174288999921e+00 -5.984238791008398e+00 3.412723163734705e+00 4.831530079933869e+00 9.168735239574766e+03 + 78100 1.032931399494156e+00 -5.997870301633825e+00 -6.010926505817864e+00 3.704233028722928e+00 4.629262283857107e+00 9.250623786278969e+03 + 78120 9.990932970363942e-01 -5.947444446628786e+00 -6.044726018402647e+00 3.915198220830202e+00 4.356592381430115e+00 9.354835443281314e+03 + 78140 9.903117753514266e-01 -5.935960214073454e+00 -5.990173628242962e+00 3.969802758347145e+00 4.658500944687098e+00 9.186925646487325e+03 + 78160 9.977142655170520e-01 -5.947548690932602e+00 -6.019109846805618e+00 3.943205430325067e+00 4.532290199249127e+00 9.275813635654033e+03 + 78180 1.061246196682019e+00 -6.043446506513968e+00 -5.957087236284449e+00 3.473468350913270e+00 4.969356644625044e+00 9.085776701744828e+03 + 78200 1.005371703488933e+00 -5.965038839699390e+00 -5.985410284265660e+00 3.935621546664635e+00 4.818645559494254e+00 9.172289322955903e+03 + 78220 1.044507016004814e+00 -6.028994953498604e+00 -5.992003633241251e+00 3.551231967651003e+00 4.763641852957037e+00 9.192494234607775e+03 + 78240 9.705534101886567e-01 -5.927988745686074e+00 -6.011607544835702e+00 4.122688107526733e+00 4.642536022842219e+00 9.252708209183909e+03 + 78260 1.000624460206580e+00 -5.983489532146212e+00 -6.050778853150732e+00 3.738358953341983e+00 4.351973259145254e+00 9.373581434547184e+03 + 78280 9.557989149634782e-01 -5.932252413917265e+00 -6.011991752438707e+00 4.010915216982305e+00 4.553039595569427e+00 9.253901762299187e+03 + 78300 9.459404437062641e-01 -5.936592057873725e+00 -6.004854765275988e+00 4.025714690587525e+00 4.633739661063895e+00 9.231945453136545e+03 + 78320 1.043106579113228e+00 -6.104206618906877e+00 -5.963148331373988e+00 3.138553134941259e+00 4.948531650654555e+00 9.104274402655548e+03 + 78340 9.947840069746099e-01 -6.066715597726089e+00 -6.001840658093563e+00 3.339124872512799e+00 4.711646815247229e+00 9.222715450411288e+03 + 78360 9.603038667107582e-01 -6.060645831723562e+00 -5.977660942267663e+00 3.373144660514535e+00 4.849656737640450e+00 9.148588666718559e+03 + 78380 9.436095248178937e-01 -6.083643291185696e+00 -6.001451077685974e+00 3.193636310179499e+00 4.665596719298840e+00 9.221491694599892e+03 + 78400 9.101945306451855e-01 -6.073358506023091e+00 -5.936509451354990e+00 3.277651655699111e+00 5.063460104926116e+00 9.023161517878330e+03 + 78420 8.898257787199445e-01 -6.066782905595899e+00 -5.903882661858805e+00 3.393592712056678e+00 5.328991120326318e+00 8.924326605064518e+03 + 78440 8.954246888115581e-01 -6.083877341621532e+00 -5.941981781899617e+00 3.278004437190987e+00 5.092790699381125e+00 9.039778252080689e+03 + 78460 9.481381666289637e-01 -6.159163501861797e+00 -5.981107807106949e+00 2.838263825689257e+00 4.860687179001308e+00 9.159146387911785e+03 + 78480 9.411206466284182e-01 -6.137352341169860e+00 -5.995539940113520e+00 2.984783117544954e+00 4.799091869808599e+00 9.203370689247566e+03 + 78500 9.506610438566124e-01 -6.134377798490855e+00 -5.982160552669639e+00 3.006297720229315e+00 4.880352701277397e+00 9.162388881689225e+03 + 78520 9.226601224909358e-01 -6.070160403870820e+00 -5.969137680224539e+00 3.349089851708784e+00 4.929177964101690e+00 9.122566544115467e+03 + 78540 9.350130673781817e-01 -6.060243460879107e+00 -5.986181655315741e+00 3.399993259964893e+00 4.825267608537110e+00 9.174684621282766e+03 + 78560 9.650144846402954e-01 -6.071696093122321e+00 -6.003266095761548e+00 3.390218422333436e+00 4.783154056686861e+00 9.227077553884892e+03 + 78580 9.604910303162029e-01 -6.034092826172119e+00 -6.024613307196831e+00 3.546322036255746e+00 4.600754901162666e+00 9.292756295738118e+03 + 78600 9.686794808081647e-01 -6.021766343567298e+00 -5.977275716772505e+00 3.589974437310432e+00 4.845446501268380e+00 9.147415168214486e+03 + 78620 9.790638855032975e-01 -6.017079485234357e+00 -5.982659144929070e+00 3.628753021305816e+00 4.826399941869219e+00 9.163881743461079e+03 + 78640 9.635405966946655e-01 -5.977130747501815e+00 -6.025142041184683e+00 3.814290538040150e+00 4.538602259989435e+00 9.294379934463390e+03 + 78660 9.707454470410779e-01 -5.974418552402655e+00 -6.025444292159965e+00 3.828578880147194e+00 4.535581186253014e+00 9.295326545242200e+03 + 78680 9.911583826870468e-01 -5.993693794148694e+00 -6.025621108406230e+00 3.755451121332038e+00 4.572119542129353e+00 9.295859183455761e+03 + 78700 9.986527167138837e-01 -5.997600496545068e+00 -6.009593085558130e+00 3.706881924570941e+00 4.638018622610789e+00 9.246516691242879e+03 + 78720 1.026115132203620e+00 -6.031128199173386e+00 -6.012317781529495e+00 3.498664985632630e+00 4.606677314646578e+00 9.254890630268450e+03 + 78740 9.816313985852830e-01 -5.958218054730507e+00 -6.013528870665908e+00 3.912158523236141e+00 4.594555258813961e+00 9.258643861241966e+03 + 78760 1.033620182847291e+00 -6.031627959023227e+00 -5.956249364553392e+00 3.534786418184695e+00 4.967621972430289e+00 9.083234424136646e+03 + 78780 9.830286204954115e-01 -5.951758298407527e+00 -5.993886409160242e+00 3.988301041459746e+00 4.746394910213591e+00 9.198286235509540e+03 + 78800 1.000258120334726e+00 -5.971249567948878e+00 -6.020768879016869e+00 3.825286689582233e+00 4.540939142341202e+00 9.280907900890526e+03 + 78820 9.864972939353344e-01 -5.946243439661701e+00 -6.017824338783822e+00 3.990878233141380e+00 4.579849633273819e+00 9.271846291834496e+03 + 78840 1.021859006135012e+00 -5.995468529602100e+00 -6.001936475707494e+00 3.747306807373122e+00 4.710166859924521e+00 9.222978263265690e+03 + 78860 9.882568805799498e-01 -5.942577623793076e+00 -6.030864900302477e+00 4.001677853742455e+00 4.494718649613587e+00 9.312017305215872e+03 + 78880 9.771441179677272e-01 -5.925778263224009e+00 -5.997743118022825e+00 4.087553837958024e+00 4.674320505177930e+00 9.210126729893587e+03 + 78900 1.015066568996722e+00 -5.979994330427906e+00 -6.010524750307205e+00 3.763688570078540e+00 4.588378174564395e+00 9.249390491771201e+03 + 78920 1.018739460242896e+00 -5.986789341636689e+00 -6.012039733536547e+00 3.771919862252372e+00 4.626928204477868e+00 9.254033481816645e+03 + 78940 1.004836582510179e+00 -5.969766681587550e+00 -5.989581405251473e+00 3.897587970790249e+00 4.783808761193428e+00 9.185084777862216e+03 + 78960 1.000915367395484e+00 -5.969396837968292e+00 -5.998386169842300e+00 3.863985857272187e+00 4.697524627567022e+00 9.212082208171083e+03 + 78980 1.011097346139345e+00 -5.992593794250812e+00 -5.978853168859705e+00 3.755021533955431e+00 4.833922331306077e+00 9.152231479871780e+03 + 79000 1.059666254547746e+00 -6.075228378317800e+00 -5.949276757245159e+00 3.302772307519212e+00 5.026006006668686e+00 9.062012326248185e+03 + 79020 9.404329904009793e-01 -5.912418498441657e+00 -6.022127545440677e+00 4.200550887308586e+00 4.570584562020053e+00 9.285100828118733e+03 + 79040 9.848581356870563e-01 -5.995749291628560e+00 -5.950319121540778e+00 3.770773996085144e+00 5.031641063025294e+00 9.065157216419613e+03 + 79060 9.608603747923385e-01 -5.975710424122484e+00 -5.991968912277589e+00 3.876364743899228e+00 4.783005988919707e+00 9.192405688069553e+03 + 79080 9.762292981095760e-01 -6.013582321367158e+00 -6.020082158499417e+00 3.624525748921560e+00 4.587202678261587e+00 9.278803852728182e+03 + 79100 9.968077163779366e-01 -6.060067062195587e+00 -5.998288605730000e+00 3.336803585265185e+00 4.691545042475827e+00 9.211816924103132e+03 + 79120 9.529428875274224e-01 -6.010522734970114e+00 -5.974924022157747e+00 3.663670102253345e+00 4.868083420104956e+00 9.140240841576147e+03 + 79140 9.873690817848273e-01 -6.074700664243276e+00 -5.987370156791362e+00 3.244204633224945e+00 4.745669921366193e+00 9.178340289386322e+03 + 79160 9.130881549992070e-01 -5.973833669404494e+00 -6.030780650675930e+00 3.822882500084973e+00 4.495884121107514e+00 9.311779785569635e+03 + 79180 9.130059993031368e-01 -5.982160469712809e+00 -6.049699357839504e+00 3.764013437411514e+00 4.376194690178869e+00 9.370240987068373e+03 + 79200 9.144915391394658e-01 -5.989863774478316e+00 -5.996351292292557e+00 3.783542019016778e+00 4.746289687787270e+00 9.205827462468909e+03 + 79220 9.162392675107899e-01 -5.990783865313929e+00 -6.020396209652485e+00 3.687540813334715e+00 4.517502149647247e+00 9.279754746233712e+03 + 79240 9.235177618171081e-01 -5.993583822311699e+00 -5.991157638784288e+00 3.722027338034579e+00 4.735958859299659e+00 9.189928927008819e+03 + 79260 9.122072343294187e-01 -5.960147639003375e+00 -6.017354682230184e+00 3.939842341817747e+00 4.611350646848075e+00 9.270383322164405e+03 + 79280 9.464530382076917e-01 -5.985066495056913e+00 -6.049603975101954e+00 3.736198910912617e+00 4.365614713351233e+00 9.369966592766663e+03 + 79300 1.058102145576381e+00 -6.118124074882580e+00 -5.985462856214184e+00 3.111493438629915e+00 4.873254685481086e+00 9.172484563610771e+03 + 79320 9.953261731051044e-01 -5.990762207761407e+00 -5.966468802080260e+00 3.791395229966537e+00 4.930891724780066e+00 9.114398898363157e+03 + 79340 9.992972109940355e-01 -5.961723229258709e+00 -5.994031798503905e+00 3.928603952261779e+00 4.743083147920930e+00 9.198725379131081e+03 + 79360 9.926349647139661e-01 -5.915070630550414e+00 -6.011796810038751e+00 4.149267309094780e+00 4.593850618144844e+00 9.253295758662978e+03 + 79380 1.037321676282260e+00 -5.948510655240105e+00 -6.047489058921755e+00 3.947058702396041e+00 4.378709391597541e+00 9.363409109803762e+03 + 79400 1.073554589102331e+00 -5.980993106816110e+00 -6.033464135983314e+00 3.789565228428210e+00 4.488268459084602e+00 9.320063210492326e+03 + 79420 1.016620402774436e+00 -5.886967006135101e+00 -6.020426988457193e+00 4.262292675040978e+00 4.495944803682008e+00 9.279841377628121e+03 + 79440 1.068403542474359e+00 -5.960438953669618e+00 -6.006390438935841e+00 3.868462736741713e+00 4.604602197373694e+00 9.236687061558874e+03 + 79460 9.874269650080266e-01 -5.842593843709981e+00 -6.054890823069911e+00 4.549197988529999e+00 4.330155880193897e+00 9.386302095136112e+03 + 79480 1.017759587682552e+00 -5.894621021086714e+00 -6.033039891771820e+00 4.291344042132524e+00 4.496521466407633e+00 9.318743561586927e+03 + 79500 1.105846470791628e+00 -6.036755426472809e+00 -6.017208669404104e+00 3.517414095775697e+00 4.629654599715089e+00 9.269967576930499e+03 + 79520 1.086894678355959e+00 -6.027120172015224e+00 -6.014100530719969e+00 3.533845370601539e+00 4.608606165701871e+00 9.260404330473939e+03 + 79540 1.049454254284310e+00 -5.994584829837050e+00 -6.011042174487166e+00 3.761334105949868e+00 4.666833486203054e+00 9.250999407055326e+03 + 79560 1.030069716704877e+00 -5.991172669794780e+00 -5.984594332761020e+00 3.763498997698880e+00 4.801272826941096e+00 9.169811743421678e+03 + 79580 1.028925048212893e+00 -6.012828622395782e+00 -5.970669021180692e+00 3.659255478289710e+00 4.901342432643959e+00 9.127210901884571e+03 + 79600 9.944584734349552e-01 -5.980683481626457e+00 -5.960911784614881e+00 3.820979842968632e+00 4.934511986869324e+00 9.097417679516766e+03 + 79620 9.901706812860336e-01 -5.987544470704947e+00 -5.987143215339533e+00 3.781052302697437e+00 4.783356373099715e+00 9.177573862144696e+03 + 79640 9.246167639896486e-01 -5.898438492136320e+00 -5.986236757283998e+00 4.267403810189261e+00 4.763252584973672e+00 9.174811103240676e+03 + 79660 9.916679381978120e-01 -6.000523303854512e+00 -6.022122174521691e+00 3.702740003652233e+00 4.578715945866861e+00 9.285052279835410e+03 + 79680 9.845988297280789e-01 -5.990509847177464e+00 -6.040834177254060e+00 3.730551225574747e+00 4.441581134610021e+00 9.342845329404190e+03 + 79700 1.012103464704459e+00 -6.035439240602013e+00 -6.028021986269549e+00 3.442340611003453e+00 4.484931633196864e+00 9.303278711208271e+03 + 79720 1.015763565165914e+00 -6.044095272153485e+00 -5.993496414538418e+00 3.454193648501328e+00 4.744740119074952e+00 9.197082781862344e+03 + 79740 9.222818700668998e-01 -5.906833461994591e+00 -5.985664802016244e+00 4.229068492670546e+00 4.776406739155771e+00 9.173089251397545e+03 + 79760 9.597870572140947e-01 -5.960718976870643e+00 -5.977189763390419e+00 3.844068322181662e+00 4.749490517139135e+00 9.147165028539104e+03 + 79780 9.522985703267357e-01 -5.945043840197743e+00 -6.033792705183500e+00 3.960293430182864e+00 4.450683713592172e+00 9.321040393839516e+03 + 79800 9.833275714694408e-01 -5.986134330689360e+00 -5.992010910363025e+00 3.788435245758111e+00 4.754691015874160e+00 9.192526612755901e+03 + 79820 9.988231391725373e-01 -6.002387319931682e+00 -6.001299313579232e+00 3.724469615070988e+00 4.730717115915194e+00 9.221015132285953e+03 + 79840 1.024379288003904e+00 -6.033932660189155e+00 -5.992003567042530e+00 3.503221755406675e+00 4.743985096760791e+00 9.192521594308335e+03 + 79860 9.827181494933237e-01 -5.965889220469361e+00 -6.043897883407553e+00 3.844590998537356e+00 4.396653184144686e+00 9.352308119905227e+03 + 79880 9.705938199892743e-01 -5.942608933405355e+00 -6.006729211590787e+00 4.010776237453497e+00 4.642587677531767e+00 9.237720442481392e+03 + 79900 9.989592388664118e-01 -5.981314239385885e+00 -5.930071112743315e+00 3.831441066158048e+00 5.125687029187906e+00 9.003625830083804e+03 + 79920 9.509828765130268e-01 -5.903474650230136e+00 -5.959567595188465e+00 4.199545177000271e+00 4.877450806694363e+00 9.093302296884925e+03 + 79940 1.008660626273198e+00 -5.975206559142093e+00 -5.973249874015888e+00 3.852131261379689e+00 4.863366850170403e+00 9.135085691382848e+03 + 79960 1.034057738351715e+00 -5.993540037212778e+00 -5.981668704255794e+00 3.691299380901082e+00 4.759466411822924e+00 9.160865262674994e+03 + 79980 1.002622890907336e+00 -5.922972181137649e+00 -5.998275900307460e+00 4.077008223773470e+00 4.644602615087531e+00 9.211738305864092e+03 + 80000 1.002534478236392e+00 -5.893540385663340e+00 -6.026169635517707e+00 4.283656440432240e+00 4.522078763458380e+00 9.297540298519638e+03 + 80020 1.094687085530008e+00 -5.993440939835718e+00 -5.989813159942677e+00 3.764577229969778e+00 4.785408503512746e+00 9.185780164415793e+03 + 80040 1.055082100139671e+00 -5.898909722028495e+00 -6.025321495774995e+00 4.219677073728563e+00 4.493801106717396e+00 9.294917553481977e+03 + 80060 1.085583131184937e+00 -5.913580248815832e+00 -5.995051811128758e+00 4.192783551086773e+00 4.724961232602432e+00 9.201841630477857e+03 + 80080 1.090025280436168e+00 -5.894810926655870e+00 -6.034197483346787e+00 4.226381129079512e+00 4.426001950560326e+00 9.322316172175941e+03 + 80100 1.047457605914503e+00 -5.819409458044511e+00 -6.024690075875109e+00 4.691037192552955e+00 4.512284117896722e+00 9.292948853051041e+03 + 80120 1.127652005637097e+00 -5.934003334918287e+00 -6.024570493283049e+00 3.995991733415875e+00 4.475941094862951e+00 9.292604433306064e+03 + 80140 1.104842672427734e+00 -5.909465117880103e+00 -6.032670192464904e+00 4.178638676803430e+00 4.471176072613829e+00 9.317603653038059e+03 + 80160 1.054685386192829e+00 -5.861471499217983e+00 -6.053524088219884e+00 4.431970594065964e+00 4.329174907974951e+00 9.382081453747751e+03 + 80180 1.035297912196663e+00 -5.871013411255056e+00 -6.078486687471992e+00 4.326344205160282e+00 4.135000546736907e+00 9.459568903120788e+03 + 80200 1.039432343452146e+00 -5.928553381094001e+00 -6.067840343920899e+00 3.999433392885801e+00 4.199626097745917e+00 9.426493171449256e+03 + 80220 1.020980129054669e+00 -5.954851935059028e+00 -6.027304359714914e+00 3.984153646438417e+00 4.568120612087840e+00 9.301040824812659e+03 + 80240 1.028248837015344e+00 -6.008051184400480e+00 -5.980029095212903e+00 3.666505959114474e+00 4.827413131633823e+00 9.155839579876905e+03 + 80260 1.016907947689166e+00 -6.019854239883813e+00 -5.957577663570278e+00 3.563580640392458e+00 4.921182378853813e+00 9.087269307231058e+03 + 80280 9.097418901123862e-01 -5.877951742464337e+00 -5.983392699645973e+00 4.328354486090709e+00 4.722896193018360e+00 9.166116685071396e+03 + 80300 1.009663701932018e+00 -6.035852982966083e+00 -5.978466560213853e+00 3.532381221631197e+00 4.861902941594719e+00 9.151061221238029e+03 + 80320 9.285183626925706e-01 -5.921999020192650e+00 -6.002108198353142e+00 4.147670149667457e+00 4.687670851814656e+00 9.223509460299141e+03 + 80340 1.007831994203929e+00 -6.043601103086168e+00 -5.977780352600639e+00 3.517883857678721e+00 4.895836792694848e+00 9.148937113911612e+03 + 80360 9.642957607884645e-01 -5.980897211629611e+00 -5.982532881003374e+00 3.826812674468522e+00 4.817420407805358e+00 9.163417897459703e+03 + 80380 1.033425115073918e+00 -6.081161832987428e+00 -5.944446244238369e+00 3.326901110527948e+00 5.111943177794029e+00 9.047286377227612e+03 + 80400 1.027875708381550e+00 -6.067876130161433e+00 -6.003086441082604e+00 3.353305542149515e+00 4.725337963012134e+00 9.226518691529565e+03 + 80420 9.674887958443071e-01 -5.973286478717758e+00 -6.065208317777971e+00 3.846530442086685e+00 4.318701017344315e+00 9.418279230056989e+03 + 80440 9.998988992298777e-01 -6.018633120308276e+00 -6.011400263835027e+00 3.581905373355749e+00 4.623437554506067e+00 9.252071754397144e+03 + 80460 1.004933198700895e+00 -6.021110434000995e+00 -5.989321590057112e+00 3.588034866536607e+00 4.770571327770085e+00 9.184301942079575e+03 + 80480 9.976532533953327e-01 -6.004673382259777e+00 -6.003060639131224e+00 3.642142665363094e+00 4.651403285978436e+00 9.226408371484842e+03 + 80500 9.798480950375431e-01 -5.971116530358305e+00 -5.945787064917397e+00 3.840649288570114e+00 4.986094998853921e+00 9.051365099854220e+03 + 80520 9.898055193963495e-01 -5.973401523394545e+00 -5.987976996693258e+00 3.878651720367064e+00 4.794957097138647e+00 9.180163957994317e+03 + 80540 1.050801412019621e+00 -6.047657297213751e+00 -6.005025064170906e+00 3.439579529413368e+00 4.684380408862127e+00 9.232475198752469e+03 + 80560 1.041895089673064e+00 -6.018026754737074e+00 -5.973835113844153e+00 3.581206497066169e+00 4.834961737707649e+00 9.136912039481398e+03 + 80580 1.075090983815789e+00 -6.046315556615985e+00 -6.010278416441178e+00 3.464119663737547e+00 4.671050499350711e+00 9.248628756520144e+03 + 80600 1.053159998455167e+00 -5.990768187085731e+00 -6.039041567089806e+00 3.693251331109284e+00 4.416058112844473e+00 9.337289001771140e+03 + 80620 1.007437463709463e+00 -5.902097178535293e+00 -6.006333475673088e+00 4.302016993559189e+00 4.703476044879118e+00 9.236494514575365e+03 + 80640 1.080360867172413e+00 -5.990347910656498e+00 -6.039898798100485e+00 3.762741750211048e+00 4.478212886532621e+00 9.339939250690915e+03 + 80660 1.052821680553730e+00 -5.933423739896924e+00 -6.016158862093036e+00 4.089272539094425e+00 4.614194664225566e+00 9.266743212173586e+03 + 80680 1.114786955517762e+00 -6.013250391362781e+00 -6.018128894662110e+00 3.591361164115531e+00 4.563348043224838e+00 9.272794487838173e+03 + 80700 1.082988455053263e+00 -5.961540066326007e+00 -5.987187476722777e+00 3.908364959159268e+00 4.761093559737082e+00 9.177750320377618e+03 + 80720 1.018898805515524e+00 -5.867717667599978e+00 -6.044793834692135e+00 4.408967022727404e+00 4.392168268835941e+00 9.355061661676011e+03 + 80740 1.078535505632103e+00 -5.965057255115155e+00 -6.041002391506717e+00 3.872766586177249e+00 4.436677860545026e+00 9.343339451356544e+03 + 80760 1.122763021347808e+00 -6.052795303069532e+00 -6.006742519703213e+00 3.378097112029223e+00 4.642539320763824e+00 9.237785587126256e+03 + 80780 1.011186157889471e+00 -5.922607857192942e+00 -6.009155469933456e+00 4.102263689982693e+00 4.605293904426870e+00 9.245164321278171e+03 + 80800 1.012676335665791e+00 -5.969998909856515e+00 -5.969015267058977e+00 3.842727275531674e+00 4.848375504693367e+00 9.122162612919192e+03 + 80820 9.839291033142596e-01 -5.970925365618903e+00 -5.961130671494203e+00 3.896228134556838e+00 4.952470783944881e+00 9.098100625334013e+03 + 80840 9.703262031256962e-01 -5.985669552021039e+00 -6.017795474468260e+00 3.758638467439156e+00 4.574166449276784e+00 9.271758987431505e+03 + 80860 9.860307020865687e-01 -6.039540886349507e+00 -6.017438500335203e+00 3.478093158526607e+00 4.605008479353925e+00 9.270667990367545e+03 + 80880 9.493660487190138e-01 -6.007464672391607e+00 -5.977203752048952e+00 3.667988434541938e+00 4.841751322011753e+00 9.147210070761919e+03 + 80900 9.411803354878033e-01 -6.008670311518920e+00 -6.008303553769675e+00 3.633818434487520e+00 4.635924414239258e+00 9.242557081332734e+03 + 80920 9.562927239983039e-01 -6.040237509250625e+00 -5.986487338932350e+00 3.513190510640249e+00 4.821832306419760e+00 9.175612393213398e+03 + 80940 9.391222144072718e-01 -6.018039973091003e+00 -6.013153616723916e+00 3.651819905722478e+00 4.679878120143496e+00 9.257452384859767e+03 + 80960 9.962900101017992e-01 -6.100773704611004e+00 -5.960896700160498e+00 3.160383928109457e+00 4.963579333560741e+00 9.097409582381813e+03 + 80980 9.497343258144788e-01 -6.023199853090263e+00 -6.021134194005993e+00 3.620213444521876e+00 4.632074778643462e+00 9.282052807849825e+03 + 81000 9.591025418906647e-01 -6.026455855685898e+00 -6.065256481137539e+00 3.524178024527893e+00 4.301378828807182e+00 9.418479539948283e+03 + 81020 1.001990028660329e+00 -6.077534127037405e+00 -6.021240361340688e+00 3.282007639689934e+00 4.605255153752570e+00 9.282388103225949e+03 + 81040 9.966016185348995e-01 -6.055363997114036e+00 -6.013132139043764e+00 3.371627171695458e+00 4.614129036093873e+00 9.257419537291769e+03 + 81060 9.659692754691518e-01 -5.992538068302758e+00 -6.004632470471654e+00 3.750914600299199e+00 4.681466671442708e+00 9.231272701576272e+03 + 81080 9.691829504854111e-01 -5.974490335592261e+00 -6.018024527710942e+00 3.850699258365816e+00 4.600719190325892e+00 9.272470340610080e+03 + 81100 1.003573479230278e+00 -5.998331342676080e+00 -6.028882462700820e+00 3.711859255152203e+00 4.536429996199598e+00 9.305931270102272e+03 + 81120 9.652038612407686e-01 -5.913090084011630e+00 -6.032846986355366e+00 4.162974002716716e+00 4.475311337138238e+00 9.318139945958466e+03 + 81140 9.966998233310604e-01 -5.929979100262118e+00 -5.987371099498042e+00 4.028287233705730e+00 4.698733492709875e+00 9.178316486711472e+03 + 81160 9.804020724797735e-01 -5.869939224845761e+00 -5.998623418088206e+00 4.364546399268137e+00 4.625621847855474e+00 9.212795182111613e+03 + 81180 1.126184741962428e+00 -6.047964278793083e+00 -6.006159092705674e+00 3.398152128404014e+00 4.638203976249550e+00 9.235955440699909e+03 + 81200 9.899612490535551e-01 -5.811348463827199e+00 -6.061800894530588e+00 4.637657909690657e+00 4.199521295203407e+00 9.407730864339252e+03 + 81220 1.151403160611242e+00 -6.022118671138731e+00 -5.980063185279393e+00 3.598535440400098e+00 4.840024548269824e+00 9.155959277935875e+03 + 81240 1.067219841122242e+00 -5.877373726253977e+00 -6.004808208624930e+00 4.409997452595479e+00 4.678248934399053e+00 9.231793070179991e+03 + 81260 1.127695639210377e+00 -5.957308129270547e+00 -6.036038080045511e+00 3.954573383865618e+00 4.502493823095270e+00 9.327982579786789e+03 + 81280 1.103028274947716e+00 -5.923413750088998e+00 -6.033437472139344e+00 4.109392321773495e+00 4.477619083644450e+00 9.319956428209549e+03 + 81300 9.469324782446774e-01 -5.708014671570099e+00 -6.087656680911923e+00 5.312427897099631e+00 4.132464730047806e+00 9.488044984776521e+03 + 81320 1.095960453556355e+00 -5.962941065130249e+00 -5.981563294094487e+00 3.884138894529285e+00 4.777207174036013e+00 9.160555130944156e+03 + 81340 9.871654323815087e-01 -5.864591779611393e+00 -6.010560505658964e+00 4.463085211610327e+00 4.624910198057822e+00 9.249510421422576e+03 + 81360 9.991419644136911e-01 -5.968435540664949e+00 -6.023131166643513e+00 3.841009523089968e+00 4.526938774600286e+00 9.288201209487406e+03 + 81380 9.841981835773045e-01 -6.016394145035136e+00 -6.005892497406464e+00 3.663636985831985e+00 4.723939071640539e+00 9.235149739072316e+03 + 81400 9.377169216155408e-01 -5.984331702590624e+00 -6.009919031453745e+00 3.793692120277228e+00 4.646765718318846e+00 9.247522920451795e+03 + 81420 9.400508964306854e-01 -6.006417987786693e+00 -5.985081075780034e+00 3.660709506883469e+00 4.783229357502169e+00 9.171298836560509e+03 + 81440 9.699313219880838e-01 -6.058502217893892e+00 -5.973919960684958e+00 3.395756690421595e+00 4.881441100377295e+00 9.137162347086463e+03 + 81460 9.952068072926994e-01 -6.098024106266205e+00 -6.025599703083651e+00 3.092386996336173e+00 4.508259127050570e+00 9.295823085602729e+03 + 81480 9.716843809594646e-01 -6.064040414707251e+00 -6.004068320993178e+00 3.331259416743575e+00 4.675628459501291e+00 9.229528876136948e+03 + 81500 9.973697415567517e-01 -6.098995123461590e+00 -5.987990150078407e+00 3.131363910149934e+00 4.768771645280289e+00 9.180221700530825e+03 + 81520 9.363162329557408e-01 -6.000394687731413e+00 -6.010277762884474e+00 3.706335535412770e+00 4.649585388482955e+00 9.248637468922027e+03 + 81540 1.013715851668724e+00 -6.102670727235536e+00 -6.012984549917034e+00 3.116204155939033e+00 4.631196064992952e+00 9.256972066950684e+03 + 81560 9.510302311325567e-01 -5.994672440513835e+00 -6.013574746603648e+00 3.744624109953838e+00 4.636084143263719e+00 9.258771042960105e+03 + 81580 9.708791169434510e-01 -6.004990242564016e+00 -6.041103793930236e+00 3.648293076755405e+00 4.440923476256562e+00 9.343675324845555e+03 + 81600 1.021428169911760e+00 -6.059476600844403e+00 -5.998202382908654e+00 3.359272897199406e+00 4.711118938741055e+00 9.211526895989089e+03 + 81620 9.305148611195859e-01 -5.902648955072580e+00 -6.033518732798856e+00 4.210010048227591e+00 4.458535532490664e+00 9.320215109178078e+03 + 81640 1.014309398886776e+00 -6.003115197292328e+00 -6.029667877865016e+00 3.682157316764738e+00 4.529687715902319e+00 9.308349178024167e+03 + 81660 1.006696638584483e+00 -5.968125765168169e+00 -6.020330951914127e+00 3.912362383898142e+00 4.612592122876308e+00 9.279575894128000e+03 + 81680 1.026034166389092e+00 -5.977191967072605e+00 -6.014982134725362e+00 3.873463389942985e+00 4.656466399271307e+00 9.263076324966902e+03 + 81700 1.094026462459199e+00 -6.060979078274961e+00 -5.950776163987039e+00 3.422521797817875e+00 5.055323985504993e+00 9.066556189874063e+03 + 81720 1.048137457130594e+00 -5.979532805375181e+00 -5.984750120562851e+00 3.845341466656847e+00 4.815382835472327e+00 9.170259136790282e+03 + 81740 1.010877405861114e+00 -5.912420587581036e+00 -6.015239526747630e+00 4.123957872404739e+00 4.533555612530746e+00 9.263857837267307e+03 + 81760 1.063602355671527e+00 -5.981784965975486e+00 -5.961487023376864e+00 3.795656960333152e+00 4.912210887830908e+00 9.099205750929392e+03 + 81780 1.027459067509863e+00 -5.921163145430532e+00 -6.023673648014620e+00 4.058302636557103e+00 4.469671467270263e+00 9.289860839464147e+03 + 81800 1.047298626464901e+00 -5.948950629059860e+00 -5.964630498270545e+00 3.988479046460120e+00 4.898442811000447e+00 9.108806831015394e+03 + 81820 1.053501232817847e+00 -5.960230760917948e+00 -6.041431241123340e+00 3.870567163714580e+00 4.404301440641517e+00 9.344676488532747e+03 + 81840 1.017758804170032e+00 -5.918853993517171e+00 -6.028272775372802e+00 4.135177599842575e+00 4.506878021925773e+00 9.304041707423426e+03 + 81860 1.065378349480214e+00 -6.011029377961174e+00 -5.955644283412063e+00 3.656811158679218e+00 4.974840942395896e+00 9.081369206171317e+03 + 81880 9.530192865981795e-01 -5.874220383036375e+00 -5.969743058835002e+00 4.392900279869866e+00 4.844394293347848e+00 9.124360388499763e+03 + 81900 9.574720746808550e-01 -5.916960493551010e+00 -5.939744405874496e+00 4.072727612640648e+00 4.941898862280157e+00 9.032968447348794e+03 + 81920 9.529318163724900e-01 -5.946802134618535e+00 -5.972181862330102e+00 3.934181160248690e+00 4.788446836228703e+00 9.131801220611655e+03 + 81940 1.019255599760301e+00 -6.079390441300234e+00 -5.946349913216288e+00 3.217190862036480e+00 4.981130162249682e+00 9.053053841282081e+03 + 81960 9.963100258212420e-01 -6.076261456517344e+00 -5.922084484074006e+00 3.267929873460421e+00 5.153237908039445e+00 8.979394036684227e+03 + 81980 9.321940921579160e-01 -6.004237872716229e+00 -5.956115850930159e+00 3.672947579610751e+00 4.949271675565172e+00 9.082785007174825e+03 + 82000 9.259020011273168e-01 -6.008560241790538e+00 -5.979530918034305e+00 3.649740939747136e+00 4.816431809028757e+00 9.154312158358503e+03 + 82020 9.926786283717718e-01 -6.116727747828016e+00 -5.988422832370484e+00 3.059525164023740e+00 4.796271843702390e+00 9.181567362273785e+03 + 82040 9.828871294915399e-01 -6.108037307599804e+00 -5.976347622865276e+00 3.122740172608594e+00 4.878922721267100e+00 9.144587367836979e+03 + 82060 9.332089275121657e-01 -6.035190225336102e+00 -5.973657550289307e+00 3.495536034698211e+00 4.848866176967599e+00 9.136365890371884e+03 + 82080 9.348812100568609e-01 -6.031463456902424e+00 -5.965944501090468e+00 3.558135708621652e+00 4.934355691919547e+00 9.112776588740764e+03 + 82100 9.042623824465174e-01 -5.972021615429910e+00 -6.014946941476416e+00 3.796225191740366e+00 4.549741326908593e+00 9.262985345315630e+03 + 82120 9.440190703979477e-01 -6.010011374202128e+00 -5.988159562051030e+00 3.645149472465161e+00 4.770625959393770e+00 9.180738259821084e+03 + 82140 1.011393339427639e+00 -6.080227709102102e+00 -5.961488893125361e+00 3.243112839117767e+00 4.924929495228602e+00 9.099214545140130e+03 + 82160 1.026503718694735e+00 -6.064944977731278e+00 -5.993468428427674e+00 3.350980699018414e+00 4.761410106079966e+00 9.197008429326948e+03 + 82180 1.006157932273557e+00 -5.990239157559158e+00 -5.970433960016605e+00 3.709373784718790e+00 4.823098293852542e+00 9.126514077081361e+03 + 82200 1.016726882499973e+00 -5.960533970645779e+00 -6.014397243383137e+00 3.912150227734968e+00 4.602858980362544e+00 9.261293779520003e+03 + 82220 9.979775544152479e-01 -5.893027751377255e+00 -6.069221251694980e+00 4.212070857692677e+00 4.200340513012240e+00 9.430757019027582e+03 + 82240 1.054341292935148e+00 -5.952133271901108e+00 -6.028138300356474e+00 3.959034853333704e+00 4.522602218202850e+00 9.303626688837259e+03 + 82260 1.086997289403144e+00 -5.988753152456590e+00 -6.013076335256356e+00 3.770394539776795e+00 4.630727060140167e+00 9.257241533574917e+03 + 82280 9.930301270538908e-01 -5.849295966728095e+00 -6.014262164276999e+00 4.557997760641574e+00 4.610736325879201e+00 9.260862944527180e+03 + 82300 1.052704167888893e+00 -5.941650218359268e+00 -6.061094917913366e+00 3.918227059446591e+00 4.232357110599438e+00 9.405546981787807e+03 + 82320 1.035475766103420e+00 -5.925586028161403e+00 -6.009739267844735e+00 4.106886085685982e+00 4.623665160752541e+00 9.246951713316425e+03 + 82340 1.059930091496441e+00 -5.973064455901590e+00 -5.982995502455424e+00 3.844160028408986e+00 4.787134422272385e+00 9.164905895347836e+03 + 82360 1.055375561443872e+00 -5.980016403835411e+00 -5.994561134237355e+00 3.790468925824066e+00 4.706950833066347e+00 9.200351231154134e+03 + 82380 1.021943690518623e+00 -5.945473845969684e+00 -5.998256626271318e+00 4.009937131181599e+00 4.706850238580766e+00 9.211672906131917e+03 + 82400 1.060955343739208e+00 -6.020882436619464e+00 -6.015629788290397e+00 3.532014829274395e+00 4.562176348824597e+00 9.265117486401068e+03 + 82420 1.025085119426230e+00 -5.990890568948218e+00 -6.030370186696810e+00 3.745718874076666e+00 4.519020799513146e+00 9.310516771307657e+03 + 82440 1.034160948772676e+00 -6.030455026508863e+00 -5.984256441678343e+00 3.507182693757268e+00 4.772462117062009e+00 9.168786953885985e+03 + 82460 9.669831020702148e-01 -5.955570659970894e+00 -6.024859108725444e+00 3.907088469367947e+00 4.509223474266530e+00 9.293502499893486e+03 + 82480 9.677544578647109e-01 -5.979622822096868e+00 -5.987621114589913e+00 3.824472741134358e+00 4.778545307907529e+00 9.179071304884421e+03 + 82500 1.000624017605016e+00 -6.047706445230441e+00 -6.003804533381391e+00 3.475564904079214e+00 4.727656475715362e+00 9.228739162402349e+03 + 82520 9.834867481801457e-01 -6.039855188751357e+00 -6.010631886338153e+00 3.568915395297044e+00 4.736720120045091e+00 9.249713937781315e+03 + 82540 9.200750851948417e-01 -5.960130077415306e+00 -6.058719697671354e+00 3.875622144634004e+00 4.309505288429348e+00 9.398189475973371e+03 + 82560 1.015142155413174e+00 -6.113233090351068e+00 -6.014244303187169e+00 3.095668895392885e+00 4.664077829753301e+00 9.260848481965104e+03 + 82580 9.651283856148998e-01 -6.050630456495955e+00 -5.994736860064145e+00 3.459877045518359e+00 4.780826725735905e+00 9.200931563201901e+03 + 82600 9.343478073029360e-01 -6.013896740798929e+00 -5.996300339084693e+00 3.679259350695470e+00 4.780300612372982e+00 9.205716424906679e+03 + 82620 9.805046819622550e-01 -6.086987815585871e+00 -5.998250725993623e+00 3.235972956523999e+00 4.745515056982916e+00 9.211669040801013e+03 + 82640 9.579135776566627e-01 -6.052322091838229e+00 -5.975536083805047e+00 3.455128158427278e+00 4.896045299150146e+00 9.142100696801939e+03 + 82660 9.217363216217590e-01 -5.991623039091014e+00 -6.014127404238494e+00 3.720654568638975e+00 4.591431021422895e+00 9.260445479676475e+03 + 82680 9.200823190905971e-01 -5.973331691857776e+00 -6.012939503868029e+00 3.843812133394743e+00 4.616377947542769e+00 9.256821354123618e+03 + 82700 9.181080846874173e-01 -5.940608261060464e+00 -6.046039584483639e+00 3.992827268280853e+00 4.387424293740414e+00 9.358905391108510e+03 + 82720 9.550676461486908e-01 -5.954477499278572e+00 -6.027071500783741e+00 3.859329371181869e+00 4.442483380653761e+00 9.300322958644376e+03 + 82740 1.051212191232689e+00 -6.043816203611694e+00 -5.964240093459852e+00 3.451319988211083e+00 4.908258327066211e+00 9.107607716343658e+03 + 82760 1.080527458671875e+00 -6.034858787241326e+00 -5.975857016935064e+00 3.514908116887699e+00 4.853705412480707e+00 9.143094409974112e+03 + 82780 1.065867721802160e+00 -5.972207196800955e+00 -6.000939279506110e+00 3.884414564356550e+00 4.719430499188123e+00 9.219905982670060e+03 + 82800 1.052523272866169e+00 -5.926939223415161e+00 -6.010736142715393e+00 4.111207548600879e+00 4.630032670447594e+00 9.250034565973976e+03 + 82820 9.790761495021265e-01 -5.805091854200137e+00 -6.030112461776572e+00 4.713968435861663e+00 4.421865285331293e+00 9.309675124563544e+03 + 82840 1.072317842162483e+00 -5.938347373547508e+00 -6.028438988758931e+00 3.966622329384520e+00 4.449302333208129e+00 9.304549295530356e+03 + 82860 1.098032465784719e+00 -5.976847204493138e+00 -6.029621297466610e+00 3.779956291351105e+00 4.476919282732938e+00 9.308214571702654e+03 + 82880 1.031168314826700e+00 -5.888127731024447e+00 -6.045441663690371e+00 4.329926914296673e+00 4.426605968676536e+00 9.357056401387648e+03 + 82900 1.098124145072300e+00 -6.005107938762134e+00 -6.018898281185869e+00 3.641413284292229e+00 4.562227004046543e+00 9.275154118266630e+03 + 82920 9.772339319791201e-01 -5.849137279902993e+00 -6.099097626583569e+00 4.479894784466588e+00 4.044583792588084e+00 9.523744104256293e+03 + 82940 1.016284127512851e+00 -5.935190976043092e+00 -6.003945305268794e+00 4.088658300341645e+00 4.693860302229603e+00 9.229136237507797e+03 + 82960 1.011590184554013e+00 -5.956104559287598e+00 -6.010599615589779e+00 3.983519312527072e+00 4.670600266157239e+00 9.249577881850169e+03 + 82980 1.019635523430355e+00 -5.994231561974869e+00 -5.977817061969596e+00 3.742812197757780e+00 4.837066796923726e+00 9.149068327652612e+03 + 83000 1.023163973459624e+00 -6.023851710258988e+00 -5.986938804452557e+00 3.553207797951957e+00 4.765167415346193e+00 9.176996183295178e+03 + 83020 1.016000058486344e+00 -6.032735539924692e+00 -5.980069571500186e+00 3.548795249512327e+00 4.851211390238117e+00 9.155959861413776e+03 + 83040 1.055286889144455e+00 -6.109420291545003e+00 -5.921842426374081e+00 3.189105314991783e+00 5.266206444384043e+00 8.978685859894013e+03 + 83060 9.921693802123008e-01 -6.027804127261330e+00 -5.966662590909072e+00 3.562322375169651e+00 4.913406538526488e+00 9.114991642283796e+03 + 83080 1.004513599239578e+00 -6.052576113504093e+00 -5.996800757401754e+00 3.390180146647830e+00 4.710450872595926e+00 9.207238259038486e+03 + 83100 1.011557073208864e+00 -6.067817175105558e+00 -5.996800231397925e+00 3.368347004177421e+00 4.776137284783172e+00 9.207212391906281e+03 + 83120 9.863542858744674e-01 -6.033382933104475e+00 -6.005643490935316e+00 3.491556726831327e+00 4.650840896431443e+00 9.234389091230565e+03 + 83140 1.007968701325409e+00 -6.066710845416040e+00 -6.018792916473425e+00 3.334907248560115e+00 4.610059411824151e+00 9.274810667852491e+03 + 83160 9.454306578277356e-01 -5.973902273167461e+00 -6.008122113649366e+00 3.813481212058842e+00 4.616985592508549e+00 9.242003424773871e+03 + 83180 9.393345218205708e-01 -5.960205312923350e+00 -6.000875430014376e+00 3.915380123803668e+00 4.681846017786715e+00 9.219733949563484e+03 + 83200 9.342837444881428e-01 -5.946678756006410e+00 -6.027762128251698e+00 3.970178004178680e+00 4.504584733134928e+00 9.302459913196921e+03 + 83220 1.002391371332529e+00 -6.039827216977188e+00 -5.982543935289373e+00 3.459256465148587e+00 4.788185933159212e+00 9.163541719853587e+03 + 83240 1.042012832966301e+00 -6.089270615827140e+00 -5.979625027698048e+00 3.233279526021895e+00 4.862881460659072e+00 9.154618413327004e+03 + 83260 9.411776881371352e-01 -5.931121394763776e+00 -5.980408474344442e+00 4.103359056679516e+00 4.820345018576424e+00 9.156992998395635e+03 + 83280 9.990019456534729e-01 -6.008486604331204e+00 -5.984935470351600e+00 3.691009907367030e+00 4.826244163204120e+00 9.170828149950803e+03 + 83300 1.005890894000541e+00 -6.007282532360395e+00 -5.971430991704674e+00 3.725489229634081e+00 4.931354324087215e+00 9.129560756978364e+03 + 83320 1.066331977764432e+00 -6.085778020151919e+00 -5.991899075653709e+00 3.214392996351001e+00 4.753460423379432e+00 9.192204775181423e+03 + 83340 9.952108255693745e-01 -5.971132132138619e+00 -5.992297216404512e+00 3.867050504723726e+00 4.745517315582766e+00 9.193421084102025e+03 + 83360 1.042637261523889e+00 -6.031738320200724e+00 -6.023409425351056e+00 3.550699589797229e+00 4.598525392916340e+00 9.289055074179605e+03 + 83380 1.057991142794505e+00 -6.049273279768072e+00 -6.004321316473352e+00 3.433493109904442e+00 4.691614239436566e+00 9.230317634534364e+03 + 83400 1.018374480229375e+00 -5.989304615874483e+00 -6.010388803782011e+00 3.745965744666484e+00 4.624897074933922e+00 9.248958329614681e+03 + 83420 1.017310267047913e+00 -5.988250806869074e+00 -5.985475692732642e+00 3.770572628824862e+00 4.786507763643774e+00 9.172502599298221e+03 + 83440 1.027109972170316e+00 -6.001867248164055e+00 -6.011046661930910e+00 3.681527723586982e+00 4.628818109228011e+00 9.250997838884088e+03 + 83460 1.051378757212570e+00 -6.039581557052643e+00 -6.004920153848638e+00 3.475280814825332e+00 4.674311955857540e+00 9.232172353426446e+03 + 83480 1.003196982796949e+00 -5.975153730610701e+00 -6.025299069025753e+00 3.822340404142767e+00 4.534398110997499e+00 9.294866215746399e+03 + 83500 1.044714500666520e+00 -6.054451207779666e+00 -5.996335515637911e+00 3.430023114122890e+00 4.763732411775136e+00 9.205818174827999e+03 + 83520 1.077244992578740e+00 -6.141394613836490e+00 -5.971603169493544e+00 2.959526222010450e+00 4.934494970568743e+00 9.130103626703087e+03 + 83540 9.443193519269766e-01 -5.996530282640169e+00 -6.013393366789217e+00 3.710071782779368e+00 4.613241344041700e+00 9.258209558317174e+03 + 83560 9.637349492046307e-01 -6.073843518410907e+00 -5.987380354605710e+00 3.285744638178265e+00 4.782229504879066e+00 9.178359718067331e+03 + 83580 9.009769571844768e-01 -6.020391476635952e+00 -6.019930309946843e+00 3.594460742609467e+00 4.597108833103647e+00 9.278359375037706e+03 + 83600 9.362952394413917e-01 -6.101206490490265e+00 -5.995722657667994e+00 3.145523041026657e+00 4.751227532662513e+00 9.203954581620897e+03 + 83620 9.772607442320609e-01 -6.181099077707755e+00 -5.994311150428404e+00 2.679607572364967e+00 4.752172756141329e+00 9.199618930151602e+03 + 83640 9.052637071157447e-01 -6.084731056994480e+00 -6.021283084808514e+00 3.203229992996955e+00 4.567558067830731e+00 9.282515849714093e+03 + 83660 9.006043932541995e-01 -6.080552089727663e+00 -6.018655969396368e+00 3.209331188755729e+00 4.564748290091693e+00 9.274404754380226e+03 + 83680 8.703930845953498e-01 -6.028773389407351e+00 -5.973023351381444e+00 3.567052815358150e+00 4.887178160993410e+00 9.134417272587318e+03 + 83700 9.577399392663924e-01 -6.140307512277412e+00 -5.968476502973881e+00 2.944683077317322e+00 4.931363323500948e+00 9.120527731315104e+03 + 83720 8.831280135331040e-01 -6.001309658417304e+00 -6.009969226355889e+00 3.682968565989415e+00 4.633243986822256e+00 9.247684530130793e+03 + 83740 9.531656179047132e-01 -6.073126105727603e+00 -6.006790616660993e+00 3.269659579265585e+00 4.650568222869818e+00 9.237913325525917e+03 + 83760 8.797505208143744e-01 -5.924426616752845e+00 -6.041538566203128e+00 4.080016935084467e+00 4.407541998325336e+00 9.345008750229359e+03 + 83780 1.013551321721806e+00 -6.084710376592703e+00 -5.988673597310109e+00 3.246928741110128e+00 4.798386789394345e+00 9.182330317288212e+03 + 83800 1.031117109386899e+00 -6.077189895226326e+00 -5.966029469213874e+00 3.311457058011087e+00 4.949757426194918e+00 9.113059764357653e+03 + 83820 9.811642691953243e-01 -5.973857743013602e+00 -5.988433291407279e+00 3.991437404386761e+00 4.907742349951446e+00 9.181561063983538e+03 + 83840 1.050232721456639e+00 -6.050901051881089e+00 -5.999304702367316e+00 3.382241723433187e+00 4.678515946850557e+00 9.214922009461579e+03 + 83860 1.010195364143056e+00 -5.971661184227782e+00 -5.943191608387906e+00 3.914866705025556e+00 5.078343415150748e+00 9.043465534167453e+03 + 83880 9.538048805608106e-01 -5.870380964658287e+00 -5.998328815644672e+00 4.390128391842755e+00 4.655432031612981e+00 9.211830439570662e+03 + 83900 1.015885132620475e+00 -5.944072892922219e+00 -6.017772079576145e+00 4.005174485742621e+00 4.581982351063504e+00 9.271649891609259e+03 + 83920 1.016023662818928e+00 -5.930076541973777e+00 -6.027069700576364e+00 4.118073208854836e+00 4.561123482515995e+00 9.300324817719189e+03 + 83940 1.039503947318992e+00 -5.955498356897070e+00 -6.054604100984171e+00 3.900409478553727e+00 4.331328959441261e+00 9.385442103957863e+03 + 83960 1.038232833167707e+00 -5.950559270931944e+00 -6.044912979057866e+00 4.040488743171514e+00 4.498695149923322e+00 9.355428090045247e+03 + 83980 9.459637991559319e-01 -5.817938875060586e+00 -6.020034548504183e+00 4.752457378126773e+00 4.591992747009246e+00 9.278628862728083e+03 + 84000 1.044124099682572e+00 -5.968659686960271e+00 -5.988741296764168e+00 3.847945948209775e+00 4.732634237096727e+00 9.182497869539066e+03 + 84020 1.052900947778804e+00 -5.991777500751278e+00 -6.004736396169752e+00 3.732311191466001e+00 4.657899208590540e+00 9.231599472620073e+03 + 84040 1.041928028819528e+00 -5.991492437231734e+00 -6.008704682744217e+00 3.740494417065642e+00 4.641659039746582e+00 9.243778197803338e+03 + 84060 1.042197713597477e+00 -6.015339685702970e+00 -5.984052268796393e+00 3.648425681569691e+00 4.828082871159376e+00 9.168144833581171e+03 + 84080 1.066729856049291e+00 -6.081450282889223e+00 -5.945523706999144e+00 3.234044370047186e+00 5.014555803377659e+00 9.050572208489319e+03 + 84100 9.982259380287439e-01 -6.014882571121378e+00 -5.974107139991982e+00 3.602711728459995e+00 4.836850563982563e+00 9.137727878943129e+03 + 84120 9.448923410865665e-01 -5.972379532932701e+00 -5.989138828381384e+00 3.839895137866479e+00 4.743660669907554e+00 9.183727452094992e+03 + 84140 9.834104122094413e-01 -6.062426887293068e+00 -5.968164133748138e+00 3.344068581450542e+00 4.885339899419499e+00 9.119600243128642e+03 + 84160 9.095635405466753e-01 -5.982046139309189e+00 -5.999992770010598e+00 3.760782766289582e+00 4.657730435569961e+00 9.217021453836081e+03 + 84180 9.666085130773859e-01 -6.085678223529118e+00 -5.957397718021419e+00 3.191539357357197e+00 4.928145871326480e+00 9.086736328410279e+03 + 84200 9.464513493500615e-01 -6.065433228178954e+00 -6.001150705023589e+00 3.341372417380562e+00 4.710492613026974e+00 9.220580627138466e+03 + 84220 9.800516048780994e-01 -6.120607680203458e+00 -6.004264079963592e+00 3.005523860737963e+00 4.673586817429220e+00 9.230162459015934e+03 + 84240 9.289433720816179e-01 -6.045720553875345e+00 -6.028380469387901e+00 3.443839296417994e+00 4.543408744914300e+00 9.304378039546980e+03 + 84260 9.860583349935106e-01 -6.125634006899578e+00 -5.991917688615159e+00 3.034294978923614e+00 4.802114771046123e+00 9.192262534093094e+03 + 84280 9.073210128866678e-01 -5.997739524517145e+00 -6.017181394584211e+00 3.675309212069344e+00 4.563670985524579e+00 9.269891668550816e+03 + 84300 9.743929590715711e-01 -6.082687870102610e+00 -5.981973134090258e+00 3.228653608495410e+00 4.806973208233365e+00 9.161806008165528e+03 + 84320 9.754984196399766e-01 -6.066959956529859e+00 -5.967490305824530e+00 3.341352453611830e+00 4.912522580840527e+00 9.117522788400578e+03 + 84340 9.519406145280928e-01 -6.011329084296095e+00 -5.958945150292056e+00 3.590538752256505e+00 4.891335407695284e+00 9.091449115848001e+03 + 84360 9.651181222089166e-01 -6.006911624190101e+00 -5.970954610796798e+00 3.688776937776117e+00 4.895247673010303e+00 9.128078885046772e+03 + 84380 9.373409626689938e-01 -5.944748563312649e+00 -5.938225668163006e+00 4.054846991663009e+00 5.092302465027020e+00 9.028363585984651e+03 + 84400 1.020056721533188e+00 -6.049251329340729e+00 -5.941041383981572e+00 3.496917318620134e+00 5.118275570307337e+00 9.036913376694534e+03 + 84420 1.003408769926105e+00 -6.011559886117978e+00 -5.967688806283824e+00 3.602451668128482e+00 4.854366197563854e+00 9.118104258315914e+03 + 84440 9.913041937059999e-01 -5.986896237484064e+00 -5.953260754871947e+00 3.790751793382264e+00 4.983891939615158e+00 9.074109789574955e+03 + 84460 9.714101737203035e-01 -5.950882426715223e+00 -6.000859377619379e+00 3.944623712257990e+00 4.657648326258173e+00 9.219619022614919e+03 + 84480 1.020137501536982e+00 -6.014688026667517e+00 -5.969415646555902e+00 3.611765675167401e+00 4.871726687646472e+00 9.123387585673048e+03 + 84500 1.031487898943804e+00 -6.023431488993948e+00 -6.002623245240948e+00 3.549268746153614e+00 4.668752901848653e+00 9.225125904188435e+03 + 84520 1.046821732652058e+00 -6.042233900540487e+00 -6.020495834466696e+00 3.480752709445125e+00 4.605576048795684e+00 9.280100578965830e+03 + 84540 1.019533214941164e+00 -6.001118874361193e+00 -6.024406615751128e+00 3.755172941156812e+00 4.621451126329473e+00 9.292146504990120e+03 + 84560 1.018640993004492e+00 -6.002831281599828e+00 -6.041591622223049e+00 3.651070735209070e+00 4.428502861207212e+00 9.345182786381194e+03 + 84580 9.754619855741278e-01 -5.945244836785481e+00 -6.012388175608156e+00 3.972182215164664e+00 4.586634773246757e+00 9.255101355404604e+03 + 84600 1.002049560804454e+00 -5.991087759816677e+00 -5.972072535687470e+00 3.794279430770098e+00 4.903467790316428e+00 9.131498755425549e+03 + 84620 1.035211422633986e+00 -6.045299705420483e+00 -5.970901632780364e+00 3.466387896293617e+00 4.893593142457715e+00 9.127932787214615e+03 + 84640 9.838960174773487e-01 -5.973468080658742e+00 -6.007830685813532e+00 3.873711984124071e+00 4.676396587729306e+00 9.241101994889386e+03 + 84660 1.020746036897684e+00 -6.036249570059355e+00 -5.988475601127885e+00 3.502796904106389e+00 4.777122426708695e+00 9.181699222024667e+03 + 84680 1.023018153678763e+00 -6.048426279762470e+00 -5.977496932890238e+00 3.446938111040121e+00 4.854225397061434e+00 9.148100893217461e+03 + 84700 9.904069332703888e-01 -6.007655891348171e+00 -6.002840717553000e+00 3.633221535120394e+00 4.660871008198001e+00 9.225744906943140e+03 + 84720 9.617155027752946e-01 -5.973091286248380e+00 -6.000808069082042e+00 3.869925908743951e+00 4.710771852554776e+00 9.219531236639490e+03 + 84740 9.598283987216493e-01 -5.977827886871006e+00 -6.030861355932215e+00 3.815862638277824e+00 4.511336252025549e+00 9.312013517548472e+03 + 84760 9.615179546135877e-01 -5.989041580333941e+00 -6.025692883563925e+00 3.768835685142471e+00 4.558378230225061e+00 9.296079875414351e+03 + 84780 9.724046706631891e-01 -6.014804468887688e+00 -5.988749381817067e+00 3.635526031260907e+00 4.785138373232112e+00 9.182538300734232e+03 + 84800 9.630556102420048e-01 -6.008490732540599e+00 -5.958568304109759e+00 3.717109533490069e+00 5.003771843010785e+00 9.090284924025902e+03 + 84820 9.501450460427124e-01 -5.994837512649916e+00 -5.970548095419467e+00 3.681650617658569e+00 4.821124210170973e+00 9.126877019010688e+03 + 84840 9.750808570589353e-01 -6.034732821054461e+00 -5.982594454947055e+00 3.487911229140004e+00 4.787297795714806e+00 9.163696483298034e+03 + 84860 1.003224300854488e+00 -6.073971138159021e+00 -6.007559356044354e+00 3.304845433194199e+00 4.686192163286689e+00 9.240291228220258e+03 + 84880 9.415768848847114e-01 -5.978121839821540e+00 -6.033156719796853e+00 3.809719854572960e+00 4.493701057134563e+00 9.319121708864039e+03 + 84900 1.002542084280613e+00 -6.062354800836006e+00 -5.973331665704523e+00 3.365948221893009e+00 4.877132840103628e+00 9.135358283086322e+03 + 84920 9.967964468740868e-01 -6.040431996604574e+00 -6.024712492098899e+00 3.472293773255735e+00 4.562557600712777e+00 9.293070555238517e+03 + 84940 1.042009006475382e+00 -6.089374775488833e+00 -5.998485012112412e+00 3.225584497145897e+00 4.747487583598735e+00 9.212416335689999e+03 + 84960 1.009334758208098e+00 -6.021989401121097e+00 -5.997574557246512e+00 3.601332674488382e+00 4.741526486201126e+00 9.209608060746627e+03 + 84980 1.023695923169529e+00 -6.022045823157714e+00 -6.003702242423251e+00 3.640920935104671e+00 4.746252614341903e+00 9.228406397020610e+03 + 85000 1.025140912498226e+00 -5.999955955395373e+00 -6.020272276305761e+00 3.679439771025399e+00 4.562780312417458e+00 9.279342530925025e+03 + 85020 1.049712888297047e+00 -6.010990260513758e+00 -5.956083120001693e+00 3.658764256778189e+00 4.974049554450998e+00 9.082714322792730e+03 + 85040 1.067135619630734e+00 -6.011190660371485e+00 -5.995963073788410e+00 3.620165959911706e+00 4.707605118533129e+00 9.204649320427958e+03 + 85060 1.012621018824054e+00 -5.906377789020186e+00 -6.033194662985345e+00 4.236217825365406e+00 4.508015710209645e+00 9.319229849520594e+03 + 85080 1.104965638185645e+00 -6.025952377511055e+00 -5.976892676815587e+00 3.619815308300068e+00 4.901523701657590e+00 9.146239782585486e+03 + 85100 1.060883339490869e+00 -5.948439435383001e+00 -6.019719638032241e+00 3.989908804460604e+00 4.580606850272961e+00 9.277662045214192e+03 + 85120 1.035198419222132e+00 -5.903572998782171e+00 -6.022849069339911e+00 4.238961621501373e+00 4.554059966446572e+00 9.287319441961199e+03 + 85140 1.032766570409841e+00 -5.900207756610824e+00 -6.006161071934569e+00 4.189036326252777e+00 4.580635993441278e+00 9.235964851776045e+03 + 85160 1.052683898234607e+00 -5.936734167712669e+00 -5.992964626821974e+00 4.003200295560973e+00 4.680316297719922e+00 9.195427776924500e+03 + 85180 1.091730497749301e+00 -6.010240723096389e+00 -5.931040345789839e+00 3.633061587378881e+00 5.087842410091875e+00 9.006542663415106e+03 + 85200 1.055200692173876e+00 -5.976761496284578e+00 -5.963131092901229e+00 3.795400663511414e+00 4.873668549036712e+00 9.104203219031710e+03 + 85220 1.010380908542570e+00 -5.942364520394688e+00 -5.972134188675652e+00 4.046681755258039e+00 4.875739713147467e+00 9.131684424548157e+03 + 85240 1.071649187169908e+00 -6.074593223984648e+00 -5.972715346927812e+00 3.301747754828176e+00 4.886746290439052e+00 9.133462533412825e+03 + 85260 9.645271463270677e-01 -5.963756905951239e+00 -6.055130311922111e+00 3.892955126126217e+00 4.368274889052595e+00 9.387050770149219e+03 + 85280 9.896218866744900e-01 -6.049590660161531e+00 -5.998434917740892e+00 3.467730597829813e+00 4.761474787134678e+00 9.212258717266024e+03 + 85300 1.006119761154299e+00 -6.110714910396021e+00 -5.972453228622769e+00 3.132003830221241e+00 4.925923802889367e+00 9.132692242370897e+03 + 85320 9.389083554610906e-01 -6.035453817879366e+00 -6.004132074974864e+00 3.521667167096321e+00 4.701521461878023e+00 9.229750433269321e+03 + 85340 8.956827525166451e-01 -5.984655961640948e+00 -6.020333936415890e+00 3.800464353862167e+00 4.595595901555702e+00 9.279555921767676e+03 + 85360 9.489316750843187e-01 -6.068485379590001e+00 -5.979942201982908e+00 3.386120897797123e+00 4.894549525629506e+00 9.155574508034588e+03 + 85380 9.962593595932140e-01 -6.136364321397270e+00 -5.973247534300667e+00 2.995963334877548e+00 4.932605168627466e+00 9.135114569067833e+03 + 85400 9.328451405234977e-01 -6.034995650636074e+00 -6.003847464600062e+00 3.555352609039218e+00 4.734210313424210e+00 9.228880306235573e+03 + 85420 9.696502842013216e-01 -6.078410000828127e+00 -6.007029707833505e+00 3.295217757528854e+00 4.705094445968615e+00 9.238645017716421e+03 + 85440 9.845809272958985e-01 -6.085882474075352e+00 -5.993161494531241e+00 3.254615494841687e+00 4.787033707909188e+00 9.196069507275037e+03 + 85460 9.604913012346068e-01 -6.034448168213229e+00 -5.951056897729219e+00 3.485515878661954e+00 4.964361458538540e+00 9.067406415323030e+03 + 85480 9.557087458850798e-01 -6.006609898883384e+00 -5.905626942143614e+00 3.667026396830642e+00 5.246886161492450e+00 8.929592283779679e+03 + 85500 9.421055707656014e-01 -5.959262167360376e+00 -5.929225056995897e+00 3.932459240536193e+00 5.104936976476843e+00 9.001048728066760e+03 + 85520 1.019604941482433e+00 -6.042820253677595e+00 -6.002059056219830e+00 3.454414884012872e+00 4.688471987590283e+00 9.223379967143777e+03 + 85540 1.014193874497937e+00 -6.006067629265862e+00 -6.070236675219164e+00 3.630793647086720e+00 4.262325055095096e+00 9.433934585922538e+03 + 85560 1.028025490372003e+00 -6.008609398803022e+00 -6.029598052943678e+00 3.669944842189591e+00 4.549424742130214e+00 9.308143003113220e+03 + 85580 9.874908934521838e-01 -5.936238344228870e+00 -6.038742798213747e+00 4.010856097041822e+00 4.422259659747666e+00 9.336358056314652e+03 + 85600 1.040852649233886e+00 -6.008479617579724e+00 -5.972247036818793e+00 3.690993492327545e+00 4.899046578030561e+00 9.132026284578316e+03 + 85620 1.024907171199845e+00 -5.979310040853572e+00 -6.002295214845894e+00 3.778022026422577e+00 4.646037600414482e+00 9.224082682806866e+03 + 85640 1.011182903426163e+00 -5.956420915668329e+00 -6.001986740408489e+00 3.927416129065548e+00 4.665770112118965e+00 9.223165949602258e+03 + 85660 1.031805407933575e+00 -5.987980010423803e+00 -6.010811535849584e+00 3.759740034334038e+00 4.628637882172065e+00 9.250264045216632e+03 + 85680 1.065570521660756e+00 -6.041648266922348e+00 -5.952726324152756e+00 3.579438794110779e+00 5.090042350119948e+00 9.072499499002621e+03 + 85700 9.899735219045209e-01 -5.933528699249290e+00 -6.061000975066772e+00 4.030008283618877e+00 4.298042749603970e+00 9.405274915404152e+03 + 85720 1.010790626029513e+00 -5.972076795808787e+00 -6.027043519367846e+00 3.877412986491084e+00 4.561785553741992e+00 9.300253781256333e+03 + 85740 1.012140737560350e+00 -5.982476189801347e+00 -6.021064981656902e+00 3.820558123610719e+00 4.598975309179880e+00 9.281813653763733e+03 + 85760 9.904063765070888e-01 -5.961796574243785e+00 -6.002646527748602e+00 3.902286166860453e+00 4.667719412325920e+00 9.225170823336512e+03 + 85780 9.654416174899025e-01 -5.936139244387406e+00 -6.012030456101350e+00 3.970270996268574e+00 4.534491914480053e+00 9.254023754082400e+03 + 85800 9.220834415892797e-01 -5.879272726113687e+00 -5.999549110366408e+00 4.383723352312729e+00 4.693077741223300e+00 9.215654979503835e+03 + 85820 1.070137575664450e+00 -6.102577013871278e+00 -5.976284734301817e+00 3.120766173941174e+00 4.845955986896117e+00 9.144398814460979e+03 + 85840 1.039410271348715e+00 -6.063000622900189e+00 -6.022926925285347e+00 3.350537430565623e+00 4.580646803654711e+00 9.287560566625649e+03 + 85860 9.788127798733348e-01 -5.981833084669034e+00 -5.969571903376481e+00 3.823396779730797e+00 4.893802380124312e+00 9.123870549459747e+03 + 85880 9.445548474732267e-01 -5.937066231269744e+00 -5.984159618135680e+00 4.039127215112964e+00 4.768709700050688e+00 9.168496594687653e+03 + 85900 9.737440479807421e-01 -5.982473623396023e+00 -6.010519044792919e+00 3.722693431703459e+00 4.561652282027547e+00 9.249370515332750e+03 + 85920 1.021098086207686e+00 -6.053817750533587e+00 -5.981599629422113e+00 3.437064163333184e+00 4.851751790473392e+00 9.160653100599147e+03 + 85940 1.014101077044705e+00 -6.043965310085871e+00 -5.979253873910154e+00 3.459206481764523e+00 4.830789562347872e+00 9.153472697978115e+03 + 85960 9.653543937438015e-01 -5.972749768217161e+00 -5.951829561621254e+00 3.894478438630314e+00 5.014605502295517e+00 9.069767749689345e+03 + 85980 9.574381067900577e-01 -5.958453921377498e+00 -6.028546605264420e+00 3.858587416397727e+00 4.456104378711245e+00 9.304891494146275e+03 + 86000 1.049607449972652e+00 -6.088781783659104e+00 -5.970646440578390e+00 3.227502122724974e+00 4.905853544079688e+00 9.127158456076246e+03 + 86020 9.664643232313821e-01 -5.953129026560147e+00 -5.986792823865769e+00 3.929057446115663e+00 4.735754712530985e+00 9.176542953694781e+03 + 86040 9.737164578932404e-01 -5.946233524655065e+00 -5.984588270478945e+00 3.950261783719589e+00 4.730022897821133e+00 9.169790870680776e+03 + 86060 1.012026336580907e+00 -5.978600059532317e+00 -6.048111007508549e+00 3.837907466328589e+00 4.438764846264628e+00 9.365333401235195e+03 + 86080 9.614888213375391e-01 -5.879777112101827e+00 -6.059722044321640e+00 4.321875243686666e+00 4.288603596492240e+00 9.401286284634536e+03 + 86100 1.006086240972491e+00 -5.926691814202258e+00 -5.992325996576662e+00 4.149981481201238e+00 4.773099849150509e+00 9.193480796803986e+03 + 86120 1.078132187567753e+00 -6.015223000881882e+00 -5.997832116495305e+00 3.617854860790825e+00 4.717716010169214e+00 9.210389864857209e+03 + 86140 1.021442794089578e+00 -5.917290608909196e+00 -6.037396235921623e+00 4.151922307165769e+00 4.462257210574708e+00 9.332201326015384e+03 + 86160 9.454245755677048e-01 -5.795884868436961e+00 -6.021780464842474e+00 4.842451556420145e+00 4.545324084629121e+00 9.283988169030357e+03 + 86180 1.058461500597337e+00 -5.957750064064178e+00 -5.994366665517806e+00 3.911745399718176e+00 4.701487207770680e+00 9.199749779982867e+03 + 86200 1.072211055472916e+00 -5.974644985227602e+00 -5.988087095502099e+00 3.831255205840026e+00 4.754068528484029e+00 9.180507254636017e+03 + 86220 1.061638477029515e+00 -5.960799568384579e+00 -5.993626499145146e+00 3.913926078811438e+00 4.725428762433149e+00 9.197508460806974e+03 + 86240 1.032320568444570e+00 -5.925957504938902e+00 -6.051849832343381e+00 4.090314847967745e+00 4.367421622236524e+00 9.376898420064575e+03 + 86260 1.108259509434101e+00 -6.056484675227417e+00 -5.992360021826116e+00 3.411004846243407e+00 4.779218529331725e+00 9.193613960170289e+03 + 86280 1.021868733516462e+00 -5.955217786226994e+00 -5.987948739349999e+00 3.977296704056950e+00 4.789350506126027e+00 9.180079343736648e+03 + 86300 9.804512159896710e-01 -5.925052994469805e+00 -6.008775912370965e+00 4.038306642545137e+00 4.557556691877008e+00 9.244003430848863e+03 + 86320 9.241534768425457e-01 -5.871063897013840e+00 -5.990498170249738e+00 4.343584653330950e+00 4.657774574016370e+00 9.187863991624641e+03 + 86340 9.898099109054631e-01 -5.993045067327929e+00 -5.906021391233983e+00 3.776234304280840e+00 5.275937719282632e+00 8.930755367665701e+03 + 86360 1.021950021320191e+00 -6.059180130695131e+00 -5.954950281281357e+00 3.413359977032663e+00 5.011863901883626e+00 9.079251950406753e+03 + 86380 9.936442162250293e-01 -6.034597453780576e+00 -5.997221210832190e+00 3.494103046937694e+00 4.708723217902229e+00 9.208525477463329e+03 + 86400 1.008499978027216e+00 -6.073886892019775e+00 -5.963373455668958e+00 3.397043258812694e+00 5.031628512238090e+00 9.104946038093700e+03 + 86420 1.000279607226334e+00 -6.077294341502080e+00 -5.995031486714201e+00 3.290620589906557e+00 4.762986632234193e+00 9.201812692322279e+03 + 86440 9.794215144218869e-01 -6.058146975212030e+00 -5.959582488651546e+00 3.442922385467994e+00 5.008894920103296e+00 9.093381390998034e+03 + 86460 1.002932650655497e+00 -6.100818261849855e+00 -5.967026064770546e+00 3.153494188968733e+00 4.921749688873712e+00 9.116087090705820e+03 + 86480 9.629298035610349e-01 -6.045336114006879e+00 -5.951805452026864e+00 3.493550690552838e+00 5.030618225465251e+00 9.069690537198843e+03 + 86500 9.570375941095383e-01 -6.036345044848684e+00 -5.986533015759589e+00 3.519175459306585e+00 4.805203838722755e+00 9.175735959337488e+03 + 86520 9.626350413571247e-01 -6.038376526649987e+00 -5.971117939646562e+00 3.506602722656396e+00 4.892811937462765e+00 9.128592448150932e+03 + 86540 9.175111776165882e-01 -5.957332650679302e+00 -6.010531402453550e+00 3.903168818296687e+00 4.597693353128721e+00 9.249399731695861e+03 + 86560 9.770515861888720e-01 -6.019579585926222e+00 -5.984871680511342e+00 3.623325635954485e+00 4.822623799877727e+00 9.170650703304313e+03 + 86580 9.666516101448205e-01 -5.963561513317231e+00 -6.029356782415494e+00 3.837813692709877e+00 4.460007075762661e+00 9.307379059293407e+03 + 86600 1.029541239450564e+00 -6.007569271796314e+00 -6.008807891315628e+00 3.625485319348004e+00 4.618372974392349e+00 9.244124238329729e+03 + 86620 1.045315166900856e+00 -5.979538962150380e+00 -5.975697300780869e+00 3.790437690607364e+00 4.812497104686276e+00 9.142607326290525e+03 + 86640 1.045462029899829e+00 -5.938813153908774e+00 -5.987636283807338e+00 4.070424991811309e+00 4.790075024578822e+00 9.179128910916364e+03 + 86660 1.100561383914405e+00 -5.990658734931927e+00 -6.002933530515918e+00 3.737389462362055e+00 4.666905686600296e+00 9.226053008397457e+03 + 86680 1.079488701503597e+00 -5.944112847658735e+00 -5.980500234702088e+00 4.001716477871843e+00 4.792774470538962e+00 9.157266642784129e+03 + 86700 1.091377158890260e+00 -5.954328628779661e+00 -6.001016509314276e+00 3.985236457106538e+00 4.717147422150613e+00 9.220130598473295e+03 + 86720 1.101927305951296e+00 -5.972063416625788e+00 -5.996942550687863e+00 3.843991072690577e+00 4.701131234872586e+00 9.207646121847187e+03 + 86740 1.010636652455776e+00 -5.845479198419683e+00 -6.029712371932505e+00 4.511548740372252e+00 4.453653348070167e+00 9.308476878288988e+03 + 86760 1.124883505593846e+00 -6.029743008157395e+00 -5.991335758575483e+00 3.545875825976158e+00 4.766416196578159e+00 9.190456048938011e+03 + 86780 1.089272446289295e+00 -5.997865796936573e+00 -5.991497067631965e+00 3.690918344941565e+00 4.727488574166301e+00 9.190954458965760e+03 + 86800 1.031320727733791e+00 -5.936358794310585e+00 -5.986188020113010e+00 4.050301650343911e+00 4.764174524738611e+00 9.174695850197331e+03 + 86820 1.061310228842444e+00 -6.007039566209550e+00 -6.011056160916388e+00 3.698208964473271e+00 4.675145056100587e+00 9.251014079436603e+03 + 86840 1.065573659251426e+00 -6.040117381307926e+00 -6.009398719742183e+00 3.480312793345074e+00 4.656704101753083e+00 9.245935885557396e+03 + 86860 9.906169701874008e-01 -5.954873783224105e+00 -6.040596049146923e+00 3.884937499517226e+00 4.392706983110630e+00 9.342091046219573e+03 + 86880 9.901194360364229e-01 -5.976593417966445e+00 -6.006475509797045e+00 3.830706183226233e+00 4.659118587696157e+00 9.236940345642724e+03 + 86900 9.694155181104880e-01 -5.963982091147281e+00 -6.042801586461973e+00 3.840354349493828e+00 4.387760610119388e+00 9.348900138720595e+03 + 86920 1.033607645485485e+00 -6.072309055213420e+00 -5.964350765453144e+00 3.279706431496943e+00 4.899619637791798e+00 9.107927154594216e+03 + 86940 9.620740932282194e-01 -5.974751949279804e+00 -6.035081216024483e+00 3.830865653458031e+00 4.484445667886233e+00 9.325056783270584e+03 + 86960 9.416335866062691e-01 -5.951783973841451e+00 -6.029139200939296e+00 3.909959362541208e+00 4.465773677862678e+00 9.306715163426219e+03 + 86980 9.701089384768642e-01 -5.999077669360892e+00 -5.947056653483918e+00 3.765773978459433e+00 5.064486701851212e+00 9.055225778731905e+03 + 87000 9.855619610342466e-01 -6.019691399706589e+00 -6.004490368333856e+00 3.544888743815253e+00 4.632175418309485e+00 9.230828260867109e+03 + 87020 1.005485939356948e+00 -6.047004482314472e+00 -6.012380032943681e+00 3.407014552845204e+00 4.605833499248513e+00 9.255101230564464e+03 + 87040 1.039726136701127e+00 -6.095161728692049e+00 -5.996835567097877e+00 3.177476284794248e+00 4.742080320592313e+00 9.207357841458339e+03 + 87060 9.755812494814868e-01 -5.998025713819947e+00 -6.022057220825758e+00 3.743346821483694e+00 4.605354189392642e+00 9.284881777742274e+03 + 87080 9.792420814155268e-01 -6.001043776553102e+00 -5.999147876883485e+00 3.735377393884364e+00 4.746263943176833e+00 9.214427588133245e+03 + 87100 9.904919284402425e-01 -6.012260377392130e+00 -6.030762468384287e+00 3.599849744411870e+00 4.493607874745583e+00 9.311732994139586e+03 + 87120 1.041108729138819e+00 -6.080648079593712e+00 -5.981778648740228e+00 3.321345598510230e+00 4.889069170465914e+00 9.161207031126265e+03 + 87140 9.810266546063025e-01 -5.985687539429438e+00 -5.996855063460988e+00 3.789247228782733e+00 4.725121577624812e+00 9.207395473165701e+03 + 87160 9.931645839218823e-01 -5.995391755850245e+00 -5.994532894029733e+00 3.745209416249917e+00 4.750141133731734e+00 9.200279096150816e+03 + 87180 1.068191719899646e+00 -6.095121342896608e+00 -5.980627637323411e+00 3.223872951299079e+00 4.881313526544050e+00 9.157682438958793e+03 + 87200 9.994240349550974e-01 -5.978840889165111e+00 -6.020966468576994e+00 3.792681771969165e+00 4.550790176073789e+00 9.281509867105569e+03 + 87220 1.098737715105727e+00 -6.106746793709878e+00 -5.962989220209625e+00 3.104856646321728e+00 4.930334879772781e+00 9.103791555250842e+03 + 87240 9.743929238433158e-01 -5.892419633538895e+00 -6.010108546930813e+00 4.212734593004964e+00 4.536946640008084e+00 9.248111057241251e+03 + 87260 1.038437066214709e+00 -5.948009171828121e+00 -5.988197886474595e+00 3.973706614635315e+00 4.742936795951763e+00 9.180836330114249e+03 + 87280 1.064394453455502e+00 -5.940301750498324e+00 -5.949848393868467e+00 4.028481973630079e+00 4.973663670060429e+00 9.063726152523703e+03 + 87300 1.028235289934293e+00 -5.840730104757843e+00 -5.994919789682199e+00 4.546754944196573e+00 4.661373912584294e+00 9.201454321528790e+03 + 87320 1.098003489934703e+00 -5.907483809124360e+00 -6.020323829785401e+00 4.162056543786532e+00 4.514111683214074e+00 9.279530292132480e+03 + 87340 1.080052091478396e+00 -5.855498171808327e+00 -6.033360433663347e+00 4.492065304109422e+00 4.470752672441827e+00 9.319722545344102e+03 + 87360 1.185718450684636e+00 -6.002139578696011e+00 -6.019521086397042e+00 3.671483005864709e+00 4.571675698865770e+00 9.277075954316944e+03 + 87380 1.063307304000342e+00 -5.826077583394437e+00 -6.057293218445481e+00 4.619163086853419e+00 4.291487129886442e+00 9.393769948680909e+03 + 87400 1.081903271360594e+00 -5.872278225676268e+00 -6.019615857297940e+00 4.405142834480008e+00 4.559107353283564e+00 9.277352556664273e+03 + 87420 1.120687733459538e+00 -5.958239705478081e+00 -5.994854031909878e+00 3.920234768618709e+00 4.709989640198625e+00 9.201252316864273e+03 + 87440 9.767452828527707e-01 -5.781613256669887e+00 -6.019205540418785e+00 4.829090045962376e+00 4.464798385389123e+00 9.276091055960769e+03 + 87460 1.070604057053881e+00 -5.956096229281000e+00 -6.029554651441989e+00 3.937340669661768e+00 4.515531041959276e+00 9.307984310503936e+03 + 87480 1.102766890945027e+00 -6.046210863513027e+00 -6.072432351709704e+00 3.376049544134260e+00 4.225481701146757e+00 9.440766512635804e+03 + 87500 9.883364426916296e-01 -5.917984939155740e+00 -6.029586460660076e+00 4.142253199794916e+00 4.501419993037389e+00 9.308088700449496e+03 + 87520 9.938560467008314e-01 -5.954078828453053e+00 -5.987654196659008e+00 3.969777936395116e+00 4.776982976385079e+00 9.179175457162126e+03 + 87540 9.376810252954405e-01 -5.887932442066313e+00 -6.018722535776892e+00 4.312225571698859e+00 4.561208613911128e+00 9.274584473413728e+03 + 87560 1.017023053619591e+00 -6.018156731617259e+00 -5.979626679807117e+00 3.626699874397654e+00 4.847945394397738e+00 9.154593214481638e+03 + 87580 1.019763415254892e+00 -6.033072714343209e+00 -5.987097340342457e+00 3.517090772471723e+00 4.781088484650179e+00 9.177486946972494e+03 + 87600 1.032086922016970e+00 -6.058684871303665e+00 -6.017422183484295e+00 3.371250864776802e+00 4.608187603615930e+00 9.270623469580598e+03 + 87620 1.002342363372543e+00 -6.023471787098549e+00 -5.997285444219530e+00 3.590650654545577e+00 4.741016687680368e+00 9.208717875422559e+03 + 87640 1.023962130146442e+00 -6.063929588694057e+00 -5.925244715467689e+00 3.351974914765064e+00 5.148324918245644e+00 8.988985179842024e+03 + 87660 9.426849686415408e-01 -5.948347946413624e+00 -6.001302881486541e+00 3.905273612678665e+00 4.601198180740253e+00 9.221051861000869e+03 + 87680 9.433837386567213e-01 -5.951943417717841e+00 -6.016854088222513e+00 3.912226514076841e+00 4.539499399145216e+00 9.268845382637981e+03 + 87700 9.185573441488417e-01 -5.913795476897024e+00 -6.043812973900074e+00 4.127400763832975e+00 4.380820175898820e+00 9.352017293361330e+03 + 87720 1.031470006786479e+00 -6.077512849350993e+00 -5.983044609121443e+00 3.303667542685393e+00 4.846118796996401e+00 9.165084951606474e+03 + 87740 1.037918622998474e+00 -6.081382304309732e+00 -6.009196926877458e+00 3.303577783777720e+00 4.718077391644893e+00 9.245309982033919e+03 + 87760 1.010216182808845e+00 -6.035345614092986e+00 -5.990411564475682e+00 3.553906144771418e+00 4.811924411195684e+00 9.187648314248903e+03 + 87780 9.779723079411894e-01 -5.981910070564151e+00 -6.051590255827199e+00 3.747961289976455e+00 4.347846883222214e+00 9.376094615194474e+03 + 87800 1.009509693008653e+00 -6.021485364816083e+00 -6.016770220846404e+00 3.562507971338724e+00 4.589583057678799e+00 9.268597185588011e+03 + 87820 9.892667139631877e-01 -5.981174884315873e+00 -6.010436422154455e+00 3.781236207480657e+00 4.613211929003173e+00 9.249114869479732e+03 + 87840 1.046847128148843e+00 -6.053118776592689e+00 -5.954233536767850e+00 3.471197381918711e+00 5.039011731434345e+00 9.077066255642838e+03 + 87860 9.554116842456905e-01 -5.900291638628477e+00 -5.976976944554920e+00 4.249125050266577e+00 4.808786156624206e+00 9.146492175127405e+03 + 87880 1.021292379501556e+00 -5.975558685841905e+00 -5.968274048262773e+00 3.844138159175177e+00 4.885967675448578e+00 9.119906901895449e+03 + 87900 9.931899925782079e-01 -5.901975386050038e+00 -6.036688532120677e+00 4.160212852955652e+00 4.386669121426063e+00 9.330005841505406e+03 + 87920 1.068627480747506e+00 -5.983152613730168e+00 -6.000545590900871e+00 3.739534938425708e+00 4.639661771957011e+00 9.218731577408797e+03 + 87940 1.114107330683832e+00 -6.021331162173616e+00 -6.033623673311300e+00 3.544902430903551e+00 4.474316929691023e+00 9.320581398431421e+03 + 87960 1.068641053150055e+00 -5.934209407403129e+00 -6.063956398092085e+00 3.975188954558745e+00 4.230161655740845e+00 9.414458746494622e+03 + 87980 9.920919027925906e-01 -5.811175323922484e+00 -6.030926052399545e+00 4.727728494132732e+00 4.465885804902118e+00 9.312227350342862e+03 + 88000 1.139653846797910e+00 -6.024430322470007e+00 -6.003582190481590e+00 3.533435979572522e+00 4.653149179688009e+00 9.228058754477084e+03 + 88020 1.099798586894049e+00 -5.968770280846300e+00 -6.036249714995082e+00 3.830739501407201e+00 4.443262148116212e+00 9.328654220145472e+03 + 88040 1.031265553988053e+00 -5.882369938773733e+00 -6.045400733301227e+00 4.324068950080375e+00 4.387920898969591e+00 9.356928446633203e+03 + 88060 1.064556472837362e+00 -5.958011326533017e+00 -6.012031120525530e+00 3.941483465228973e+00 4.631293448587855e+00 9.254002161774555e+03 + 88080 9.691622757832288e-01 -5.852962011133539e+00 -6.008082256169258e+00 4.509637178497927e+00 4.618912726722493e+00 9.241822905599580e+03 + 88100 1.068956313778761e+00 -6.040563795665296e+00 -5.996583107147465e+00 3.476196025534931e+00 4.728739944993866e+00 9.206550326267476e+03 + 88120 9.843913416396393e-01 -5.958877028924325e+00 -6.001830467747716e+00 3.951279225237192e+00 4.704633932490104e+00 9.222671059649711e+03 + 88140 1.023673236249217e+00 -6.056961313113266e+00 -6.015596247436732e+00 3.339324472804074e+00 4.576849081141959e+00 9.265004402417928e+03 + 88160 1.000611996918333e+00 -6.054272032854122e+00 -6.003210546148085e+00 3.418476418171049e+00 4.711679376576646e+00 9.226921910229847e+03 + 88180 1.005192078222208e+00 -6.082931932148595e+00 -5.996273338815759e+00 3.253389392578082e+00 4.750996445869205e+00 9.205632529962299e+03 + 88200 9.290167058131290e-01 -5.984326471723317e+00 -6.025331007420515e+00 3.789934055945123e+00 4.554479666540418e+00 9.294979668216942e+03 + 88220 9.516883114789758e-01 -6.024310540507553e+00 -5.985529208890915e+00 3.620027486724467e+00 4.842715894258875e+00 9.172681859169972e+03 + 88240 1.004731276240237e+00 -6.103927875696463e+00 -5.960152297704725e+00 3.199853742711092e+00 5.025435360738438e+00 9.095136135566852e+03 + 88260 9.926659864236113e-01 -6.083874822827923e+00 -5.955601421906887e+00 3.294438292642492e+00 5.031004010975719e+00 9.081256927125814e+03 + 88280 9.757146796055489e-01 -6.050976490782602e+00 -5.990455724417666e+00 3.481783780075792e+00 4.829303386101582e+00 9.187790603997033e+03 + 88300 1.026599206131546e+00 -6.117088138839598e+00 -5.984150311818936e+00 3.087092223047155e+00 4.850441797862045e+00 9.168465012924249e+03 + 88320 9.959500379792751e-01 -6.060990303142972e+00 -5.998702628992168e+00 3.390136974862183e+00 4.747802438822522e+00 9.213053506853699e+03 + 88340 9.639005829310554e-01 -6.000639961912147e+00 -5.965334124934460e+00 3.679700110413886e+00 4.882431689900384e+00 9.110940801666005e+03 + 88360 1.009830494772786e+00 -6.052774510706263e+00 -5.942327239497365e+00 3.440913413539031e+00 5.075118736480508e+00 9.040836079821560e+03 + 88380 9.827677703557557e-01 -5.993533953794765e+00 -5.971616027217805e+00 3.790131661989318e+00 4.915987788182400e+00 9.130081092429949e+03 + 88400 9.863357831186433e-01 -5.975837626961129e+00 -6.010935044182528e+00 3.817298597453188e+00 4.615763796460151e+00 9.250601590483288e+03 + 88420 1.022797964711116e+00 -6.006055753257874e+00 -5.997366337242936e+00 3.642044837386653e+00 4.691940808827208e+00 9.208977758041070e+03 + 88440 1.007852546971939e+00 -5.961457412479761e+00 -6.000293729544374e+00 3.905157834698996e+00 4.682153692213344e+00 9.217945343884627e+03 + 88460 1.019827198428751e+00 -5.957575321813730e+00 -6.038928189285718e+00 3.902388237329301e+00 4.435247482989591e+00 9.336928144021371e+03 + 88480 1.058705366067213e+00 -5.999991422110526e+00 -6.024070413822935e+00 3.658403073639277e+00 4.520137777014702e+00 9.291086559473364e+03 + 88500 1.042467963243668e+00 -5.964207420497758e+00 -6.004658095810543e+00 3.936646522889638e+00 4.704372485521856e+00 9.231337218298673e+03 + 88520 1.000216310004870e+00 -5.893245992925927e+00 -6.019794635804672e+00 4.310346785086947e+00 4.583684894337995e+00 9.277912297486433e+03 + 88540 1.004953437088703e+00 -5.896657235885146e+00 -5.982405215851580e+00 4.268208600259834e+00 4.775830429835557e+00 9.163083255767737e+03 + 88560 1.017868746837943e+00 -5.912969661958693e+00 -6.003055934958522e+00 4.089558590356763e+00 4.572269269986053e+00 9.226394643453426e+03 + 88580 1.063780659232309e+00 -5.980526076687880e+00 -6.003406252424225e+00 3.789026426926977e+00 4.657644917153135e+00 9.227496002644621e+03 + 88600 1.063418887084190e+00 -5.987045572887839e+00 -5.970365549923864e+00 3.786583357795255e+00 4.882362630879610e+00 9.126279642283471e+03 + 88620 1.008944119140215e+00 -5.922928897714257e+00 -6.021480587715984e+00 4.104738273557393e+00 4.538839218742739e+00 9.283080719681378e+03 + 88640 1.014436237957769e+00 -5.961145123957735e+00 -6.004874781617540e+00 3.905986048301517e+00 4.654883586876270e+00 9.232017428194307e+03 + 88660 1.007816616794463e+00 -5.990051130913432e+00 -6.049334925917770e+00 3.725452327060121e+00 4.385035602007585e+00 9.369121240741029e+03 + 88680 9.777241883307218e-01 -5.991275058641246e+00 -6.040175301174655e+00 3.764189909588552e+00 4.483397149673642e+00 9.340785058066474e+03 + 88700 9.402566822340124e-01 -5.977178516934332e+00 -6.012945559554204e+00 3.783207958404343e+00 4.577828064749084e+00 9.256828284157484e+03 + 88720 9.859510970306447e-01 -6.078175361036213e+00 -5.985134229105450e+00 3.289483005838663e+00 4.823739583453742e+00 9.171485906471011e+03 + 88740 9.566750592182246e-01 -6.059619503565356e+00 -5.992136120332607e+00 3.373206981932115e+00 4.760707011474365e+00 9.192929250897309e+03 + 88760 9.723846578848524e-01 -6.100243381561183e+00 -5.951331892050180e+00 3.185785050337162e+00 5.040857867087871e+00 9.068248654009667e+03 + 88780 9.160547825553692e-01 -6.025572161004696e+00 -6.007835598763481e+00 3.553212663278649e+00 4.655058748391839e+00 9.241124041917183e+03 + 88800 9.221373066194983e-01 -6.038905601691775e+00 -5.994649950149300e+00 3.447324582133140e+00 4.701447381829974e+00 9.200632548380030e+03 + 88820 9.111602895749087e-01 -6.020279644544123e+00 -5.958841671222450e+00 3.580397026685465e+00 4.933183376994158e+00 9.091132652581084e+03 + 88840 9.447638986200360e-01 -6.058593425096966e+00 -5.994782291110129e+00 3.378675813222752e+00 4.745089219316242e+00 9.201038928100284e+03 + 88860 9.621686963095208e-01 -6.064128128103943e+00 -6.014130305647388e+00 3.335945203949383e+00 4.623040437632944e+00 9.260500710913224e+03 + 88880 9.533823188433425e-01 -6.027700071112174e+00 -6.027061638903783e+00 3.501365879886273e+00 4.505031856423924e+00 9.300306325463851e+03 + 88900 9.286886453447538e-01 -5.963797874565456e+00 -6.052421764986242e+00 3.847848663223206e+00 4.338956569924334e+00 9.378672666080338e+03 + 88920 1.034486605810206e+00 -6.089522673173873e+00 -5.981180124712253e+00 3.241089021467134e+00 4.863208700688945e+00 9.159377028948153e+03 + 88940 9.333694007430071e-01 -5.906685620385778e+00 -6.030761515455120e+00 4.155092290708149e+00 4.442629300537283e+00 9.311732770428722e+03 + 88960 9.745406744811306e-01 -5.938845615109351e+00 -6.023616845535398e+00 3.991823776115460e+00 4.505054252703586e+00 9.289702653666138e+03 + 88980 1.050847995976898e+00 -6.026019748515243e+00 -5.992268658872719e+00 3.544165345897158e+00 4.737969325588778e+00 9.193351144761345e+03 + 89000 1.091194783546845e+00 -6.066317379388865e+00 -6.022715600296324e+00 3.326744669633388e+00 4.577112832536262e+00 9.286915208787890e+03 + 89020 1.025376651790601e+00 -5.954878706941137e+00 -6.050664857611599e+00 3.897675955486730e+00 4.347657055478027e+00 9.373238364876617e+03 + 89040 1.034449329454733e+00 -5.961296604181987e+00 -6.041612576074671e+00 3.901733917022659e+00 4.440547177558386e+00 9.345238011718004e+03 + 89060 1.053578683597306e+00 -5.987497930043870e+00 -6.052186399747031e+00 3.789913535366977e+00 4.418462331823090e+00 9.377969444520131e+03 + 89080 1.088609789857573e+00 -6.045277679408265e+00 -6.025607809505185e+00 3.445110472132076e+00 4.558057909018097e+00 9.295827633899828e+03 + 89100 1.014354804333683e+00 -5.945907708767368e+00 -6.014663476287125e+00 4.006140856863784e+00 4.611334599844701e+00 9.262104208138006e+03 + 89120 1.030694599901340e+00 -5.982662575084519e+00 -6.002558161612559e+00 3.814919183720523e+00 4.700675647044454e+00 9.224927327084970e+03 + 89140 1.035832615351562e+00 -6.005389610471985e+00 -6.034598283850535e+00 3.655099512101111e+00 4.487378789533881e+00 9.323577518700882e+03 + 89160 1.001223666780861e+00 -5.973648013701814e+00 -6.032037621218685e+00 3.863076059522212e+00 4.527793897397774e+00 9.315679349590542e+03 + 89180 1.056301502242269e+00 -6.080082903675033e+00 -5.996317896797932e+00 3.237679397896343e+00 4.718671029977575e+00 9.205740963457252e+03 + 89200 9.864695799530404e-01 -5.999553203051855e+00 -5.985478091748534e+00 3.738917793248354e+00 4.819739260468461e+00 9.172507528271042e+03 + 89220 9.958121220599762e-01 -6.035595086620949e+00 -5.972789306695220e+00 3.537320578977160e+00 4.897961086473729e+00 9.133686886392228e+03 + 89240 9.827534786273694e-01 -6.035374447653136e+00 -6.006733957232120e+00 3.452195106410916e+00 4.616653234509961e+00 9.237726656988443e+03 + 89260 9.978457561454224e-01 -6.076252793848736e+00 -5.991876712304973e+00 3.328246636640744e+00 4.812747154021453e+00 9.192135934996903e+03 + 89280 1.000984539935491e+00 -6.096722040792721e+00 -5.973346934586663e+00 3.209902927235905e+00 4.918341879307075e+00 9.135434092226424e+03 + 89300 9.726734108396369e-01 -6.070787689172133e+00 -6.003298867146075e+00 3.380896828786059e+00 4.768428088721139e+00 9.227175045275522e+03 + 89320 8.980039786302488e-01 -5.977982402640011e+00 -6.022857905124383e+00 3.794791837880529e+00 4.537109758153703e+00 9.287364668066552e+03 + 89340 9.124569275158166e-01 -6.021610000751577e+00 -6.036857196918711e+00 3.613821791664993e+00 4.526270031777330e+00 9.330547199884744e+03 + 89360 9.505677002071273e-01 -6.112980829208274e+00 -5.981023367613975e+00 3.097143086269987e+00 4.854863251095637e+00 9.158919754334762e+03 + 89380 8.835754802828850e-01 -6.056607432459284e+00 -6.014480142209756e+00 3.380851226184566e+00 4.622752645974453e+00 9.261565619570036e+03 + 89400 9.311868182314267e-01 -6.173113810427619e+00 -5.995850449778006e+00 2.766860893841996e+00 4.784734542108479e+00 9.204341308670015e+03 + 89420 8.926379618709972e-01 -6.153158704387931e+00 -5.989113241486306e+00 2.878928678228287e+00 4.820903112162757e+00 9.183688275647113e+03 + 89440 9.034645844263177e-01 -6.192378040816404e+00 -5.997189083601254e+00 2.639125139623150e+00 4.759930337346049e+00 9.208442968366977e+03 + 89460 8.078497650344366e-01 -6.058995853015265e+00 -5.994436374700137e+00 3.447855430633417e+00 4.818565945665863e+00 9.199990477736916e+03 + 89480 8.687383238017418e-01 -6.144804281244188e+00 -6.039771105992886e+00 2.886279527615725e+00 4.489396273740045e+00 9.339557377746825e+03 + 89500 8.795539161275706e-01 -6.144799908121779e+00 -6.031580123276200e+00 2.907787985399958e+00 4.557913510688357e+00 9.314277348924295e+03 + 89520 9.185742895547041e-01 -6.175384874103182e+00 -6.012872513468366e+00 2.818457024166792e+00 4.751628147638439e+00 9.256632176442701e+03 + 89540 9.121185615716081e-01 -6.128205981132044e+00 -5.995234885741868e+00 3.047687698266629e+00 4.811228305207531e+00 9.202447682877231e+03 + 89560 8.981567693419910e-01 -6.068285652204358e+00 -5.969624632481840e+00 3.401116792165927e+00 4.967643635156085e+00 9.124028324578945e+03 + 89580 9.538965925454703e-01 -6.109192300880643e+00 -5.957562741751687e+00 3.124704680412757e+00 4.995385073529663e+00 9.087243591682311e+03 + 89600 9.568076348206799e-01 -6.076694532985515e+00 -5.979774505956331e+00 3.268471076937542e+00 4.825000870464826e+00 9.155067673702104e+03 + 89620 9.344364078527727e-01 -6.010450810794744e+00 -6.023962651303363e+00 3.673601463054395e+00 4.596014383903341e+00 9.290749255004304e+03 + 89640 9.559476826108811e-01 -6.015844585295693e+00 -6.015841893130399e+00 3.602388068989919e+00 4.602403527819650e+00 9.265744535080750e+03 + 89660 9.432722675544823e-01 -5.972968778008971e+00 -6.031571561291647e+00 3.862701284047002e+00 4.526195033686472e+00 9.314198168393923e+03 + 89680 1.038452115999587e+00 -6.092947996748592e+00 -5.976524512955755e+00 3.248131947402253e+00 4.916653607816615e+00 9.145122645292628e+03 + 89700 9.364344226334796e-01 -5.922435376029928e+00 -6.009280198302424e+00 4.106082184308841e+00 4.607405775627362e+00 9.245541273794595e+03 + 89720 1.020321246207636e+00 -6.026909758922693e+00 -6.005567733635488e+00 3.528658576100155e+00 4.651207787967025e+00 9.234136289426204e+03 + 89740 1.002997369555049e+00 -5.982397307305829e+00 -5.990870955338476e+00 3.841754080776325e+00 4.793097082480065e+00 9.189041523320402e+03 + 89760 1.019875429605953e+00 -5.991287178700564e+00 -5.976151128059742e+00 3.735935496491687e+00 4.822849041567556e+00 9.143949043183098e+03 + 89780 9.659417653348009e-01 -5.893837676796616e+00 -5.956872284020286e+00 4.292880156405480e+00 4.930925687153223e+00 9.085116825867419e+03 + 89800 1.067507889278141e+00 -6.026141591996270e+00 -5.979135879594249e+00 3.543506739336222e+00 4.813420814059109e+00 9.153104213330065e+03 + 89820 1.016461110703808e+00 -5.934070160417384e+00 -6.036441062550446e+00 4.058463945039723e+00 4.470634383145775e+00 9.329241778731342e+03 + 89840 1.021545955440491e+00 -5.932135223209783e+00 -6.003733951869499e+00 4.054997464015811e+00 4.643866484184266e+00 9.228477708299912e+03 + 89860 1.012304368667983e+00 -5.912724258238515e+00 -5.945923090471743e+00 4.160423190546240e+00 4.969790358360355e+00 9.051766412415578e+03 + 89880 1.009349571373608e+00 -5.902327221719281e+00 -6.015274060152491e+00 4.221780483867496e+00 4.573222259117249e+00 9.263951173272742e+03 + 89900 1.059877415356628e+00 -5.973515902865451e+00 -6.007460153793547e+00 3.858080892425451e+00 4.663167750740469e+00 9.239957886128546e+03 + 89920 1.028721827151096e+00 -5.929312685382344e+00 -6.036465367994974e+00 4.041416676193671e+00 4.426129390807907e+00 9.329291008781787e+03 + 89940 1.061769778903416e+00 -5.987465629507965e+00 -6.007947063290040e+00 3.748887936865745e+00 4.631280374597433e+00 9.241463946916585e+03 + 89960 1.026749455500877e+00 -5.952631914293434e+00 -6.030550613504949e+00 3.935343414929964e+00 4.487922186177713e+00 9.311101392939647e+03 + 89980 9.985306537835112e-01 -5.939324593249129e+00 -6.037223797102552e+00 4.079062898990722e+00 4.516910520611536e+00 9.331667924698937e+03 + 90000 1.024303461225930e+00 -6.014003663076107e+00 -6.041073625141481e+00 3.558345087648665e+00 4.402905176406196e+00 9.343568497326509e+03 + 90020 1.034646635005719e+00 -6.075793244695015e+00 -6.000487977137082e+00 3.318832051186078e+00 4.751246550956226e+00 9.218555286443061e+03 + 90040 9.375046994042263e-01 -5.977239213613165e+00 -6.049672648706040e+00 3.785392775058697e+00 4.369468781717556e+00 9.370181969928688e+03 + 90060 9.393414498017124e-01 -6.016843478693740e+00 -6.001552595482736e+00 3.613208568478016e+00 4.701011186132132e+00 9.221810259070193e+03 + 90080 9.886237650923341e-01 -6.114128435244209e+00 -5.956724725060896e+00 3.132921990849318e+00 5.036758452867325e+00 9.084698226607288e+03 + 90100 9.359396230650860e-01 -6.051916224030545e+00 -5.973167836693648e+00 3.408733294059551e+00 4.860918720421568e+00 9.134891986675006e+03 + 90120 9.213030224778741e-01 -6.036342143192512e+00 -6.034484141908981e+00 3.508563262908007e+00 4.519232193802811e+00 9.323201754677382e+03 + 90140 9.691750381032378e-01 -6.107333655313258e+00 -5.975626793386009e+00 3.150960841903280e+00 4.907242024660560e+00 9.142394246533255e+03 + 90160 9.362748039393037e-01 -6.051258500808715e+00 -6.031631368143954e+00 3.367197432783759e+00 4.479899465833785e+00 9.314430916088635e+03 + 90180 1.023606393051084e+00 -6.171646432815560e+00 -5.988386613595773e+00 2.743361808738928e+00 4.795668050064318e+00 9.181452092393200e+03 + 90200 8.965202306255557e-01 -5.971019738654689e+00 -6.002450495134086e+00 3.873981909839267e+00 4.693501642240723e+00 9.224548233663478e+03 + 90220 9.912407083363978e-01 -6.094866784876505e+00 -5.964981433786996e+00 3.222985721536100e+00 4.968807507185179e+00 9.109851652106971e+03 + 90240 9.194210484907953e-01 -5.965725785216926e+00 -5.993672774669414e+00 3.873569387962822e+00 4.713093449743996e+00 9.197647683556110e+03 + 90260 1.022942669029790e+00 -6.094966474552622e+00 -5.990352770187380e+00 3.131776230468857e+00 4.732484309852506e+00 9.187470389686348e+03 + 90280 9.598475915345579e-01 -5.976255996391490e+00 -6.004487721291891e+00 3.828637738272987e+00 4.666526805049576e+00 9.230855472693691e+03 + 90300 9.833697929842095e-01 -5.988335819990033e+00 -6.046079266650390e+00 3.702951203812830e+00 4.371379397319562e+00 9.359052056094628e+03 + 90320 9.716107664810937e-01 -5.953275285592254e+00 -5.987038183066653e+00 4.003697529177051e+00 4.809825747087554e+00 9.177283581746125e+03 + 90340 1.074137082751893e+00 -6.089271367959201e+00 -5.972302772085334e+00 3.217541817676433e+00 4.889193596015888e+00 9.132211328451316e+03 + 90360 1.016098966118460e+00 -5.991043144588276e+00 -6.032480985601726e+00 3.685672958653950e+00 4.447730463069550e+00 9.317015734702367e+03 + 90380 1.066354097378106e+00 -6.058743083030161e+00 -6.010953691976561e+00 3.411118319337729e+00 4.685532398151865e+00 9.250729187760386e+03 + 90400 1.038109655528592e+00 -6.014432751399296e+00 -6.016741375495410e+00 3.619585622284778e+00 4.606329145466468e+00 9.268538362628660e+03 + 90420 1.089347194063812e+00 -6.092073657066365e+00 -6.014723606648991e+00 3.170904447444652e+00 4.615060406822835e+00 9.262288607536695e+03 + 90440 9.826186260511475e-01 -5.938384338412805e+00 -5.995889022931433e+00 3.951858764523008e+00 4.621657967195876e+00 9.204426624219728e+03 + 90460 9.198887365815542e-01 -5.849296312317502e+00 -5.984405633989783e+00 4.549944800429930e+00 4.774126167287736e+00 9.169178489224554e+03 + 90480 1.028947568384534e+00 -6.011569668234668e+00 -5.959061489303172e+00 3.642869914782858e+00 4.944380003821938e+00 9.091783006664045e+03 + 90500 1.010528638888283e+00 -5.983811687595216e+00 -6.007007533651207e+00 3.778590322060214e+00 4.645396184461136e+00 9.238566667421910e+03 + 90520 1.002408396060063e+00 -5.973760658444693e+00 -5.994266762339804e+00 3.860058983941145e+00 4.742309762066096e+00 9.199451853213550e+03 + 90540 9.967592781390170e-01 -5.969626766562801e+00 -6.023465663720730e+00 3.829834810233811e+00 4.520683531210577e+00 9.289215368435285e+03 + 90560 1.030820743992002e+00 -6.025369105495912e+00 -5.960364888234058e+00 3.553619307486540e+00 4.926883582374217e+00 9.095766288132856e+03 + 90580 1.036072530321406e+00 -6.038286635051412e+00 -5.951358604065693e+00 3.556396243673162e+00 5.055550449662476e+00 9.068310582701370e+03 + 90600 9.786182808608902e-01 -5.956211803264342e+00 -5.996027288802871e+00 3.939763719021178e+00 4.711137039632466e+00 9.204802290152973e+03 + 90620 9.933191744009828e-01 -5.980640519197610e+00 -5.950337010762839e+00 3.777100451367684e+00 4.951107886252910e+00 9.065179984237908e+03 + 90640 9.292807142561006e-01 -5.886262797702089e+00 -6.021866744387946e+00 4.243948031208909e+00 4.465289184695788e+00 9.284262428896407e+03 + 90660 9.650406299661355e-01 -5.936715820262868e+00 -6.032496484010139e+00 4.015923589793119e+00 4.465936196546479e+00 9.317055713567006e+03 + 90680 1.050531218000932e+00 -6.061433032555496e+00 -5.992403215462777e+00 3.383005512875396e+00 4.779385404951462e+00 9.193752020066768e+03 + 90700 9.762284701414574e-01 -5.951754705111686e+00 -6.000157909987371e+00 3.931935954215656e+00 4.653997261447728e+00 9.217555510920278e+03 + 90720 9.730865813932369e-01 -5.948880800967653e+00 -6.025619160412798e+00 3.927005467679864e+00 4.486361932523092e+00 9.295880851512205e+03 + 90740 9.945257205188874e-01 -5.982835100906126e+00 -6.026010291386668e+00 3.802181931863123e+00 4.554263306784716e+00 9.297060779986454e+03 + 90760 1.003163360540065e+00 -6.001579051181630e+00 -5.993541523582849e+00 3.659338245549965e+00 4.705490972825547e+00 9.197234312114146e+03 + 90780 1.022994571594771e+00 -6.039165815664402e+00 -5.965713930067644e+00 3.506573025569127e+00 4.928345119308272e+00 9.112075349175429e+03 + 90800 1.031568195074431e+00 -6.060641228513947e+00 -5.954791949693937e+00 3.368726095672284e+00 4.976529034779740e+00 9.078777212796940e+03 + 90820 9.535186460432611e-01 -5.952597048968745e+00 -5.968770270006238e+00 3.947014892194285e+00 4.854145754199132e+00 9.121408641374748e+03 + 90840 9.966719899217524e-01 -6.022660567783614e+00 -6.011710669426211e+00 3.552785453887374e+00 4.615661464746873e+00 9.253029987229671e+03 + 90860 1.037424376896555e+00 -6.088843965813568e+00 -5.986203331087665e+00 3.254851104158999e+00 4.844229512342025e+00 9.174747438043267e+03 + 90880 1.001718706217761e+00 -6.042627792282501e+00 -5.967607978419724e+00 3.491719063943326e+00 4.922494444422069e+00 9.117888053499082e+03 + 90900 9.924692716293966e-01 -6.033610777954717e+00 -5.977645768426397e+00 3.513448550490725e+00 4.834808295759574e+00 9.148542975709381e+03 + 90920 1.002788082742014e+00 -6.051497853248558e+00 -5.978965518657393e+00 3.451612022956298e+00 4.868103912521272e+00 9.152590919323518e+03 + 90940 9.346567080226954e-01 -5.951801617345334e+00 -6.040881076863970e+00 3.978165170593372e+00 4.466657129035554e+00 9.342966969865483e+03 + 90960 1.006417257920964e+00 -6.057665043052575e+00 -5.989971989840886e+00 3.412489402347643e+00 4.801193389355287e+00 9.186271242194092e+03 + 90980 9.266025958710231e-01 -5.936020686059566e+00 -5.991389145592128e+00 4.061488349360757e+00 4.743554086483365e+00 9.190605902782412e+03 + 91000 9.561958998031014e-01 -5.974519251844402e+00 -5.956189554119632e+00 3.850913763691556e+00 4.956165724538738e+00 9.083015930900578e+03 + 91020 1.006852190472304e+00 -6.037081447093894e+00 -5.962668031196943e+00 3.531574720697960e+00 4.958868070217147e+00 9.102790517107829e+03 + 91040 1.084064826833417e+00 -6.132348484506089e+00 -6.004966882630202e+00 2.984770815770680e+00 4.716215685981204e+00 9.232289876528643e+03 + 91060 1.050857770853919e+00 -6.063940961956239e+00 -6.034379179636496e+00 3.333886126915298e+00 4.503634455666290e+00 9.322899491753331e+03 + 91080 9.689402016060198e-01 -5.926426947085247e+00 -6.013112282870818e+00 4.057269111283589e+00 4.559508498690482e+00 9.257359685365214e+03 + 91100 1.007965309000966e+00 -5.966556789630864e+00 -5.992836106043260e+00 3.894247906854662e+00 4.743348005303618e+00 9.195056557191579e+03 + 91120 1.049055006324135e+00 -6.008017048108677e+00 -6.013893635287411e+00 3.728330988203850e+00 4.694586715224629e+00 9.259752322142920e+03 + 91140 9.708688039707143e-01 -5.874894590971385e+00 -6.017748717768360e+00 4.369681659830153e+00 4.549391157157249e+00 9.271602265881009e+03 + 91160 1.075868852834864e+00 -6.013511951470724e+00 -5.943496308037179e+00 3.627686640786177e+00 5.029727300267395e+00 9.044406061664933e+03 + 91180 1.059319613823336e+00 -5.970374829123527e+00 -6.007194875593621e+00 3.827100509626887e+00 4.615674104911827e+00 9.239133060243434e+03 + 91200 9.997601957782097e-01 -5.866630201576225e+00 -6.052331262586438e+00 4.342801355900750e+00 4.276477126433784e+00 9.378388746015207e+03 + 91220 1.074106812823795e+00 -5.966594803735809e+00 -6.014972928835885e+00 3.907571773378381e+00 4.629777092563080e+00 9.263087883080078e+03 + 91240 1.056563043890102e+00 -5.937453390433897e+00 -6.041432124368221e+00 4.025601854678577e+00 4.428539873770617e+00 9.344673596646817e+03 + 91260 9.673927464386137e-01 -5.809442555762791e+00 -6.038172687854384e+00 4.686600052808972e+00 4.373196238465504e+00 9.334569801943591e+03 + 91280 1.026314689320599e+00 -5.905831243445156e+00 -5.996893489639968e+00 4.183908739826203e+00 4.661015230338535e+00 9.207521791541851e+03 + 91300 1.075276707207644e+00 -5.997378313117030e+00 -5.986383127298366e+00 3.694841340481710e+00 4.757977398951993e+00 9.175277527548546e+03 + 91320 9.988504266107781e-01 -5.915992641816494e+00 -5.989278107552175e+00 4.104210173041773e+00 4.683393687898326e+00 9.184119393641327e+03 + 91340 1.027768691818412e+00 -5.998893877758062e+00 -5.900131971693922e+00 3.688312023937532e+00 5.255418171913394e+00 8.912989294768950e+03 + 91360 9.621798808142551e-01 -5.939150759731340e+00 -5.957055683937511e+00 4.008713963514596e+00 4.905901117944697e+00 9.085676786077009e+03 + 91380 9.701896576178528e-01 -5.989742803372113e+00 -6.028941954315830e+00 3.743368877094144e+00 4.518281286326319e+00 9.306105387359406e+03 + 91400 1.001984311149583e+00 -6.072489784536085e+00 -5.962077002593810e+00 3.314401881251693e+00 4.948409161487016e+00 9.100973175128822e+03 + 91420 9.859174001244723e-01 -6.073820146560882e+00 -5.937568957392716e+00 3.329441269446448e+00 5.111816682453437e+00 9.026347145188178e+03 + 91440 9.614124904150658e-01 -6.053462822048669e+00 -5.942861831048573e+00 3.386120940573419e+00 5.021208946344016e+00 9.042475675901069e+03 + 91460 9.670103158555130e-01 -6.070743619162544e+00 -5.933648690613020e+00 3.377184830711050e+00 5.164405125814044e+00 9.014454027048561e+03 + 91480 9.008382474990118e-01 -5.973793782350654e+00 -5.965319368512162e+00 3.870672255563362e+00 4.919333651235287e+00 9.110823025508298e+03 + 91500 9.591219989821808e-01 -6.051956740980719e+00 -5.989926500521300e+00 3.454309897787438e+00 4.810497137654110e+00 9.186135087441180e+03 + 91520 9.661131503252161e-01 -6.050833822001569e+00 -5.999840865148419e+00 3.405118848500883e+00 4.697928297886243e+00 9.216578363011289e+03 + 91540 8.937297703054529e-01 -5.930071244251935e+00 -6.005635740337473e+00 4.108619775042314e+00 4.674716744951181e+00 9.234347328500715e+03 + 91560 9.799969067742539e-01 -6.040599909445302e+00 -5.960662099820501e+00 3.550566202096759e+00 5.009581475298425e+00 9.096695714667492e+03 + 91580 9.873750124112767e-01 -6.028086772819733e+00 -6.004834183589754e+00 3.566751265155697e+00 4.700271230840789e+00 9.231877289496391e+03 + 91600 1.082632929639991e+00 -6.146293663484569e+00 -5.958830991443607e+00 2.951395790626668e+00 5.027835463240614e+00 9.091102476907727e+03 + 91620 9.835509437271127e-01 -5.975751598991893e+00 -5.969112693998621e+00 3.852004637136334e+00 4.890126256974927e+00 9.122462405839829e+03 + 91640 9.868240085701721e-01 -5.957581419746098e+00 -5.960406298230106e+00 3.942764533184067e+00 4.926543643780357e+00 9.095895630875255e+03 + 91660 1.012945680557856e+00 -5.974648853481462e+00 -5.927285781176846e+00 3.795729037087928e+00 5.067695127672782e+00 8.995189848180058e+03 + 91680 9.546830236004079e-01 -5.866722181878935e+00 -5.963377877854162e+00 4.401831388010221e+00 4.846819424299855e+00 9.104928451371828e+03 + 91700 1.079924212094383e+00 -6.032660971653055e+00 -5.961297462761236e+00 3.525292780679866e+00 4.935073092204003e+00 9.098595157602878e+03 + 91720 1.031800682623850e+00 -5.948899907625007e+00 -5.973379201170015e+00 3.997689673204156e+00 4.857125781510284e+00 9.135481286946795e+03 + 91740 1.030513265118737e+00 -5.940465379478386e+00 -5.966055473714219e+00 4.100670935634315e+00 4.953728654477877e+00 9.113104069212050e+03 + 91760 1.025659166762495e+00 -5.929237322324334e+00 -5.984286292107209e+00 4.115330665787295e+00 4.799230962493486e+00 9.168851386259792e+03 + 91780 1.082557069659960e+00 -6.014303931103578e+00 -6.033960978152489e+00 3.623495632975875e+00 4.510621826902828e+00 9.321602238036563e+03 + 91800 1.003182078429742e+00 -5.904348839074922e+00 -6.083437548805012e+00 4.143724379518756e+00 4.115369294360315e+00 9.474981902139245e+03 + 91820 9.611591244775244e-01 -5.851466200615871e+00 -6.078095881418850e+00 4.442491979451584e+00 4.141149281451120e+00 9.458348791893108e+03 + 91840 9.810486751939274e-01 -5.890567718779295e+00 -6.085071166864841e+00 4.249877633311333e+00 4.133008735092811e+00 9.480054024793450e+03 + 91860 9.883088496339950e-01 -5.914244610631100e+00 -6.053519294110114e+00 4.174736001773017e+00 4.374999216548903e+00 9.382066005516232e+03 + 91880 1.046456369649532e+00 -6.014665267085565e+00 -5.999080695837783e+00 3.633901326500908e+00 4.723390346310278e+00 9.214230545791019e+03 + 91900 1.003776303236456e+00 -5.965143480697046e+00 -5.986415647417244e+00 3.913922335079033e+00 4.791774261914493e+00 9.175380504169860e+03 + 91920 1.064365487704923e+00 -6.069948955234690e+00 -5.975454615829983e+00 3.360725095415205e+00 4.903326215228793e+00 9.141856980291406e+03 + 91940 1.020622467044614e+00 -6.022539869167445e+00 -5.972929856418884e+00 3.634157531301558e+00 4.919025901628455e+00 9.134132134932875e+03 + 91960 1.002008659821900e+00 -6.009604760262583e+00 -5.969346953543777e+00 3.688955577157066e+00 4.920122133211905e+00 9.123155455847071e+03 + 91980 9.620608637716673e-01 -5.962030452242761e+00 -5.972232974649442e+00 3.986652094855626e+00 4.928067632361225e+00 9.131979172402664e+03 + 92000 9.914508885804711e-01 -6.017435245408493e+00 -5.981991827347139e+00 3.578992770346881e+00 4.782514361706397e+00 9.161851054016628e+03 + 92020 1.031219940656133e+00 -6.085829395199574e+00 -6.033983065883395e+00 3.190367268346120e+00 4.488076914473152e+00 9.321673188200464e+03 + 92040 9.470023919509970e-01 -5.972753671237058e+00 -5.997485987713207e+00 3.858853465576396e+00 4.716836677056742e+00 9.209348324127055e+03 + 92060 9.901459853025222e-01 -6.048000802730856e+00 -5.981190643469706e+00 3.422826614678641e+00 4.806460887994896e+00 9.159381719379762e+03 + 92080 9.892625123402107e-01 -6.055392400985992e+00 -5.973320323005632e+00 3.367959388874767e+00 4.839229961251017e+00 9.135339614918730e+03 + 92100 9.942251885664569e-01 -6.070677519711635e+00 -6.001276655692319e+00 3.293982321284305e+00 4.692492822232216e+00 9.220983811836993e+03 + 92120 9.796059744273041e-01 -6.055755330437749e+00 -6.004633721839086e+00 3.391641265565771e+00 4.685189453182660e+00 9.231274349706462e+03 + 92140 9.685389496695308e-01 -6.044966066203763e+00 -5.994043456214458e+00 3.478417308377974e+00 4.770822815184996e+00 9.198773874562114e+03 + 92160 9.971058381255139e-01 -6.091809112638843e+00 -6.016945108530072e+00 3.178159259498971e+00 4.608039956258724e+00 9.269161814159248e+03 + 92180 9.102040642184176e-01 -5.965636140109127e+00 -6.050264327981040e+00 3.846624573986456e+00 4.360676423056182e+00 9.372010871053008e+03 + 92200 9.730694102239341e-01 -6.059255562482457e+00 -5.990610316435148e+00 3.360945076094699e+00 4.755116701715846e+00 9.188251090837746e+03 + 92220 9.609250597398966e-01 -6.035963045762831e+00 -5.979068352225161e+00 3.503246585878892e+00 4.829944720597560e+00 9.152908732737411e+03 + 92240 9.813965926657627e-01 -6.054134460459643e+00 -5.972166447653731e+00 3.342777759032568e+00 4.813450773073109e+00 9.131791451236755e+03 + 92260 9.280162330166271e-01 -5.957532816981169e+00 -5.953826002984674e+00 3.902383816210753e+00 4.923668915806235e+00 9.075828653247287e+03 + 92280 9.276172502440352e-01 -5.929887980095666e+00 -6.022015056763373e+00 4.082572940004829e+00 4.553565009159814e+00 9.284731896026764e+03 + 92300 9.532012165194542e-01 -5.936769699618371e+00 -5.998184009909230e+00 4.023056060451045e+00 4.670405586927133e+00 9.211477219230410e+03 + 92320 1.035297502321760e+00 -6.023670599102213e+00 -5.968854561391465e+00 3.523865146010526e+00 4.838627317300062e+00 9.121696063774549e+03 + 92340 9.856225451581494e-01 -5.917368365205769e+00 -5.987591351253808e+00 4.095005020139521e+00 4.691773767279712e+00 9.178990063114532e+03 + 92360 9.691883179731632e-01 -5.864828783200910e+00 -5.959137490817533e+00 4.406758809293646e+00 4.865223615933657e+00 9.092026176295782e+03 + 92380 1.057793465691297e+00 -5.969967109448820e+00 -6.006931047649975e+00 3.813145727914197e+00 4.600893074612214e+00 9.238305700574771e+03 + 92400 1.062288448715253e+00 -5.956778217032518e+00 -6.043859746744644e+00 3.904384651686155e+00 4.404349032255956e+00 9.352174319457506e+03 + 92420 1.074105156625377e+00 -5.962983204051115e+00 -5.996901182428162e+00 3.864130784450694e+00 4.669368503819502e+00 9.207538184806213e+03 + 92440 1.084904983887666e+00 -5.975856102539982e+00 -6.020229734883625e+00 3.751885715027536e+00 4.497085451312927e+00 9.279260459996854e+03 + 92460 1.034021344767965e+00 -5.903174899802647e+00 -6.049696432717321e+00 4.175661950376023e+00 4.334312634246023e+00 9.370238141193653e+03 + 92480 1.067401439056052e+00 -5.963642759268620e+00 -6.078606051808658e+00 3.876557776984852e+00 4.216420760707932e+00 9.459920775778599e+03 + 92500 1.023907973367928e+00 -5.920663506537450e+00 -6.067634871328995e+00 4.142090295535436e+00 4.298157975157189e+00 9.425835203450679e+03 + 92520 1.036924266254340e+00 -5.970059120876485e+00 -6.038171330775089e+00 3.802624853796866e+00 4.411514004228666e+00 9.334610240732705e+03 + 92540 1.007045049981141e+00 -5.960328298647221e+00 -6.011890966317067e+00 3.845408823536443e+00 4.549328006479155e+00 9.253567831747245e+03 + 92560 9.838734240716901e-01 -5.961448090100680e+00 -6.009349373720204e+00 3.854907023388519e+00 4.579850440145528e+00 9.245751494776272e+03 + 92580 9.896419899321607e-01 -6.001569749707246e+00 -5.979484809670014e+00 3.668201920259528e+00 4.795017063586745e+00 9.154171920371640e+03 + 92600 1.004953484233613e+00 -6.049931156844298e+00 -6.035085567842809e+00 3.407124136140154e+00 4.492369805534183e+00 9.325083308415107e+03 + 92620 1.006391128945778e+00 -6.072982017498060e+00 -6.011929041190021e+00 3.302594879288017e+00 4.653170517166328e+00 9.253736328540872e+03 + 92640 9.789972764932645e-01 -6.047957336862297e+00 -6.032114929293050e+00 3.414582345778536e+00 4.505551901645800e+00 9.315923290693889e+03 + 92660 9.461626952171051e-01 -6.009811360169687e+00 -5.986296767545719e+00 3.653738205978938e+00 4.788762635697214e+00 9.175037327993236e+03 + 92680 9.446613473371800e-01 -6.010331109198454e+00 -5.972037738558966e+00 3.650516188170057e+00 4.870402648261949e+00 9.131395204911447e+03 + 92700 9.823425347821416e-01 -6.063107602293886e+00 -5.992104752822645e+00 3.331030040657935e+00 4.738739389977246e+00 9.192829059814656e+03 + 92720 9.602452118350174e-01 -6.025867822711992e+00 -5.994702749447457e+00 3.540540591297925e+00 4.719495264762381e+00 9.200796138729072e+03 + 92740 1.004653529516145e+00 -6.083319586523846e+00 -5.987313702650987e+00 3.215602691843601e+00 4.766883333904076e+00 9.178157071553222e+03 + 92760 1.001404297490927e+00 -6.068820810355640e+00 -5.991717531857198e+00 3.366944765417203e+00 4.809683722249048e+00 9.191632911101067e+03 + 92780 9.854829547446791e-01 -6.036219387797411e+00 -5.977417204510067e+00 3.530851334411929e+00 4.868502570456318e+00 9.147851885449112e+03 + 92800 9.803022170092226e-01 -6.017489782344901e+00 -5.983101038282072e+00 3.630600932105565e+00 4.828066422155274e+00 9.165231746551121e+03 + 92820 9.187937000228594e-01 -5.913335123656370e+00 -5.987638666854830e+00 4.214431597518744e+00 4.787769154037034e+00 9.179125958015618e+03 + 92840 1.033554831101026e+00 -6.068014248616664e+00 -6.013870602471871e+00 3.340711654570892e+00 4.651612849436454e+00 9.259661903948772e+03 + 92860 1.012463189341645e+00 -6.021264061468067e+00 -6.045012652053485e+00 3.611974694134386e+00 4.475606611910396e+00 9.355735463173278e+03 + 92880 1.004581296136471e+00 -5.996420075218349e+00 -6.025471997185194e+00 3.714439346099119e+00 4.547618714395096e+00 9.295417032892747e+03 + 92900 9.857759685137046e-01 -5.958355182615852e+00 -6.007690993371544e+00 3.985792778795400e+00 4.702498918744176e+00 9.240692014260994e+03 + 92920 1.028490960699423e+00 -6.010366106247150e+00 -6.035132698076771e+00 3.667103915665133e+00 4.524890312761752e+00 9.325213936434031e+03 + 92940 1.008777562154422e+00 -5.972312690938340e+00 -6.041380854379961e+00 3.887137668210854e+00 4.490537585465317e+00 9.344525328648004e+03 + 92960 9.645013787449147e-01 -5.901485973172925e+00 -6.057494986382956e+00 4.188991752329789e+00 4.293163856161018e+00 9.394393394723327e+03 + 92980 1.017737129263546e+00 -5.976809937320182e+00 -5.990106953089164e+00 3.850448897997735e+00 4.774095375745697e+00 9.186710367695368e+03 + 93000 1.060557420600062e+00 -6.039003252470741e+00 -5.965990396013435e+00 3.504455698721114e+00 4.923706819201985e+00 9.112931808621568e+03 + 93020 1.008544236252714e+00 -5.961418514771606e+00 -5.965642033655620e+00 3.882597631934705e+00 4.858345532915264e+00 9.111842481642607e+03 + 93040 9.889182144054177e-01 -5.933186804756262e+00 -5.969071457597715e+00 4.052111079942732e+00 4.846055850195028e+00 9.122339723130011e+03 + 93060 9.874320732284468e-01 -5.930984139632502e+00 -6.016297112883140e+00 4.029786398054670e+00 4.539906103509568e+00 9.267144882185665e+03 + 93080 1.010553254956684e+00 -5.967405115991503e+00 -6.008184730274350e+00 3.861365986358572e+00 4.627203130521546e+00 9.242181388737819e+03 + 93100 9.949077152686254e-01 -5.950695818262894e+00 -6.000764218335084e+00 4.003529954183826e+00 4.716029452909440e+00 9.219387102489603e+03 + 93120 9.806806702284475e-01 -5.937266367213281e+00 -6.014194539276016e+00 4.048052758725163e+00 4.606319290144788e+00 9.260685179103317e+03 + 93140 1.085502879589544e+00 -6.104242871097636e+00 -5.984350706046457e+00 3.115851637767196e+00 4.804291002743647e+00 9.169097938548062e+03 + 93160 9.364837461390464e-01 -5.899020269933563e+00 -6.045497340631674e+00 4.187820284196234e+00 4.346726276994248e+00 9.357245069991197e+03 + 93180 1.006060642316559e+00 -6.019687445639095e+00 -6.004186869886926e+00 3.571344804286159e+00 4.660351508961458e+00 9.229913357892499e+03 + 93200 1.042261952283367e+00 -6.092914355581375e+00 -5.953310930736250e+00 3.237812462605878e+00 5.039436931626764e+00 9.074282106460301e+03 + 93220 1.010187627501127e+00 -6.064732524429517e+00 -5.974343292551766e+00 3.349294254578739e+00 4.868323211709212e+00 9.138464660046033e+03 + 93240 9.392010788669113e-01 -5.977105221764491e+00 -6.004591798316635e+00 3.825233456104951e+00 4.667401280008569e+00 9.231150324293574e+03 + 93260 9.880598977792002e-01 -6.062370786700685e+00 -6.000804069337345e+00 3.331134065731672e+00 4.684659684250685e+00 9.219519721955521e+03 + 93280 1.002683785064957e+00 -6.095715971502671e+00 -5.977673831980426e+00 3.175351514162174e+00 4.853167746260960e+00 9.148664366211286e+03 + 93300 9.815373579779166e-01 -6.073400532892467e+00 -6.000841468632671e+00 3.268373140636519e+00 4.685018516095178e+00 9.219655981412256e+03 + 93320 8.967628851499602e-01 -5.953934275475033e+00 -6.065844436522685e+00 3.963517493467271e+00 4.320912030690204e+00 9.420282818370406e+03 + 93340 9.650180367388053e-01 -6.059272703553784e+00 -6.036237890524257e+00 3.382277637554544e+00 4.514547098595887e+00 9.328639852471500e+03 + 93360 9.133997723522039e-01 -5.984956820553462e+00 -5.988804431726927e+00 3.804813142490417e+00 4.782719563716476e+00 9.182711311763796e+03 + 93380 9.672006771156521e-01 -6.060785326890991e+00 -5.933937686714906e+00 3.412879207130940e+00 5.141257986630896e+00 9.015365199943333e+03 + 93400 9.573483861332684e-01 -6.031713644240075e+00 -5.952259374441527e+00 3.599280777037767e+00 5.055519489729541e+00 9.071066947218089e+03 + 93420 9.499737207554377e-01 -5.997131071455014e+00 -6.015658916148940e+00 3.673980439165735e+00 4.567590687758512e+00 9.265166972664352e+03 + 93440 9.764756422570998e-01 -6.007307395956436e+00 -6.009324617091266e+00 3.612238898664493e+00 4.600655702744334e+00 9.245692799792647e+03 + 93460 1.008345926130646e+00 -6.019633373060527e+00 -5.985669771897202e+00 3.594215903322761e+00 4.789240157052868e+00 9.173104844678172e+03 + 93480 1.016067136227089e+00 -5.996182907934360e+00 -5.983540850052537e+00 3.744190434331495e+00 4.816783087041053e+00 9.166564274083956e+03 + 93500 9.639178344841115e-01 -5.884671582674844e+00 -6.032183454472926e+00 4.282753629477626e+00 4.435717634224658e+00 9.316077537595034e+03 + 93520 1.021339919419579e+00 -5.938087428679887e+00 -5.982737938406218e+00 4.045016750230607e+00 4.788626613737969e+00 9.164147677557643e+03 + 93540 1.017593858473686e+00 -5.907272136866909e+00 -6.068488318229424e+00 4.157490325339080e+00 4.231762063832078e+00 9.428470705432443e+03 + 93560 1.111032182066220e+00 -6.031543101164891e+00 -6.024818480530904e+00 3.543548589356551e+00 4.582162401668587e+00 9.293387268730783e+03 + 93580 1.102723318277440e+00 -6.015145159211359e+00 -5.977036746210840e+00 3.615359789113062e+00 4.834184193819898e+00 9.146710876775605e+03 + 93600 9.785106251226479e-01 -5.832026394304383e+00 -6.029574733162384e+00 4.604330222744467e+00 4.469977090515186e+00 9.308045623371896e+03 + 93620 1.062984092690238e+00 -5.964161719894604e+00 -5.982365150770706e+00 3.924900586355180e+00 4.820373669292780e+00 9.162983848112208e+03 + 93640 1.034313750645376e+00 -5.932503837522007e+00 -6.030733424128543e+00 4.028725575413942e+00 4.464676088139815e+00 9.311628708554819e+03 + 93660 1.044351244001436e+00 -5.962528526770371e+00 -6.015857109202439e+00 3.877600882722589e+00 4.571379909826196e+00 9.265786385459918e+03 + 93680 1.004465231840153e+00 -5.920592027122138e+00 -6.063092552582151e+00 4.083742355781609e+00 4.265482286705173e+00 9.411728894233258e+03 + 93700 1.030319899136181e+00 -5.978023774666565e+00 -6.029318553072333e+00 3.770949173198617e+00 4.476406617751391e+00 9.307275569122856e+03 + 93720 9.788290854771141e-01 -5.922266435427655e+00 -6.037064040407643e+00 4.063991507060271e+00 4.404805894393228e+00 9.331181651633300e+03 + 93740 9.915383753129791e-01 -5.961158374336235e+00 -6.014568272938178e+00 3.935249936125309e+00 4.628562033197857e+00 9.261813793929745e+03 + 93760 1.011449278162475e+00 -6.007006427059477e+00 -6.001390035132625e+00 3.675189039265247e+00 4.707439230843077e+00 9.221240408761621e+03 + 93780 1.014790404783228e+00 -6.023971860774200e+00 -6.028350490761887e+00 3.552629684671025e+00 4.527486913690927e+00 9.304268717897232e+03 + 93800 1.046614046781856e+00 -6.081679149296868e+00 -6.001319474200984e+00 3.206909262096045e+00 4.668346952116141e+00 9.221091027981227e+03 + 93820 1.046023004379359e+00 -6.087299208035068e+00 -5.997389816169339e+00 3.206453289014628e+00 4.722726930541066e+00 9.209042370149880e+03 + 93840 9.772373250310857e-01 -5.990134985587213e+00 -6.030548076353883e+00 3.788309160689592e+00 4.556250939601790e+00 9.311067232641157e+03 + 93860 9.809324447601825e-01 -5.999660836190475e+00 -6.019477668181596e+00 3.676042421305477e+00 4.562251105367620e+00 9.276963773550537e+03 + 93880 9.853275113382277e-01 -6.008927126538873e+00 -5.994575274057046e+00 3.661236347140911e+00 4.743646905033554e+00 9.200406204128070e+03 + 93900 1.012100023492402e+00 -6.049522687916141e+00 -5.978525321410533e+00 3.417051231619836e+00 4.824729096901996e+00 9.151239810160350e+03 + 93920 9.764252869264854e-01 -5.995041333094542e+00 -6.008734208729933e+00 3.715957551656625e+00 4.637330940792553e+00 9.243866746492851e+03 + 93940 1.011385456122951e+00 -6.046491112548694e+00 -5.966629320718687e+00 3.411348163774456e+00 4.869926931034702e+00 9.114885620366760e+03 + 93960 1.004416562619594e+00 -6.032641163506442e+00 -5.943489795657912e+00 3.510647631426788e+00 5.022568581742636e+00 9.044364212980436e+03 + 93980 1.001429908145562e+00 -6.019868053518668e+00 -5.999754152813995e+00 3.568171557313691e+00 4.683668687775998e+00 9.216272971675413e+03 + 94000 9.728678188962449e-01 -5.966881359812236e+00 -6.028114008809513e+00 3.874348986519525e+00 4.522741640255353e+00 9.303556615469761e+03 + 94020 9.918112137080495e-01 -5.985866641874364e+00 -6.014201277273963e+00 3.752615030827087e+00 4.589913169591934e+00 9.260701724888344e+03 + 94040 9.896254362014468e-01 -5.974041342177318e+00 -6.054984098271758e+00 3.798945171760830e+00 4.334159340415536e+00 9.386610836310836e+03 + 94060 1.022763837253207e+00 -6.015961929024996e+00 -6.014485352515462e+00 3.618301860534385e+00 4.626780591351610e+00 9.261571871083170e+03 + 94080 9.515572412162119e-01 -5.901723297763431e+00 -6.058047238173947e+00 4.225339544013002e+00 4.327703287124225e+00 9.396110948344436e+03 + 94100 1.072019058640124e+00 -6.071585055608249e+00 -6.049114608462965e+00 3.260636070689591e+00 4.389664855488272e+00 9.368466866203395e+03 + 94120 1.001397925424088e+00 -5.959418943801853e+00 -6.031495701013929e+00 3.909373197605045e+00 4.495497303851170e+00 9.313985093982144e+03 + 94140 9.788474840834627e-01 -5.919482205330343e+00 -6.004742104303174e+00 4.064075543588864e+00 4.574500009760141e+00 9.231619009202115e+03 + 94160 1.038202240263828e+00 -5.996728530117174e+00 -6.002940464626946e+00 3.703944492213195e+00 4.668274602964324e+00 9.226068644177172e+03 + 94180 1.011872704362228e+00 -5.944855544627819e+00 -6.013472657295749e+00 3.949340509722868e+00 4.555330430319744e+00 9.258470361489417e+03 + 94200 1.001791239388623e+00 -5.917284993207785e+00 -6.049218403057685e+00 4.078172612568047e+00 4.320590556580732e+00 9.368724141612915e+03 + 94220 1.043178995812027e+00 -5.966398986393271e+00 -5.999258776818891e+00 3.865035012354586e+00 4.676349010694541e+00 9.214783871604774e+03 + 94240 1.086759865886004e+00 -6.020117286902556e+00 -5.987968004398911e+00 3.592256566682601e+00 4.776862721903917e+00 9.180132575569392e+03 + 94260 1.037409286681439e+00 -5.938214465042046e+00 -6.027811291774354e+00 4.017338596589564e+00 4.502859752428530e+00 9.302609591450613e+03 + 94280 1.006244579173458e+00 -5.890132426275022e+00 -6.011595900499476e+00 4.311320644292730e+00 4.613858578884028e+00 9.252657117102544e+03 + 94300 1.029522848004898e+00 -5.927171002268328e+00 -6.032980102930266e+00 3.985071509163999e+00 4.377499279257742e+00 9.318558373777050e+03 + 94320 1.023544182138387e+00 -5.924717343666801e+00 -6.041894128843563e+00 4.068948520460923e+00 4.396101286927052e+00 9.346077228467935e+03 + 94340 1.078854758397992e+00 -6.019726137322836e+00 -5.995568721008902e+00 3.582891502528263e+00 4.721607125350964e+00 9.203453336809507e+03 + 94360 9.985238791073830e-01 -5.921506085190272e+00 -6.018089360145955e+00 4.132191033707734e+00 4.577594922698708e+00 9.272643823945167e+03 + 94380 9.425208596321482e-01 -5.863109071815867e+00 -6.065508489315847e+00 4.412485586938010e+00 4.250276810444491e+00 9.419229674071976e+03 + 94400 1.001743486341775e+00 -5.979264956257833e+00 -6.066205505899714e+00 3.768599920585533e+00 4.269373830535280e+00 9.421412841717603e+03 + 94420 1.031921166007715e+00 -6.058579054819293e+00 -6.000515174456029e+00 3.379120276154951e+00 4.712532062557259e+00 9.218636872328767e+03 + 94440 9.905093473382831e-01 -6.028945090391421e+00 -6.008677717469581e+00 3.568926018220313e+00 4.685304409903338e+00 9.243685438939354e+03 + 94460 9.294371777339961e-01 -5.965491218618029e+00 -6.020200501926816e+00 3.871230725834621e+00 4.557081554841334e+00 9.279169227645616e+03 + 94480 9.472144937987326e-01 -6.014230898766314e+00 -6.017870722272560e+00 3.594423942914407e+00 4.573523513080674e+00 9.272016302957793e+03 + 94500 9.748169850549315e-01 -6.072608100625501e+00 -5.991962442897343e+00 3.329591679334465e+00 4.792671525884749e+00 9.192403459146100e+03 + 94520 9.620379858628038e-01 -6.064340346875277e+00 -6.002818994525913e+00 3.334288804140582e+00 4.687553929729137e+00 9.225716808472484e+03 + 94540 1.035317349450902e+00 -6.178428628079831e+00 -5.975123952930877e+00 2.733328801400037e+00 4.900735707402129e+00 9.140854361170754e+03 + 94560 9.172924431458014e-01 -6.005983284445609e+00 -5.990613066904086e+00 3.626390335741632e+00 4.714648503398537e+00 9.188265732898246e+03 + 94580 9.274456650364127e-01 -6.018389185879064e+00 -5.977254456028000e+00 3.586214308287167e+00 4.822416292670848e+00 9.147345331496610e+03 + 94600 9.961123587525400e-01 -6.110148313454233e+00 -5.955230930849533e+00 3.121352688651858e+00 5.010912272955527e+00 9.080135087760751e+03 + 94620 9.538771160146013e-01 -6.029410723299195e+00 -5.985345966632163e+00 3.564575435066573e+00 4.817602086847725e+00 9.172117615145145e+03 + 94640 9.779537144416087e-01 -6.037970838132346e+00 -5.973346809956356e+00 3.512280225691014e+00 4.883361396013592e+00 9.135417457612421e+03 + 94660 9.635853560374307e-01 -5.982475012442880e+00 -6.011765630285341e+00 3.810955236276111e+00 4.642763975916235e+00 9.253218133551483e+03 + 94680 9.693421350540625e-01 -5.952025182920138e+00 -6.012626229819808e+00 3.954493622178805e+00 4.606513032899207e+00 9.255859295174210e+03 + 94700 9.561330647882303e-01 -5.889270784246356e+00 -6.053006098260979e+00 4.282355296158923e+00 4.342161785129004e+00 9.380470447549880e+03 + 94720 1.032725461190824e+00 -5.960776704406916e+00 -6.028078712527181e+00 3.917070561430096e+00 4.530612015851439e+00 9.303450285368790e+03 + 94740 1.072160929804251e+00 -5.987009713109087e+00 -6.024909791452223e+00 3.771250297655964e+00 4.553622182791509e+00 9.293679652671661e+03 + 94760 9.917107198905897e-01 -5.851161038555856e+00 -6.049583291631942e+00 4.505859042114409e+00 4.366487759207095e+00 9.369906207074793e+03 + 94780 1.147636839547698e+00 -6.077004237170510e+00 -6.014495382618255e+00 3.259364836612838e+00 4.618300352665862e+00 9.261627269304825e+03 + 94800 1.036387654386307e+00 -5.914877233977522e+00 -6.041469325940072e+00 4.125969127330555e+00 4.399057745218666e+00 9.344798622833641e+03 + 94820 1.052439569556804e+00 -5.946641727485394e+00 -6.024919258550104e+00 4.000988497730486e+00 4.551506800948141e+00 9.293698459604888e+03 + 94840 1.036874989651425e+00 -5.933914666385353e+00 -6.037101302460485e+00 4.041603634476481e+00 4.449090002052750e+00 9.331270320626674e+03 + 94860 1.067849834427632e+00 -5.995137510371341e+00 -6.018259092406034e+00 3.701959516609794e+00 4.569191814513334e+00 9.273176708559560e+03 + 94880 1.043929809828987e+00 -5.975735665044814e+00 -6.025796091708722e+00 3.809822479867700e+00 4.522367763137550e+00 9.296410581336824e+03 + 94900 1.033030929757794e+00 -5.979223642442232e+00 -6.009979234668259e+00 3.778318536020670e+00 4.601715166046302e+00 9.247718979320069e+03 + 94920 9.788936375586953e-01 -5.918835795865558e+00 -6.008334636619677e+00 4.117883322104674e+00 4.603967128593677e+00 9.242651123768170e+03 + 94940 1.034157341192838e+00 -6.022820593995579e+00 -5.978191823333714e+00 3.609235022929854e+00 4.865500330350224e+00 9.150207111642912e+03 + 94960 9.868032327305877e-01 -5.973066782528702e+00 -5.991717766445730e+00 3.828640713537504e+00 4.721543877655498e+00 9.191637587111290e+03 + 94980 9.950923982998496e-01 -6.001538518876497e+00 -6.024172847422872e+00 3.687179719443317e+00 4.557209902279013e+00 9.291413758839033e+03 + 95000 1.039191951800178e+00 -6.084505603083398e+00 -5.994709922818307e+00 3.183733715922463e+00 4.699354407841225e+00 9.200838071726108e+03 + 95020 9.863695273168366e-01 -6.024459764177291e+00 -5.945118670618758e+00 3.544889954988026e+00 5.000478792195667e+00 9.049342013819447e+03 + 95040 9.790148159532771e-01 -6.027516899664356e+00 -5.961072045012925e+00 3.536891845309338e+00 4.918428483025884e+00 9.097928440629410e+03 + 95060 1.004889348844278e+00 -6.074347669288915e+00 -5.984493475811060e+00 3.320268573842368e+00 4.836225257683715e+00 9.169500873203346e+03 + 95080 9.061042588698062e-01 -5.933258231058335e+00 -6.053076455004544e+00 4.046985597534553e+00 4.358970813825192e+00 9.380688149533045e+03 + 95100 1.037378973413142e+00 -6.131613280288347e+00 -6.010288374640857e+00 2.977350191323140e+00 4.674016574519499e+00 9.248677494698519e+03 + 95120 1.005298875399645e+00 -6.087745632956051e+00 -5.992495358826131e+00 3.250941696619717e+00 4.797883510606003e+00 9.194033717980783e+03 + 95140 9.653588661105028e-01 -6.032255676168957e+00 -5.954921848063564e+00 3.550252288356263e+00 4.994315096708654e+00 9.079186131461272e+03 + 95160 9.522317342758853e-01 -6.009511608566700e+00 -6.011325426688872e+00 3.630727993247413e+00 4.620312768902450e+00 9.251831405178051e+03 + 95180 1.045199464152538e+00 -6.138327558149761e+00 -5.995999677295883e+00 2.897477077823053e+00 4.714745794854407e+00 9.204775997384124e+03 + 95200 9.551809145867169e-01 -5.989093750676144e+00 -5.993229404865721e+00 3.700100177312520e+00 4.676352610965552e+00 9.196258813482867e+03 + 95220 9.410490095545608e-01 -5.940425664606339e+00 -5.995090126259727e+00 4.072279176510538e+00 4.758387378398682e+00 9.201969992232518e+03 + 95240 9.682540518272019e-01 -5.941867037146875e+00 -6.049832054294100e+00 3.975683917925386e+00 4.355732081933615e+00 9.370653768522094e+03 + 95260 1.068435663851634e+00 -6.043754687462051e+00 -6.001264701639419e+00 3.434470092944612e+00 4.678454166842219e+00 9.220926054986119e+03 + 95280 9.786386851305784e-01 -5.868767366149328e+00 -6.066063838431948e+00 4.368876502160305e+00 4.235969626783089e+00 9.420936242365991e+03 + 95300 1.041037302887100e+00 -5.927539251995333e+00 -6.006392803145202e+00 4.039219185155776e+00 4.586429891905631e+00 9.236686875606947e+03 + 95320 1.118274628454253e+00 -6.016295467428438e+00 -5.996689324288653e+00 3.585641680956781e+00 4.698223188906268e+00 9.206917133084335e+03 + 95340 1.124925968656815e+00 -6.011180936624387e+00 -6.027984223892525e+00 3.649927073081644e+00 4.553439997287698e+00 9.303163287906407e+03 + 95360 9.720434139152967e-01 -5.781372901193830e+00 -6.126898294354184e+00 4.787077720048082e+00 3.803017442639544e+00 9.610700490974899e+03 + 95380 1.049329956308732e+00 -5.902293258533724e+00 -6.060882456581475e+00 4.157635002630157e+00 4.246991285840891e+00 9.404891574693022e+03 + 95400 1.077875246277396e+00 -5.958437235491025e+00 -6.008668215506995e+00 3.962424870596290e+00 4.673990810125548e+00 9.243669454586088e+03 + 95420 1.077299865771007e+00 -5.979820739514517e+00 -6.000853401772934e+00 3.799761961586347e+00 4.678989160104552e+00 9.219670038185126e+03 + 95440 1.024540620446329e+00 -5.928331256459124e+00 -6.019028265014335e+00 4.112793930292657e+00 4.591997671851923e+00 9.275551668494671e+03 + 95460 1.072162651932844e+00 -6.032905155369787e+00 -6.005618601667746e+00 3.477579635757002e+00 4.634263249694659e+00 9.234321802145927e+03 + 95480 9.806286197902236e-01 -5.931598482288509e+00 -6.013367629821518e+00 4.081817325969507e+00 4.612286227100284e+00 9.258130196598277e+03 + 95500 9.780690369306915e-01 -5.959892800965847e+00 -6.059878489868689e+00 3.922981752452380e+00 4.348848454036903e+00 9.401770360463137e+03 + 95520 9.655444264650130e-01 -5.968886499450543e+00 -6.000062521579284e+00 3.887621736290389e+00 4.708604192753319e+00 9.217245271376476e+03 + 95540 1.014113167698260e+00 -6.061376583478824e+00 -5.970835304362754e+00 3.411263440270162e+00 4.931165476172297e+00 9.127740253120219e+03 + 95560 9.292153531448616e-01 -5.949142238855487e+00 -6.040167308204596e+00 3.964134965918020e+00 4.441454931631478e+00 9.340741883655019e+03 + 95580 9.818243273530214e-01 -6.035564715343057e+00 -6.003631154887648e+00 3.556738689396817e+00 4.740106135234286e+00 9.228181918064023e+03 + 95600 9.627800891964690e-01 -6.011327826427614e+00 -6.005866053169965e+00 3.644628913891322e+00 4.675991261143426e+00 9.235067609965072e+03 + 95620 9.427010220003110e-01 -5.982197290405413e+00 -6.015830512539170e+00 3.771583957287501e+00 4.578456791071169e+00 9.265705770397371e+03 + 95640 9.837814802647419e-01 -6.040199131622237e+00 -6.002689305453639e+00 3.478452185282878e+00 4.693839411769805e+00 9.225315495372311e+03 + 95660 1.016578520366641e+00 -6.084842951086799e+00 -5.999832159632719e+00 3.238128575479884e+00 4.726273695386669e+00 9.216527488210011e+03 + 95680 9.762944923418237e-01 -6.019817344320343e+00 -5.990313580554903e+00 3.626914361133613e+00 4.796329538367454e+00 9.187334712890060e+03 + 95700 1.012177672306904e+00 -6.065734852790095e+00 -5.974083915110039e+00 3.385240366684378e+00 4.911514233780034e+00 9.137664393981908e+03 + 95720 9.425560359464528e-01 -5.952731647587663e+00 -6.026221154341216e+00 3.982791564305317e+00 4.560803444062004e+00 9.297720652206268e+03 + 95740 9.979401853299903e-01 -6.023905230125738e+00 -6.004404451474244e+00 3.601484047074389e+00 4.713460535827011e+00 9.230582429014166e+03 + 95760 9.634143189579236e-01 -5.961337417072567e+00 -6.036739083676999e+00 3.938341836829431e+00 4.505373798816589e+00 9.330190359369341e+03 + 95780 1.008713068530625e+00 -6.016996510765132e+00 -6.032736948262961e+00 3.626133884309534e+00 4.535749856372168e+00 9.317836082540394e+03 + 95800 1.008128839453141e+00 -6.007070877083601e+00 -5.999691450972664e+00 3.655731583702186e+00 4.698105390393683e+00 9.216126699368675e+03 + 95820 1.047121236382580e+00 -6.053996196693452e+00 -5.995751728255827e+00 3.407515859804413e+00 4.741964610875622e+00 9.204018055290413e+03 + 95840 1.021668218090751e+00 -6.003596510350438e+00 -6.010831539535216e+00 3.666614850562204e+00 4.625070193366062e+00 9.250356542787096e+03 + 95860 9.857684318457050e-01 -5.937464815740464e+00 -6.033366553680223e+00 4.079233758092036e+00 4.528551138095958e+00 9.319760690190664e+03 + 95880 1.055620730429537e+00 -6.024201849827714e+00 -6.041191329584417e+00 3.612207349385387e+00 4.514651127508900e+00 9.343925660345541e+03 + 95900 1.030114000574381e+00 -5.965097063103602e+00 -6.032494583619762e+00 3.898440542777303e+00 4.511433550240923e+00 9.317077082142714e+03 + 95920 1.008959998299059e+00 -5.903538653123416e+00 -6.001139575016886e+00 4.265103460602575e+00 4.704663863396421e+00 9.220553962293936e+03 + 95940 1.004743523254807e+00 -5.859652052594926e+00 -6.022808881706647e+00 4.484913196547193e+00 4.548041435349991e+00 9.287172927004727e+03 + 95960 1.109113814757201e+00 -5.971975813589350e+00 -6.019762642003853e+00 3.861959446638521e+00 4.587560082894651e+00 9.277786156496422e+03 + 95980 1.081809098172053e+00 -5.894121166286050e+00 -5.991155903634440e+00 4.311652379939859e+00 4.754463902008330e+00 9.189887147745361e+03 + 96000 1.078221948216349e+00 -5.862935280021825e+00 -5.996995129601537e+00 4.454945251415989e+00 4.685152849434607e+00 9.207802917640440e+03 + 96020 1.081558862217963e+00 -5.851515743419196e+00 -6.006215295944041e+00 4.496055155182158e+00 4.607746384906114e+00 9.236091251744854e+03 + 96040 1.127401528394117e+00 -5.913445651057885e+00 -6.014190640726810e+00 4.147258014350912e+00 4.568764693435181e+00 9.260659512598462e+03 + 96060 1.055552559828204e+00 -5.812002525491085e+00 -6.064880627073704e+00 4.671521957703023e+00 4.219456765655880e+00 9.417279930679077e+03 + 96080 1.130972306601564e+00 -5.945616944664599e+00 -6.000552345122031e+00 3.980416286614548e+00 4.664968715962229e+00 9.218761958735084e+03 + 96100 1.111369182245397e+00 -5.953103123369417e+00 -6.024395165472960e+00 3.924786258293592e+00 4.515416320127192e+00 9.292024362689079e+03 + 96120 9.893885185556904e-01 -5.815520610055524e+00 -6.042106530355704e+00 4.658733868547314e+00 4.357642450125836e+00 9.346729852098082e+03 + 96140 1.051862670634859e+00 -5.956117731704899e+00 -5.984065128270547e+00 3.905400625793188e+00 4.744922349867595e+00 9.168195215259211e+03 + 96160 9.283417119796045e-01 -5.811985173621415e+00 -6.043834808258894e+00 4.691986564880271e+00 4.360670084176862e+00 9.352068254927903e+03 + 96180 1.011294722281205e+00 -5.963869350915296e+00 -5.998688155480031e+00 3.919537752669737e+00 4.719602788666434e+00 9.213024955758414e+03 + 96200 9.703717620576815e-01 -5.926332332660968e+00 -6.031045785173411e+00 4.080969921371239e+00 4.479689072690385e+00 9.312588550650691e+03 + 96220 1.096409739541277e+00 -6.132196394081985e+00 -5.976031664987493e+00 3.019054808267827e+00 4.915776849142121e+00 9.143586934124427e+03 + 96240 1.016072688623592e+00 -6.029608472800293e+00 -6.008054794185927e+00 3.510769294602604e+00 4.634533852627277e+00 9.241808268025679e+03 + 96260 9.924840700020298e-01 -6.009041925827677e+00 -6.016677877062117e+00 3.583424052180489e+00 4.539577238532702e+00 9.268331975725370e+03 + 96280 9.854048387739255e-01 -6.010461964639181e+00 -6.014308052653753e+00 3.612770708668936e+00 4.590685876109067e+00 9.261042655056835e+03 + 96300 9.935288714490729e-01 -6.032829058820046e+00 -6.033625313102533e+00 3.451186155617016e+00 4.446613940307025e+00 9.320581943287052e+03 + 96320 9.727182388539276e-01 -6.010512266359568e+00 -6.017634812663887e+00 3.566413728502408e+00 4.525514965412525e+00 9.271296543129289e+03 + 96340 9.754224458997623e-01 -6.022893267152931e+00 -5.961991447253067e+00 3.616714909074529e+00 4.966422583465717e+00 9.100724955625717e+03 + 96360 9.889236694517072e-01 -6.046747594583627e+00 -5.940097363868242e+00 3.491684953807612e+00 5.104087082645215e+00 9.034056801828579e+03 + 96380 9.449063748631743e-01 -5.981338173071087e+00 -5.996427031719628e+00 3.793477111783008e+00 4.706834550429761e+00 9.206057707116455e+03 + 96400 9.739044768494231e-01 -6.019338370139322e+00 -5.968221769211402e+00 3.629262923866241e+00 4.922782356662792e+00 9.119738979966711e+03 + 96420 1.054933501009952e+00 -6.130452753808795e+00 -5.964301627751158e+00 2.978088551992480e+00 4.932154029619086e+00 9.107797616472986e+03 + 96440 1.017794073321612e+00 -6.062517610428988e+00 -5.961314866214977e+00 3.426776756622980e+00 5.007898574973888e+00 9.098691779731053e+03 + 96460 1.020797792913761e+00 -6.049434416534933e+00 -5.986890382699793e+00 3.468155064811289e+00 4.827292585750622e+00 9.176840220674856e+03 + 96480 1.001257765520505e+00 -5.995769825578696e+00 -6.030511492070175e+00 3.774912354743128e+00 4.575420329493543e+00 9.310921851294508e+03 + 96500 1.038434276025251e+00 -6.022367719352156e+00 -6.003529013883140e+00 3.590299657939265e+00 4.698474420022603e+00 9.227884671547487e+03 + 96520 1.025504808314756e+00 -5.969783753447263e+00 -5.973076464228741e+00 3.921966100608751e+00 4.903058845756163e+00 9.134574378493195e+03 + 96540 1.072677968577667e+00 -6.000831304256262e+00 -5.998558585937626e+00 3.710702815315893e+00 4.723753115603522e+00 9.212618602103285e+03 + 96560 1.095302786296916e+00 -5.994270455011972e+00 -5.987816838719159e+00 3.720835585826972e+00 4.757893249274200e+00 9.179688470991663e+03 + 96580 1.028358007370847e+00 -5.863480039842547e+00 -5.982980577682591e+00 4.424124301747113e+00 4.737933720821117e+00 9.164858998354910e+03 + 96600 9.832347912817819e-01 -5.772420010579295e+00 -6.051448693028664e+00 4.891625063070288e+00 4.289399188896954e+00 9.375618255688505e+03 + 96620 1.107453068532686e+00 -5.938322601650185e+00 -6.025725456581798e+00 4.055310023663555e+00 4.553429305098145e+00 9.296195269618338e+03 + 96640 1.112449606997082e+00 -5.939676455317764e+00 -6.035724930240765e+00 4.002986913323099e+00 4.451461706861769e+00 9.327031873052316e+03 + 96660 1.059897499091523e+00 -5.866489016852025e+00 -6.066235285695525e+00 4.372734960255665e+00 4.225760973921086e+00 9.421475014513901e+03 + 96680 1.120820480877841e+00 -5.974265044685089e+00 -6.001014714226912e+00 3.805947726624349e+00 4.652346984617225e+00 9.220161407145495e+03 + 96700 1.089454279627355e+00 -5.956148261151749e+00 -6.023309216789858e+00 3.882040091616202e+00 4.496391491217883e+00 9.288722134482839e+03 + 96720 1.069906729559895e+00 -5.965580098406054e+00 -6.005436717012084e+00 3.870426030712698e+00 4.641563158885078e+00 9.233737807438496e+03 + 96740 1.043508990247900e+00 -5.969424900092102e+00 -6.004017278529783e+00 3.884667918125683e+00 4.686033127983260e+00 9.229381427574233e+03 + 96760 1.011166632010569e+00 -5.964075263382282e+00 -6.009592820816739e+00 3.926722554276737e+00 4.665353695668840e+00 9.246525310595189e+03 + 96780 9.586079153103102e-01 -5.919719719475662e+00 -6.028594408180943e+00 4.151017650994562e+00 4.525842340145214e+00 9.305024289706682e+03 + 96800 1.040330631363890e+00 -6.062523332883125e+00 -5.985210514649765e+00 3.330101038906620e+00 4.774043205322528e+00 9.171722552264686e+03 + 96820 9.729421581900336e-01 -5.973832736935395e+00 -5.977264430677341e+00 3.834472823282517e+00 4.814767506763376e+00 9.147407358582348e+03 + 96840 9.396369078315503e-01 -5.929189973707880e+00 -6.011180833887651e+00 4.091853752154607e+00 4.621049544957756e+00 9.251404771070864e+03 + 96860 1.034843812281773e+00 -6.072618259731017e+00 -5.973592602503372e+00 3.336193266022911e+00 4.904813913994984e+00 9.136173734598786e+03 + 96880 9.824158884151885e-01 -5.997502573147915e+00 -5.976224287605893e+00 3.719725617280395e+00 4.841908825666730e+00 9.144231739903169e+03 + 96900 1.001156834173335e+00 -6.026033411458516e+00 -5.977253685496342e+00 3.631268040693720e+00 4.911368775806726e+00 9.147344090686816e+03 + 96920 1.007891931345409e+00 -6.034538358038922e+00 -5.998003397012369e+00 3.525233771653590e+00 4.735023171635013e+00 9.210918988877731e+03 + 96940 1.007098407954526e+00 -6.030943524984806e+00 -6.000617847623023e+00 3.527028981600580e+00 4.701163713895347e+00 9.218956593683050e+03 + 96960 9.612808908110361e-01 -5.959574551992004e+00 -6.068529014987766e+00 3.874793824714617e+00 4.249160437544299e+00 9.428598359808277e+03 + 96980 1.031954993589612e+00 -6.061832144342191e+00 -6.021467899171175e+00 3.388213007478790e+00 4.619990749597512e+00 9.283082166906346e+03 + 97000 1.036378726145275e+00 -6.066357424520712e+00 -6.015845743474706e+00 3.280751495493969e+00 4.570797384717513e+00 9.265774129637794e+03 + 97020 1.036029069822864e+00 -6.065230580902940e+00 -6.005779771987640e+00 3.335942593203881e+00 4.677318337978482e+00 9.234816597357743e+03 + 97040 9.404101531081076e-01 -5.924167157382690e+00 -6.019035687023232e+00 4.084470857802613e+00 4.539721079749104e+00 9.275590987945481e+03 + 97060 9.900406563156293e-01 -5.994442726360379e+00 -6.026985796925365e+00 3.746934623753522e+00 4.560067276545478e+00 9.300087571943115e+03 + 97080 9.742864723688642e-01 -5.968657448451583e+00 -6.023622690596067e+00 3.824926368290273e+00 4.509307442052915e+00 9.289714019549088e+03 + 97100 1.022132105445313e+00 -6.037219643008910e+00 -5.991226185174514e+00 3.478256712942751e+00 4.742358265292452e+00 9.190149498008097e+03 + 97120 9.812514404447160e-01 -5.973659582967019e+00 -6.045485675862284e+00 3.822958043417093e+00 4.410521502960531e+00 9.357201081528792e+03 + 97140 1.038060528129217e+00 -6.056559679630459e+00 -5.983167029282018e+00 3.355925713035497e+00 4.777357668812177e+00 9.165466984157683e+03 + 97160 9.486416620830903e-01 -5.920284819171554e+00 -6.009603644766901e+00 4.141146017503357e+00 4.628263498891285e+00 9.246548226387198e+03 + 97180 9.918684509515497e-01 -5.978028571109824e+00 -6.016035058391356e+00 3.829568921679187e+00 4.611329790223725e+00 9.266344306936999e+03 + 97200 1.015582348394983e+00 -6.007479928152397e+00 -6.001617982446771e+00 3.624432541685052e+00 4.658092741059921e+00 9.222026375495512e+03 + 97220 9.759961853380476e-01 -5.943682930474230e+00 -6.003948633124224e+00 3.910373598727062e+00 4.564318608023446e+00 9.229179659776757e+03 + 97240 1.028089000485561e+00 -6.014236979297579e+00 -5.977667904246795e+00 3.620672743978099e+00 4.830658031965771e+00 9.148600125899056e+03 + 97260 1.002093439087336e+00 -5.965351848760878e+00 -6.044985620611719e+00 3.832152038637391e+00 4.374882597383493e+00 9.355642721938633e+03 + 97280 1.055828253952275e+00 -6.036427711806555e+00 -5.979352309325706e+00 3.483094812137192e+00 4.810830605572217e+00 9.153790033075797e+03 + 97300 1.023354125046505e+00 -5.980251610050233e+00 -6.001405852215700e+00 3.815915380293631e+00 4.694444448171122e+00 9.221370340040978e+03 + 97320 1.005950163656505e+00 -5.948411879680398e+00 -5.976277172322472e+00 3.976986312121758e+00 4.816979489630867e+00 9.144372528188876e+03 + 97340 9.954983593950929e-01 -5.927436962315335e+00 -5.993310719773792e+00 4.072075267137376e+00 4.693817957879900e+00 9.196497594856270e+03 + 97360 9.663805927182868e-01 -5.878260411315221e+00 -6.020621712488904e+00 4.298792096950613e+00 4.481331475271172e+00 9.280445677996198e+03 + 97380 1.039135458487506e+00 -5.981257475991699e+00 -5.988154942498057e+00 3.801553965073036e+00 4.761947645014036e+00 9.180735612853032e+03 + 97400 1.016387446067543e+00 -5.944997099156629e+00 -6.027993304463122e+00 3.937383321130092e+00 4.460806266638953e+00 9.303199044757770e+03 + 97420 1.025608874154870e+00 -5.958827589938553e+00 -6.000925159988955e+00 3.941048678233263e+00 4.699317916425940e+00 9.219903931442599e+03 + 97440 1.009805214369022e+00 -5.940459251688383e+00 -6.046987179062455e+00 3.978504472440545e+00 4.366804628315138e+00 9.361850269449236e+03 + 97460 1.023363340709830e+00 -5.971588209489104e+00 -6.033979060337178e+00 3.827578268323989e+00 4.469320347801381e+00 9.321641447354290e+03 + 97480 1.041720873108652e+00 -6.016967350926728e+00 -6.001489243547574e+00 3.564215237478492e+00 4.653092925278965e+00 9.221623165121218e+03 + 97500 1.013422150903371e+00 -5.999322544671985e+00 -5.963788065538863e+00 3.695291314310045e+00 4.899335792435305e+00 9.106214044651455e+03 + 97520 9.342291070871626e-01 -5.905889380027936e+00 -6.003907733382897e+00 4.188296303695276e+00 4.625459750439929e+00 9.229033847413806e+03 + 97540 1.016855663514936e+00 -6.053414009425374e+00 -5.952100957309972e+00 3.427174480985132e+00 5.008929704375916e+00 9.070600243675637e+03 + 97560 1.024767104611865e+00 -6.090417561292053e+00 -5.970984307193294e+00 3.169353827671107e+00 4.855158054942524e+00 9.128204245286728e+03 + 97580 1.000260272975639e+00 -6.078688688849730e+00 -5.964563834877937e+00 3.279613063122573e+00 4.934935635392685e+00 9.108585177015744e+03 + 97600 9.304725346149983e-01 -5.997545415305487e+00 -5.953875276335522e+00 3.752465992388611e+00 5.003226688286320e+00 9.076004979783796e+03 + 97620 9.169796653952378e-01 -5.993365187425329e+00 -6.000094026160820e+00 3.725504903658204e+00 4.686866870354588e+00 9.217333161902599e+03 + 97640 1.025821932406502e+00 -6.167258060775763e+00 -5.986142985693388e+00 2.773195305405374e+00 4.813186093995661e+00 9.174584387795068e+03 + 97660 9.453599854273633e-01 -6.057219609415547e+00 -6.021970078219187e+00 3.354485856202717e+00 4.556894119179539e+00 9.284632954096322e+03 + 97680 9.670182214891927e-01 -6.094867799649061e+00 -6.002921010888423e+00 3.195201786644938e+00 4.723174476428099e+00 9.226033745756424e+03 + 97700 9.573803154574950e-01 -6.080853997330145e+00 -5.978699733257242e+00 3.321351592138779e+00 4.907937184766661e+00 9.151790597057106e+03 + 97720 8.997219277259076e-01 -5.989816807575658e+00 -6.007511956577875e+00 3.766115152088827e+00 4.664506868202642e+00 9.240117374272781e+03 + 97740 9.092542263205626e-01 -5.988786692745581e+00 -6.046519713980961e+00 3.776807724202730e+00 4.445295782113011e+00 9.360397999471821e+03 + 97760 9.943108871719148e-01 -6.086909512643415e+00 -5.985170219394599e+00 3.205511061924518e+00 4.789713827863970e+00 9.171596922350278e+03 + 97780 9.741282935597191e-01 -6.016969029707860e+00 -6.000588341043747e+00 3.598455722395959e+00 4.692516171608668e+00 9.218831083666322e+03 + 97800 1.004833120805028e+00 -6.011898567644868e+00 -5.974151326902432e+00 3.631839843337761e+00 4.848590341047456e+00 9.137863259055479e+03 + 97820 1.056163825903645e+00 -6.034557638207314e+00 -6.006733258593833e+00 3.505821816262699e+00 4.665593709812137e+00 9.237737140057623e+03 + 97840 1.054733105380857e+00 -5.990187367172522e+00 -5.995084792977376e+00 3.769629717524261e+00 4.741507940678599e+00 9.201953993149038e+03 + 97860 1.013268255992315e+00 -5.900822688481121e+00 -6.032659106531721e+00 4.136661301354537e+00 4.379636187288235e+00 9.317580801327644e+03 + 97880 1.032726419221796e+00 -5.913086618844668e+00 -6.029078998494480e+00 4.232733031329884e+00 4.566686837617925e+00 9.306529560024870e+03 + 97900 1.080020602257417e+00 -5.977082692947832e+00 -6.018776446877732e+00 3.819858778503597e+00 4.580446791350542e+00 9.274788662196926e+03 + 97920 1.024354983874592e+00 -5.896051419985939e+00 -5.977951404107788e+00 4.250556435546633e+00 4.780274052737396e+00 9.149450678008354e+03 + 97940 1.011721189972254e+00 -5.882865579186493e+00 -5.982734179778094e+00 4.310288203705797e+00 4.736827244492830e+00 9.164068891005500e+03 + 97960 1.032120649162857e+00 -5.921344383637122e+00 -5.998492506956529e+00 4.100382539905482e+00 4.657386077171947e+00 9.212397663085736e+03 + 97980 1.058130449404922e+00 -5.971364654642876e+00 -6.018950878014544e+00 3.833026023014181e+00 4.559778564469797e+00 9.275328397215368e+03 + 98000 1.086241297103687e+00 -6.031482933205994e+00 -5.999808588500024e+00 3.517361493379726e+00 4.699240482270408e+00 9.216461113288373e+03 + 98020 1.035048605066627e+00 -5.978908522875317e+00 -6.014422500389925e+00 3.863711148803680e+00 4.659784394144546e+00 9.261390084200510e+03 + 98040 1.000747049994686e+00 -5.957052386290765e+00 -6.024724609371027e+00 3.950686418407725e+00 4.562102041238183e+00 9.293106318749455e+03 + 98060 1.009892016307315e+00 -6.001715208576660e+00 -6.019720403776851e+00 3.655617388726736e+00 4.552228771592284e+00 9.277684230724462e+03 + 98080 9.892178546983000e-01 -5.999912412806907e+00 -6.002815504241202e+00 3.700196268793599e+00 4.683526268525935e+00 9.225693041294609e+03 + 98100 9.777042262457334e-01 -6.006902449413445e+00 -5.985819898570648e+00 3.676751994124003e+00 4.797811263577547e+00 9.173568583566599e+03 + 98120 1.021917104519383e+00 -6.091735907327273e+00 -5.956314341909967e+00 3.241063898824307e+00 5.018675483870000e+00 9.083427662058895e+03 + 98140 9.654364768872122e-01 -6.021881467193346e+00 -5.994918198476523e+00 3.595878542952968e+00 4.750705804477319e+00 9.201457204795652e+03 + 98160 9.383185861281028e-01 -5.990029823192927e+00 -6.020782224132443e+00 3.715459478720731e+00 4.538874433607367e+00 9.280973891482708e+03 + 98180 9.558743401397163e-01 -6.020008030079822e+00 -6.043439778345689e+00 3.581375353388922e+00 4.446826628794990e+00 9.350890199371897e+03 + 98200 9.166454988889265e-01 -5.963588976646081e+00 -6.020444834499007e+00 3.876206197532130e+00 4.549731063325059e+00 9.279921554442937e+03 + 98220 9.941934652382416e-01 -6.076732609604775e+00 -5.974982428886404e+00 3.325448278890172e+00 4.909713562364635e+00 9.140404200020299e+03 + 98240 9.560982347201821e-01 -6.013896624158678e+00 -6.030708542546655e+00 3.578665664197303e+00 4.482129027177570e+00 9.311556441575831e+03 + 98260 9.180798101032112e-01 -5.949788755356236e+00 -6.047451210296520e+00 3.922043447545532e+00 4.361250518062365e+00 9.363306365094897e+03 + 98280 1.011677565853188e+00 -6.080323865163775e+00 -5.995348934304009e+00 3.253705757133587e+00 4.741644959958416e+00 9.202777199217830e+03 + 98300 1.015279689861760e+00 -6.077377682161002e+00 -5.964768830542696e+00 3.296863792085935e+00 4.943481244241713e+00 9.109212408891106e+03 + 98320 9.347986949512265e-01 -5.949678684120199e+00 -5.967414472218403e+00 3.960870383425382e+00 4.859028743561161e+00 9.117279062497752e+03 + 98340 9.803084712194277e-01 -6.006612706188418e+00 -6.004864566937673e+00 3.677180226884425e+00 4.687218312985874e+00 9.231980410676390e+03 + 98360 1.016486201970173e+00 -6.052934301087515e+00 -5.976857341623308e+00 3.411511700474517e+00 4.848357374589422e+00 9.146139826526825e+03 + 98380 1.018034409026686e+00 -6.048116394973777e+00 -5.946472563686092e+00 3.439041285706209e+00 5.022695894292150e+00 9.053462244238783e+03 + 98400 1.006579204881909e+00 -6.022043226259854e+00 -5.983437765972235e+00 3.599368008405599e+00 4.821046535552773e+00 9.166270582270599e+03 + 98420 1.001960338544776e+00 -6.007841311456181e+00 -5.996798358973331e+00 3.655626031230433e+00 4.719036373278331e+00 9.207224264470082e+03 + 98440 1.023173175049365e+00 -6.033903117643932e+00 -6.011214177019870e+00 3.475899691742694e+00 4.606183099908279e+00 9.251521320908010e+03 + 98460 1.032064887024564e+00 -6.044188034693698e+00 -6.016021791008096e+00 3.467691467747521e+00 4.629426397702371e+00 9.266310583296148e+03 + 98480 9.838649092937497e-01 -5.971110518674235e+00 -6.046238118586615e+00 3.870776927680893e+00 4.439382623025491e+00 9.359538476989213e+03 + 98500 1.062977796188171e+00 -6.088573549397275e+00 -5.988330403100729e+00 3.242808862960995e+00 4.818420521572520e+00 9.181280154654934e+03 + 98520 9.688415151358940e-01 -5.950206158801372e+00 -6.023893124155618e+00 3.930494192415849e+00 4.507372234330735e+00 9.290521037461427e+03 + 98540 9.731938621291863e-01 -5.956984171497677e+00 -5.988019825056993e+00 3.968891148847415e+00 4.790679623357958e+00 9.180315016524335e+03 + 98560 1.025279243158647e+00 -6.033344135429354e+00 -6.022340076777047e+00 3.536399404618086e+00 4.599586412272204e+00 9.285751820189274e+03 + 98580 9.889443800818339e-01 -5.979764063390302e+00 -6.035225380937530e+00 3.801660915840567e+00 4.483193447873230e+00 9.325506084268114e+03 + 98600 1.109117721324901e+00 -6.160022430573275e+00 -5.937477564817668e+00 2.828365429752642e+00 5.106252487628016e+00 9.026125675403640e+03 + 98620 1.011477476738488e+00 -6.018533954274060e+00 -6.020683476060125e+00 3.554482887767085e+00 4.542140001034085e+00 9.280644339621796e+03 + 98640 9.713926328542308e-01 -5.964035622650325e+00 -6.001767505006172e+00 3.888333264851116e+00 4.671670957373919e+00 9.222464502890740e+03 + 98660 1.009774659165376e+00 -6.025222776966777e+00 -5.989725659947472e+00 3.571317836634397e+00 4.775147775720351e+00 9.185540797784803e+03 + 98680 1.026127126548551e+00 -6.055558882801074e+00 -6.051617505956560e+00 3.429673698996872e+00 4.452305694764171e+00 9.376207206549667e+03 + 98700 1.008889353842767e+00 -6.043077543416180e+00 -6.006291711750006e+00 3.419456152875053e+00 4.630686090891275e+00 9.236406216502153e+03 + 98720 9.569590893644143e-01 -5.983805666743640e+00 -6.023593683663442e+00 3.857299957048384e+00 4.628831006719163e+00 9.289622756118846e+03 + 98740 9.764601836113681e-01 -6.035633968324732e+00 -6.021698634575593e+00 3.450611467495096e+00 4.530630310368585e+00 9.283796444207037e+03 + 98760 9.304880850891646e-01 -5.992819039784822e+00 -6.026123770010968e+00 3.705741104608923e+00 4.514500189760044e+00 9.297413515795582e+03 + 98780 9.914145825476826e-01 -6.106875530365093e+00 -5.985359078872954e+00 3.069677051601227e+00 4.767443320679183e+00 9.172168613566726e+03 + 98800 9.398019906108321e-01 -6.050047591734813e+00 -5.964545779867475e+00 3.448618534775630e+00 4.939583169880512e+00 9.108526863033694e+03 + 98820 9.399723877516333e-01 -6.063114740046742e+00 -5.994635390498774e+00 3.427658349292085e+00 4.820877371541607e+00 9.200577284727487e+03 + 98840 1.011397549967698e+00 -6.178412494135690e+00 -5.972177331274970e+00 2.773839762780090e+00 4.958073982714651e+00 9.131853960781244e+03 + 98860 9.552732162407155e-01 -6.099642036485355e+00 -6.013198940132094e+00 3.218143102352305e+00 4.714512738638656e+00 9.257620856952559e+03 + 98880 9.834698449498362e-01 -6.141370783699291e+00 -5.977877053390548e+00 2.977619637214818e+00 4.916425937220612e+00 9.149275766112363e+03 + 98900 9.359947995476768e-01 -6.063524623163916e+00 -6.004728172962272e+00 3.364913748162338e+00 4.702532063941439e+00 9.231563398098811e+03 + 98920 9.533481654789383e-01 -6.073496107505829e+00 -6.008180482671216e+00 3.351318393725427e+00 4.726370819086051e+00 9.242181391787384e+03 + 98940 9.693821374461716e-01 -6.073120674234650e+00 -6.028141928414927e+00 3.308705656860747e+00 4.566980575796016e+00 9.303632682308049e+03 + 98960 9.333691044770499e-01 -5.989156438382777e+00 -6.013948475502481e+00 3.781007062376775e+00 4.638647348680085e+00 9.259920622347607e+03 + 98980 9.546576982955435e-01 -5.983648159822955e+00 -6.019341289240465e+00 3.780862410193710e+00 4.575906937584441e+00 9.276501147878176e+03 + 99000 1.018439629242023e+00 -6.041480580309550e+00 -5.983521991842025e+00 3.466799179263270e+00 4.799606363306378e+00 9.166525518643779e+03 + 99020 9.863488100968217e-01 -5.956794143984110e+00 -6.015554692586876e+00 3.969559274498756e+00 4.632147111256169e+00 9.264845420579577e+03 + 99040 9.516775855365567e-01 -5.876726472218452e+00 -6.022043583847335e+00 4.322361634513771e+00 4.487928291790380e+00 9.284829973038497e+03 + 99060 1.033613013563563e+00 -5.975425594641683e+00 -6.013299576338454e+00 3.798924569872923e+00 4.581446305990334e+00 9.257895731208357e+03 + 99080 1.049984179185843e+00 -5.983628870446120e+00 -5.991126311728619e+00 3.810386635555044e+00 4.767335167485644e+00 9.189836143322880e+03 + 99100 1.042008482197529e+00 -5.963073166024972e+00 -6.038403955745011e+00 3.847092187449437e+00 4.414531135474938e+00 9.335322343273265e+03 + 99120 1.075674875929916e+00 -6.010775418098726e+00 -6.008433732229475e+00 3.634650941539628e+00 4.648097264175583e+00 9.242980697833813e+03 + 99140 9.646655243879321e-01 -5.850270166653583e+00 -6.008140637907883e+00 4.484103444506678e+00 4.577586768188021e+00 9.242056467078224e+03 + 99160 1.072342082965299e+00 -6.017103570000937e+00 -5.950896853096074e+00 3.647177721345496e+00 5.027346935269547e+00 9.066913947087336e+03 + 99180 1.037737491505471e+00 -5.973173706418223e+00 -5.998958406089165e+00 3.896621267197399e+00 4.748561531517471e+00 9.213805266073405e+03 + 99200 1.027433843080161e+00 -5.969437554815718e+00 -5.993596830141030e+00 3.862249135718316e+00 4.723522838164599e+00 9.197380704990412e+03 + 99220 9.846170484161580e-01 -5.920742453461324e+00 -5.970730720650545e+00 4.180111931310949e+00 4.893071565451097e+00 9.127364727531796e+03 + 99240 9.895934382872804e-01 -5.939548397415880e+00 -5.978416166312192e+00 4.014227851670335e+00 4.791043107899914e+00 9.150856411870680e+03 + 99260 1.041022485854301e+00 -6.028422371271283e+00 -5.953881005370402e+00 3.602207361892394e+00 5.030235420134344e+00 9.075991580577260e+03 + 99280 9.792232012530421e-01 -5.950859183757307e+00 -5.983256548624174e+00 4.026216267507900e+00 4.840185584966342e+00 9.165715806762391e+03 + 99300 9.821865589147838e-01 -5.970589095443183e+00 -5.985675029354387e+00 3.889853776697830e+00 4.803228009638968e+00 9.173135459615794e+03 + 99320 9.689637035943613e-01 -5.967254762436105e+00 -6.043444744256401e+00 3.854955984489136e+00 4.417461318515414e+00 9.350901723513800e+03 + 99340 1.012457554894574e+00 -6.053410241202108e+00 -6.037709930756126e+00 3.390319752935341e+00 4.480473365131355e+00 9.333191332352697e+03 + 99360 9.848320747893614e-01 -6.043981835951585e+00 -6.030821240369866e+00 3.428810506439684e+00 4.504380682865497e+00 9.311902090165106e+03 + 99380 9.289315747228593e-01 -6.001801786827794e+00 -5.948792679237060e+00 3.726045038570493e+00 5.030431537489372e+00 9.060497751970619e+03 + 99400 9.832856144495494e-01 -6.125391013778289e+00 -5.928341386363908e+00 3.111268351044263e+00 5.242757804988935e+00 8.998366115150327e+03 + 99420 9.229085108338503e-01 -6.080169105957109e+00 -5.969378208910173e+00 3.275363215748874e+00 4.911541691428289e+00 9.123285065993838e+03 + 99440 9.676131680357130e-01 -6.183709504425654e+00 -5.957893914227633e+00 2.718186345827899e+00 5.014854409594583e+00 9.088252429156388e+03 + 99460 8.470242386520049e-01 -6.032024597081533e+00 -5.982730988547097e+00 3.519099763431526e+00 4.802151291797532e+00 9.164128284797434e+03 + 99480 9.375728200385016e-01 -6.179385710587024e+00 -5.942653052889482e+00 2.752111802565556e+00 5.111467357325223e+00 9.041839345920534e+03 + 99500 9.230289450261584e-01 -6.157856929154686e+00 -5.963149460779490e+00 2.850340934820891e+00 4.968381349114622e+00 9.104263603668136e+03 + 99520 8.644103461956270e-01 -6.060802825647688e+00 -5.977187989515356e+00 3.406241104045022e+00 4.886370432470947e+00 9.147152237251901e+03 + 99540 1.023420106567433e+00 -6.278289065314835e+00 -5.919143092517972e+00 2.242627034187699e+00 5.304898787646961e+00 8.970509526300491e+03 + 99560 9.435993826731099e-01 -6.135537611855659e+00 -5.958474095705769e+00 3.016770390492985e+00 5.033496500716224e+00 9.090004595709341e+03 + 99580 9.065196310521605e-01 -6.056443740449343e+00 -5.952394114295688e+00 3.412801416916210e+00 5.010270471918105e+00 9.071474449723557e+03 + 99600 9.002181599584330e-01 -6.022093884574368e+00 -5.970686056404075e+00 3.535107738969026e+00 4.830299443658547e+00 9.127282500799365e+03 + 99620 9.491513108036221e-01 -6.071305638715417e+00 -5.984253689658770e+00 3.284188227190291e+00 4.784053989919138e+00 9.168786508465229e+03 + 99640 1.037491260037351e+00 -6.182416157464623e+00 -5.967934144753496e+00 2.701140930929527e+00 4.932729838901016e+00 9.118910969250155e+03 + 99660 9.883595317496171e-01 -6.093586996888038e+00 -5.989435944826707e+00 3.202196000247847e+00 4.800247458507229e+00 9.184657783372773e+03 + 99680 9.763674946575179e-01 -6.060717661582409e+00 -5.975190304962585e+00 3.386631472979597e+00 4.877742790006284e+00 9.141046845082537e+03 + 99700 9.179109881816536e-01 -5.957781746552671e+00 -5.959524114113943e+00 4.018369948034296e+00 5.008365003866964e+00 9.093194510515801e+03 + 99720 9.188808026055826e-01 -5.939502891706711e+00 -5.990994473617492e+00 4.014224504053912e+00 4.718551872425655e+00 9.189415838096182e+03 + 99740 1.024683736701595e+00 -6.071821253232845e+00 -5.967791395113461e+00 3.293303719638292e+00 4.890659263528312e+00 9.118451332961002e+03 + 99760 9.819498392664172e-01 -5.982504899077096e+00 -6.035991311279027e+00 3.756642031608098e+00 4.449514775749070e+00 9.327877236368000e+03 + 99780 9.997821708094877e-01 -5.986194105923122e+00 -6.011097188303387e+00 3.731617048518482e+00 4.588619695751459e+00 9.251162800153634e+03 + 99800 1.024245285853939e+00 -6.003374220481877e+00 -5.978043535905368e+00 3.694055390855346e+00 4.839508101604430e+00 9.149783710889216e+03 + 99820 1.071870604990866e+00 -6.056917850869024e+00 -5.974441675459739e+00 3.437525864194666e+00 4.911116826541671e+00 9.138735318413077e+03 + 99840 1.080585962653374e+00 -6.055020344708323e+00 -5.969847357662749e+00 3.407112492240884e+00 4.896188964333717e+00 9.124730211591563e+03 + 99860 9.948774790052167e-01 -5.916724131353305e+00 -6.000332859748397e+00 4.116423026973928e+00 4.636328770120412e+00 9.218067217463598e+03 + 99880 9.809240766969762e-01 -5.887570293302043e+00 -6.009656143719923e+00 4.322533898716941e+00 4.621498052893187e+00 9.246699510198116e+03 + 99900 1.047960298437937e+00 -5.979785348453349e+00 -6.004660433010118e+00 3.784556771529712e+00 4.641720186597854e+00 9.231360849205670e+03 + 99920 9.491438232482513e-01 -5.827580878121333e+00 -6.062551541954725e+00 4.607477634025312e+00 4.258239720701268e+00 9.410043469910279e+03 + 99940 1.035680305374418e+00 -5.954232437019303e+00 -5.974280499630940e+00 3.964436979538566e+00 4.849317901594889e+00 9.138264798347460e+03 + 99960 1.079823252796725e+00 -6.021992986434533e+00 -5.973915986796042e+00 3.623728368154147e+00 4.899793939970010e+00 9.137107593449897e+03 + 99980 1.034413408897987e+00 -5.963172288366274e+00 -6.022476536129452e+00 3.858483228189965e+00 4.517949060231115e+00 9.286160394321949e+03 + 100000 1.041207184364491e+00 -5.988325168921166e+00 -6.001447071139587e+00 3.718904485222335e+00 4.643556492076350e+00 9.221507329915157e+03 + 100020 1.022348321133684e+00 -5.984531686920860e+00 -5.964030148315187e+00 3.755977026048429e+00 4.873700033325055e+00 9.106952201848933e+03 + 100040 9.494709868764378e-01 -5.909385921835007e+00 -5.986199300672633e+00 4.156473336513010e+00 4.715399028395405e+00 9.174695908655187e+03 + 100060 9.552362754020651e-01 -5.954181179590964e+00 -5.952515552864179e+00 3.947265264491965e+00 4.956829550912066e+00 9.071837855241440e+03 + 100080 9.576640860223434e-01 -5.995450705437397e+00 -6.010303577597016e+00 3.691549961681881e+00 4.606262471266813e+00 9.248685237753740e+03 + 100100 9.546069367674995e-01 -6.025759841550142e+00 -6.019928069851500e+00 3.554146477063239e+00 4.587633412620598e+00 9.278323576733506e+03 + 100120 1.021162330940387e+00 -6.156097944634729e+00 -5.998904872956183e+00 2.861393704337067e+00 4.764020647464504e+00 9.213696645106451e+03 + 100140 9.127286409704853e-01 -6.019566623678919e+00 -6.007302767943694e+00 3.618584438286073e+00 4.689005395743280e+00 9.239477272204920e+03 + 100160 9.672505282522870e-01 -6.116300109043177e+00 -5.967011015517226e+00 3.077911087937123e+00 4.935152165375696e+00 9.116058469146552e+03 + 100180 9.767787122327640e-01 -6.137654833093974e+00 -5.980725346335312e+00 2.968148277011130e+00 4.869261674738956e+00 9.157998228646351e+03 + 100200 8.862431902802509e-01 -6.003634622454971e+00 -6.029366184915851e+00 3.676042558150514e+00 4.528287944553719e+00 9.307433878232479e+03 + 100220 9.310894656424905e-01 -6.064804108911623e+00 -5.999364237017378e+00 3.365109807351475e+00 4.740875678555678e+00 9.215098897185258e+03 + 100240 9.261790683031853e-01 -6.045323937586662e+00 -5.988180954322764e+00 3.473337347816106e+00 4.801461200565493e+00 9.180810741135667e+03 + 100260 1.035722596857402e+00 -6.190445102667603e+00 -5.951821251452474e+00 2.680982811306113e+00 5.051197891905018e+00 9.069741652847726e+03 + 100280 9.302069900803720e-01 -6.009329750935526e+00 -5.974446861998006e+00 3.624120415879041e+00 4.824423362267902e+00 9.138775984705879e+03 + 100300 1.003159853886130e+00 -6.089793841735156e+00 -5.959049992551279e+00 3.231347168248717e+00 4.982098582807811e+00 9.091737324833688e+03 + 100320 9.360791089747031e-01 -5.957474788065740e+00 -6.001127296159565e+00 3.944780537170216e+00 4.694121080491680e+00 9.220496522220108e+03 + 100340 9.713979019986416e-01 -5.978380220088479e+00 -5.980601351785847e+00 3.821300168544986e+00 4.808546086619677e+00 9.157595934443465e+03 + 100360 1.009346031850552e+00 -6.009535435875813e+00 -5.976044612365881e+00 3.630865973412589e+00 4.823175464694812e+00 9.143675327450466e+03 + 100380 1.020385120993425e+00 -6.005692622041028e+00 -6.010874602876418e+00 3.688950840733790e+00 4.659195104868040e+00 9.250447836091249e+03 + 100400 9.675196126101391e-01 -5.917010245237988e+00 -5.991122244942927e+00 4.131090023544649e+00 4.705527452444001e+00 9.189788495238974e+03 + 100420 1.012712470525639e+00 -5.978665649181520e+00 -5.969669550165827e+00 3.830097700768075e+00 4.881754693458001e+00 9.124136608938616e+03 + 100440 1.024555908066439e+00 -5.991253018589271e+00 -5.997777020949138e+00 3.734847294445896e+00 4.697385463309440e+00 9.210222505632204e+03 + 100460 1.001058985431365e+00 -5.953661443697609e+00 -6.030819610881124e+00 3.970294162174649e+00 4.527240026019125e+00 9.311904659785929e+03 + 100480 9.965409722110948e-01 -5.947567796381205e+00 -6.035831053839189e+00 3.953550390677042e+00 4.446729107658350e+00 9.327363046615499e+03 + 100500 1.019531831148716e+00 -5.985416760398266e+00 -6.006388806199202e+00 3.742488310296382e+00 4.622063577893808e+00 9.236678731158428e+03 + 100520 9.686265208747582e-01 -5.914349471576263e+00 -6.028177987660484e+00 4.099858645857575e+00 4.446237691596046e+00 9.303728860586480e+03 + 100540 9.991991037323487e-01 -5.964970291152945e+00 -6.021201151565627e+00 3.856796053500410e+00 4.533909751313263e+00 9.282230029971422e+03 + 100560 1.055770651779741e+00 -6.057562036625112e+00 -5.958893541889578e+00 3.394234321919237e+00 4.960804087590882e+00 9.091281564767047e+03 + 100580 9.528416349981925e-01 -5.913790603966494e+00 -6.007614071535003e+00 4.143374274662492e+00 4.604625404749434e+00 9.240432139431956e+03 + 100600 1.063340165556967e+00 -6.085911621436664e+00 -5.956312199020678e+00 3.244711718260656e+00 4.988891657219051e+00 9.083432957739478e+03 + 100620 9.556914152180930e-01 -5.935515979324164e+00 -6.023244936355621e+00 4.002096490616372e+00 4.498343243329523e+00 9.288548886130329e+03 + 100640 9.910977621910929e-01 -5.998300223472199e+00 -6.029185819067926e+00 3.706008276989412e+00 4.528658407548281e+00 9.306878835646454e+03 + 100660 1.046120672779060e+00 -6.094519698972517e+00 -6.004686425419096e+00 3.193147061385962e+00 4.708983619783861e+00 9.231473901550362e+03 + 100680 9.758419824082297e-01 -6.008239921372698e+00 -6.002782131093825e+00 3.682519223039108e+00 4.713858699410714e+00 9.225592398940364e+03 + 100700 9.627234239416229e-01 -6.009561925318659e+00 -5.999306308063094e+00 3.659575105290434e+00 4.718464446623530e+00 9.214915527475910e+03 + 100720 9.256857817885412e-01 -5.974661764186345e+00 -6.013904506427108e+00 3.849535889551638e+00 4.624197990810437e+00 9.259760809151632e+03 + 100740 9.662812947742361e-01 -6.054014563571669e+00 -6.025129737241236e+00 3.442482660353172e+00 4.608343803054947e+00 9.294351523207959e+03 + 100760 9.210246700371897e-01 -6.008571042252274e+00 -6.028135888635472e+00 3.652520125237358e+00 4.540175749654844e+00 9.303616602991498e+03 + 100780 9.404074580917622e-01 -6.058182843204968e+00 -5.995689157972770e+00 3.360432645908134e+00 4.719281057377955e+00 9.203784084772571e+03 + 100800 9.645549645652095e-01 -6.110416695600677e+00 -5.967628653146507e+00 3.159989029779607e+00 4.979900065929613e+00 9.117937227834778e+03 + 100820 9.402680513652617e-01 -6.088012683307513e+00 -6.000388938185334e+00 3.241624717279698e+00 4.744773821501985e+00 9.218253664613865e+03 + 100840 8.767945419562222e-01 -6.004105597471897e+00 -5.977960686518763e+00 3.616078749338293e+00 4.766206873943082e+00 9.149533296680347e+03 + 100860 9.254859406422815e-01 -6.078558879391219e+00 -5.959273242860528e+00 3.242923764837246e+00 4.927880349189070e+00 9.092459200831026e+03 + 100880 9.405244365861735e-01 -6.094992975314524e+00 -5.945252343660373e+00 3.168202857905694e+00 5.028036737151686e+00 9.049739707017350e+03 + 100900 9.578699414557837e-01 -6.102335614339848e+00 -5.946149244124996e+00 3.104210445287207e+00 5.001056752823571e+00 9.052460410268694e+03 + 100920 9.388507852816931e-01 -6.042303920617139e+00 -5.938851008647887e+00 3.501676949361337e+00 5.095719579175162e+00 9.030279500674193e+03 + 100940 9.409266990560816e-01 -5.999117434220943e+00 -5.982950585577962e+00 3.677899957775336e+00 4.770732504495076e+00 9.164793867840744e+03 + 100960 9.884077981781987e-01 -6.018809495624783e+00 -5.988334945373238e+00 3.616139390640699e+00 4.791128974106487e+00 9.181273704878469e+03 + 100980 1.017507092451332e+00 -6.016815298606163e+00 -6.002871316493534e+00 3.587602291816578e+00 4.667670794931551e+00 9.225880923203606e+03 + 101000 9.778716542663625e-01 -5.927013705404904e+00 -6.029675590679608e+00 4.084163639905897e+00 4.494663207783149e+00 9.308389589205621e+03 + 101020 9.972275875896273e-01 -5.932890122860426e+00 -6.072589091493946e+00 3.999031569122879e+00 4.196858472883683e+00 9.441208149905924e+03 + 101040 1.075577846317902e+00 -6.034746471689515e+00 -6.041623894025109e+00 3.480032845748368e+00 4.440541622419724e+00 9.345278580546701e+03 + 101060 1.050547986501148e+00 -5.991640786851642e+00 -6.024459374446158e+00 3.708082287878821e+00 4.519632879251092e+00 9.292305752050112e+03 + 101080 1.000229225500147e+00 -5.917583464997133e+00 -5.991043075197593e+00 4.247420104932469e+00 4.825603655323487e+00 9.189558201209102e+03 + 101100 9.556060059994539e-01 -5.854508362419913e+00 -6.012166862793714e+00 4.458813196840723e+00 4.553513690120274e+00 9.254392976090381e+03 + 101120 1.026480755099830e+00 -5.961283565508754e+00 -5.995604018342526e+00 3.896992766720401e+00 4.699919415475977e+00 9.203529334148372e+03 + 101140 1.040768731417746e+00 -5.987304336350205e+00 -5.993911527006718e+00 3.762114729176772e+00 4.724175217967630e+00 9.198364920270264e+03 + 101160 1.049215557843379e+00 -6.007923151618461e+00 -6.024375014171662e+00 3.645225445367191e+00 4.550756304669203e+00 9.292015490960233e+03 + 101180 1.032833808021148e+00 -5.996620294487396e+00 -6.024779789720190e+00 3.676553008750127e+00 4.514856829455621e+00 9.293291872071213e+03 + 101200 1.030105758376669e+00 -6.011669400018858e+00 -6.039363388250905e+00 3.633752103797697e+00 4.474728937738456e+00 9.338278033086610e+03 + 101220 1.055278779035816e+00 -6.074736193368164e+00 -6.001842904161145e+00 3.337778586345041e+00 4.756343133171793e+00 9.222716226152059e+03 + 101240 9.982509060564314e-01 -6.019309380211361e+00 -6.003508616852596e+00 3.604478963515815e+00 4.695209391882070e+00 9.227812453510120e+03 + 101260 9.734106892519498e-01 -6.013048833908670e+00 -6.000190152317533e+00 3.640144534120899e+00 4.713981073691754e+00 9.217632023031672e+03 + 101280 9.590710966190135e-01 -6.021688603862037e+00 -6.007842673228378e+00 3.565929805137581e+00 4.645435281486889e+00 9.241150871535910e+03 + 101300 9.282799370537971e-01 -6.002045596407217e+00 -6.032851704535552e+00 3.651840574922210e+00 4.474947134819484e+00 9.318161286717352e+03 + 101320 9.173710272043901e-01 -6.007157086449578e+00 -5.980661378748843e+00 3.628837570717960e+00 4.780980024533092e+00 9.157791736874748e+03 + 101340 9.675200451290068e-01 -6.099228631177536e+00 -5.969334201782591e+00 3.217204440286755e+00 4.963078354970516e+00 9.123115688489856e+03 + 101360 9.276416470822580e-01 -6.049073300039749e+00 -5.933241691003042e+00 3.465546163168426e+00 5.130669187140767e+00 9.013249017306065e+03 + 101380 9.359439221692375e-01 -6.061417613429819e+00 -5.977137590409339e+00 3.369426290902069e+00 4.853375225377079e+00 9.146974931764038e+03 + 101400 9.235031183164275e-01 -6.034209756143017e+00 -5.990200072155032e+00 3.531500928440607e+00 4.784211344376203e+00 9.186967271292586e+03 + 101420 9.378794844345663e-01 -6.039578097808431e+00 -5.982539667691618e+00 3.524357420544069e+00 4.851880912943340e+00 9.163531282919741e+03 + 101440 1.013998135393958e+00 -6.124771690625905e+00 -5.983772191770639e+00 3.013583663027610e+00 4.823224605056481e+00 9.167316665170300e+03 + 101460 1.009875826010160e+00 -6.075706356621081e+00 -5.974200954270001e+00 3.303369446460396e+00 4.886229174670552e+00 9.138039416765994e+03 + 101480 9.814330969212192e-01 -5.975091738248711e+00 -6.028677540779501e+00 3.806718271738408e+00 4.499020301230471e+00 9.305295467413340e+03 + 101500 1.028544188263586e+00 -5.980922410534715e+00 -6.033683827717725e+00 3.764505623880129e+00 4.461541401612363e+00 9.320748965093346e+03 + 101520 1.023590946061820e+00 -5.924741813342534e+00 -6.006172399573021e+00 4.108639359200025e+00 4.641052331722072e+00 9.235973376661836e+03 + 101540 1.023587068762781e+00 -5.897514494897142e+00 -5.964094830136259e+00 4.285002491042430e+00 4.902687902825845e+00 9.107122505774658e+03 + 101560 1.064153751624140e+00 -5.946076563874168e+00 -5.972927618156721e+00 3.953669939555938e+00 4.799487030678302e+00 9.134110294208376e+03 + 101580 1.044248030803778e+00 -5.911285131881916e+00 -6.000532815248845e+00 4.177438452247864e+00 4.664964443320589e+00 9.218662993828262e+03 + 101600 1.097385986535176e+00 -5.990930833488832e+00 -5.993126546171341e+00 3.724810843648297e+00 4.712202721639893e+00 9.195969411703642e+03 + 101620 1.052996237384245e+00 -5.933551586461709e+00 -6.038435182766503e+00 4.009945335524128e+00 4.407687494857929e+00 9.335404834808711e+03 + 101640 1.097157992515703e+00 -6.014218694096678e+00 -5.966705987869021e+00 3.660433033637044e+00 4.933258345363777e+00 9.115131161407762e+03 + 101660 1.006633849161655e+00 -5.900040718581222e+00 -5.996830927722108e+00 4.319879163088270e+00 4.764094803964841e+00 9.207295130670431e+03 + 101680 1.050736694199744e+00 -5.989788756733670e+00 -5.955231938725676e+00 3.766655080912535e+00 4.965085677564741e+00 9.080141386704230e+03 + 101700 1.036251115463038e+00 -5.994723545775885e+00 -5.994930009203591e+00 3.737736382509174e+00 4.736550837557171e+00 9.201467470123620e+03 + 101720 9.648444674129945e-01 -5.915385236515382e+00 -6.006613683567605e+00 4.187954469513887e+00 4.664106608983468e+00 9.237334820954780e+03 + 101740 1.059481571748788e+00 -6.080584499431502e+00 -5.954935027136213e+00 3.242579954578750e+00 4.964078668691299e+00 9.079226215403429e+03 + 101760 1.012258724398190e+00 -6.033527902123264e+00 -5.965547000861017e+00 3.541177297551902e+00 4.931534152610199e+00 9.111564368160298e+03 + 101780 9.957231965811424e-01 -6.027790159890378e+00 -6.004882011039633e+00 3.591005348017766e+00 4.722547483743316e+00 9.232044468075566e+03 + 101800 9.737138259185678e-01 -6.014803675328157e+00 -6.054814891406533e+00 3.608685853924567e+00 4.378935259486854e+00 9.386069692502624e+03 + 101820 1.040091966183514e+00 -6.132303217670631e+00 -5.985079307618285e+00 2.985298670621598e+00 4.830681144968617e+00 9.171314615723510e+03 + 101840 9.672189405814190e-01 -6.039921993898893e+00 -6.000055268136643e+00 3.493563543143074e+00 4.722484451825780e+00 9.217228101699657e+03 + 101860 9.006165840812461e-01 -5.952696444758821e+00 -6.037006371843027e+00 3.939994914164436e+00 4.455874265927877e+00 9.330994046283002e+03 + 101880 9.754586089618118e-01 -6.071026909320604e+00 -5.973512703243737e+00 3.305233226472873e+00 4.865174888040865e+00 9.135929330973004e+03 + 101900 9.430053054853322e-01 -6.024231957708286e+00 -5.994578612004271e+00 3.618267090647351e+00 4.788541190520226e+00 9.200414655786139e+03 + 101920 9.613526349351434e-01 -6.048681543839590e+00 -5.967945484144638e+00 3.468366215725578e+00 4.931965164358850e+00 9.118896978334493e+03 + 101940 9.452230110491117e-01 -6.015544042695625e+00 -5.995420083379454e+00 3.591610408453808e+00 4.707165297019902e+00 9.202987502726213e+03 + 101960 1.030347513780783e+00 -6.124845572565430e+00 -5.978275492450869e+00 3.023403684186217e+00 4.865031765850619e+00 9.150496951678913e+03 + 101980 9.778282438294913e-01 -6.020308058382945e+00 -6.010099215173690e+00 3.585971592753805e+00 4.644592350274728e+00 9.248081974288141e+03 + 102000 9.818956271789786e-01 -5.989172483123881e+00 -5.974870981308037e+00 3.757933194663202e+00 4.840054631240035e+00 9.140075451597018e+03 + 102020 1.035936468243275e+00 -6.015863931789585e+00 -6.006052016267946e+00 3.605751705207827e+00 4.662093242522101e+00 9.235626186439200e+03 + 102040 1.057089294233649e+00 -5.991150114559504e+00 -6.005859781530422e+00 3.781990793565551e+00 4.697525609504938e+00 9.235052220856733e+03 + 102060 1.051347376504525e+00 -5.937419495905473e+00 -6.046196113768684e+00 4.044612094877625e+00 4.419999921979855e+00 9.359383191979805e+03 + 102080 1.084981875516398e+00 -5.959761527331171e+00 -5.995689298594645e+00 3.928487970289075e+00 4.722185147889570e+00 9.203797550903349e+03 + 102100 1.083631056836609e+00 -5.942782944882389e+00 -5.988263724727164e+00 4.013306706455163e+00 4.752149030458527e+00 9.181019598491292e+03 + 102120 1.082529553172992e+00 -5.935579280397475e+00 -5.982035708830551e+00 4.123485231354381e+00 4.856725230182592e+00 9.161951657359012e+03 + 102140 1.047996159208897e+00 -5.885577318949749e+00 -6.040230654997110e+00 4.261586185608338e+00 4.373542797497982e+00 9.340967356817308e+03 + 102160 1.104304036085869e+00 -5.980359227409762e+00 -6.025177805808021e+00 3.798174069721648e+00 4.540818856906253e+00 9.294524501320371e+03 + 102180 1.082583430345317e+00 -5.967253066268624e+00 -6.026792188548631e+00 3.870321413188171e+00 4.528438559406970e+00 9.299476548545019e+03 + 102200 9.841305042298184e-01 -5.845461581400166e+00 -6.002837665028740e+00 4.568037367464860e+00 4.664359541399350e+00 9.225767408509188e+03 + 102220 9.995182682556932e-01 -5.890928745946875e+00 -6.034236088316025e+00 4.228233658526382e+00 4.405340721903166e+00 9.322439611387555e+03 + 102240 1.011435872267556e+00 -5.934297955159959e+00 -6.037258214557503e+00 4.023869728376523e+00 4.432655985867179e+00 9.331763058513785e+03 + 102260 1.026334316876609e+00 -5.982604275669857e+00 -6.004532985601646e+00 3.767088160023281e+00 4.641170114138054e+00 9.230968267001044e+03 + 102280 1.032443488931104e+00 -6.016732232371707e+00 -5.987468716383765e+00 3.617017538124929e+00 4.785053175442156e+00 9.178625468506341e+03 + 102300 9.693442319713593e-01 -5.942959773709611e+00 -5.973836983252610e+00 3.997674296923653e+00 4.820372581495016e+00 9.136886397524288e+03 + 102320 9.025551197934787e-01 -5.857502221551396e+00 -5.973087043373868e+00 4.488703280691446e+00 4.824997347093447e+00 9.134574531533966e+03 + 102340 1.062979484522036e+00 -6.104241496519524e+00 -5.970550419891234e+00 3.140423611172107e+00 4.908098461798994e+00 9.126871249074404e+03 + 102360 9.836636181508149e-01 -5.993502057436785e+00 -6.051691358972201e+00 3.706024855001952e+00 4.371892880820280e+00 9.376401042634212e+03 + 102380 9.885447284289018e-01 -6.007935020711544e+00 -5.992890073089128e+00 3.668525324290169e+00 4.754915741736204e+00 9.195233739769241e+03 + 102400 1.039976166368926e+00 -6.088159695030552e+00 -5.987064029516945e+00 3.239098951444764e+00 4.819605907327569e+00 9.177385246608255e+03 + 102420 9.793048394408452e-01 -6.003143137072142e+00 -5.973266601781465e+00 3.707149240562441e+00 4.878704929580400e+00 9.135164775567515e+03 + 102440 9.960105032353902e-01 -6.030229242737156e+00 -5.992307661936399e+00 3.544159415457924e+00 4.761911000761536e+00 9.193432917753355e+03 + 102460 9.871004442492680e-01 -6.016201428120822e+00 -6.002061507311437e+00 3.631404640526550e+00 4.712598253959714e+00 9.223371669218874e+03 + 102480 1.020821733036069e+00 -6.063383559255508e+00 -6.050341931847321e+00 3.367343622826524e+00 4.442230665589648e+00 9.372237155531158e+03 + 102500 9.669820182883115e-01 -5.982000300349037e+00 -6.041433405780094e+00 3.813747750897432e+00 4.472473662268961e+00 9.344688594991154e+03 + 102520 9.675845867143908e-01 -5.981444970993582e+00 -5.971539890669462e+00 3.797850327579372e+00 4.854726831606699e+00 9.129914580650506e+03 + 102540 9.878283234899049e-01 -6.005916272363897e+00 -6.006081016703954e+00 3.642863574823491e+00 4.641917587328777e+00 9.235722560147991e+03 + 102560 9.889889218476040e-01 -6.000220045721592e+00 -5.988168868721012e+00 3.717702973693253e+00 4.786902696944194e+00 9.180771059645855e+03 + 102580 9.959711529345525e-01 -5.996417773801714e+00 -6.011134942077716e+00 3.723268444304157e+00 4.638760186588929e+00 9.251279756228063e+03 + 102600 1.042773284765454e+00 -6.040344299031713e+00 -5.975251161299990e+00 3.558766802184994e+00 4.932541672171057e+00 9.141221896902434e+03 + 102620 1.021781125007858e+00 -5.972771173452919e+00 -6.025501424075703e+00 3.881815893138791e+00 4.579030634082860e+00 9.295506583443468e+03 + 102640 1.083711708878293e+00 -6.016304371350754e+00 -6.031817968987445e+00 3.606537334271561e+00 4.517455855920208e+00 9.315001657412764e+03 + 102660 1.065835303228143e+00 -5.947190688664417e+00 -6.053875304787654e+00 3.980806543161708e+00 4.368206967991089e+00 9.383169727282711e+03 + 102680 1.169225889417918e+00 -6.065772496282318e+00 -5.997754119684111e+00 3.307828971155323e+00 4.698401015391990e+00 9.210171831795838e+03 + 102700 1.126781880665355e+00 -5.979399400858209e+00 -6.003892467705795e+00 3.861410725959914e+00 4.720767745831233e+00 9.228993301558516e+03 + 102720 1.075206261957840e+00 -5.891964884371550e+00 -6.000983042299200e+00 4.311329529034166e+00 4.685330395708185e+00 9.220051556256094e+03 + 102740 1.057289525430582e+00 -5.861683921681520e+00 -6.032701513393830e+00 4.411184551518983e+00 4.429175075020109e+00 9.317687375128469e+03 + 102760 1.134804181007357e+00 -5.984120571129761e+00 -6.010360504266322e+00 3.776210541977432e+00 4.625536785290772e+00 9.248890597823731e+03 + 102780 1.058148794018591e+00 -5.890067260847018e+00 -6.024185691903285e+00 4.300331191293499e+00 4.530202405408285e+00 9.291392162850390e+03 + 102800 1.077990353297650e+00 -5.948791061796524e+00 -6.029580482629828e+00 3.951095576914621e+00 4.487190220367324e+00 9.308086929171297e+03 + 102820 1.058611199826975e+00 -5.962213019102329e+00 -6.020573864566537e+00 3.962887171013837e+00 4.627770165046704e+00 9.280308128039464e+03 + 102840 9.820786336025932e-01 -5.890722350964804e+00 -6.005987609896519e+00 4.225618296640874e+00 4.563747342613794e+00 9.235428619212500e+03 + 102860 1.014632743683619e+00 -5.974503566291943e+00 -6.007775413215660e+00 3.780830747861697e+00 4.589778654024046e+00 9.240930110846548e+03 + 102880 1.006359299950356e+00 -5.991954000690792e+00 -6.024152485622160e+00 3.727170963602669e+00 4.542282280427314e+00 9.291333873990910e+03 + 102900 9.336938610123493e-01 -5.907745007490279e+00 -6.003661326972560e+00 4.192806918989044e+00 4.642040569519316e+00 9.228269722508967e+03 + 102920 9.769278533474995e-01 -5.986634462387810e+00 -5.984094714669865e+00 3.783431044911431e+00 4.798014669332558e+00 9.168270157701678e+03 + 102940 9.868477131402178e-01 -6.011272088071292e+00 -5.974835651755944e+00 3.696497517391585e+00 4.905721173234611e+00 9.139965883949488e+03 + 102960 9.740785923934330e-01 -5.998224018652767e+00 -6.018238319916687e+00 3.739952968698047e+00 4.625027753637509e+00 9.273133688769045e+03 + 102980 1.003390932263167e+00 -6.046330366646973e+00 -6.023543403445085e+00 3.443519446810506e+00 4.574365715786905e+00 9.289463245017643e+03 + 103000 1.048456808203557e+00 -6.117335419003452e+00 -5.970781442572803e+00 3.090486508088196e+00 4.932022119907542e+00 9.127580663879335e+03 + 103020 9.717675137604018e-01 -6.005032333235174e+00 -6.009572428684725e+00 3.695422920546460e+00 4.669352989897644e+00 9.246456933090058e+03 + 103040 9.650892979799111e-01 -5.995321626038420e+00 -6.035797446965621e+00 3.749517017523526e+00 4.517098590146498e+00 9.327283963019230e+03 + 103060 9.551831662111111e-01 -5.980692198774838e+00 -6.013382041799082e+00 3.825000492954367e+00 4.637290355572298e+00 9.258187206388813e+03 + 103080 9.944063050725600e-01 -6.035838799593939e+00 -6.002961592294723e+00 3.493669181280160e+00 4.682455193323642e+00 9.226157635995522e+03 + 103100 9.676090763087970e-01 -5.989873080171458e+00 -6.027331573808462e+00 3.761019678012448e+00 4.545927210865610e+00 9.301139921210133e+03 + 103120 9.930409915917640e-01 -6.020318072314565e+00 -6.049558515949376e+00 3.539776624888062e+00 4.371873472592949e+00 9.369798139998426e+03 + 103140 9.634960193435125e-01 -5.967499989299911e+00 -6.026611933373742e+00 3.844097069750231e+00 4.504667139334518e+00 9.298906659092363e+03 + 103160 1.017511280247289e+00 -6.035203560419198e+00 -5.988057727472556e+00 3.494072361732386e+00 4.764791030306074e+00 9.180427334248698e+03 + 103180 1.037748089590008e+00 -6.043392117956689e+00 -5.986337876062423e+00 3.509329297310170e+00 4.836943583382441e+00 9.175163629465984e+03 + 103200 1.017310264915153e+00 -5.987777607810710e+00 -5.985420852798715e+00 3.787019682650757e+00 4.800552534636292e+00 9.172349552718246e+03 + 103220 1.054549616867338e+00 -6.010764117242857e+00 -6.034751998506451e+00 3.624584234095394e+00 4.486842107767208e+00 9.324042027653282e+03 + 103240 1.060155131536222e+00 -5.979131685601505e+00 -6.020372741900596e+00 3.891287019603317e+00 4.654474492301098e+00 9.279690325859225e+03 + 103260 1.108773681805230e+00 -6.014052180301531e+00 -5.999738928054415e+00 3.607840671321150e+00 4.690029580692716e+00 9.216259911958703e+03 + 103280 1.073452186736946e+00 -5.928394572094545e+00 -6.024265770745577e+00 4.130752995731597e+00 4.580245737057324e+00 9.291685443296732e+03 + 103300 1.060801085500384e+00 -5.884402965742423e+00 -6.083624657585718e+00 4.342520183918455e+00 4.198558399897085e+00 9.475558847239563e+03 + 103320 1.084143637435305e+00 -5.906073813083468e+00 -6.041249176092317e+00 4.231308959585786e+00 4.455111106869154e+00 9.344123482655157e+03 + 103340 1.063866916097524e+00 -5.875540709956862e+00 -6.091781318808161e+00 4.360031572755338e+00 4.118344533605106e+00 9.500958280247118e+03 + 103360 1.058791109136880e+00 -5.878794326163305e+00 -6.065634864806523e+00 4.341676348710173e+00 4.268809062340910e+00 9.419642745989962e+03 + 103380 1.080372795180301e+00 -5.936087377793628e+00 -6.027376724028969e+00 4.073976880534168e+00 4.549779327470173e+00 9.301273450067960e+03 + 103400 1.051210837529179e+00 -5.928657098335469e+00 -5.986985235756267e+00 4.069473323245671e+00 4.734544131925356e+00 9.177113316957610e+03 + 103420 1.062944011698172e+00 -5.986828770580052e+00 -5.988204588793001e+00 3.727040819350595e+00 4.719140658264665e+00 9.180869749761030e+03 + 103440 9.771613898596031e-01 -5.901780912450828e+00 -6.054319472795598e+00 4.228891971915006e+00 4.352991953149416e+00 9.384547146257019e+03 + 103460 1.046644068516963e+00 -6.045559483206691e+00 -6.013610565668925e+00 3.430155377038450e+00 4.613611005619315e+00 9.258896302273346e+03 + 103480 9.768096091617940e-01 -5.974026993285950e+00 -6.008726073800950e+00 3.835997912189456e+00 4.636750422206969e+00 9.243864179970800e+03 + 103500 1.068325084821227e+00 -6.129840174833159e+00 -5.958868665488568e+00 3.016587125922736e+00 4.998331990334940e+00 9.091212763601767e+03 + 103520 9.338441806951159e-01 -5.942961687434636e+00 -6.042161416568965e+00 3.923022584163368e+00 4.353402388365577e+00 9.346924145145107e+03 + 103540 9.910314184955752e-01 -6.033434798192250e+00 -6.010624362030164e+00 3.480772080265404e+00 4.611753134611687e+00 9.249693534975968e+03 + 103560 1.054506776119491e+00 -6.130597522194338e+00 -5.966685517820096e+00 3.012730246250972e+00 4.953938340668570e+00 9.115074898234345e+03 + 103580 9.193068191471293e-01 -5.931641052091430e+00 -6.016880672596723e+00 4.098296335091719e+00 4.608837243361687e+00 9.268924256115819e+03 + 103600 1.034838180775984e+00 -6.101734849424806e+00 -5.971957082402476e+00 3.194963653116414e+00 4.940167674403177e+00 9.131150299198747e+03 + 103620 9.638566747064915e-01 -5.992364234300954e+00 -6.023716156862765e+00 3.738293509271219e+00 4.558265918226964e+00 9.290004103261297e+03 + 103640 1.008335283865236e+00 -6.054165027956544e+00 -5.993763967410720e+00 3.447680071503076e+00 4.794512308191110e+00 9.197923670251370e+03 + 103660 9.369335477749456e-01 -5.942428974360362e+00 -6.004431952438962e+00 4.037881873432100e+00 4.681851178374935e+00 9.230662540099080e+03 + 103680 1.000397751847341e+00 -6.028849143143697e+00 -5.992708452854998e+00 3.535498029279189e+00 4.743023465670642e+00 9.194662008354800e+03 + 103700 9.998274351679115e-01 -6.017025511623411e+00 -6.003588170235674e+00 3.574959841409691e+00 4.652119135079933e+00 9.228051353245775e+03 + 103720 9.882500866178275e-01 -5.987072418723219e+00 -5.969824681211004e+00 3.793158123705344e+00 4.892197301579238e+00 9.124640080461859e+03 + 103740 1.072332514603123e+00 -6.093898865661609e+00 -5.974314324469665e+00 3.208741182681638e+00 4.895414123853725e+00 9.138341480224704e+03 + 103760 1.036312685437181e+00 -6.020402318081159e+00 -5.974366487855130e+00 3.580621703205466e+00 4.844966564385027e+00 9.138532460075103e+03 + 103780 9.432848887278310e-01 -5.862389965330649e+00 -6.002692239229547e+00 4.374072520841302e+00 4.568435152407111e+00 9.225277784278092e+03 + 103800 1.092450645763077e+00 -6.058225824482392e+00 -5.969695533386615e+00 3.367392347776260e+00 4.875746979266484e+00 9.124253066693602e+03 + 103820 9.873630067521609e-01 -5.875544169532443e+00 -5.992571563324795e+00 4.339850894846473e+00 4.667861489760131e+00 9.194223100417566e+03 + 103840 1.040378715015674e+00 -5.925496382483080e+00 -6.016554276587552e+00 4.055798363095180e+00 4.532929843983728e+00 9.267910193914460e+03 + 103860 1.034047778373317e+00 -5.885428241794218e+00 -6.035194690420605e+00 4.276072290663445e+00 4.416090166367709e+00 9.325371068318675e+03 + 103880 1.123350971254179e+00 -5.992064295524901e+00 -6.017139412069475e+00 3.737668279529457e+00 4.593683079968766e+00 9.269724643700443e+03 + 103900 1.121179525072143e+00 -5.971886882326563e+00 -5.964576260731553e+00 3.868562777396125e+00 4.910541497909712e+00 9.108612522689313e+03 + 103920 1.047736687199056e+00 -5.851905425583020e+00 -5.999361044546006e+00 4.516787534011293e+00 4.670074551242535e+00 9.215032265267298e+03 + 103940 1.093219859365533e+00 -5.913986225891779e+00 -6.011320460892092e+00 4.152585288688567e+00 4.593677048892584e+00 9.251743280132341e+03 + 103960 1.116213031860014e+00 -5.951101210777447e+00 -5.993060974770392e+00 4.020526351699764e+00 4.779586893599775e+00 9.195735169687277e+03 + 103980 1.085582665433207e+00 -5.921795813764325e+00 -6.032403396506946e+00 4.098178877310032e+00 4.463053020733790e+00 9.316791680483000e+03 + 104000 1.090612384877555e+00 -5.965370675190580e+00 -6.012807157476891e+00 3.898240272316615e+00 4.625852650256706e+00 9.256386215951896e+03 + 104020 9.622510812979671e-01 -5.830761904604348e+00 -6.026662214012947e+00 4.634244917134068e+00 4.509355025034986e+00 9.299052719843938e+03 + 104040 9.833523403916149e-01 -5.920144239180239e+00 -6.009189384597978e+00 4.097243629105590e+00 4.585932624425213e+00 9.245272458804524e+03 + 104060 1.018473876045485e+00 -6.023067789770886e+00 -6.005636882274270e+00 3.552541209196473e+00 4.652632177466263e+00 9.234345296311993e+03 + 104080 9.849308483410752e-01 -6.008013677526687e+00 -5.989084915338987e+00 3.660583917191718e+00 4.769275798889973e+00 9.183565893908210e+03 + 104100 9.534566112345877e-01 -5.983791987296577e+00 -6.020831289378945e+00 3.783282907839578e+00 4.570597503469149e+00 9.281105193723228e+03 + 104120 9.538068341730618e-01 -6.000116496874760e+00 -6.097635304014512e+00 3.626868358716572e+00 4.066900277133487e+00 9.519208021675693e+03 + 104140 1.004018740404711e+00 -6.088509870718161e+00 -6.035351024107600e+00 3.188768753061436e+00 4.494015076604204e+00 9.325902063720559e+03 + 104160 9.438910516156069e-01 -6.010585573742055e+00 -5.981026833377885e+00 3.645735266194954e+00 4.815466127566305e+00 9.158902707758272e+03 + 104180 1.002521747532457e+00 -6.103059784370759e+00 -5.962648441725907e+00 3.150191058212241e+00 4.956454716264026e+00 9.102743854581626e+03 + 104200 1.000407402846631e+00 -6.100897667768255e+00 -5.972176966966805e+00 3.135424257396630e+00 4.874558440862630e+00 9.131863016706671e+03 + 104220 9.105942825081869e-01 -5.964120284046291e+00 -6.045102481626348e+00 3.957049946640324e+00 4.492037636181061e+00 9.356009509652296e+03 + 104240 9.896265856392805e-01 -6.075645112769908e+00 -5.956841501270954e+00 3.362254559053445e+00 5.044443281079901e+00 9.085022161196997e+03 + 104260 9.679778930342043e-01 -6.031300918152281e+00 -5.999453079005837e+00 3.553874701911431e+00 4.736749922727489e+00 9.215350745445403e+03 + 104280 1.053585733734527e+00 -6.140161838263530e+00 -5.962989428964613e+00 2.988483894469572e+00 5.005835286005681e+00 9.103793771604813e+03 + 104300 9.580762111134433e-01 -5.977763645369699e+00 -5.972268476551638e+00 3.821631754267906e+00 4.853185863995836e+00 9.132093570134548e+03 + 104320 9.614165447160054e-01 -5.955721859109301e+00 -6.010832012921746e+00 3.855125469316600e+00 4.538674437856802e+00 9.250327262687004e+03 + 104340 9.978707120370800e-01 -5.980809517192384e+00 -5.971756524593322e+00 3.760161849052813e+00 4.812145533502703e+00 9.130527259422997e+03 + 104360 1.003691390509842e+00 -5.956464642541532e+00 -5.979794582624180e+00 3.914131842882293e+00 4.780167716631166e+00 9.155098595244192e+03 + 104380 1.042812714673834e+00 -5.980999881164638e+00 -5.920075273706122e+00 3.787071617524109e+00 5.136910141603439e+00 8.973302812096053e+03 + 104400 1.004905878597538e+00 -5.897065314890249e+00 -5.929114917594756e+00 4.282586569243566e+00 5.098552790854293e+00 9.000665909144855e+03 + 104420 1.084200813207017e+00 -5.988792549362050e+00 -5.917343311928484e+00 3.780478436746594e+00 5.190751014823892e+00 8.965017256770576e+03 + 104440 1.067685041497781e+00 -5.943914695368707e+00 -5.975351999675030e+00 3.976766723117422e+00 4.796248856883399e+00 9.141512848823933e+03 + 104460 1.009072924834158e+00 -5.846753385055605e+00 -6.011698416380786e+00 4.450814484935847e+00 4.503674589905554e+00 9.252979237126265e+03 + 104480 1.090794891086835e+00 -5.963152355236291e+00 -6.000241935669346e+00 3.936362474234245e+00 4.723388363793619e+00 9.217783676058458e+03 + 104500 1.088892849189606e+00 -5.962223085349251e+00 -6.072367252350402e+00 3.918581558395295e+00 4.286116706719930e+00 9.440556083495328e+03 + 104520 1.101184786284804e+00 -5.996394886053793e+00 -6.026085071683825e+00 3.737038129210180e+00 4.566552488781157e+00 9.297296234432573e+03 + 104540 9.623491012058711e-01 -5.810879194267441e+00 -6.033442484199446e+00 4.774110335202463e+00 4.496117482855085e+00 9.319979948398275e+03 + 104560 1.063573826253906e+00 -5.980356912670027e+00 -6.002790882528508e+00 3.789228704055069e+00 4.660409377482053e+00 9.225612921817146e+03 + 104580 1.035063821151286e+00 -5.957023998347557e+00 -5.959083959936321e+00 3.924437941564540e+00 4.912609323343831e+00 9.091864011713787e+03 + 104600 9.963809883187791e-01 -5.913847680642217e+00 -5.966080652373138e+00 4.204434137890301e+00 4.904504331185099e+00 9.113186770600261e+03 + 104620 1.012643523545416e+00 -5.948921183550852e+00 -6.008174777717499e+00 3.915474491374991e+00 4.575231184206044e+00 9.242126190472427e+03 + 104640 1.025753905908384e+00 -5.976407155874959e+00 -6.003639718393119e+00 3.814428049348299e+00 4.658054461143597e+00 9.228211607302403e+03 + 104660 1.031587339127396e+00 -5.994384589112253e+00 -6.008823959663223e+00 3.727616766047110e+00 4.644703665858069e+00 9.244146308145506e+03 + 104680 9.991967926948347e-01 -5.956506118591316e+00 -6.035369424756711e+00 3.908463881404538e+00 4.455618573345657e+00 9.325934479426027e+03 + 104700 1.080504708143714e+00 -6.088748992601380e+00 -6.006138881719815e+00 3.175337058231030e+00 4.649697098786318e+00 9.235901976792880e+03 + 104720 9.496126061848341e-01 -5.905830493790978e+00 -6.022627672251643e+00 4.201179371503559e+00 4.530511898477467e+00 9.286628446139914e+03 + 104740 9.664466205338205e-01 -5.941128530675103e+00 -6.015342467752293e+00 4.017134401920572e+00 4.590986490653698e+00 9.264207473070075e+03 + 104760 1.029047466468659e+00 -6.044059419680616e+00 -6.017628658389008e+00 3.420360412963983e+00 4.572129934447487e+00 9.271257450331183e+03 + 104780 1.021504818927702e+00 -6.045042220829527e+00 -5.990631401192115e+00 3.481599733534822e+00 4.794035079939970e+00 9.188311584154346e+03 + 104800 9.708371211342164e-01 -5.980846312824614e+00 -5.948615147792021e+00 3.796534680762128e+00 4.981611018135942e+00 9.059958904487277e+03 + 104820 1.020522473914603e+00 -6.061333853422449e+00 -5.967579538394821e+00 3.368053524684610e+00 4.906405310006610e+00 9.117786523678797e+03 + 104840 1.036716278187460e+00 -6.091882076992208e+00 -5.959284958939668e+00 3.236235130392318e+00 4.997628301587705e+00 9.092474469028248e+03 + 104860 9.545077744712391e-01 -5.976090577747242e+00 -6.050175322412450e+00 3.781058210716403e+00 4.355652142271596e+00 9.371708240227716e+03 + 104880 9.402236063444048e-01 -5.959190233782132e+00 -6.040153117394100e+00 3.873378411053286e+00 4.408477004387617e+00 9.340740888112316e+03 + 104900 9.904408800758864e-01 -6.039042830690688e+00 -5.995023001320884e+00 3.491427017689710e+00 4.744195689977708e+00 9.201779293166681e+03 + 104920 9.778090112727499e-01 -6.025318624849101e+00 -5.967846554508566e+00 3.553226195437028e+00 4.883239717106522e+00 9.118584955328177e+03 + 104940 9.670483428968626e-01 -6.011011070305761e+00 -5.975724496959645e+00 3.595858322445496e+00 4.798479287178468e+00 9.142653821593969e+03 + 104960 1.029786244182199e+00 -6.101187895214689e+00 -6.015629719733400e+00 3.110451509342673e+00 4.601739793041105e+00 9.265094544888538e+03 + 104980 9.801875242909042e-01 -6.023857221851897e+00 -5.997273089344724e+00 3.580531632114801e+00 4.733181834852196e+00 9.208697622961316e+03 + 105000 9.646857924264594e-01 -5.993866190948970e+00 -6.008215574075187e+00 3.709736837284904e+00 4.627340458814305e+00 9.242300533978465e+03 + 105020 9.687318499764812e-01 -5.987953987877033e+00 -6.042579435184784e+00 3.774311666386286e+00 4.460643894684528e+00 9.348226753335814e+03 + 105040 1.012311504020663e+00 -6.036604230261915e+00 -6.032764170130305e+00 3.471829972900299e+00 4.493880192423393e+00 9.317901804312112e+03 + 105060 9.270745111230188e-01 -5.892772114293692e+00 -5.994665542845321e+00 4.305310243712978e+00 4.720222409012414e+00 9.200658494543341e+03 + 105080 1.033014156850607e+00 -6.028589276799807e+00 -5.969567384102916e+00 3.587374669486828e+00 4.926287510960750e+00 9.123834909171972e+03 + 105100 1.054176948128016e+00 -6.033594833394838e+00 -5.973103177585704e+00 3.545483374340964e+00 4.892835823050495e+00 9.134653768272405e+03 + 105120 1.039281137685686e+00 -5.988240549705806e+00 -5.982053724521271e+00 3.728277963115716e+00 4.763803670733416e+00 9.162043315712514e+03 + 105140 1.014898584661100e+00 -5.931653803498542e+00 -6.014534017516225e+00 4.067013184070718e+00 4.591102169509514e+00 9.261705648055080e+03 + 105160 9.982857438855486e-01 -5.888857036837893e+00 -6.010178227309966e+00 4.254460580624635e+00 4.557815530540446e+00 9.248327328857127e+03 + 105180 1.011202221953589e+00 -5.891955097468983e+00 -6.027678241286801e+00 4.254890988804073e+00 4.475547693913538e+00 9.302225718079066e+03 + 105200 1.014858533082630e+00 -5.883795723965315e+00 -6.040930699240269e+00 4.285117671243057e+00 4.382824326655436e+00 9.343150118834654e+03 + 105220 1.045719537505392e+00 -5.922255113984400e+00 -6.038937057780220e+00 4.123193170894916e+00 4.453187393146865e+00 9.336966609905021e+03 + 105240 1.043752320324015e+00 -5.919872882778542e+00 -6.025496462360366e+00 4.095619089919219e+00 4.489112150764274e+00 9.295484135444623e+03 + 105260 1.071380916330870e+00 -5.970149782964505e+00 -6.027543699387363e+00 3.825270252937836e+00 4.495705503157923e+00 9.301788075127948e+03 + 105280 1.004826558763849e+00 -5.888980981468689e+00 -6.002561036365729e+00 4.340232783547373e+00 4.688038531871878e+00 9.224894854216227e+03 + 105300 1.019711935595861e+00 -5.935162468038301e+00 -6.035102116531673e+00 4.050303532158432e+00 4.476434604898865e+00 9.325099272691565e+03 + 105320 1.022851179360183e+00 -5.972647152989670e+00 -6.003741584379099e+00 3.858013464985047e+00 4.679464428099242e+00 9.228525191493331e+03 + 105340 1.037891455942812e+00 -6.033002609438154e+00 -5.965892148951660e+00 3.529082812176280e+00 4.914441461599922e+00 9.112639362291173e+03 + 105360 1.065345556844006e+00 -6.113491915059083e+00 -5.957334302741281e+00 3.092379024048653e+00 4.989060199289879e+00 9.086560301736678e+03 + 105380 9.552382328475740e-01 -5.987539559216747e+00 -6.024332040487554e+00 3.767021549823100e+00 4.555753428748050e+00 9.291911276990621e+03 + 105400 9.954292747346277e-01 -6.080023340725983e+00 -6.034258219521531e+00 3.255247862154983e+00 4.518038270240567e+00 9.322503558053131e+03 + 105420 8.988636870073589e-01 -5.960208105435974e+00 -5.996017139219083e+00 3.923218242698733e+00 4.717597229286053e+00 9.204827161084382e+03 + 105440 9.536092069765210e-01 -6.051566608185607e+00 -6.001825378518753e+00 3.440036829310591e+00 4.725658667488078e+00 9.222666110106800e+03 + 105460 9.246393099890596e-01 -6.012930720009395e+00 -6.027408288706358e+00 3.560053393618048e+00 4.476920953763571e+00 9.301377571533081e+03 + 105480 9.340637518889190e-01 -6.027647488670615e+00 -5.988663013715501e+00 3.537302906001762e+00 4.761157794022028e+00 9.182289674432423e+03 + 105500 9.388277518277689e-01 -6.028888098425544e+00 -5.993482688337479e+00 3.524856655990587e+00 4.728159999685762e+00 9.197044511283280e+03 + 105520 9.638068054036103e-01 -6.056767855595536e+00 -5.998123349307123e+00 3.389296706825543e+00 4.726042537141622e+00 9.211308780844345e+03 + 105540 9.907884410405895e-01 -6.084128107283559e+00 -5.952604940912357e+00 3.276159722907576e+00 5.031386097355237e+00 9.072141084197983e+03 + 105560 9.367397583036409e-01 -5.988973543698677e+00 -6.031950322731853e+00 3.719454769334579e+00 4.472675453491021e+00 9.315383295042793e+03 + 105580 1.009146369511426e+00 -6.081228402968879e+00 -5.973223798289354e+00 3.331594814075327e+00 4.951773967803721e+00 9.135037468198947e+03 + 105600 9.810492558495509e-01 -6.022375182683032e+00 -6.027968079263451e+00 3.583361622446372e+00 4.551246344783655e+00 9.303098064401076e+03 + 105620 1.080816186022551e+00 -6.153706834447812e+00 -5.970106619991915e+00 2.857618141877368e+00 4.911878985324492e+00 9.125541638087827e+03 + 105640 1.004659507999043e+00 -6.026158022395069e+00 -6.013893486270311e+00 3.591046327549607e+00 4.661471191908802e+00 9.259755210281472e+03 + 105660 1.040317253916643e+00 -6.066915430384356e+00 -6.001989806536979e+00 3.331677027195162e+00 4.704490006534612e+00 9.223178887340839e+03 + 105680 9.868082663486133e-01 -5.977681417704098e+00 -6.012454309332540e+00 3.871628127180174e+00 4.671956802362073e+00 9.255326175679240e+03 + 105700 9.904778007155083e-01 -5.975548793012452e+00 -6.012594568246773e+00 3.801555516314234e+00 4.588832942103571e+00 9.255762706040892e+03 + 105720 1.011416571890045e+00 -5.999708558223542e+00 -5.975336336090459e+00 3.740485748454055e+00 4.880434819531405e+00 9.141475341956024e+03 + 105740 1.070663287284406e+00 -6.079650414573460e+00 -5.982060380657698e+00 3.288138956434668e+00 4.848516033187916e+00 9.162055965356260e+03 + 105760 9.873978366796070e-01 -5.952778292376298e+00 -6.028195384624786e+00 3.972487999332092e+00 4.539431384883966e+00 9.303815848730364e+03 + 105780 1.038112126011055e+00 -6.026465189661036e+00 -6.015595960013489e+00 3.556998867190234e+00 4.619411665834308e+00 9.264983418473385e+03 + 105800 9.883426412165701e-01 -5.951690243949207e+00 -6.033156925068426e+00 3.988304856690529e+00 4.520510566775813e+00 9.319113408557492e+03 + 105820 1.049490321168270e+00 -6.044209571470263e+00 -6.015285686945532e+00 3.483657996459218e+00 4.649743417356892e+00 9.264042592916163e+03 + 105840 9.669860557087495e-01 -5.926323276994959e+00 -6.038470019347025e+00 4.064796842842580e+00 4.420832893604727e+00 9.335550710578482e+03 + 105860 9.913297283522626e-01 -5.966248993167111e+00 -6.023603989462349e+00 3.968290792197301e+00 4.638949527813049e+00 9.289660785910095e+03 + 105880 1.025856615216100e+00 -6.022835674518021e+00 -6.001009072900041e+00 3.568885631314083e+00 4.694217355460207e+00 9.220141375278974e+03 + 105900 9.310106432921430e-01 -5.886362553663688e+00 -5.997026704109333e+00 4.392910613011570e+00 4.757459935930743e+00 9.207893943474799e+03 + 105920 1.002114825061734e+00 -5.993207875301201e+00 -6.016864368318915e+00 3.731083964779548e+00 4.595244721041371e+00 9.268888137091742e+03 + 105940 1.004535546904735e+00 -5.998515174476382e+00 -6.032619089653663e+00 3.703786816708285e+00 4.507956858196524e+00 9.317458714624845e+03 + 105960 9.704961728865152e-01 -5.951000497594798e+00 -6.041763831778325e+00 3.965185252047061e+00 4.444008141584677e+00 9.345684352876940e+03 + 105980 9.547050733941810e-01 -5.930522472157948e+00 -6.008597750037165e+00 4.050101491309179e+00 4.601781163616512e+00 9.243456013375860e+03 + 106000 1.030197515008515e+00 -6.043182128465009e+00 -6.013181700943112e+00 3.469410569392166e+00 4.641677666774055e+00 9.257556907309625e+03 + 106020 1.054648843293593e+00 -6.080666227117568e+00 -6.004542677255478e+00 3.307669800806388e+00 4.744783004195778e+00 9.230997125901400e+03 + 106040 9.820431790664990e-01 -5.975657366924267e+00 -6.031835035625956e+00 3.807666767939450e+00 4.485085900788220e+00 9.315023226177755e+03 + 106060 9.637519379507277e-01 -5.951052788163842e+00 -5.993857553857437e+00 3.970429097888548e+00 4.724637509259844e+00 9.198172630192268e+03 + 106080 1.036058453110102e+00 -6.058488273734226e+00 -5.997488818540092e+00 3.329110117441885e+00 4.679378428801785e+00 9.209310970261269e+03 + 106100 9.938361326076730e-01 -5.995695875129115e+00 -6.029427900262344e+00 3.761183602531482e+00 4.567489094202465e+00 9.307594603177789e+03 + 106120 9.884403149722286e-01 -5.988838455369597e+00 -6.061755416075568e+00 3.735094126038258e+00 4.316393653801370e+00 9.407579020905265e+03 + 106140 1.046991522935415e+00 -6.077896397997137e+00 -6.009706722820646e+00 3.285958599889592e+00 4.677514267071133e+00 9.246871573909664e+03 + 106160 1.022304590806801e+00 -6.044210941323505e+00 -5.965105545271301e+00 3.515500955099785e+00 4.969736380752012e+00 9.110236684367226e+03 + 106180 9.746870712848359e-01 -5.976501048606917e+00 -6.027258173431431e+00 3.772526282518800e+00 4.481071017136756e+00 9.300894347154832e+03 + 106200 1.006697876559975e+00 -6.026541308635800e+00 -5.997818798966025e+00 3.613114726237345e+00 4.778043821555194e+00 9.210341375407599e+03 + 106220 9.917649340656983e-01 -6.005379183840454e+00 -6.034777941613426e+00 3.601881217392561e+00 4.433069000817094e+00 9.324147627027842e+03 + 106240 9.823525429464952e-01 -5.996085134616224e+00 -5.994998003285888e+00 3.740223178528086e+00 4.746465654859904e+00 9.201693563369117e+03 + 106260 9.872817596452584e-01 -6.007883076430167e+00 -5.955948369254961e+00 3.654570497755134e+00 4.952787623225128e+00 9.082312950190484e+03 + 106280 9.444796671961722e-01 -5.947614457165768e+00 -6.008997976638307e+00 3.965424199052621e+00 4.612950531172367e+00 9.244659454683411e+03 + 106300 9.951661159584837e-01 -6.023672837148204e+00 -5.963506678081031e+00 3.540672094268674e+00 4.886155490315407e+00 9.105351742482240e+03 + 106320 1.010907387953909e+00 -6.043585038563597e+00 -5.986180815431410e+00 3.405200069026474e+00 4.734824001526313e+00 9.174688076584907e+03 + 106340 1.065493788765604e+00 -6.120099708978628e+00 -5.978294086690593e+00 3.032612794874071e+00 4.846882622401099e+00 9.150533840000335e+03 + 106360 1.003448986429121e+00 -6.021402655140225e+00 -6.016121061088942e+00 3.542951757159179e+00 4.573279487525681e+00 9.266614197549015e+03 + 106380 1.002641671974978e+00 -6.014264461372075e+00 -6.008535072180445e+00 3.563719731309110e+00 4.596618770667563e+00 9.243251607275828e+03 + 106400 9.279737268549614e-01 -5.895822523891109e+00 -5.975526871060284e+00 4.248793802027325e+00 4.791119106374060e+00 9.142050886966985e+03 + 106420 1.000511469415614e+00 -5.991984889029911e+00 -5.984288973032861e+00 3.727037483241496e+00 4.771228623835714e+00 9.168865631228966e+03 + 106440 9.835861777889852e-01 -5.949739384102334e+00 -6.005883194165015e+00 3.921691761428319e+00 4.599305315821880e+00 9.235108826196378e+03 + 106460 1.050662975312854e+00 -6.029188679902552e+00 -5.994911488469557e+00 3.519627951839515e+00 4.716452889426002e+00 9.201442797101881e+03 + 106480 1.030473782183092e+00 -5.981755171782851e+00 -6.028877163620118e+00 3.786853333650078e+00 4.516271564415817e+00 9.305904331851314e+03 + 106500 1.017453277908669e+00 -5.947790932210066e+00 -6.000924811388154e+00 4.003100947145302e+00 4.697997990463491e+00 9.219877593014953e+03 + 106520 1.053309832071358e+00 -5.987666597784955e+00 -6.011298139135475e+00 3.748891096535181e+00 4.613195129131291e+00 9.251764921732920e+03 + 106540 1.018222475911422e+00 -5.924562883877633e+00 -6.039652573788025e+00 4.061636749136019e+00 4.400773939598591e+00 9.339176789930914e+03 + 106560 1.013464965020376e+00 -5.909919474581240e+00 -6.041302000064256e+00 4.121479176995491e+00 4.367060384291902e+00 9.344256663350348e+03 + 106580 9.844133247863015e-01 -5.863233457603733e+00 -6.046448895862099e+00 4.413135065774862e+00 4.361083666797883e+00 9.360178556207748e+03 + 106600 1.125416983430933e+00 -6.075255138716305e+00 -5.999918356949862e+00 3.287025047531765e+00 4.719620506763979e+00 9.216795849454071e+03 + 106620 9.800715477619264e-01 -5.869947742509009e+00 -6.041206231557272e+00 4.453444727245820e+00 4.470051980965166e+00 9.343909836229263e+03 + 106640 1.029588968893795e+00 -5.959349476580119e+00 -6.004987079848184e+00 3.899596822081879e+00 4.637538641720369e+00 9.232344652929683e+03 + 106660 1.022254327582659e+00 -5.970233234101824e+00 -6.020706799327738e+00 3.832939726135303e+00 4.543112703849133e+00 9.280740237377804e+03 + 106680 9.965355126400648e-01 -5.965104866034972e+00 -5.941566216773464e+00 3.906658027104028e+00 5.041820593757807e+00 9.038533081418669e+03 + 106700 9.479628593460430e-01 -5.927678978703296e+00 -5.986089229611181e+00 4.052874109948442e+00 4.717473410278248e+00 9.174344544058591e+03 + 106720 9.878409278179748e-01 -6.021256381872699e+00 -5.971148482427555e+00 3.609341725776504e+00 4.897069038562901e+00 9.128663947215771e+03 + 106740 9.647110309369963e-01 -6.018001732827750e+00 -5.967821478471147e+00 3.642180237663950e+00 4.930323023548831e+00 9.118525483468955e+03 + 106760 9.604231182053869e-01 -6.036884988571060e+00 -5.963847823138037e+00 3.504041709011469e+00 4.923432415392709e+00 9.106371562011018e+03 + 106780 9.736867778859050e-01 -6.075594685329187e+00 -5.989027965507365e+00 3.207768120032773e+00 4.704847621406271e+00 9.183404580552089e+03 + 106800 9.795415132308126e-01 -6.096826615164590e+00 -5.962035909409321e+00 3.170790576249405e+00 4.944779667490458e+00 9.100858470586558e+03 + 106820 9.894382069230255e-01 -6.118007711210336e+00 -5.948688875928790e+00 3.097255843703330e+00 5.069510797895051e+00 9.060207518109615e+03 + 106840 9.057082121109746e-01 -5.994644186546645e+00 -5.998203036569234e+00 3.718495248821341e+00 4.698059781261373e+00 9.211527333998798e+03 + 106860 9.614243924928710e-01 -6.072036770849369e+00 -5.974693082391124e+00 3.287626659641437e+00 4.846589182655785e+00 9.139513090363642e+03 + 106880 8.971395128714829e-01 -5.963404945218473e+00 -5.995774060921979e+00 3.916889829849984e+00 4.731021358375988e+00 9.204072774653916e+03 + 106900 9.769633277999034e-01 -6.061600047073168e+00 -5.973592390015140e+00 3.380673213551451e+00 4.886026799519565e+00 9.136153269336550e+03 + 106920 9.996030982500095e-01 -6.067535171167483e+00 -5.992098081647992e+00 3.351345638054198e+00 4.784517079926990e+00 9.192809421459837e+03 + 106940 9.961132400025762e-01 -6.026717034631110e+00 -6.008191161989968e+00 3.565849814874314e+00 4.672228242449277e+00 9.242221262949888e+03 + 106960 9.927340165485766e-01 -5.985321353492718e+00 -5.986912034500752e+00 3.757245746205049e+00 4.748111809699827e+00 9.176884891120773e+03 + 106980 9.628829649058479e-01 -5.901797315336555e+00 -5.968719722633182e+00 4.256582835654033e+00 4.872304016747741e+00 9.121238303566755e+03 + 107000 1.035623542086244e+00 -5.969908569662390e+00 -5.973372281569028e+00 3.902069884983050e+00 4.882180715207451e+00 9.135469905314814e+03 + 107020 1.040463477715462e+00 -5.944795300796596e+00 -6.014082338694076e+00 3.994302165921851e+00 4.596445272180055e+00 9.260318213693703e+03 + 107040 1.028995969339478e+00 -5.908268852783031e+00 -6.036716175863561e+00 4.181015786146869e+00 4.443451379859461e+00 9.330113421030928e+03 + 107060 1.060418468978558e+00 -5.949454771801792e+00 -6.039644242617989e+00 3.979006525754543e+00 4.461124627552444e+00 9.339168239717023e+03 + 107080 1.067358594524347e+00 -5.963302441117300e+00 -6.003665256699011e+00 3.926532052373307e+00 4.694762519177596e+00 9.228292031604615e+03 + 107100 1.046465022092181e+00 -5.939672592289149e+00 -6.002337059283807e+00 4.014763247609567e+00 4.654934180831312e+00 9.224221157301861e+03 + 107120 1.012526109890912e+00 -5.899048751600215e+00 -6.000476171656149e+00 4.268979910145166e+00 4.686567968341466e+00 9.218480488088304e+03 + 107140 1.013402051815730e+00 -5.910525471916527e+00 -5.971011637610404e+00 4.202778568845876e+00 4.855457645227744e+00 9.128250324522200e+03 + 107160 1.034846485581101e+00 -5.953628305613922e+00 -5.994487762161349e+00 3.997696812884353e+00 4.763075490408559e+00 9.200116976089483e+03 + 107180 1.059853327314974e+00 -6.005348015070615e+00 -6.045234537827042e+00 3.625557561559181e+00 4.396522975472324e+00 9.356444694381333e+03 + 107200 1.033869496297085e+00 -5.987168763006242e+00 -6.016240679998546e+00 3.801000965824209e+00 4.634065519589781e+00 9.266981375848542e+03 + 107220 9.852244150515118e-01 -5.939489289226330e+00 -6.040916542744863e+00 4.008549137321374e+00 4.426138151801200e+00 9.343073555526300e+03 + 107240 1.013844090905629e+00 -6.008857860171679e+00 -5.983553359254072e+00 3.715828849111109e+00 4.861131209238866e+00 9.166637908325800e+03 + 107260 1.015559189931036e+00 -6.035360735605936e+00 -5.994304437294349e+00 3.520826830314026e+00 4.756578448660789e+00 9.199576716182648e+03 + 107280 9.562147035292888e-01 -5.968588261113394e+00 -6.033625385572699e+00 3.854368096584470e+00 4.480914863476655e+00 9.320572722588442e+03 + 107300 1.009645328328452e+00 -6.068435037275876e+00 -6.024569467333023e+00 3.284591085847819e+00 4.536473976634690e+00 9.292642273383301e+03 + 107320 9.146252495894051e-01 -5.946411693569997e+00 -6.029012087130187e+00 4.052107648116526e+00 4.577803405924326e+00 9.306320843688811e+03 + 107340 9.476124149439484e-01 -6.010584724572748e+00 -6.016102941683059e+00 3.650506054713292e+00 4.618819598124547e+00 9.266547995034764e+03 + 107360 9.352784354037491e-01 -6.003318496229932e+00 -6.032538833766646e+00 3.683883021338430e+00 4.516095321369999e+00 9.317216343516187e+03 + 107380 9.634289084022633e-01 -6.053840888385078e+00 -6.018440986004136e+00 3.426568221902289e+00 4.629839939490844e+00 9.273767404826822e+03 + 107400 9.286616300454092e-01 -6.005530579178171e+00 -6.064546627614265e+00 3.670727953204970e+00 4.331848670380941e+00 9.416259615791734e+03 + 107420 1.003215887418894e+00 -6.118017065181470e+00 -5.996675051953654e+00 3.074624094809851e+00 4.771388712379833e+00 9.206865297882930e+03 + 107440 9.301043708199275e-01 -6.007777323993952e+00 -6.006412330996461e+00 3.687172121661652e+00 4.695010122685237e+00 9.236736319724539e+03 + 107460 9.650008131171328e-01 -6.052008588259855e+00 -5.971562596233691e+00 3.477948026538123e+00 4.939881361729387e+00 9.129958725290144e+03 + 107480 9.746960505523785e-01 -6.050257981041791e+00 -5.969421910235493e+00 3.499743969490750e+00 4.963917197402044e+00 9.123404346540037e+03 + 107500 9.920305436186564e-01 -6.046119734494104e+00 -5.973195914828948e+00 3.454869391236356e+00 4.873609248678301e+00 9.134947107580472e+03 + 107520 1.031405704983468e+00 -6.057409273160842e+00 -6.005083320822831e+00 3.398500513232424e+00 4.698964228972237e+00 9.232673277378311e+03 + 107540 1.071977350332108e+00 -6.064342191566416e+00 -5.971543666842836e+00 3.416849296873112e+00 4.949712786361202e+00 9.129895876120519e+03 + 107560 1.002352092257063e+00 -5.913223360314874e+00 -6.013460574697477e+00 4.166259053181369e+00 4.590681456537669e+00 9.258409923093333e+03 + 107580 1.030913570804215e+00 -5.916236382028281e+00 -5.985331175677985e+00 4.107513815612239e+00 4.710760818090878e+00 9.172064529596386e+03 + 107600 1.046466238711180e+00 -5.913922853027607e+00 -5.984306943857719e+00 4.138891835809319e+00 4.734735494359957e+00 9.168884991490551e+03 + 107620 1.014335211593006e+00 -5.849535038273675e+00 -6.027108696228034e+00 4.521053558892397e+00 4.501398135483707e+00 9.300409904671216e+03 + 107640 1.031454396975159e+00 -5.866833433289541e+00 -6.021246994063081e+00 4.444031587363989e+00 4.557365025981018e+00 9.282368124664270e+03 + 107660 1.083358212918603e+00 -5.944721045353601e+00 -6.027302978494619e+00 3.950463129907367e+00 4.476264890298788e+00 9.301047140077728e+03 + 107680 1.065461499434571e+00 -5.928001078585021e+00 -6.003024927353788e+00 4.107923092915081e+00 4.677124543381741e+00 9.226327214814457e+03 + 107700 1.031908663640041e+00 -5.893742237687064e+00 -6.009339961454102e+00 4.192824955195509e+00 4.529044936635240e+00 9.245738277363249e+03 + 107720 1.009508188437826e+00 -5.881089222381855e+00 -6.016720155963278e+00 4.265727785875058e+00 4.486913976431391e+00 9.268416545387792e+03 + 107740 1.108133266194467e+00 -6.050570405648134e+00 -5.995267527915063e+00 3.406565747755403e+00 4.724123429791367e+00 9.202520161477692e+03 + 107760 1.017707733793472e+00 -5.943948198197571e+00 -6.037929609689355e+00 3.996844037950534e+00 4.457188229588285e+00 9.333828164800503e+03 + 107780 1.017219874802220e+00 -5.972735933065588e+00 -5.983061200777406e+00 3.783106700196357e+00 4.723817415165080e+00 9.165123974842425e+03 + 107800 9.511000185736797e-01 -5.899872904094328e+00 -6.002330140693330e+00 4.279358913037360e+00 4.691033605279765e+00 9.224192855585610e+03 + 107820 1.052768950401667e+00 -6.072052565842713e+00 -5.999445588483018e+00 3.344356035269695e+00 4.761276535162496e+00 9.215341682580869e+03 + 107840 9.831247658223491e-01 -5.989328049267282e+00 -6.016447045152260e+00 3.727336411617765e+00 4.571614940595170e+00 9.267599714195072e+03 + 107860 1.030649498516089e+00 -6.076911480382435e+00 -5.958101945504277e+00 3.331403401972862e+00 5.013626136959347e+00 9.088848716758030e+03 + 107880 9.670326495097444e-01 -5.993502047794760e+00 -5.987159575070494e+00 3.728231837077242e+00 4.764651296954453e+00 9.177657547700615e+03 + 107900 9.888016930385305e-01 -6.030899506786955e+00 -5.989985455488316e+00 3.501930440163577e+00 4.736865254149339e+00 9.186309039551335e+03 + 107920 9.377144814251274e-01 -5.956644639386639e+00 -5.983851575064303e+00 3.909684051777829e+00 4.753457616856986e+00 9.167528349413118e+03 + 107940 9.787994130944463e-01 -6.015486795063946e+00 -5.996247978634480e+00 3.614481959460570e+00 4.724954220595786e+00 9.205542765617138e+03 + 107960 9.843281532585626e-01 -6.020525992922789e+00 -6.037916112942096e+00 3.587887628327494e+00 4.488030868064256e+00 9.333813053910340e+03 + 107980 1.006577759305637e+00 -6.049906694269257e+00 -6.027051088687731e+00 3.416211189734049e+00 4.547451613876703e+00 9.300292467510315e+03 + 108000 1.007792624113868e+00 -6.051173229009590e+00 -5.975072988625884e+00 3.430511950858073e+00 4.867491307615452e+00 9.140698595960317e+03 + 108020 9.578872610042295e-01 -5.973400339117703e+00 -6.031913058730502e+00 3.809164602480075e+00 4.473175511649285e+00 9.315258989736814e+03 + 108040 1.035394544563628e+00 -6.082945044763728e+00 -5.970581747959491e+00 3.276589751924552e+00 4.921797190338468e+00 9.126969521424789e+03 + 108060 1.007928862634063e+00 -6.035159387982256e+00 -6.026269745332783e+00 3.477362094634328e+00 4.528407798395355e+00 9.297887202563712e+03 + 108080 9.762552055751421e-01 -5.983386764989389e+00 -6.017754570160534e+00 3.813788855095873e+00 4.616443599402495e+00 9.271628634960389e+03 + 108100 9.661842206673655e-01 -5.963424634231467e+00 -5.981938205644773e+00 3.898271788399441e+00 4.791963996378322e+00 9.161687185122346e+03 + 108120 9.983894343341578e-01 -6.003552826818973e+00 -5.974216255353281e+00 3.652919290565791e+00 4.821374423741561e+00 9.138069492753268e+03 + 108140 9.918204197366139e-01 -5.985365584028045e+00 -5.986631483767994e+00 3.788027504392182e+00 4.780758512188047e+00 9.176051185022587e+03 + 108160 1.044218242419497e+00 -6.053045906028509e+00 -5.936193665618321e+00 3.445424861284752e+00 5.116408508545818e+00 9.022218183525503e+03 + 108180 1.049795191774055e+00 -6.046370800901839e+00 -5.986225236722342e+00 3.409262810041716e+00 4.754627947056360e+00 9.174794689781587e+03 + 108200 1.046629344324322e+00 -6.023613088810496e+00 -5.975790030657677e+00 3.603843614739521e+00 4.878451015247338e+00 9.142873346873555e+03 + 108220 1.034026386291538e+00 -5.979832161037760e+00 -5.994817183108070e+00 3.876179207270677e+00 4.790132891618283e+00 9.201131592581303e+03 + 108240 1.042748650185279e+00 -5.954753689730257e+00 -5.972206388978856e+00 3.963363666901098e+00 4.863147567019165e+00 9.131916574201899e+03 + 108260 1.058552655046172e+00 -5.925916149635347e+00 -5.968381135918399e+00 4.118913424849318e+00 4.875072902176639e+00 9.120247407986039e+03 + 108280 1.121228639765208e+00 -5.960510866769003e+00 -6.007732073870708e+00 3.977343474804459e+00 4.706191996168288e+00 9.240791226624277e+03 + 108300 1.119809421473405e+00 -5.912040140189669e+00 -6.009281403595688e+00 4.212513482700720e+00 4.654139100186479e+00 9.245548574075301e+03 + 108320 1.113724628032877e+00 -5.877409984722402e+00 -6.036560791810801e+00 4.350624349947770e+00 4.436755787138385e+00 9.329587536322269e+03 + 108340 1.091997171550659e+00 -5.833247581331335e+00 -6.006654288138211e+00 4.625160148769142e+00 4.629432003682910e+00 9.237466576421702e+03 + 108360 1.136432382695131e+00 -5.901194085098821e+00 -6.067150422643287e+00 4.222657682757301e+00 4.269710710916736e+00 9.424334697421924e+03 + 108380 1.101512320390406e+00 -5.867636369883865e+00 -6.029342995790868e+00 4.425536591651806e+00 4.496992121674306e+00 9.307339610666639e+03 + 108400 1.085866092475554e+00 -5.874114241931119e+00 -6.039171865442360e+00 4.403011681691066e+00 4.455225264904833e+00 9.337643073105202e+03 + 108420 1.046459234034156e+00 -5.856012742676384e+00 -6.036026687931843e+00 4.466510506924799e+00 4.432842576199960e+00 9.327947018098650e+03 + 108440 1.072581349394894e+00 -5.936241393588887e+00 -6.025493230587949e+00 3.970342623407929e+00 4.457844763682177e+00 9.295482492300893e+03 + 108460 1.138263056712605e+00 -6.075177556874140e+00 -5.990105094531449e+00 3.247273241067393e+00 4.735772484760123e+00 9.186705115655610e+03 + 108480 1.043526813056567e+00 -5.970696228775783e+00 -5.958964684950148e+00 3.889321676191568e+00 4.956686016288907e+00 9.091481146536702e+03 + 108500 9.910369997116812e-01 -5.917734707118197e+00 -6.031770501755411e+00 4.163961445622183e+00 4.509150265833111e+00 9.314802584518116e+03 + 108520 1.066360228787311e+00 -6.050117812948556e+00 -5.972036919260441e+00 3.383589081591321e+00 4.831941656127720e+00 9.131436365403984e+03 + 108540 9.935929381917005e-01 -5.960118640667429e+00 -6.000595589085390e+00 3.990072758695040e+00 4.757647857091582e+00 9.218878231269160e+03 + 108560 9.871101838038556e-01 -5.966371144721142e+00 -6.035431255289570e+00 3.875120351084051e+00 4.478566509182566e+00 9.326128842770582e+03 + 108580 9.988027618260510e-01 -5.998485314575362e+00 -6.022675865347211e+00 3.668298895532763e+00 4.529393009525171e+00 9.286817660012268e+03 + 108600 1.008983452209837e+00 -6.028763334400829e+00 -6.022137754317967e+00 3.497072351847761e+00 4.535117457988763e+00 9.285137544068237e+03 + 108620 9.633432379768454e-01 -5.975871408905777e+00 -6.004077066724016e+00 3.878419761373265e+00 4.716458509369494e+00 9.229561802513781e+03 + 108640 9.940138688488573e-01 -6.032284649167714e+00 -5.982738335166887e+00 3.590930254809717e+00 4.875432857069775e+00 9.164132591002854e+03 + 108660 9.413470609314988e-01 -5.962446714797154e+00 -6.069148927231059e+00 3.824436095432274e+00 4.211735479522778e+00 9.430567418916084e+03 + 108680 9.802546471809676e-01 -6.029451730653774e+00 -6.033706477991654e+00 3.473468260914199e+00 4.449036843280070e+00 9.320821398572063e+03 + 108700 1.027725079374186e+00 -6.109278824852630e+00 -5.972851519729304e+00 3.131610960347440e+00 4.914997658422822e+00 9.133905948194630e+03 + 108720 9.490397030800369e-01 -5.998855324861219e+00 -5.980155114859347e+00 3.793680379794549e+00 4.901059879473443e+00 9.156226630644516e+03 + 108740 1.005533854165843e+00 -6.086167705023220e+00 -5.995261894382292e+00 3.290874282801161e+00 4.812869515130106e+00 9.202509299772290e+03 + 108760 1.010690249427180e+00 -6.094657833179383e+00 -5.987690738573860e+00 3.208530691728950e+00 4.822752302058256e+00 9.179294819702964e+03 + 108780 9.780972571275032e-01 -6.043566516002691e+00 -6.014143392552100e+00 3.468346843741565e+00 4.637298971808496e+00 9.260530247554118e+03 + 108800 1.042822132245270e+00 -6.134134434489585e+00 -5.958270316878821e+00 3.023645003871175e+00 5.033483982076431e+00 9.089385316166117e+03 + 108820 9.840846975343055e-01 -6.037083821250082e+00 -5.973136644837989e+00 3.524140168356381e+00 4.891334751108182e+00 9.134750210665215e+03 + 108840 1.039330307557075e+00 -6.101680175406879e+00 -5.950679513766199e+00 3.163229312769438e+00 5.030298479187097e+00 9.066252246320968e+03 + 108860 1.023164587913385e+00 -6.049128019023454e+00 -5.988820307536959e+00 3.445397096546722e+00 4.791693308490370e+00 9.182763730873607e+03 + 108880 1.035348253794887e+00 -6.031856360273241e+00 -5.975833578930996e+00 3.524655196024047e+00 4.846346675988609e+00 9.143027422128192e+03 + 108900 1.047849406190153e+00 -6.011071695086987e+00 -5.988407637742141e+00 3.652764058119518e+00 4.782904582645161e+00 9.181462733942742e+03 + 108920 9.939360892313033e-01 -5.895164686623943e+00 -5.959024703577869e+00 4.232749909249451e+00 4.866055809594319e+00 9.091680178126682e+03 + 108940 9.846035156576868e-01 -5.847345415963871e+00 -6.004547916312609e+00 4.533700038318650e+00 4.631018954307886e+00 9.230977732204572e+03 + 108960 1.131999404142116e+00 -6.035638888288033e+00 -5.992156619310638e+00 3.475027203863869e+00 4.724709121191450e+00 9.193013372943025e+03 + 108980 1.096017075806334e+00 -5.963665985471895e+00 -6.027486368214948e+00 3.926841347343595e+00 4.560374833460671e+00 9.301619228888563e+03 + 109000 1.071374861047102e+00 -5.921857948150428e+00 -6.015731018560206e+00 4.102416160704106e+00 4.563382463600457e+00 9.265394335857378e+03 + 109020 1.050562903862386e+00 -5.893751274170635e+00 -6.044277118128194e+00 4.272204753457613e+00 4.407862063654240e+00 9.353439413579657e+03 + 109040 1.030824868618795e+00 -5.876447335507225e+00 -6.003043499914131e+00 4.353556674639528e+00 4.626621907921945e+00 9.226318264176107e+03 + 109060 1.033604778888065e+00 -5.896443473897992e+00 -6.001981862777876e+00 4.200120510219024e+00 4.594102749257833e+00 9.223115707474957e+03 + 109080 1.106161584843847e+00 -6.024640705380095e+00 -5.981279727269389e+00 3.604383666543284e+00 4.853369112944636e+00 9.159657024244645e+03 + 109100 1.033231964313396e+00 -5.946444455944334e+00 -5.985022142408062e+00 3.978900125120686e+00 4.757381079568274e+00 9.171120154750051e+03 + 109120 9.876269523613225e-01 -5.912758749375993e+00 -6.002815204743119e+00 4.165612512063252e+00 4.648494409153786e+00 9.225660814900870e+03 + 109140 9.796151764542128e-01 -5.931844692645702e+00 -5.982099219874360e+00 4.069923210678621e+00 4.781353938468713e+00 9.162147846492171e+03 + 109160 1.021348174001046e+00 -6.019637389525847e+00 -6.009377132987840e+00 3.558210638735395e+00 4.617126619546204e+00 9.245856325416176e+03 + 109180 9.864313636525568e-01 -5.991396330537551e+00 -5.977123925876591e+00 3.773089372892673e+00 4.855043729103388e+00 9.146955366778560e+03 + 109200 9.992648982807234e-01 -6.027899174426158e+00 -6.006238402199268e+00 3.493128981718361e+00 4.617508487838826e+00 9.236221513557526e+03 + 109220 9.507465321641018e-01 -5.967352609448267e+00 -6.032226782623255e+00 3.831138718120705e+00 4.458621176504074e+00 9.316240680955110e+03 + 109240 9.548286817300414e-01 -5.979306804057134e+00 -6.002111151387452e+00 3.832755142011990e+00 4.701809050679959e+00 9.223519369275626e+03 + 109260 9.884290972072315e-01 -6.031239611695623e+00 -5.998417654467362e+00 3.536534901644072e+00 4.725003659230216e+00 9.212179682770451e+03 + 109280 9.834151871276842e-01 -6.023228864207642e+00 -5.988179589223485e+00 3.587618917715255e+00 4.788877278532059e+00 9.180789194056677e+03 + 109300 1.036567230066173e+00 -6.099299641284405e+00 -5.969092106912140e+00 3.172381708223077e+00 4.920053520139447e+00 9.122413674791265e+03 + 109320 9.679578484946022e-01 -5.994821535565626e+00 -5.955430637689165e+00 3.785556734164111e+00 5.011745365492490e+00 9.080726422925220e+03 + 109340 9.834047512615318e-01 -6.010773621916060e+00 -5.992756886123724e+00 3.690851090318712e+00 4.794305975319160e+00 9.194808689848158e+03 + 109360 9.956012354549679e-01 -6.020395257324511e+00 -6.032364968766105e+00 3.595110540348468e+00 4.526378604943979e+00 9.316679226212851e+03 + 109380 1.035574043301788e+00 -6.073748789494447e+00 -5.979035061685106e+00 3.293287654735710e+00 4.837148536718955e+00 9.152819277393572e+03 + 109400 1.049760804198806e+00 -6.087578085236004e+00 -5.986472840591839e+00 3.236716455522052e+00 4.817278416254890e+00 9.175577657813748e+03 + 109420 9.719260724463334e-01 -5.965723519916740e+00 -6.025300589039885e+00 3.912868587505332e+00 4.570767837078582e+00 9.294854782955441e+03 + 109440 1.018402745089736e+00 -6.026247558939794e+00 -5.991254221683763e+00 3.603880223154861e+00 4.804817380880435e+00 9.190221520398311e+03 + 109460 1.031688983865043e+00 -6.035960991454697e+00 -6.017875043539446e+00 3.525445716562874e+00 4.629298028283642e+00 9.272016881826910e+03 + 109480 9.695572974172975e-01 -5.935224831957745e+00 -6.028537432430114e+00 4.063885587726064e+00 4.528070195735468e+00 9.304867234046753e+03 + 109500 1.046958420043960e+00 -6.041268065038963e+00 -5.966747106560950e+00 3.500767393702673e+00 4.928678269364481e+00 9.115262193163153e+03 + 109520 1.090270988978025e+00 -6.094005153086807e+00 -5.963218423968783e+00 3.208294571520252e+00 4.959292209296867e+00 9.104468293235275e+03 + 109540 1.056001632649307e+00 -6.030414463092251e+00 -5.979046115147068e+00 3.541763183585401e+00 4.836728186712794e+00 9.152820374194976e+03 + 109560 1.038119230920159e+00 -5.988574254866263e+00 -5.950733838970689e+00 3.760596148347378e+00 4.977881672205202e+00 9.066403931545228e+03 + 109580 9.961409078650649e-01 -5.904724053191584e+00 -6.020991573326426e+00 4.120340703945420e+00 4.452714610990567e+00 9.281590406996314e+03 + 109600 1.044063384520297e+00 -5.947882838518247e+00 -5.992967543522778e+00 3.961965887005273e+00 4.703082534033705e+00 9.195480245905896e+03 + 109620 1.040926480769991e+00 -5.914499821219776e+00 -6.032490720204770e+00 4.131191331741499e+00 4.453669330737056e+00 9.317051747331614e+03 + 109640 1.082920502438609e+00 -5.951819894174999e+00 -6.004862717078037e+00 3.931153508749376e+00 4.626573411289817e+00 9.231993134576624e+03 + 109660 1.101285479710887e+00 -5.956814861768744e+00 -6.004983057744803e+00 3.964771896596972e+00 4.688182661298205e+00 9.232363255924425e+03 + 109680 9.614922758609575e-01 -5.733609425866431e+00 -6.116121088020961e+00 5.150074121195966e+00 3.953632963616239e+00 9.576933789071985e+03 + 109700 1.120908431582197e+00 -5.962582493462538e+00 -6.085113253712576e+00 3.809731732313087e+00 4.106141145383499e+00 9.480161421407649e+03 + 109720 1.097393060345488e+00 -5.934305121976575e+00 -6.038324310847176e+00 4.020292379949858e+00 4.422998100537413e+00 9.335074432797139e+03 + 109740 1.092681619239138e+00 -5.945968135621014e+00 -6.029719149121877e+00 3.974578891968682e+00 4.493667612019275e+00 9.308520763876155e+03 + 109760 1.009753177740830e+00 -5.854682898398876e+00 -6.072259685509589e+00 4.434514598894657e+00 4.185155017405952e+00 9.440211450159039e+03 + 109780 1.075444735283184e+00 -5.995001613216040e+00 -6.036343419233195e+00 3.723795064966561e+00 4.486404017192250e+00 9.328969597355430e+03 + 109800 1.057200953712549e+00 -6.018515239191535e+00 -5.975649211794074e+00 3.653962732401921e+00 4.900106095214447e+00 9.142449499845799e+03 + 109820 9.805722317992877e-01 -5.946627074264720e+00 -5.972794562200851e+00 3.989798963415276e+00 4.839541198280342e+00 9.133719750508528e+03 + 109840 1.015715352061382e+00 -6.031256190303548e+00 -6.012091204594137e+00 3.536538821153576e+00 4.646587134868968e+00 9.254199966831578e+03 + 109860 9.619907781113367e-01 -5.975019128796051e+00 -5.998830724125251e+00 3.860446230761955e+00 4.723716365549219e+00 9.213452248074602e+03 + 109880 9.440077034901591e-01 -5.965222098330212e+00 -6.007552001501960e+00 3.918267297324530e+00 4.675202442781013e+00 9.240150764518095e+03 + 109900 9.968722559302153e-01 -6.053399207995785e+00 -5.963856878494955e+00 3.410451152029331e+00 4.924617064653805e+00 9.106425656319872e+03 + 109920 1.020975221889988e+00 -6.093652552225520e+00 -5.989361597218387e+00 3.159559685134366e+00 4.758414487758450e+00 9.184423665767075e+03 + 109940 9.383441653129642e-01 -5.972668072657545e+00 -6.037299545798763e+00 3.822484188034607e+00 4.451360267569582e+00 9.331908492685199e+03 + 109960 9.806844041357176e-01 -6.035170723412321e+00 -6.002684448274636e+00 3.494304317469482e+00 4.680845536544905e+00 9.225290837285782e+03 + 109980 9.990682038725238e-01 -6.060006076587285e+00 -6.016862246907406e+00 3.353712370048687e+00 4.601450916556614e+00 9.268888958842381e+03 + 110000 9.631202086231339e-01 -6.002809976250192e+00 -6.005874094880684e+00 3.659482645654700e+00 4.641888002307587e+00 9.235099313055865e+03 + 110020 9.611245720795852e-01 -5.992889822065468e+00 -6.029167078762120e+00 3.714905329490233e+00 4.506595707650733e+00 9.306803991990879e+03 + 110040 1.028797441788246e+00 -6.082550197076841e+00 -6.006945346122595e+00 3.248726519696023e+00 4.682861273688175e+00 9.238409922028004e+03 + 110060 9.564285780334373e-01 -5.963322714899195e+00 -6.021796413237201e+00 3.913529682973274e+00 4.577764658340870e+00 9.284100803583491e+03 + 110080 9.880434341624579e-01 -5.997711831766342e+00 -6.000700076132957e+00 3.697328671067393e+00 4.680169709484969e+00 9.219196545943134e+03 + 110100 1.006582698211794e+00 -6.008610629086927e+00 -5.955897690913901e+00 3.666002733469244e+00 4.968688581759587e+00 9.082142369547591e+03 + 110120 9.703057559663454e-01 -5.930624168494820e+00 -5.976929453119625e+00 4.057681504556312e+00 4.791789394521046e+00 9.146342408172206e+03 + 110140 9.953056376542930e-01 -5.935332666473962e+00 -6.000599330313023e+00 4.008693505870512e+00 4.633922222123035e+00 9.218893570221764e+03 + 110160 1.049229454858271e+00 -5.973942696374966e+00 -6.036600023041097e+00 3.783620349174940e+00 4.423832283268049e+00 9.329760769761608e+03 + 110180 1.098867978695782e+00 -6.008545090263895e+00 -6.015627252486264e+00 3.590544821860889e+00 4.549877950418982e+00 9.265098357703577e+03 + 110200 1.042750463624591e+00 -5.892782361032745e+00 -6.026762851277297e+00 4.315512578022556e+00 4.546175869624483e+00 9.299367593520377e+03 + 110220 1.040539562264942e+00 -5.863759916786565e+00 -6.037094860470078e+00 4.406341668111525e+00 4.411025597984946e+00 9.331250021292490e+03 + 110240 1.164386694726540e+00 -6.029659843564120e+00 -5.985794098563074e+00 3.489739213850266e+00 4.741623109848378e+00 9.173476536973532e+03 + 110260 1.040737856130779e+00 -5.839594558293899e+00 -6.003955851669151e+00 4.554378784994449e+00 4.610590803605803e+00 9.229149871023656e+03 + 110280 1.069364266719630e+00 -5.884105812880772e+00 -5.994664386278433e+00 4.306675526811829e+00 4.671831089478520e+00 9.200647304044049e+03 + 110300 1.022153390399829e+00 -5.824630657952319e+00 -6.039247674385905e+00 4.537422445217691e+00 4.305058324980089e+00 9.337816893700789e+03 + 110320 1.060252341070120e+00 -5.906430202909847e+00 -5.955022245587648e+00 4.213787169289402e+00 4.934764140639170e+00 9.079425504201674e+03 + 110340 9.718075340336209e-01 -5.808616145030516e+00 -5.958398620750480e+00 4.702556102329972e+00 4.842481947982733e+00 9.089744411220006e+03 + 110360 1.035841199206488e+00 -5.949997274765876e+00 -5.959092543180784e+00 3.991535721389297e+00 4.939309282662661e+00 9.091863519050732e+03 + 110380 9.592101952972271e-01 -5.893121712471011e+00 -6.037116964068937e+00 4.192550958686418e+00 4.365707940817960e+00 9.331316901176097e+03 + 110400 9.823608946914413e-01 -5.984098956251469e+00 -5.972999393487472e+00 3.820829036454195e+00 4.884564443496858e+00 9.134344232084615e+03 + 110420 1.013173491719513e+00 -6.070197521170530e+00 -5.982384214923600e+00 3.253394441209471e+00 4.757632034744567e+00 9.163045137024965e+03 + 110440 9.789675755060403e-01 -6.041473844331204e+00 -5.966118407472591e+00 3.474153674525200e+00 4.906856254183523e+00 9.113337991835855e+03 + 110460 9.635393994322432e-01 -6.029603505291371e+00 -5.989897223155870e+00 3.548134263204532e+00 4.776133879753887e+00 9.186065489485087e+03 + 110480 9.557648819367943e-01 -6.022256242455477e+00 -5.996924896745223e+00 3.634743117029118e+00 4.780199624110476e+00 9.207595312484467e+03 + 110500 9.932126860718657e-01 -6.077263082402734e+00 -5.960563230525356e+00 3.256708408586148e+00 4.926817017309768e+00 9.096398363139187e+03 + 110520 9.902805527745164e-01 -6.069673469241910e+00 -5.949725644403873e+00 3.356427662863234e+00 5.045186634949146e+00 9.063373686886463e+03 + 110540 9.744059797145493e-01 -6.037837112187655e+00 -5.972816523927847e+00 3.517516025508486e+00 4.890874305199823e+00 9.133790109034328e+03 + 110560 1.020632573977142e+00 -6.094825978984220e+00 -5.950030128109451e+00 3.227607768490226e+00 5.059047951298657e+00 9.064272976955621e+03 + 110580 9.452707107029774e-01 -5.967730345072841e+00 -5.970065934599813e+00 3.875500332425703e+00 4.862089015930521e+00 9.125381979718586e+03 + 110600 1.019309082590168e+00 -6.057618538966750e+00 -5.987130422045842e+00 3.436303166811051e+00 4.841056842171743e+00 9.177568719826830e+03 + 110620 1.040498609831277e+00 -6.069505008997652e+00 -5.978609027118043e+00 3.305807019328733e+00 4.827745813389181e+00 9.151501828353839e+03 + 110640 1.050254441300103e+00 -6.063025790303131e+00 -5.933299428676935e+00 3.395923821584967e+00 5.140832665132169e+00 9.013427220328911e+03 + 110660 9.385242646590549e-01 -5.875049096126494e+00 -5.996865651036645e+00 4.344321535441987e+00 4.644832026096958e+00 9.207425008825892e+03 + 110680 1.120336050463750e+00 -6.120194008725425e+00 -5.955580040295480e+00 3.058796599611662e+00 5.004035480265694e+00 9.081201558968443e+03 + 110700 1.013168626702572e+00 -5.939011869429478e+00 -6.068713813266038e+00 4.008094373429469e+00 4.263325740608999e+00 9.429174101791055e+03 + 110720 1.049917044662529e+00 -5.978379985072857e+00 -6.034786454499979e+00 3.780598703830197e+00 4.456704027506726e+00 9.324140410769545e+03 + 110740 1.054238104650073e+00 -5.975061910265833e+00 -6.006857467526606e+00 3.790618550278536e+00 4.608043540140594e+00 9.238117385861266e+03 + 110760 1.039079266365442e+00 -5.944270993740131e+00 -6.005999106233224e+00 4.029051312960261e+00 4.674598938630386e+00 9.235466367755716e+03 + 110780 1.031102060715087e+00 -5.930456790381017e+00 -5.999880637149993e+00 4.076276895731818e+00 4.677634424278790e+00 9.216674770957639e+03 + 110800 1.023358507127717e+00 -5.920963910074263e+00 -6.018916869700291e+00 4.105990386737712e+00 4.543529334393548e+00 9.275235357998505e+03 + 110820 1.006398373435532e+00 -5.904639725831286e+00 -6.049029161825150e+00 4.201478573127780e+00 4.372372087458009e+00 9.368152024239178e+03 + 110840 1.056623712262526e+00 -5.995788987273284e+00 -6.040980236985921e+00 3.698406877903321e+00 4.438911728730065e+00 9.343289900107935e+03 + 110860 9.972251628018030e-01 -5.939796761295446e+00 -6.039693907786966e+00 4.037506353737175e+00 4.463881479549405e+00 9.339297643212347e+03 + 110880 9.592198037513756e-01 -5.927998376000270e+00 -6.023345097382271e+00 4.067756317997795e+00 4.520260688964897e+00 9.288824255847814e+03 + 110900 9.829859962525145e-01 -6.015343280423327e+00 -5.964625489544034e+00 3.596064278488242e+00 4.887293682269918e+00 9.108761485294366e+03 + 110920 9.487454265804381e-01 -6.008173971532840e+00 -5.955185922102647e+00 3.649323551225095e+00 4.953589130927416e+00 9.079979551916234e+03 + 110940 9.511061768808465e-01 -6.044391439362661e+00 -5.984232366907107e+00 3.432620983961473e+00 4.778063687587642e+00 9.168720291183789e+03 + 110960 9.280361683028384e-01 -6.031496510747698e+00 -5.985596211973620e+00 3.568973306901607e+00 4.832539925510641e+00 9.172890537695592e+03 + 110980 9.571644751094749e-01 -6.085219419682263e+00 -6.020541633198145e+00 3.238361646122894e+00 4.609751504969811e+00 9.280217090040311e+03 + 111000 9.701796510896282e-01 -6.110312440209889e+00 -5.989433284400640e+00 3.123573427678453e+00 4.817680246324068e+00 9.184654312588777e+03 + 111020 8.866554673615273e-01 -5.986150088528996e+00 -5.980331904583704e+00 3.833984817101279e+00 4.867393729676204e+00 9.156759282664309e+03 + 111040 9.129432837482182e-01 -6.017205420973212e+00 -5.975712858737922e+00 3.596978092740746e+00 4.835234806049034e+00 9.142617143169262e+03 + 111060 9.844397404442903e-01 -6.109103420142434e+00 -5.975588438591988e+00 3.109072886493152e+00 4.875736571932434e+00 9.142249663007911e+03 + 111080 9.530121645318024e-01 -6.042888832669734e+00 -5.998043567538266e+00 3.449367877648631e+00 4.706876329815865e+00 9.211039492559135e+03 + 111100 9.388601685257981e-01 -5.998881586847782e+00 -6.028894772639929e+00 3.681934574775942e+00 4.509594217431943e+00 9.305958985014502e+03 + 111120 1.039301080855108e+00 -6.122801636773787e+00 -5.987763371704681e+00 3.048530434077743e+00 4.823941049208536e+00 9.179549669897227e+03 + 111140 9.976725214012743e-01 -6.037267850458187e+00 -6.026784643688584e+00 3.472919239415998e+00 4.533115434958059e+00 9.299455626035586e+03 + 111160 1.010210495071028e+00 -6.036294383893769e+00 -5.984181089376712e+00 3.488179901336651e+00 4.787422502959855e+00 9.168530397922417e+03 + 111180 1.072961264572328e+00 -6.110295207886670e+00 -5.952541988131110e+00 3.099949071011195e+00 5.005792471079484e+00 9.071941674169731e+03 + 111200 1.084464179555679e+00 -6.111632032482323e+00 -5.980612463580215e+00 3.101807911846479e+00 4.854142551695144e+00 9.157638050425259e+03 + 111220 9.869635172823698e-01 -5.957175455639652e+00 -5.998248762763737e+00 3.920145342303890e+00 4.684296056723655e+00 9.211662888969862e+03 + 111240 9.965816174347820e-01 -5.963003739288662e+00 -5.967820764741450e+00 3.866999167447280e+00 4.839339061865090e+00 9.118514726182397e+03 + 111260 1.012492559853653e+00 -5.977527193624980e+00 -6.018373124498855e+00 3.790678268627816e+00 4.556134612662652e+00 9.273513239211621e+03 + 111280 1.044198950156115e+00 -6.020191924151532e+00 -5.984378984572420e+00 3.605697593475097e+00 4.811341034572851e+00 9.169129088064741e+03 + 111300 1.054459500615011e+00 -6.033957098565745e+00 -5.985062684108192e+00 3.519905436222747e+00 4.800664730424198e+00 9.171236467575005e+03 + 111320 1.044117566225115e+00 -6.018336685541890e+00 -6.022463271968491e+00 3.588713785517875e+00 4.565018287669155e+00 9.286144370951868e+03 + 111340 1.007505103893710e+00 -5.969370771097360e+00 -6.030745118547811e+00 3.862968864398240e+00 4.510547863688177e+00 9.311681642167521e+03 + 111360 1.003108600947063e+00 -5.968499892922689e+00 -5.994778950783719e+00 3.843908504567358e+00 4.693010087658261e+00 9.201025415808104e+03 + 111380 1.026109068760264e+00 -6.006699294381491e+00 -5.980844906485678e+00 3.667614500320164e+00 4.816074396571518e+00 9.158325321700066e+03 + 111400 1.022221720199890e+00 -6.005759916069312e+00 -5.992151760070488e+00 3.686074965427411e+00 4.764215103027992e+00 9.192970161087935e+03 + 111420 1.011455582069984e+00 -5.995376897274902e+00 -6.024178160360436e+00 3.708988395426534e+00 4.543607085808336e+00 9.291430458242688e+03 + 111440 1.049441418826775e+00 -6.057864876194119e+00 -6.013256880236789e+00 3.405464655671109e+00 4.661610671523157e+00 9.257791986275162e+03 + 111460 9.259409645439901e-01 -5.881603604596744e+00 -6.073774150711185e+00 4.288176323837981e+00 4.184703309752961e+00 9.444901557642659e+03 + 111480 1.002707778261402e+00 -6.002832452463512e+00 -6.022819112622283e+00 3.653955973128906e+00 4.539189477571576e+00 9.287223079423437e+03 + 111500 1.030942942534271e+00 -6.051301508455206e+00 -5.996251029151487e+00 3.415384108086705e+00 4.731492479282798e+00 9.205530545727815e+03 + 111520 1.017076605906306e+00 -6.038812430825541e+00 -5.996189391896944e+00 3.485710396622934e+00 4.730458482044897e+00 9.205353913624833e+03 + 111540 9.581669740423234e-01 -5.959201878599954e+00 -5.982409826241014e+00 3.915453435103102e+00 4.782189808329846e+00 9.163141407581621e+03 + 111560 1.017243167536467e+00 -6.051299809532679e+00 -5.969155447472887e+00 3.433502016922745e+00 4.905187655669017e+00 9.122613020683193e+03 + 111580 9.985404819389064e-01 -6.025588545757175e+00 -5.987357899504442e+00 3.586073755266193e+00 4.805600042222777e+00 9.178262268420607e+03 + 111600 1.008792048849457e+00 -6.042945226690936e+00 -6.003842325118068e+00 3.388512934435357e+00 4.613047846421226e+00 9.228834083556603e+03 + 111620 9.527035071335349e-01 -5.961354796597604e+00 -6.001857780212208e+00 3.874979571285106e+00 4.642405171553591e+00 9.222764819781971e+03 + 111640 9.567940024678132e-01 -5.968390068410855e+00 -6.003901515742824e+00 3.858731864837364e+00 4.654819638878484e+00 9.229022193472048e+03 + 111660 9.581173145250579e-01 -5.969323047754853e+00 -5.994188871407019e+00 3.833245364397062e+00 4.690461957012550e+00 9.199218630461657e+03 + 111680 9.860414743856749e-01 -6.005292048093176e+00 -5.989622569448708e+00 3.641316580426408e+00 4.731293151646927e+00 9.185194623570149e+03 + 111700 9.720208343400414e-01 -5.970871799810975e+00 -5.970053003121384e+00 3.937489624098453e+00 4.942191281398458e+00 9.125328035345126e+03 + 111720 9.858731657196810e-01 -5.971944923805778e+00 -6.010844801838994e+00 3.839557267397587e+00 4.616188147994190e+00 9.250367258129694e+03 + 111740 1.094052766796290e+00 -6.107430667717488e+00 -6.006957755363690e+00 3.151718821167374e+00 4.728649832035826e+00 9.238423671803836e+03 + 111760 9.948237200526550e-01 -5.938078568608679e+00 -5.997890997550368e+00 4.042903115957722e+00 4.699450893031082e+00 9.210590194779254e+03 + 111780 1.024111349153304e+00 -5.961750377572186e+00 -5.995234298828848e+00 3.892964138077342e+00 4.700694280601520e+00 9.202407251249891e+03 + 111800 9.562867134152923e-01 -5.839928141745638e+00 -6.041869790167105e+00 4.522661802155428e+00 4.363081606550264e+00 9.346015868615308e+03 + 111820 1.098943820642986e+00 -6.033955834114106e+00 -5.982584797602132e+00 3.530697631355523e+00 4.825678072649489e+00 9.163655036731603e+03 + 111840 1.021547300916882e+00 -5.908117171073567e+00 -5.992935637187204e+00 4.109151670633766e+00 4.622110912594052e+00 9.195331669872787e+03 + 111860 1.016044433773751e+00 -5.892484894995535e+00 -5.932244639194563e+00 4.306123303678435e+00 5.077816699687089e+00 9.010172580651140e+03 + 111880 1.010193762774610e+00 -5.876438481149404e+00 -5.964775614857632e+00 4.371523695960843e+00 4.864278204080937e+00 9.109146124748642e+03 + 111900 1.042076674799578e+00 -5.918358405720140e+00 -5.982956954619455e+00 4.118932715653557e+00 4.747997851280552e+00 9.164795757627700e+03 + 111920 1.101951494215065e+00 -6.007415611572959e+00 -6.004720752524827e+00 3.626181024245934e+00 4.641655321928397e+00 9.231543827222811e+03 + 111940 1.004792366321632e+00 -5.872560238250436e+00 -6.041681369273295e+00 4.315288843621746e+00 4.344169137878045e+00 9.345428903623328e+03 + 111960 9.891020717787372e-01 -5.866245142782811e+00 -6.020520060679699e+00 4.403258612924962e+00 4.517388160394644e+00 9.280108879642445e+03 + 111980 9.646819048927249e-01 -5.853640718450563e+00 -5.970993329466038e+00 4.481444131807985e+00 4.807587279099266e+00 9.128133336030747e+03 + 112000 1.000273219659092e+00 -5.929848344088561e+00 -5.972209898524761e+00 4.085433511789398e+00 4.842186910787376e+00 9.131891542073889e+03 + 112020 9.952701196776318e-01 -5.949505154545768e+00 -5.994267959804791e+00 3.939901353309772e+00 4.682866398490739e+00 9.199464150612839e+03 + 112040 9.831876944776364e-01 -5.959890807245308e+00 -6.031307682457808e+00 3.898668027070153e+00 4.488581277874252e+00 9.313397451882627e+03 + 112060 9.986925748245677e-01 -6.013158067671665e+00 -6.039441758460333e+00 3.574334089785746e+00 4.423409069889217e+00 9.338501388157551e+03 + 112080 1.024807964931206e+00 -6.080964003575213e+00 -5.982509141959550e+00 3.300827486099337e+00 4.866170537337069e+00 9.163433476880036e+03 + 112100 9.105349109430816e-01 -5.937056575263398e+00 -6.021345737336064e+00 3.997510544095430e+00 4.513509131768506e+00 9.282694683514219e+03 + 112120 9.695689814673774e-01 -6.045278058805998e+00 -5.998874838368845e+00 3.484412889854644e+00 4.750867362479929e+00 9.213614808155491e+03 + 112140 9.719615719381105e-01 -6.066199815492920e+00 -5.991497518718614e+00 3.307013031569649e+00 4.735965179790782e+00 9.190962664530844e+03 + 112160 9.307661445110871e-01 -6.016556900162037e+00 -6.000640175986045e+00 3.589764946361679e+00 4.681161239685331e+00 9.218994746664614e+03 + 112180 9.325026572385275e-01 -6.021276309598633e+00 -5.997920141879403e+00 3.590055352044957e+00 4.724170081444048e+00 9.210656416039723e+03 + 112200 9.402788289074294e-01 -6.029942778492273e+00 -5.958940721581043e+00 3.545442476910298e+00 4.953147275227382e+00 9.091450997725506e+03 + 112220 9.576763992823876e-01 -6.046839152563926e+00 -5.997214110574713e+00 3.458877110045404e+00 4.743831780597896e+00 9.208513415867432e+03 + 112240 1.024740756907708e+00 -6.131991389337621e+00 -6.014747545824420e+00 3.010143687572192e+00 4.683375980451139e+00 9.262398758921778e+03 + 112260 9.563909277022600e-01 -6.015098945706922e+00 -6.032719628221789e+00 3.616988552438676e+00 4.515807866646501e+00 9.317766806810538e+03 + 112280 9.572464347817711e-01 -5.998678167964043e+00 -5.957998505583766e+00 3.741094235931784e+00 4.974683152476743e+00 9.088541376034618e+03 + 112300 9.674091504536828e-01 -5.985701144768317e+00 -5.997355367384297e+00 3.811714774649651e+00 4.744794424903574e+00 9.208926278138148e+03 + 112320 1.030455677508121e+00 -6.041472490241775e+00 -6.003241661392651e+00 3.470111429852910e+00 4.689638765306223e+00 9.227000766063065e+03 + 112340 9.259715049899636e-01 -5.845149207743500e+00 -6.025620199471966e+00 4.545599578502467e+00 4.509307216201907e+00 9.295862684805636e+03 + 112360 1.016585069843441e+00 -5.935024635957183e+00 -5.993456340837836e+00 3.983617054062429e+00 4.648093162360611e+00 9.196945472534971e+03 + 112380 1.073978301749934e+00 -5.972896972143639e+00 -5.967212972542041e+00 3.818121995498756e+00 4.850760400807230e+00 9.116666191331067e+03 + 112400 1.049150561338063e+00 -5.898346710420149e+00 -6.012681530182111e+00 4.214997520913197e+00 4.558469292583829e+00 9.256026383049046e+03 + 112420 1.072697518930334e+00 -5.910679058150886e+00 -6.006899492990800e+00 4.199049556439601e+00 4.646536929524644e+00 9.238239737732440e+03 + 112440 1.057502319052854e+00 -5.882167453298014e+00 -6.036873023796963e+00 4.339670629441702e+00 4.451327303027075e+00 9.330600341851663e+03 + 112460 1.080942491502997e+00 -5.918900218435718e+00 -6.106161044423470e+00 4.064727585682991e+00 3.989446944342151e+00 9.545819753619544e+03 + 112480 1.081764404404194e+00 -5.932614230413456e+00 -6.077612648683335e+00 4.029118237964473e+00 4.196514881826123e+00 9.456854094707858e+03 + 112500 1.052253105512939e+00 -5.907556846406853e+00 -6.019392671500177e+00 4.185554415741237e+00 4.543375801517366e+00 9.276677513339251e+03 + 112520 1.032434575247721e+00 -5.897393171625922e+00 -6.058819443713711e+00 4.201241459216261e+00 4.274306824253308e+00 9.398507687415284e+03 + 112540 1.030545415131917e+00 -5.920357767946715e+00 -6.063940979444839e+00 4.086653014671944e+00 4.262175994819551e+00 9.414385297975292e+03 + 112560 1.086067302305417e+00 -6.031175039114887e+00 -6.009718872193008e+00 3.519374192958451e+00 4.642578823754977e+00 9.246899930044869e+03 + 112580 1.058996149520414e+00 -6.021043951851968e+00 -6.003176345591795e+00 3.614574664025180e+00 4.717173224174222e+00 9.226783560073258e+03 + 112600 9.793396601989561e-01 -5.932216712257886e+00 -6.002587990548997e+00 4.084878919041159e+00 4.680796149173480e+00 9.224964165338599e+03 + 112620 1.004912867593625e+00 -5.995654603937886e+00 -6.028416876949773e+00 3.638560213030026e+00 4.450434171450405e+00 9.304497676896419e+03 + 112640 1.004089811051313e+00 -6.020515042384654e+00 -6.051469922625998e+00 3.558287702813945e+00 4.380539990215913e+00 9.375743901785163e+03 + 112660 9.645723670036118e-01 -5.989006032845529e+00 -5.974320488002284e+00 3.790109563759498e+00 4.874436234830127e+00 9.138380575555060e+03 + 112680 9.884977642803940e-01 -6.043358507795261e+00 -5.954227521119257e+00 3.426433439278175e+00 4.938237357747407e+00 9.077052807491404e+03 + 112700 9.319373496773289e-01 -5.972598627793422e+00 -5.994933681160363e+00 3.838944527040035e+00 4.710693194268723e+00 9.201491819772767e+03 + 112720 9.497699035251898e-01 -6.007924893935157e+00 -6.005452419322860e+00 3.632188662791269e+00 4.646385994629287e+00 9.233772803675696e+03 + 112740 9.659741553597003e-01 -6.035964785071886e+00 -6.002835984412339e+00 3.512736053932863e+00 4.702966753985311e+00 9.225745889049713e+03 + 112760 9.878459137632032e-01 -6.069517415971601e+00 -5.978534584907898e+00 3.352062733278227e+00 4.874500228793618e+00 9.151267776051283e+03 + 112780 9.267327416871275e-01 -5.976193519687730e+00 -6.030640305123512e+00 3.844602990198156e+00 4.531961122613078e+00 9.311363452010466e+03 + 112800 1.030988178292339e+00 -6.124332217241923e+00 -6.024827010025408e+00 2.979627921094329e+00 4.551002219312609e+00 9.293445646786044e+03 + 112820 9.573600814357989e-01 -6.005070676031893e+00 -5.999772476785472e+00 3.669592783018412e+00 4.700015862985047e+00 9.216356461911499e+03 + 112840 9.625066142590142e-01 -5.999313645800932e+00 -5.975394104244506e+00 3.742130623970168e+00 4.879480333124258e+00 9.141658172201494e+03 + 112860 1.000223116435450e+00 -6.035475408564502e+00 -6.011638484268660e+00 3.463992387933259e+00 4.600867695992094e+00 9.252805899575094e+03 + 112880 9.796775322300273e-01 -5.976215615227066e+00 -5.981427231922667e+00 3.803589224342494e+00 4.773663314781273e+00 9.160115322228879e+03 + 112900 1.045075282487091e+00 -6.036851775775834e+00 -5.993635544512214e+00 3.463841315747701e+00 4.711995603353579e+00 9.197515948709299e+03 + 112920 1.048386256654613e+00 -5.996244777719573e+00 -6.046708848945295e+00 3.681009601399425e+00 4.391237095131547e+00 9.360985715208475e+03 + 112940 1.070512408497728e+00 -5.989387822866028e+00 -5.994642261346851e+00 3.738666304127601e+00 4.708494505248989e+00 9.200608828311737e+03 + 112960 1.022283385531610e+00 -5.886939445506356e+00 -6.024126527743179e+00 4.272420778951791e+00 4.484671323115589e+00 9.291247688067033e+03 + 112980 1.115675866707718e+00 -6.002315706637216e+00 -6.014920685509095e+00 3.684365282262843e+00 4.611985542966334e+00 9.262900857708491e+03 + 113000 1.060335582351835e+00 -5.908139866673400e+00 -5.998519895613097e+00 4.173583672431638e+00 4.654607559995626e+00 9.212511049526458e+03 + 113020 1.034670112987123e+00 -5.867353379899839e+00 -6.019409363165813e+00 4.413821900247057e+00 4.540692913746470e+00 9.276715227762228e+03 + 113040 1.141237997598533e+00 -6.029430241886066e+00 -5.997439811172407e+00 3.495613069831209e+00 4.679307073492200e+00 9.209187221529104e+03 + 113060 1.055781843227094e+00 -5.914628454534479e+00 -6.024236306927694e+00 4.148217086546273e+00 4.518831836344092e+00 9.291593436316880e+03 + 113080 1.053783059944841e+00 -5.930180779357594e+00 -6.047270869252380e+00 4.068558972693975e+00 4.396209556885267e+00 9.362729368770046e+03 + 113100 1.041859784514301e+00 -5.936857472160328e+00 -6.042090870579051e+00 4.044925595778864e+00 4.440659137242784e+00 9.346714702184325e+03 + 113120 1.079676503534686e+00 -6.019700875152092e+00 -6.010748165792327e+00 3.615733691687245e+00 4.667141534258310e+00 9.250087480648757e+03 + 113140 1.047653370211837e+00 -5.998932750542533e+00 -6.042124081880833e+00 3.687025797822140e+00 4.439014489440697e+00 9.346827334422460e+03 + 113160 1.061478853278668e+00 -6.042996788701249e+00 -6.011250244469323e+00 3.513862036748704e+00 4.696155606490267e+00 9.251635312133261e+03 + 113180 9.773386402307768e-01 -5.937303601115458e+00 -6.030735758119216e+00 4.057373000202097e+00 4.520871096106948e+00 9.311629600985460e+03 + 113200 9.591626239526742e-01 -5.921650154052769e+00 -6.026521183069956e+00 4.127987753376452e+00 4.525802076020471e+00 9.298639362100696e+03 + 113220 1.045501026155711e+00 -6.058042673847188e+00 -6.005814390518827e+00 3.348485715733249e+00 4.648388600905424e+00 9.234916754292812e+03 + 113240 1.062387515565731e+00 -6.091272855442794e+00 -5.964204541816077e+00 3.210920071218257e+00 4.940565991820851e+00 9.107506990230444e+03 + 113260 1.032691929171520e+00 -6.054171417824201e+00 -5.954454391598771e+00 3.393944449889123e+00 4.966535045635477e+00 9.077771354326114e+03 + 113280 1.011860807162704e+00 -6.028263210383630e+00 -5.958312414939830e+00 3.598670383591397e+00 5.000338675880303e+00 9.089506320760129e+03 + 113300 9.601300087146339e-01 -5.953293501441658e+00 -5.987637308762626e+00 3.976000002018074e+00 4.778792545694070e+00 9.179132820528668e+03 + 113320 9.861743561700556e-01 -5.991146098974784e+00 -6.015228203995212e+00 3.754075165184242e+00 4.615791991463237e+00 9.263838293053153e+03 + 113340 1.051334803800843e+00 -6.088325229166065e+00 -5.981820782825997e+00 3.193558916580670e+00 4.805123928975144e+00 9.161335701550252e+03 + 113360 9.562684887234416e-01 -5.949354374167957e+00 -5.977655338012585e+00 3.986241936244888e+00 4.823733422289032e+00 9.148561663111115e+03 + 113380 9.803688533533917e-01 -5.985197739206146e+00 -5.960369633253324e+00 3.740569820497702e+00 4.883136647015786e+00 9.095780375162751e+03 + 113400 9.058467008821085e-01 -5.869285167229254e+00 -5.975712677969668e+00 4.479524910426859e+00 4.868401674151346e+00 9.142635395726602e+03 + 113420 1.020454566775255e+00 -6.029236701803288e+00 -6.020688044482607e+00 3.539784626989305e+00 4.588872340225105e+00 9.280676011377487e+03 + 113440 9.764899578355382e-01 -5.955350644038475e+00 -6.019236645994813e+00 3.905336091516145e+00 4.538492781956005e+00 9.276220823039212e+03 + 113460 1.001756547813290e+00 -5.982426240245941e+00 -6.057922556079553e+00 3.757750551901283e+00 4.324239023367566e+00 9.395665108339999e+03 + 113480 1.015196367003099e+00 -5.990564479473477e+00 -5.969063691067853e+00 3.733970041229139e+00 4.857430895490484e+00 9.122340691189223e+03 + 113500 1.042225537171450e+00 -6.016077711191711e+00 -5.985921560495115e+00 3.575495813705442e+00 4.748657097654534e+00 9.173872825731221e+03 + 113520 1.007319428514144e+00 -5.946725374094977e+00 -6.003418236148338e+00 3.982075667860210e+00 4.656536480757762e+00 9.227545059481952e+03 + 113540 1.050219067217656e+00 -5.989733901266715e+00 -6.025904823883949e+00 3.747126187631754e+00 4.539427152531409e+00 9.296750135214812e+03 + 113560 1.003340680244085e+00 -5.900939500241304e+00 -6.015415308884916e+00 4.195501414726739e+00 4.538163606420983e+00 9.264405088554324e+03 + 113580 1.022698701296181e+00 -5.909868150688153e+00 -5.987593712232410e+00 4.193811383902975e+00 4.747499181524073e+00 9.178987311308834e+03 + 113600 1.032740644715201e+00 -5.903379258879385e+00 -6.000433707116976e+00 4.203656646855347e+00 4.646354985947773e+00 9.218373224810033e+03 + 113620 1.047077432127802e+00 -5.906702091021727e+00 -6.007059782127608e+00 4.212156969808298e+00 4.635887577175825e+00 9.238708274640712e+03 + 113640 1.052955777376649e+00 -5.900340703230023e+00 -6.041548875597170e+00 4.181817500390880e+00 4.370978322764675e+00 9.345036322525064e+03 + 113660 1.038067852969595e+00 -5.869296930984168e+00 -6.055918359468057e+00 4.371771168167756e+00 4.300162046240543e+00 9.389493057526242e+03 + 113680 1.056589186956626e+00 -5.895449524631271e+00 -6.031407265817788e+00 4.257625785866979e+00 4.476935396581545e+00 9.313717935990524e+03 + 113700 1.050538345841123e+00 -5.895524532352146e+00 -6.044808932132742e+00 4.260273794575599e+00 4.403059669349215e+00 9.355113587131962e+03 + 113720 1.074885998847172e+00 -5.954350361887677e+00 -6.025857223326557e+00 3.914453707121072e+00 4.503850243087978e+00 9.296584508895930e+03 + 113740 1.053075397223026e+00 -5.954744155927774e+00 -6.001508083760733e+00 3.898295665235451e+00 4.629769954924154e+00 9.221686030258621e+03 + 113760 1.025585563791690e+00 -5.957370283479980e+00 -6.001640570047318e+00 3.900885532488576e+00 4.646678696214220e+00 9.222073916126019e+03 + 113780 8.998515792944268e-01 -5.816606662768066e+00 -6.027392709221391e+00 4.645075236218830e+00 4.434709138448574e+00 9.301294051286970e+03 + 113800 9.811905624752199e-01 -5.973878343877914e+00 -5.982605605038614e+00 3.835221682638848e+00 4.785108398514804e+00 9.163714929966771e+03 + 113820 9.934160151628730e-01 -6.021666903517557e+00 -5.997696693279383e+00 3.536254321636803e+00 4.673894978202444e+00 9.210002738143923e+03 + 113840 9.737065389766182e-01 -6.015403846106145e+00 -5.977399969508779e+00 3.644048051755810e+00 4.862272192258784e+00 9.147819552461540e+03 + 113860 9.419595028828395e-01 -5.983252814457114e+00 -5.986243341309979e+00 3.807917441058289e+00 4.790745373086603e+00 9.174864569835896e+03 + 113880 1.014161182161389e+00 -6.099633189523920e+00 -6.020831043642458e+00 3.124665725130521e+00 4.577159841374538e+00 9.281129047288558e+03 + 113900 9.425815441541968e-01 -6.000270028524186e+00 -6.055117291191817e+00 3.625014716736513e+00 4.310073246912506e+00 9.387038041916008e+03 + 113920 9.786022812600489e-01 -6.057628175858474e+00 -6.013084054052003e+00 3.371910455765320e+00 4.627689696358651e+00 9.257257672631400e+03 + 113940 9.867476542686633e-01 -6.068765361976183e+00 -6.000289986208443e+00 3.300645310957464e+00 4.693841515145977e+00 9.217953097546868e+03 + 113960 1.003422502165611e+00 -6.090572723931144e+00 -5.998975343525998e+00 3.197176461449330e+00 4.723142794384483e+00 9.213921152947407e+03 + 113980 9.627326098706298e-01 -6.025589447105665e+00 -6.001838292673305e+00 3.561306535963781e+00 4.697689340193664e+00 9.222713135366852e+03 + 114000 9.796489269414600e-01 -6.041866416395470e+00 -5.989062316660795e+00 3.448739692527652e+00 4.751949004612179e+00 9.183519440488215e+03 + 114020 9.346380606295448e-01 -5.962108933495319e+00 -5.987031048555338e+00 3.921498454817052e+00 4.778391813457584e+00 9.177270822845239e+03 + 114040 9.751387997110569e-01 -6.001678021620756e+00 -5.998260281481974e+00 3.658858094438387e+00 4.678483287208852e+00 9.211716054873848e+03 + 114060 9.860131812443126e-01 -5.991667307521560e+00 -6.027757424382947e+00 3.703877210246245e+00 4.496642174300626e+00 9.302456102718763e+03 + 114080 9.921474886988131e-01 -5.971054936866729e+00 -6.012756016254434e+00 3.824063149614919e+00 4.584609098549535e+00 9.256245319786511e+03 + 114100 1.019828524285505e+00 -5.976747753341808e+00 -6.044445306247016e+00 3.764883925489777e+00 4.376154100545620e+00 9.353989732692255e+03 + 114120 9.882021164453505e-01 -5.889493609194682e+00 -6.077097719552444e+00 4.256889331022283e+00 4.179637497705761e+00 9.455256473250043e+03 + 114140 1.030486584176072e+00 -5.916341212573789e+00 -6.062143370503573e+00 4.123738650521107e+00 4.286520096877266e+00 9.408800733404629e+03 + 114160 1.063359669427315e+00 -5.936238270127506e+00 -6.012069530042528e+00 4.047096240272996e+00 4.611661410991393e+00 9.254142593007815e+03 + 114180 1.050541370107577e+00 -5.893609155871461e+00 -6.025051878750728e+00 4.274310188340356e+00 4.519545732871980e+00 9.294108985563995e+03 + 114200 1.094432762963120e+00 -5.942923317653832e+00 -5.989601917072211e+00 4.032676581092327e+00 4.764640839742079e+00 9.185155980144298e+03 + 114220 1.088926875207340e+00 -5.925776214413763e+00 -6.010835869172358e+00 4.058571577960684e+00 4.570145877397798e+00 9.250367507081599e+03 + 114240 1.069264724042458e+00 -5.899449273746848e+00 -6.032158363066292e+00 4.229375104227945e+00 4.467338976690493e+00 9.315956349086206e+03 + 114260 1.083421741865366e+00 -5.933198956609873e+00 -5.972542681227511e+00 4.065550062417451e+00 4.839632307241267e+00 9.132938352588442e+03 + 114280 1.083022835165377e+00 -5.959972517503360e+00 -6.007257074784797e+00 3.918675217654094e+00 4.647159972482491e+00 9.239334848276543e+03 + 114300 1.082392150885630e+00 -6.012394619496114e+00 -6.009602066305315e+00 3.608715721067218e+00 4.624750993634994e+00 9.246561673501015e+03 + 114320 9.700264706495696e-01 -5.927630750787491e+00 -6.036043276474571e+00 4.120490663887840e+00 4.497969164608500e+00 9.328029763383518e+03 + 114340 9.954101226594214e-01 -6.040689383524455e+00 -5.947270380907034e+00 3.482128612807795e+00 5.018554982380966e+00 9.055872356505424e+03 + 114360 9.292239177038009e-01 -5.982980781215915e+00 -5.994091202285284e+00 3.761922049463488e+00 4.698124292351068e+00 9.198894668707511e+03 + 114380 9.619820502619039e-01 -6.049098354656472e+00 -6.000154781430158e+00 3.409741706612032e+00 4.690783278071005e+00 9.217523716071326e+03 + 114400 9.768387010777391e-01 -6.079741828497829e+00 -6.031865078037186e+00 3.283852798223473e+00 4.558768508271672e+00 9.315147493199109e+03 + 114420 9.629497813635184e-01 -6.064177752355752e+00 -6.009004013035639e+00 3.401914680615440e+00 4.718730829900094e+00 9.244738799006736e+03 + 114440 9.147826953136544e-01 -5.994525523149212e+00 -6.043154360747564e+00 3.713830790271474e+00 4.434596479493442e+00 9.349998078941147e+03 + 114460 9.553838963361226e-01 -6.051923662995337e+00 -5.992843193483983e+00 3.419891406634385e+00 4.759140605241692e+00 9.195092019792442e+03 + 114480 9.452436536673279e-01 -6.029178878870180e+00 -5.975355601258018e+00 3.512169287380464e+00 4.821230876554790e+00 9.141582582355402e+03 + 114500 9.823228282023926e-01 -6.070902426801348e+00 -5.956711942374866e+00 3.317638853818237e+00 4.973338286315450e+00 9.084652138583035e+03 + 114520 1.000876255782605e+00 -6.078013754265454e+00 -5.955857762718504e+00 3.264614436873646e+00 4.966053043914828e+00 9.082039300003080e+03 + 114540 1.014442520101913e+00 -6.073646691955214e+00 -5.978861084486212e+00 3.310197862950817e+00 4.854471489063180e+00 9.152267007072856e+03 + 114560 9.693961845560765e-01 -5.978953256507222e+00 -5.984412319966665e+00 3.853441256137522e+00 4.822094468966064e+00 9.169241941284421e+03 + 114580 1.007929287847707e+00 -6.009380052625222e+00 -5.989660196653920e+00 3.604205485988093e+00 4.717439950613154e+00 9.185339913007292e+03 + 114600 9.725695802139834e-01 -5.928041434326980e+00 -6.027440444911514e+00 4.070928579763370e+00 4.500164079039803e+00 9.301462623733027e+03 + 114620 1.043693670447073e+00 -6.006573145835667e+00 -5.991770925698002e+00 3.693262985818083e+00 4.778259624484720e+00 9.191797036355747e+03 + 114640 1.079952694695270e+00 -6.037249395428407e+00 -5.960907062360873e+00 3.549450785652990e+00 4.987820276064634e+00 9.097429239082783e+03 + 114660 9.383260575810518e-01 -5.809376018439686e+00 -6.023460614362256e+00 4.713333259374333e+00 4.484026380102784e+00 9.289186510785454e+03 + 114680 1.055856191665085e+00 -5.968635032042426e+00 -6.064488785176799e+00 3.851559257967372e+00 4.301152174149445e+00 9.416074901282713e+03 + 114700 1.087402687028027e+00 -6.008766321105809e+00 -6.031468567514963e+00 3.600792002171556e+00 4.470432190128915e+00 9.313916101339617e+03 + 114720 1.064652066092353e+00 -5.974993807848179e+00 -6.000377929022475e+00 3.786046499451994e+00 4.640286947489125e+00 9.218214015278099e+03 + 114740 1.006319703212765e+00 -5.893091868232040e+00 -6.011445934295292e+00 4.272232351077165e+00 4.592624988509443e+00 9.252194207029503e+03 + 114760 1.071149147041094e+00 -6.000529432815002e+00 -5.967311005429825e+00 3.672660602337353e+00 4.863405952918062e+00 9.116976053116683e+03 + 114780 1.016526094179888e+00 -5.934390990105738e+00 -6.004028110364219e+00 4.006024034276619e+00 4.606156913442891e+00 9.229398661319876e+03 + 114800 1.046816526885964e+00 -6.001060693738724e+00 -5.997184541812818e+00 3.627430759602520e+00 4.649688223793648e+00 9.208408159921230e+03 + 114820 1.013846254401766e+00 -5.981779559520774e+00 -6.019890306189137e+00 3.770930768939599e+00 4.552092963950869e+00 9.278222826777095e+03 + 114840 9.964909028261082e-01 -5.996423795028862e+00 -5.999685462779331e+00 3.676494015394494e+00 4.657765014429852e+00 9.216076650422887e+03 + 114860 9.723222901295113e-01 -6.002709096471598e+00 -6.002248431047660e+00 3.655093696980362e+00 4.657738909132361e+00 9.223920683375436e+03 + 114880 9.400416672204666e-01 -5.995245773632248e+00 -5.965695124989861e+00 3.739202590417953e+00 4.908886987870634e+00 9.112022044677051e+03 + 114900 9.510716716685754e-01 -6.041368257058982e+00 -5.972286449209109e+00 3.450129316652240e+00 4.846807747701426e+00 9.132180604290528e+03 + 114920 9.681076098745554e-01 -6.086575142489485e+00 -5.997171769049364e+00 3.224702423195043e+00 4.738070428615547e+00 9.208359732871302e+03 + 114940 9.239029819038312e-01 -6.032451052621890e+00 -6.038879119918727e+00 3.494118426333549e+00 4.457207469174907e+00 9.336769979537325e+03 + 114960 9.480145236825330e-01 -6.071989603815435e+00 -6.011606522188714e+00 3.273176789605037e+00 4.619905788557350e+00 9.252735812887746e+03 + 114980 9.765913709031915e-01 -6.112709121477099e+00 -5.998737288213675e+00 3.062756191339892e+00 4.717200095022669e+00 9.213191822856972e+03 + 115000 9.178963608371304e-01 -6.020827292474923e+00 -6.040121661787843e+00 3.548176375250645e+00 4.437385120861856e+00 9.340643001495084e+03 + 115020 9.241329626305060e-01 -6.020551123817016e+00 -6.017852294230958e+00 3.584223887318436e+00 4.599720984444112e+00 9.271947677248656e+03 + 115040 1.030702678947415e+00 -6.167277443705819e+00 -5.979512353629204e+00 2.738371741343185e+00 4.816547945116891e+00 9.154274337241171e+03 + 115060 8.892205839238039e-01 -5.944257832735749e+00 -5.981175709446179e+00 4.003795115143277e+00 4.791806954049037e+00 9.159352679028119e+03 + 115080 9.509065594376679e-01 -6.019452518676124e+00 -5.987881299725442e+00 3.604992694073274e+00 4.786279518918430e+00 9.179882611404017e+03 + 115100 1.022923552001368e+00 -6.108456411059230e+00 -6.010954280589351e+00 3.103844461030743e+00 4.663716782594715e+00 9.250711568894401e+03 + 115120 9.289438805474236e-01 -5.954300757429904e+00 -6.002013976914299e+00 3.932351804469786e+00 4.658375114593535e+00 9.223225970910233e+03 + 115140 1.015525836753969e+00 -6.068735540084957e+00 -5.980260312572714e+00 3.390255140412124e+00 4.898293588284629e+00 9.156527295758091e+03 + 115160 1.007834078863773e+00 -6.041232032873965e+00 -5.968182306532304e+00 3.494860377152448e+00 4.914323210214880e+00 9.119632628825573e+03 + 115180 9.715186788968777e-01 -5.972541205707669e+00 -6.018480680356728e+00 3.840614558254898e+00 4.576822985709279e+00 9.273845887553160e+03 + 115200 9.958129441781630e-01 -5.996397689835851e+00 -5.972069949272341e+00 3.745179390316250e+00 4.884873041337607e+00 9.131484518209043e+03 + 115220 1.013946942597300e+00 -6.010614831170975e+00 -5.969602480367017e+00 3.632129949919215e+00 4.867629214876313e+00 9.123935382373111e+03 + 115240 1.039725304555369e+00 -6.036923892259118e+00 -5.945281042448188e+00 3.516750523237585e+00 5.042977948537121e+00 9.049791565059724e+03 + 115260 9.610392101527505e-01 -5.910101206941224e+00 -5.977904796235226e+00 4.221064177604167e+00 4.831725475306480e+00 9.149319946515872e+03 + 115280 1.040537989738645e+00 -6.017121927489627e+00 -5.994330812608716e+00 3.605543708755364e+00 4.736413817315186e+00 9.199654132668147e+03 + 115300 1.010127554607323e+00 -5.964317136589941e+00 -5.978448919152290e+00 3.940914263131295e+00 4.859767380772000e+00 9.150987558602437e+03 + 115320 1.000125664603777e+00 -5.944416017618559e+00 -5.962404474578354e+00 3.995346188368585e+00 4.892053684800728e+00 9.101990618025296e+03 + 115340 9.931153703512151e-01 -5.927274894442545e+00 -6.009741719702250e+00 4.083007330843677e+00 4.609470058502484e+00 9.246960898617346e+03 + 115360 1.073291977693205e+00 -6.040532684162450e+00 -6.031359936546205e+00 3.469474878086019e+00 4.522146214376601e+00 9.313593265285479e+03 + 115380 1.048109919180904e+00 -6.004915350070904e+00 -6.041400414563447e+00 3.617605432700438e+00 4.408102546338775e+00 9.344599793286005e+03 + 115400 9.956468140184118e-01 -5.934075115563157e+00 -6.052339705344545e+00 4.006694119212904e+00 4.327600543302053e+00 9.378432410737096e+03 + 115420 1.045542016543026e+00 -6.020079738255394e+00 -5.966234939883172e+00 3.627778386925842e+00 4.936963551634754e+00 9.113689175149106e+03 + 115440 1.023036918712562e+00 -6.005575500060338e+00 -6.025634908647438e+00 3.674140004391016e+00 4.558955776100445e+00 9.295902868185583e+03 + 115460 1.041102068921217e+00 -6.066130058718468e+00 -5.970614857180006e+00 3.382650132749238e+00 4.931113200912749e+00 9.127079476031246e+03 + 115480 9.203568281206690e-01 -5.937358110427454e+00 -6.063543342792972e+00 4.028886514643566e+00 4.304311383299162e+00 9.413143861858012e+03 + 115500 1.012299057173040e+00 -6.138508526522807e+00 -5.975332757155782e+00 2.954050964756214e+00 4.891031483830373e+00 9.141493773589733e+03 + 115520 9.715557378186813e-01 -6.131440044079490e+00 -5.948343655893916e+00 2.975568484961382e+00 5.026936279997447e+00 9.059150696749442e+03 + 115540 9.118730019795683e-01 -6.074393014319377e+00 -5.933607904050456e+00 3.343420723767477e+00 5.151830613357022e+00 9.014379876483645e+03 + 115560 9.207773024323593e-01 -6.101102100523610e+00 -5.972926960673255e+00 3.167902713726190e+00 4.903904201785718e+00 9.134132008995457e+03 + 115580 9.105257102707112e-01 -6.088702938288703e+00 -5.973195826777962e+00 3.261031852617460e+00 4.924291561579876e+00 9.134945660869205e+03 + 115600 9.617326767236335e-01 -6.159179780951208e+00 -5.979350106266597e+00 2.890579478538781e+00 4.923189299130033e+00 9.153777756609581e+03 + 115620 9.042531741561836e-01 -6.060812914187831e+00 -6.013864067497362e+00 3.443164775607219e+00 4.712752318614437e+00 9.259677245368921e+03 + 115640 9.220299390906123e-01 -6.066738135501731e+00 -6.029076957483925e+00 3.338283811096729e+00 4.554540123323434e+00 9.306548153145890e+03 + 115660 9.639084238432762e-01 -6.103610004666057e+00 -6.030305842166404e+00 3.137563352987946e+00 4.558487197843437e+00 9.310341263178330e+03 + 115680 9.145255321660365e-01 -6.001427996233648e+00 -5.998315299153817e+00 3.695667806739961e+00 4.713541395060665e+00 9.211881409428577e+03 + 115700 9.553630288263529e-01 -6.031278051246264e+00 -6.000570034634242e+00 3.594715348471062e+00 4.771045531907507e+00 9.218806326931493e+03 + 115720 9.945925536684486e-01 -6.057798199341484e+00 -6.014929187218487e+00 3.384939433558139e+00 4.631099935126571e+00 9.262938358839685e+03 + 115740 1.021699971541656e+00 -6.070613011459958e+00 -5.975887170163594e+00 3.342474301828525e+00 4.886404741328811e+00 9.143173422459167e+03 + 115760 9.700031369192553e-01 -5.969538574021396e+00 -5.981816074809507e+00 3.857382858321078e+00 4.786883548858633e+00 9.161305689323661e+03 + 115780 9.988289257407426e-01 -5.990131029621454e+00 -5.995432031597927e+00 3.765402913306718e+00 4.734963739630405e+00 9.203041822547688e+03 + 115800 1.052188810888908e+00 -6.050853300296617e+00 -6.000421677675077e+00 3.399083329501546e+00 4.688669510862807e+00 9.218353398333911e+03 + 115820 1.000394795432823e+00 -5.961474652050136e+00 -6.018572811163777e+00 3.904024755551531e+00 4.576158290009444e+00 9.274133751460427e+03 + 115840 1.046020364870198e+00 -6.020010109996225e+00 -5.959430073031417e+00 3.608853199658400e+00 4.956713146640748e+00 9.092934509253093e+03 + 115860 1.034782571185651e+00 -5.996342500305641e+00 -5.979123811717315e+00 3.797170765355629e+00 4.896043139813241e+00 9.153063242848109e+03 + 115880 9.758561317877346e-01 -5.904028988817292e+00 -6.065155162062768e+00 4.197173080486555e+00 4.271961659516314e+00 9.418146942542193e+03 + 115900 1.062677934727908e+00 -6.030077912830269e+00 -6.047957521348196e+00 3.571521267162151e+00 4.468853788191737e+00 9.364843425822442e+03 + 115920 1.081859106295466e+00 -6.061972338223803e+00 -6.039273327423494e+00 3.363877716782011e+00 4.494218949457953e+00 9.338013419243680e+03 + 115940 9.822729082433367e-01 -5.924371721599683e+00 -6.060459688222817e+00 4.089102969013179e+00 4.307664805118370e+00 9.403582946778793e+03 + 115960 1.012957824766927e+00 -5.982550044872101e+00 -6.029521056387285e+00 3.784290604378152e+00 4.514575787517424e+00 9.307912425487641e+03 + 115980 9.396746395141170e-01 -5.889837349008130e+00 -6.062989449392319e+00 4.222877096021850e+00 4.228610940414900e+00 9.411427270345921e+03 + 116000 1.031122994718072e+00 -6.044249450151669e+00 -5.978454520717158e+00 3.483480248621340e+00 4.861284915166725e+00 9.151005894809241e+03 + 116020 9.354646733985654e-01 -5.924129573932783e+00 -6.014962313907153e+00 4.110404833343594e+00 4.588829184089675e+00 9.263015470176391e+03 + 116040 1.030500725489004e+00 -6.091069232017360e+00 -5.993189032585672e+00 3.201235132201953e+00 4.763278384250619e+00 9.196157722487349e+03 + 116060 9.038974239050119e-01 -5.935100148551932e+00 -6.057540246978618e+00 3.980274384780352e+00 4.277204392070320e+00 9.394541130046964e+03 + 116080 9.603086245563205e-01 -6.055080806287993e+00 -5.986830468423485e+00 3.421988336012981e+00 4.813892337736634e+00 9.176665692039935e+03 + 116100 9.513651409710076e-01 -6.081315534991525e+00 -5.996097801529330e+00 3.250767798613162e+00 4.740101211554721e+00 9.205083974735604e+03 + 116120 9.732466298336454e-01 -6.153925038795144e+00 -5.972502966546281e+00 2.865245762611055e+00 4.906999376438975e+00 9.132851135139987e+03 + 116140 9.087552142882209e-01 -6.093302374262454e+00 -5.966527192413406e+00 3.204334551733936e+00 4.932297264307158e+00 9.114587444245022e+03 + 116160 9.099161415141690e-01 -6.119813414145220e+00 -5.966023142919350e+00 3.017447384431484e+00 4.900534920777986e+00 9.113045712964693e+03 + 116180 8.945087717816963e-01 -6.109287518316867e+00 -5.936906726790745e+00 3.118484254954121e+00 5.108321435738388e+00 9.024374313240840e+03 + 116200 9.442702492243973e-01 -6.182475952947275e+00 -5.935906724154090e+00 2.764760376601816e+00 5.180599044797128e+00 9.021350887475619e+03 + 116220 8.854159564291245e-01 -6.082468994502046e+00 -5.996480450526134e+00 3.308289226710735e+00 4.802048752904602e+00 9.206244597715879e+03 + 116240 9.036437257243478e-01 -6.088056612303204e+00 -6.034085430972494e+00 3.188896328684172e+00 4.498807203898425e+00 9.322000641225130e+03 + 116260 9.312384602596577e-01 -6.100188858327566e+00 -6.018578053449547e+00 3.222751164646158e+00 4.691373035486981e+00 9.274188011780099e+03 + 116280 9.119513624836280e-01 -6.040993530577998e+00 -6.008796905818233e+00 3.450438866058345e+00 4.635316867840496e+00 9.244096667457005e+03 + 116300 9.503922175874270e-01 -6.068160574795234e+00 -6.004215902434363e+00 3.342873138108037e+00 4.710053342210228e+00 9.229991900236095e+03 + 116320 9.694570530875718e-01 -6.071954840489939e+00 -5.968731159605627e+00 3.328909412178663e+00 4.921635761629373e+00 9.121319205841346e+03 + 116340 9.172385735394100e-01 -5.975930271502030e+00 -5.987661946743875e+00 3.849655872959238e+00 4.782290778249688e+00 9.179186505018217e+03 + 116360 9.765769197059166e-01 -6.047699254058145e+00 -6.012339402589266e+00 3.449232002462557e+00 4.652273741516193e+00 9.254979434116043e+03 + 116380 1.061250450079728e+00 -6.161175771908096e+00 -5.983660453721100e+00 2.864550918137086e+00 4.883871345573527e+00 9.166986488932809e+03 + 116400 1.018380476412408e+00 -6.089173037608483e+00 -5.975936168469473e+00 3.260554958380084e+00 4.910778584325148e+00 9.143316923376000e+03 + 116420 9.426132546792290e-01 -5.968082801977380e+00 -5.958955050748362e+00 3.857004128806464e+00 4.909417088878424e+00 9.091473477394016e+03 + 116440 9.533238392850396e-01 -5.969158693430990e+00 -5.975431481322770e+00 3.856905639223822e+00 4.820886320438431e+00 9.141767957923632e+03 + 116460 1.030567402346188e+00 -6.064469809608874e+00 -6.012715032029179e+00 3.371759328516851e+00 4.668943270405409e+00 9.256129018983589e+03 + 116480 9.798044679210388e-01 -5.970773611552971e+00 -6.038131959350080e+00 3.832793616999505e+00 4.446011560277872e+00 9.334464675942681e+03 + 116500 1.021665062862286e+00 -6.016053228313108e+00 -6.012362116125058e+00 3.642291667003924e+00 4.663486604385472e+00 9.255036966653033e+03 + 116520 1.059721401741677e+00 -6.057713753944791e+00 -5.966636699588133e+00 3.382092033514646e+00 4.905070573759185e+00 9.114928294018418e+03 + 116540 1.020265898691243e+00 -5.986129155049865e+00 -5.968062657247517e+00 3.738263561832127e+00 4.842004187994711e+00 9.119255103104861e+03 + 116560 1.018987155163338e+00 -5.969628157823351e+00 -5.980931234672534e+00 3.837056926850036e+00 4.772152910436540e+00 9.158592954656555e+03 + 116580 9.630196950285493e-01 -5.871760839952514e+00 -5.985489775502384e+00 4.313443773629960e+00 4.660394626206705e+00 9.172564722253304e+03 + 116600 1.007853862377505e+00 -5.925468670412654e+00 -5.980933827388548e+00 4.120876973894704e+00 4.802387459333818e+00 9.158572455408967e+03 + 116620 1.027999273022305e+00 -5.942720599627634e+00 -5.961575480746031e+00 4.054882312195568e+00 4.946614667030309e+00 9.099457512313644e+03 + 116640 1.051012266785894e+00 -5.964490574057844e+00 -6.004642372790163e+00 3.848970723393814e+00 4.618412881602071e+00 9.231317273956935e+03 + 116660 1.069358629048443e+00 -5.984089386623952e+00 -6.023544518834824e+00 3.762161958572526e+00 4.535604483755720e+00 9.289470948138840e+03 + 116680 1.030723200462149e+00 -5.925157504185580e+00 -6.013246146460805e+00 4.065594384049453e+00 4.559775768431774e+00 9.257708360489298e+03 + 116700 1.064677497428799e+00 -5.976897741760316e+00 -6.021782587703358e+00 3.810142109254636e+00 4.552406377942233e+00 9.284017686560646e+03 + 116720 1.053431909935035e+00 -5.969008086774300e+00 -6.007164747993543e+00 3.834211712869211e+00 4.615110259424076e+00 9.239044620107488e+03 + 116740 1.019202071705839e+00 -5.936751041947703e+00 -6.015839729736149e+00 4.041286538402251e+00 4.587147054186119e+00 9.265709010932214e+03 + 116760 9.846562919879001e-01 -5.912487364498100e+00 -6.011375373325551e+00 4.119300061850528e+00 4.551469812293397e+00 9.251965824402665e+03 + 116780 9.990828682814556e-01 -5.967851934907188e+00 -5.978517796218746e+00 3.859978311109554e+00 4.798733284921882e+00 9.151219367246362e+03 + 116800 9.625785040160860e-01 -5.953987595225881e+00 -5.999382392243342e+00 3.931938094408617e+00 4.671274145112221e+00 9.215126213861276e+03 + 116820 9.621214874782613e-01 -5.993322725926472e+00 -5.947194562347585e+00 3.686240485073444e+00 4.951115538653657e+00 9.055650081906022e+03 + 116840 9.395934667930859e-01 -5.991854408149713e+00 -5.949831094655862e+00 3.769632724077421e+00 5.010937093245857e+00 9.063676772117529e+03 + 116860 9.301236941968620e-01 -6.000833611241911e+00 -5.979386316687211e+00 3.658157756296570e+00 4.781311440587762e+00 9.153881690926941e+03 + 116880 9.479532360604741e-01 -6.042749686270877e+00 -5.949307828546516e+00 3.509093077457403e+00 5.045650684591436e+00 9.062078997674256e+03 + 116900 9.561257927371727e-01 -6.062039846005219e+00 -5.977709160746405e+00 3.379186792956477e+00 4.863426637843956e+00 9.148723679338884e+03 + 116920 9.276129248641349e-01 -6.021286847915617e+00 -6.014267775660543e+00 3.538092806027338e+00 4.578397405113893e+00 9.260914158091413e+03 + 116940 9.510795173945297e-01 -6.052522060911524e+00 -6.026200100035365e+00 3.387940740133729e+00 4.539085512794913e+00 9.297666942854925e+03 + 116960 1.019845104360306e+00 -6.146899968077982e+00 -5.994478259281532e+00 2.866974850124708e+00 4.742203889217126e+00 9.200127906495523e+03 + 116980 9.756781087407516e-01 -6.071723755635213e+00 -5.987901635880116e+00 3.310282088969493e+00 4.791601672034371e+00 9.179962188692736e+03 + 117000 9.281734251934216e-01 -5.985707700554117e+00 -6.025820514553638e+00 3.779199934544983e+00 4.548865949121833e+00 9.296494952279943e+03 + 117020 9.432781024730112e-01 -5.988946390547442e+00 -5.967503209163304e+00 3.822867181271656e+00 4.945997247100969e+00 9.117554767328484e+03 + 117040 9.583512798227373e-01 -5.986573502704617e+00 -6.013298236303530e+00 3.718972500455430e+00 4.565514944491309e+00 9.257902787041034e+03 + 117060 9.882685792889527e-01 -5.998234510687446e+00 -5.983913436038632e+00 3.733254872848073e+00 4.815488699660704e+00 9.167720978088997e+03 + 117080 1.019522954614620e+00 -6.008095744380225e+00 -5.989631725885376e+00 3.664306646126833e+00 4.770329897621882e+00 9.185245978483676e+03 + 117100 1.022742762008697e+00 -5.973591559650266e+00 -6.007460328340685e+00 3.786783460489525e+00 4.592303749494124e+00 9.239978452914109e+03 + 117120 1.066197529122326e+00 -6.007176109228332e+00 -6.014353996465731e+00 3.643914818209212e+00 4.602698278917607e+00 9.261158831768915e+03 + 117140 9.881006967305728e-01 -5.869820476717267e+00 -6.034678817315542e+00 4.399316556402081e+00 4.452674452941031e+00 9.323798062799246e+03 + 117160 1.030539830652059e+00 -5.918659995682388e+00 -6.007462112918757e+00 4.082850316285435e+00 4.572934817030973e+00 9.239979174635508e+03 + 117180 1.131507780672809e+00 -6.062584660096896e+00 -5.983146977382847e+00 3.374884803360044e+00 4.831028270445782e+00 9.165392525640622e+03 + 117200 1.041524498291152e+00 -5.930995373058050e+00 -6.013987333462575e+00 4.120418072988906e+00 4.643865393381756e+00 9.260014118146810e+03 + 117220 1.076369914689623e+00 -5.988610258177175e+00 -6.022164913096231e+00 3.764174554713937e+00 4.571498533602655e+00 9.285205285436094e+03 + 117240 1.036074716018124e+00 -5.938800209731111e+00 -6.014466490743399e+00 4.061964684334772e+00 4.627477189443070e+00 9.261506344802534e+03 + 117260 1.055916133359598e+00 -5.981084700272936e+00 -5.969795488523319e+00 3.821349547303758e+00 4.886173948169929e+00 9.124577962959447e+03 + 117280 1.085826851155927e+00 -6.039298658340408e+00 -5.990179985643739e+00 3.528397137691285e+00 4.810444157405598e+00 9.186932668366620e+03 + 117300 1.049924832951427e+00 -6.001457273730221e+00 -5.987876012477180e+00 3.692035514309885e+00 4.770021218118234e+00 9.179864875685998e+03 + 117320 1.026470608705965e+00 -5.982980079470241e+00 -5.969502006146741e+00 3.856974600582915e+00 4.934367783331554e+00 9.123633021337715e+03 + 117340 9.672647171188222e-01 -5.912660858387021e+00 -6.034321630651412e+00 4.177794553625223e+00 4.479199572339424e+00 9.322673775456522e+03 + 117360 9.756341364402142e-01 -5.943987035462412e+00 -5.984313074083342e+00 4.018318619225488e+00 4.786760265029796e+00 9.168931492484691e+03 + 117380 9.609231430044249e-01 -5.938329974135836e+00 -5.993719327118356e+00 3.999815381952074e+00 4.681761145651766e+00 9.197767197717025e+03 + 117400 1.012353333885247e+00 -6.028035347910292e+00 -6.025025220488160e+00 3.519195750072419e+00 4.536480367546011e+00 9.294032582776907e+03 + 117420 9.489457129313001e-01 -5.951327763350410e+00 -6.037901255242147e+00 3.935758455786677e+00 4.438640068139752e+00 9.333764056221191e+03 + 117440 9.445708759223884e-01 -5.960462189745360e+00 -5.990033745173322e+00 3.910733876302713e+00 4.740929428851942e+00 9.186471787454446e+03 + 117460 9.434124395959006e-01 -5.972933806267852e+00 -6.014846898821684e+00 3.855114146697268e+00 4.614442683223055e+00 9.262685556169990e+03 + 117480 1.029768241905908e+00 -6.111558884935205e+00 -6.005455998739332e+00 3.119073227050341e+00 4.728332418955617e+00 9.233822365403106e+03 + 117500 9.769086919284679e-01 -6.044436604032393e+00 -6.016985916727016e+00 3.444257145916046e+00 4.601883240403650e+00 9.269291867398664e+03 + 117520 9.495039240236921e-01 -6.016010333128997e+00 -6.000226774942446e+00 3.625453953918314e+00 4.716085587523223e+00 9.217724808022625e+03 + 117540 9.526195578239912e-01 -6.030288880329453e+00 -5.946567081999487e+00 3.539158773361602e+00 5.019902295278685e+00 9.053726143636381e+03 + 117560 9.494611283781205e-01 -6.030262580279608e+00 -6.005351518132177e+00 3.547331480145391e+00 4.690374653970347e+00 9.233481450800808e+03 + 117580 1.014718524817938e+00 -6.128983842882715e+00 -5.979754026246431e+00 3.035136986286402e+00 4.892037686651443e+00 9.155014271050281e+03 + 117600 9.611138220754462e-01 -6.047053126315208e+00 -5.980688542331185e+00 3.444807528132988e+00 4.825883239255432e+00 9.157873727707443e+03 + 117620 9.305216831465826e-01 -5.993248371506033e+00 -6.014324861220105e+00 3.769225379941452e+00 4.648200914427006e+00 9.261058161889214e+03 + 117640 9.107588512095844e-01 -5.946925572839532e+00 -6.021597790088206e+00 3.934252666080675e+00 4.505473239150512e+00 9.283451962906158e+03 + 117660 1.016245166873432e+00 -6.074942049556149e+00 -6.008733797041549e+00 3.272143457659779e+00 4.652321489292579e+00 9.243889726021271e+03 + 117680 9.971917289794366e-01 -6.010328255578628e+00 -6.003668020504919e+00 3.650134736154496e+00 4.688378836615781e+00 9.228308466474928e+03 + 117700 1.002784871478584e+00 -5.981739123559359e+00 -6.009413428589382e+00 3.823969782984129e+00 4.665059640916876e+00 9.245969654489380e+03 + 117720 9.621637078652987e-01 -5.881890020335275e+00 -6.027270993673513e+00 4.301841383107339e+00 4.467041336566264e+00 9.300938370291207e+03 + 117740 1.057303598394193e+00 -5.989826227045024e+00 -5.977559459356325e+00 3.788376130882235e+00 4.858813809226908e+00 9.148280814540913e+03 + 117760 1.097135339569717e+00 -6.020186507280268e+00 -6.049025313325066e+00 3.552091849656148e+00 4.386494962556105e+00 9.368162550400513e+03 + 117780 1.071756202961003e+00 -5.966251253205427e+00 -6.055453358625384e+00 3.862280203858887e+00 4.350067910556293e+00 9.388048637247737e+03 + 117800 1.037176040786494e+00 -5.908744485813752e+00 -6.028937634025489e+00 4.188231469395703e+00 4.498063812534339e+00 9.306089888485878e+03 + 117820 1.075759116551152e+00 -5.965853979292499e+00 -5.998193602889000e+00 3.987517445788413e+00 4.801818322556727e+00 9.211474672851486e+03 + 117840 1.070607953867520e+00 -5.964283839229544e+00 -6.007079325810753e+00 3.918557710889191e+00 4.672819404359745e+00 9.238731971347552e+03 + 117860 1.039447639050331e+00 -5.929758603858235e+00 -5.982729653722780e+00 4.024977051983665e+00 4.720809086417975e+00 9.164115693955537e+03 + 117880 1.068408093274025e+00 -5.989968063481235e+00 -6.015422446177435e+00 3.733812854573883e+00 4.587649850079311e+00 9.264451853673787e+03 + 117900 1.023459730636067e+00 -5.949148726159465e+00 -5.995437999351856e+00 4.001604361595851e+00 4.735804191683266e+00 9.203043321360605e+03 + 117920 1.003054202357790e+00 -5.948800062575615e+00 -5.972594525933745e+00 3.994270277794433e+00 4.857638787010742e+00 9.133094934464398e+03 + 117940 1.076917366829456e+00 -6.088786576298965e+00 -5.964100204487521e+00 3.204130494649304e+00 4.920098936744292e+00 9.107175796394788e+03 + 117960 1.009426187367396e+00 -6.020740769972001e+00 -6.027229171985465e+00 3.521448741060190e+00 4.484191332621911e+00 9.300833541108872e+03 + 117980 1.014827856588094e+00 -6.061274947502712e+00 -5.948051444965946e+00 3.334212609600082e+00 4.984359482446584e+00 9.058267320256322e+03 + 118000 9.420980345017893e-01 -5.977968347201312e+00 -5.948668310896842e+00 3.832805054055274e+00 5.001050396681507e+00 9.060130285236870e+03 + 118020 9.837295717468644e-01 -6.055151513391166e+00 -6.001384680721821e+00 3.329633040309653e+00 4.638370513887495e+00 9.221283360198864e+03 + 118040 9.782051809392583e-01 -6.055202942855638e+00 -5.995236865284065e+00 3.393384875188118e+00 4.737719372324602e+00 9.202442127096840e+03 + 118060 9.559909420029702e-01 -6.026317118631438e+00 -6.001352603293189e+00 3.534398705902113e+00 4.677748816220605e+00 9.221202978377753e+03 + 118080 9.238141632561442e-01 -5.979620603081838e+00 -6.010121193926098e+00 3.723199822880957e+00 4.548060710302043e+00 9.248158249304743e+03 + 118100 9.979148898100610e-01 -6.086689492092995e+00 -5.962499461601903e+00 3.224047436948022e+00 4.937165810372981e+00 9.102285822517053e+03 + 118120 9.769872407937902e-01 -6.049696249430857e+00 -5.979424703704497e+00 3.404133601360963e+00 4.807643691408279e+00 9.153984049710158e+03 + 118140 9.793709248393203e-01 -6.045969914860280e+00 -5.979208569559630e+00 3.415412460245272e+00 4.798766436246402e+00 9.153316131159811e+03 + 118160 1.002414579182424e+00 -6.071321047123855e+00 -5.923079617888055e+00 3.359727487332926e+00 5.210952714291926e+00 8.982407725626086e+03 + 118180 1.015529007713820e+00 -6.079627504034958e+00 -5.965796408722426e+00 3.275775659715338e+00 4.929411424304970e+00 9.112337458670465e+03 + 118200 1.022392795794095e+00 -6.078764418991238e+00 -5.975417341579708e+00 3.238645726677692e+00 4.832080638083239e+00 9.141727582228285e+03 + 118220 9.778784698854838e-01 -6.002185319677536e+00 -5.986589954703676e+00 3.677422685290088e+00 4.766973684344918e+00 9.175922169632327e+03 + 118240 9.979285547587164e-01 -6.019132853946044e+00 -5.998169743537391e+00 3.618979914151881e+00 4.739353338149218e+00 9.211434319934260e+03 + 118260 1.089079418958326e+00 -6.142852912115839e+00 -5.992341065775150e+00 2.919298871848323e+00 4.783561185169506e+00 9.193558712780239e+03 + 118280 9.723092668712437e-01 -5.961022814789755e+00 -5.988601516911356e+00 3.934870114141792e+00 4.776508938769194e+00 9.182092018853768e+03 + 118300 9.692718435207140e-01 -5.948706314787096e+00 -6.003359192557741e+00 3.962023505639698e+00 4.648198223975152e+00 9.227371899182259e+03 + 118320 1.067300327405891e+00 -6.085716046620246e+00 -5.963438281250569e+00 3.260324768838095e+00 4.962462620013818e+00 9.105168114403667e+03 + 118340 9.728126005290900e-01 -5.938882982793743e+00 -5.998592789101565e+00 4.015958993984291e+00 4.673096046102115e+00 9.212727288069087e+03 + 118360 9.814526449021093e-01 -5.944494223342439e+00 -5.992145882008586e+00 4.001720819002280e+00 4.728097620870920e+00 9.192923329940139e+03 + 118380 9.921478534320984e-01 -5.950389696021507e+00 -5.974723118284781e+00 3.976611072735090e+00 4.836884796514446e+00 9.139582185971842e+03 + 118400 1.010401258800639e+00 -5.965707088893630e+00 -5.972399359322573e+00 3.888145122788756e+00 4.849717070360267e+00 9.132511605908041e+03 + 118420 1.050587751236012e+00 -6.013236617280777e+00 -5.992408649773625e+00 3.639456146407920e+00 4.759053558951538e+00 9.193781078405975e+03 + 118440 1.078314853473278e+00 -6.042669081472455e+00 -6.005134810633665e+00 3.514116910894562e+00 4.729644502460532e+00 9.232803449364910e+03 + 118460 1.017494142855952e+00 -5.941862066362143e+00 -6.007142172646444e+00 4.066918096552222e+00 4.692069624203967e+00 9.238971323829601e+03 + 118480 1.031951075304278e+00 -5.950067276874099e+00 -6.006618397524604e+00 3.997235465938611e+00 4.672510179905776e+00 9.237361239541915e+03 + 118500 1.054041145044973e+00 -5.965482643987206e+00 -6.003684819156160e+00 3.907656081204672e+00 4.688293279617039e+00 9.228349960772388e+03 + 118520 1.048793168176856e+00 -5.939214742410094e+00 -5.985933567856311e+00 4.032596584286137e+00 4.764329858859091e+00 9.173915945698560e+03 + 118540 1.054153602811155e+00 -5.929835092273697e+00 -6.001512751920159e+00 4.082343216331571e+00 4.670759002559604e+00 9.221676326117520e+03 + 118560 1.085196723945278e+00 -5.959692983144486e+00 -6.030263363992542e+00 3.846535802354050e+00 4.441309754793366e+00 9.310203030581588e+03 + 118580 1.092905293433655e+00 -5.963177097091521e+00 -5.980750697804705e+00 3.871022049203449e+00 4.770111714402422e+00 9.158035535673986e+03 + 118600 1.026287713762927e+00 -5.862589072550952e+00 -5.947405517758163e+00 4.471575264385752e+00 4.984546110703464e+00 9.056221868025001e+03 + 118620 1.017164762353730e+00 -5.852226759885884e+00 -5.952100325753303e+00 4.526712307818545e+00 4.953222837223454e+00 9.070581475234592e+03 + 118640 1.136201678471912e+00 -6.036298063753472e+00 -5.978305344100320e+00 3.505676126666087e+00 4.838679297258846e+00 9.150567320456552e+03 + 118660 1.099069701063826e+00 -6.000562567931905e+00 -5.974617186858535e+00 3.715726479872807e+00 4.864708873030846e+00 9.139295175139892e+03 + 118680 1.033981159695554e+00 -5.930506354926416e+00 -6.027464204860655e+00 4.056558994198462e+00 4.499812015697278e+00 9.301534394957895e+03 + 118700 1.046543833173818e+00 -5.983549236656355e+00 -6.032149148038920e+00 3.793573199148902e+00 4.514504987178229e+00 9.315992497428817e+03 + 118720 1.053252613339676e+00 -6.033588315554017e+00 -6.006508741740481e+00 3.533035069686660e+00 4.688530173074488e+00 9.237031103220352e+03 + 118740 1.008937525338601e+00 -6.005421193875164e+00 -6.035155532631322e+00 3.625112710704530e+00 4.454373536192620e+00 9.325305186813741e+03 + 118760 9.099581511919945e-01 -5.892254248965719e+00 -6.086034533702428e+00 4.198601759794542e+00 4.085885377434213e+00 9.483078692276613e+03 + 118780 9.549841630875712e-01 -5.986494189027875e+00 -6.014575240503912e+00 3.763319674116149e+00 4.602073931012074e+00 9.261845650001322e+03 + 118800 1.014678487630373e+00 -6.095526601897840e+00 -5.983151604543771e+00 3.179508562237563e+00 4.824783187019266e+00 9.165404545506113e+03 + 118820 9.702460890570785e-01 -6.044969650804069e+00 -5.990796540895104e+00 3.479456138753800e+00 4.790526519112740e+00 9.188812266370735e+03 + 118840 9.858588712870096e-01 -6.078167013849701e+00 -5.988690210891744e+00 3.257115961995059e+00 4.770905611070153e+00 9.182379324832718e+03 + 118860 9.503060875717455e-01 -6.030981765418757e+00 -5.970917185641836e+00 3.533909804920747e+00 4.878809916963508e+00 9.127953039879714e+03 + 118880 9.456103758226696e-01 -6.023145373312403e+00 -5.947624917927842e+00 3.604966989923136e+00 5.038617131493981e+00 9.056942849617995e+03 + 118900 9.758390046689390e-01 -6.060941368963034e+00 -5.979246556590564e+00 3.373271776279659e+00 4.842376031153738e+00 9.153435862346154e+03 + 118920 9.693666716480097e-01 -6.039155629609008e+00 -5.987114823880209e+00 3.471405976536767e+00 4.770232336320188e+00 9.177542697363317e+03 + 118940 9.859090056180350e-01 -6.046992975794071e+00 -5.983580854819138e+00 3.472754801065881e+00 4.836877012697950e+00 9.166715838309789e+03 + 118960 9.973112360294156e-01 -6.041343677529918e+00 -6.032212650161722e+00 3.475254181428369e+00 4.527685953598468e+00 9.316185251520847e+03 + 118980 9.643172442073773e-01 -5.969953585231655e+00 -6.001295126004094e+00 3.875643628179499e+00 4.695675650976392e+00 9.221025431532829e+03 + 119000 1.010798279598468e+00 -6.012401787947985e+00 -6.006323496920235e+00 3.598290268706536e+00 4.633192756400370e+00 9.236481850053413e+03 + 119020 1.038385722126180e+00 -6.021563724664233e+00 -6.038044233817327e+00 3.582525719443091e+00 4.487892085535478e+00 9.334201792140433e+03 + 119040 1.051090879994447e+00 -6.012660994003246e+00 -5.980453874930634e+00 3.685092833918517e+00 4.870031095669022e+00 9.157114168562588e+03 + 119060 9.598228858088401e-01 -5.851129606608113e+00 -6.032008933129174e+00 4.473462925659010e+00 4.434825841789764e+00 9.315547118208333e+03 + 119080 1.076436631287748e+00 -5.997764636036068e+00 -5.989333703103078e+00 3.701655750498773e+00 4.750067472082657e+00 9.184345137009488e+03 + 119100 1.064166321921262e+00 -5.954718344693816e+00 -6.021181882950155e+00 3.897480449646486e+00 4.515836527779284e+00 9.282196206310859e+03 + 119120 1.043352933884672e+00 -5.906020635271991e+00 -6.036969487324697e+00 4.219781129839683e+00 4.467852557083683e+00 9.330878459458816e+03 + 119140 1.044786143378554e+00 -5.895997614982479e+00 -6.013166131372079e+00 4.216517611621923e+00 4.543717858743526e+00 9.257509286909048e+03 + 119160 1.041430907256811e+00 -5.884147374428856e+00 -6.030298273892747e+00 4.301017589074577e+00 4.461796507574319e+00 9.310279383851135e+03 + 119180 1.030272975805293e+00 -5.868321362019465e+00 -6.044049964012157e+00 4.350067372067814e+00 4.341006545512506e+00 9.352764149385443e+03 + 119200 1.097097710296557e+00 -5.979554698160427e+00 -5.983761351536383e+00 3.866589681285990e+00 4.842434426623738e+00 9.167255656666495e+03 + 119220 1.008526806230827e+00 -5.878916090911440e+00 -6.072075422308485e+00 4.240585004702059e+00 4.131434232510303e+00 9.439633232113671e+03 + 119240 9.610544771865510e-01 -5.863452859960428e+00 -6.031977556040029e+00 4.460179384493041e+00 4.492484500491531e+00 9.315446377716273e+03 + 119260 1.090909483116227e+00 -6.117342769475410e+00 -5.951332893439723e+00 3.085131932857665e+00 5.038386330999874e+00 9.068257372687727e+03 + 119280 9.748718208942341e-01 -5.999073985028591e+00 -6.000216400146201e+00 3.748809032357737e+00 4.742249107964259e+00 9.217700561077776e+03 + 119300 9.849194729624058e-01 -6.052316567072485e+00 -5.974203321764358e+00 3.423683840916782e+00 4.872222183461695e+00 9.138045144371512e+03 + 119320 9.816753849971117e-01 -6.076028443957259e+00 -6.010869643214338e+00 3.293872021701144e+00 4.668023938858825e+00 9.250457076466922e+03 + 119340 9.939849460704197e-01 -6.114931531151451e+00 -6.006146138184731e+00 3.022658984193077e+00 4.647321545093138e+00 9.235953320039513e+03 + 119360 9.309371617626490e-01 -6.035977597850318e+00 -6.007530238155198e+00 3.493101057116877e+00 4.656450198700942e+00 9.240185300426856e+03 + 119380 1.008158355309710e+00 -6.159174553643037e+00 -5.974798849364122e+00 2.816915740369334e+00 4.875629566386892e+00 9.139866174215229e+03 + 119400 8.794411926872081e-01 -5.971450313439034e+00 -5.974899686500105e+00 3.856453227547429e+00 4.836646393641999e+00 9.140133361061518e+03 + 119420 9.440919293796489e-01 -6.063782786000915e+00 -5.945105073095391e+00 3.358048839107026e+00 5.039514631927260e+00 9.049288214782240e+03 + 119440 9.389686528989794e-01 -6.042905019183673e+00 -5.966176834696231e+00 3.479416561334961e+00 4.920001670310025e+00 9.113511787751444e+03 + 119460 9.368133053923515e-01 -6.017769312640489e+00 -5.993030718783301e+00 3.596098081222711e+00 4.738150915435717e+00 9.195661900274534e+03 + 119480 1.014984236213100e+00 -6.105592258197846e+00 -5.985471816179874e+00 3.113073874567822e+00 4.802824041213341e+00 9.172514673017195e+03 + 119500 9.978945142641790e-01 -6.048438271888010e+00 -6.009615083260899e+00 3.451411741076518e+00 4.674340498042412e+00 9.246592627297228e+03 + 119520 1.007440971008089e+00 -6.032693347091008e+00 -5.984916222391340e+00 3.521414936186707e+00 4.795758579698351e+00 9.170808839105413e+03 + 119540 1.046069880982660e+00 -6.061148104747552e+00 -5.987023456230411e+00 3.380492214641971e+00 4.806127417179686e+00 9.177257487990601e+03 + 119560 9.482920305956614e-01 -5.889088334287274e+00 -6.040435711952207e+00 4.282508908795816e+00 4.413448845312772e+00 9.341609858694357e+03 + 119580 1.049637140530521e+00 -6.017804539306545e+00 -5.961834010236220e+00 3.601930186567791e+00 4.923321625900982e+00 9.100254784628609e+03 + 119600 9.788295524870486e-01 -5.893379040997575e+00 -6.033314336435059e+00 4.222328636388701e+00 4.418798515069682e+00 9.319589840718390e+03 + 119620 1.065663352161337e+00 -6.006429312019749e+00 -6.002467521630189e+00 3.713856813330039e+00 4.736606026831977e+00 9.224638264842219e+03 + 119640 1.013039182266040e+00 -5.919029226798404e+00 -6.048627233973402e+00 4.135599483968107e+00 4.391427671542474e+00 9.366926492454428e+03 + 119660 1.025447719833507e+00 -5.933749485217553e+00 -6.048372165211725e+00 4.050446320926189e+00 4.392265154597252e+00 9.366139524490509e+03 + 119680 1.041247093471711e+00 -5.959777219958424e+00 -6.032024365806345e+00 3.905065809215564e+00 4.490211517547113e+00 9.315634128809752e+03 + 119700 1.034847841346528e+00 -5.959256062660050e+00 -6.056341114680052e+00 3.843643382968927e+00 4.286165990406834e+00 9.390830817313032e+03 + 119720 1.022978895469701e+00 -5.956028175769903e+00 -5.996047055182215e+00 3.975120960118478e+00 4.745326361631408e+00 9.204924072782196e+03 + 119740 1.008798988016486e+00 -5.952442148866107e+00 -6.002133673523078e+00 3.930920748932169e+00 4.645584324613253e+00 9.223600127632284e+03 + 119760 1.015058672695483e+00 -5.983619052638933e+00 -6.031899105987615e+00 3.778571600147131e+00 4.501340062504889e+00 9.315226744015275e+03 + 119780 1.038278375302158e+00 -6.049287116011947e+00 -5.966993682737451e+00 3.474623372738128e+00 4.947165001467924e+00 9.116012735483118e+03 + 119800 1.033857642322377e+00 -6.078056876241071e+00 -5.984923724770832e+00 3.275198581854303e+00 4.809983549905027e+00 9.170815758374491e+03 + 119820 1.007553277827977e+00 -6.079519333998724e+00 -5.973690846763567e+00 3.288279553869230e+00 4.895963104478977e+00 9.136471979499327e+03 + 119840 9.407307859018351e-01 -6.023123385677247e+00 -6.019870197857848e+00 3.574722628693218e+00 4.593402936581393e+00 9.278149399788770e+03 + 119860 9.284640044736524e-01 -6.040676112706596e+00 -5.962133756199496e+00 3.532955885145952e+00 4.983958250600116e+00 9.101162989254217e+03 + 119880 9.205410444224746e-01 -6.053502058245293e+00 -5.991206019477274e+00 3.439660832292857e+00 4.797374327179664e+00 9.190070002716637e+03 + 119900 9.305379406426773e-01 -6.082894968525999e+00 -6.001613015549546e+00 3.268445111568421e+00 4.735178663900786e+00 9.222008946978343e+03 + 119920 1.018397000235681e+00 -6.218699618248187e+00 -5.984494553125563e+00 2.491946370247904e+00 4.836788097298710e+00 9.169543914712178e+03 + 119940 8.695952001570944e-01 -5.997889287429587e+00 -6.013545573525435e+00 3.698434695429785e+00 4.608533877864980e+00 9.258673360755400e+03 + 119960 8.769058638850319e-01 -6.002123878321631e+00 -6.003705905432527e+00 3.660752328074337e+00 4.651668083585664e+00 9.228405976869475e+03 + 119980 9.637374908657271e-01 -6.118567504343105e+00 -5.986002363460525e+00 3.115135871143959e+00 4.876345424480983e+00 9.174096015193030e+03 + 120000 9.209981558754371e-01 -6.040433077089063e+00 -5.966829590857303e+00 3.532443357205042e+00 4.955085965250491e+00 9.115491800124808e+03 + 120020 9.797880787886686e-01 -6.112913259642029e+00 -5.953460904024221e+00 3.108351914551480e+00 5.023952015681216e+00 9.074735489647856e+03 + 120040 9.743944176061097e-01 -6.087200968794580e+00 -6.001055074460147e+00 3.255740674681015e+00 4.750403730983388e+00 9.220290380876953e+03 + 120060 9.474687770952763e-01 -6.030766420465625e+00 -5.996961943701987e+00 3.562696225803922e+00 4.756806762606599e+00 9.207703673565740e+03 + 120080 9.635269268957668e-01 -6.035608965680844e+00 -5.970364013092460e+00 3.569788363896104e+00 4.944434978282388e+00 9.126275253568247e+03 + 120100 9.624385443215485e-01 -6.010789523165797e+00 -6.015449127303000e+00 3.574677697616379e+00 4.547921529589146e+00 9.264530851209998e+03 + 120120 9.429753147628946e-01 -5.960321103667138e+00 -6.017826427054753e+00 3.877879756488266e+00 4.547675290676551e+00 9.271863411029826e+03 + 120140 1.011283470705997e+00 -6.039947070572763e+00 -6.004596662334468e+00 3.507322257931347e+00 4.710309772493631e+00 9.231156942238838e+03 + 120160 9.686997613663088e-01 -5.953692335014338e+00 -6.016348522818806e+00 3.943148627419296e+00 4.583367101032316e+00 9.267308785138475e+03 + 120180 9.575467862576477e-01 -5.917605124731979e+00 -6.012685184361512e+00 4.096141367449238e+00 4.550176951464779e+00 9.256041128199602e+03 + 120200 1.009273883636535e+00 -5.975776196210976e+00 -5.982071900968116e+00 3.857607746837805e+00 4.821456835865146e+00 9.162083510210643e+03 + 120220 1.055267590664103e+00 -6.025290571717587e+00 -6.029172668807332e+00 3.506169855756306e+00 4.483878253514404e+00 9.306830615803847e+03 + 120240 1.042067476728707e+00 -5.990434939449728e+00 -6.026099420437328e+00 3.719074215780396e+00 4.514283246889000e+00 9.297354808025775e+03 + 120260 1.052451334551856e+00 -5.998736109811297e+00 -5.963931078061558e+00 3.697696322909752e+00 4.897552201278009e+00 9.106650109225018e+03 + 120280 9.676878906314603e-01 -5.866906737372149e+00 -6.039372615822825e+00 4.395771356546885e+00 4.405445593474670e+00 9.338272547465192e+03 + 120300 1.117311893178922e+00 -6.086217585950841e+00 -5.968168946102103e+00 3.201906159424730e+00 4.879759717404163e+00 9.119587163442586e+03 + 120320 1.045454173127056e+00 -5.979253797872732e+00 -5.997459434441075e+00 3.781562440026092e+00 4.677022857537512e+00 9.209254314565045e+03 + 120340 9.842563899298871e-01 -5.894214840326756e+00 -6.008920980647911e+00 4.276184602532946e+00 4.617524194091028e+00 9.244440866961606e+03 + 120360 9.737463312282703e-01 -5.887872973783871e+00 -6.022923019989515e+00 4.275931757937270e+00 4.500453493697358e+00 9.287546518902631e+03 + 120380 1.029220987672513e+00 -5.986830238751084e+00 -5.998036692898388e+00 3.723771988763191e+00 4.659422794856197e+00 9.211033246133666e+03 + 120400 1.002827120413883e+00 -5.973252655240296e+00 -6.045427453706200e+00 3.818011529960804e+00 4.403572668155620e+00 9.357022716133644e+03 + 120420 9.639577355682480e-01 -5.952947851042214e+00 -6.029260597378479e+00 3.989212996795939e+00 4.551013397973772e+00 9.307067238504931e+03 + 120440 1.012280707697841e+00 -6.072498928945050e+00 -5.986487059857646e+00 3.329749445557663e+00 4.823642908151260e+00 9.175623033831549e+03 + 120460 9.874503432452649e-01 -6.085600243596560e+00 -6.032029678908675e+00 3.256037968868100e+00 4.563648441324029e+00 9.315645596976066e+03 + 120480 9.252910434772046e-01 -6.037201844175397e+00 -6.026647092763229e+00 3.479351130217347e+00 4.539958146168515e+00 9.299026710336042e+03 + 120500 9.150355233516013e-01 -6.051466504401152e+00 -5.989027262500842e+00 3.421884790812624e+00 4.780420580245660e+00 9.183396415137446e+03 + 120520 9.760963414276158e-01 -6.156408370841838e+00 -5.954839088525535e+00 2.855583909490911e+00 5.013025921296753e+00 9.078937847956266e+03 + 120540 9.385484683364077e-01 -6.105433506033962e+00 -6.004384566216484e+00 3.151107804601957e+00 4.731346454306811e+00 9.230517248368167e+03 + 120560 8.717055688770080e-01 -6.004352848770867e+00 -5.991027886882756e+00 3.669629316224870e+00 4.746143309417590e+00 9.189529092084671e+03 + 120580 9.350214889771606e-01 -6.088597722753363e+00 -5.985533408578309e+00 3.239107963234598e+00 4.830919204378832e+00 9.172689670377735e+03 + 120600 9.943359768953216e-01 -6.158514300021742e+00 -5.955207757368503e+00 2.904014480725748e+00 5.071432110226445e+00 9.080061036663203e+03 + 120620 8.841508229924596e-01 -5.973607529397218e+00 -6.031767420260230e+00 3.781644693636285e+00 4.447681600086844e+00 9.314829873039698e+03 + 120640 9.205719322170441e-01 -6.001583695827840e+00 -6.021116380560878e+00 3.628690748616483e+00 4.516531050206183e+00 9.281991575026874e+03 + 120660 9.546310830259199e-01 -6.022225581024575e+00 -6.008074732029328e+00 3.602014370566023e+00 4.683270735333530e+00 9.241870486314605e+03 + 120680 9.951560055206431e-01 -6.053017697528349e+00 -6.008982999059275e+00 3.409515407543403e+00 4.662369460500389e+00 9.244664440962417e+03 + 120700 1.012288281652514e+00 -6.053772043943967e+00 -5.978283080007419e+00 3.479443584019345e+00 4.912912896822424e+00 9.150490674872572e+03 + 120720 9.600794945489532e-01 -5.956092586799816e+00 -5.988209364204148e+00 3.975702281038694e+00 4.791282775127777e+00 9.180863310283337e+03 + 120740 1.047628779227795e+00 -6.069073636025113e+00 -5.968289779626534e+00 3.296495881059358e+00 4.875212380751368e+00 9.119973694008871e+03 + 120760 1.035513017444710e+00 -6.037138218043567e+00 -6.037774146836355e+00 3.469674543284161e+00 4.466022941746306e+00 9.333378555054891e+03 + 120780 1.008474799565614e+00 -5.987885967553238e+00 -6.009014957184130e+00 3.764431094260363e+00 4.643105166099206e+00 9.244755752452011e+03 + 120800 9.724837142560121e-01 -5.928632597216287e+00 -6.013511965243964e+00 4.092307207965970e+00 4.604916741711301e+00 9.258580077635992e+03 + 120820 1.018412070391606e+00 -5.991323155739472e+00 -6.049288088966235e+00 3.696619277390668e+00 4.363775660758170e+00 9.368980757211102e+03 + 120840 1.071720543868808e+00 -6.072127313261033e+00 -5.990281608638266e+00 3.279738168519700e+00 4.749708870045490e+00 9.187236198343313e+03 + 120860 9.771254852632453e-01 -5.934395356891880e+00 -5.985332950674254e+00 4.054790221061205e+00 4.762298674995649e+00 9.172068193105210e+03 + 120880 1.020295545876077e+00 -6.000802054279295e+00 -5.977939705323814e+00 3.662827322547933e+00 4.794106468187374e+00 9.149442339958128e+03 + 120900 1.010870967593513e+00 -5.988543638247435e+00 -5.975379352089120e+00 3.788371914581656e+00 4.863963282869403e+00 9.141633127721880e+03 + 120920 9.818725469189609e-01 -5.948088666301157e+00 -6.009042004493864e+00 3.990363624201452e+00 4.640360123800329e+00 9.244812656329439e+03 + 120940 1.064826977272341e+00 -6.075353705185368e+00 -5.984638145215103e+00 3.341733994257353e+00 4.862636777794151e+00 9.169943384489818e+03 + 120960 1.018812396298537e+00 -6.014703232459357e+00 -5.931087205805053e+00 3.647873688179973e+00 5.128009852767294e+00 9.006693960994402e+03 + 120980 9.281970365474588e-01 -5.887197828281196e+00 -5.969275907885022e+00 4.305795499370179e+00 4.834490464743241e+00 9.122922652963767e+03 + 121000 9.462889930615317e-01 -5.918451441209609e+00 -6.003188816106798e+00 4.081120969901743e+00 4.594545850175695e+00 9.226817984523535e+03 + 121020 1.027718548890943e+00 -6.044447185486071e+00 -5.978042726443164e+00 3.488484401178244e+00 4.869789081059446e+00 9.149777643455067e+03 + 121040 1.019972218795342e+00 -6.043436318641451e+00 -5.972010087100466e+00 3.502096769103955e+00 4.912237243785893e+00 9.131338920365988e+03 + 121060 1.004227123978435e+00 -6.032072816710746e+00 -5.971812872814963e+00 3.556364527611390e+00 4.902386450657153e+00 9.130732350794937e+03 + 121080 1.044059921152596e+00 -6.105423154946637e+00 -6.029249965784054e+00 3.132805176001399e+00 4.570203415935877e+00 9.307060417974271e+03 + 121100 9.478094492525492e-01 -5.982724273516702e+00 -6.038008073082357e+00 3.788218040677627e+00 4.470769908431302e+00 9.334106738223418e+03 + 121120 1.027326398255241e+00 -6.123847812586209e+00 -5.994122482061491e+00 3.032475912827512e+00 4.777378835630461e+00 9.199030305171029e+03 + 121140 9.417219026265300e-01 -6.019967508865978e+00 -5.977222094679924e+00 3.660077867009940e+00 4.905528650097729e+00 9.147250431548428e+03 + 121160 1.000198538869441e+00 -6.127367359576355e+00 -5.947372171081653e+00 3.047735615348059e+00 5.081295841850032e+00 9.056202012922608e+03 + 121180 9.473426956328034e-01 -6.063796616612604e+00 -6.010042402842043e+00 3.318906202646571e+00 4.627571216554833e+00 9.247912776980575e+03 + 121200 8.783689831293923e-01 -5.971783893969638e+00 -5.999178574812179e+00 3.903805802137828e+00 4.746501305426801e+00 9.214529442162067e+03 + 121220 9.569768166035227e-01 -6.091127469202522e+00 -5.971879351357930e+00 3.245218741650214e+00 4.929959887900462e+00 9.130941488479006e+03 + 121240 9.803391678671258e-01 -6.121629919075924e+00 -6.012086427909022e+00 3.081208763467636e+00 4.710224441548460e+00 9.254202003716455e+03 + 121260 9.355636203667588e-01 -6.046728121294513e+00 -6.025963948697035e+00 3.366949140237053e+00 4.486180232537099e+00 9.296931404074461e+03 + 121280 8.381343951644556e-01 -5.887366358456519e+00 -6.024098102138376e+00 4.259458425185199e+00 4.474323593795023e+00 9.291181247563085e+03 + 121300 1.009195478299509e+00 -6.115987116651512e+00 -5.988168016840021e+00 3.060096273875059e+00 4.794053324934412e+00 9.180792236244391e+03 + 121320 9.460881638219947e-01 -5.989629128548171e+00 -5.991742989570967e+00 3.755696128420623e+00 4.743558011308793e+00 9.191728338437051e+03 + 121340 1.029892999851704e+00 -6.079057016087880e+00 -5.989162753243221e+00 3.254794432999732e+00 4.770981201345983e+00 9.183820863055158e+03 + 121360 9.514238934274937e-01 -5.926068624295748e+00 -6.015477291037216e+00 4.055011388494144e+00 4.541612988118174e+00 9.264625668819675e+03 + 121380 9.806896702378068e-01 -5.937024617400457e+00 -5.989442546710774e+00 4.075283153391390e+00 4.774291291643206e+00 9.184651669275705e+03 + 121400 1.002907485763666e+00 -5.940277195438268e+00 -6.064115731105554e+00 3.961698485444276e+00 4.250598449691260e+00 9.414909956141202e+03 + 121420 1.050174101796645e+00 -5.990713047035623e+00 -6.049784282071744e+00 3.683712540612894e+00 4.344516367791408e+00 9.370501399950033e+03 + 121440 1.067732415208222e+00 -6.005764976834625e+00 -5.993153290721007e+00 3.674833794890723e+00 4.747252048207237e+00 9.196057080798746e+03 + 121460 1.057891878394447e+00 -5.986457057487567e+00 -6.026787660669648e+00 3.770522949820124e+00 4.538938385207942e+00 9.299463976865491e+03 + 121480 1.088195872014811e+00 -6.033115467536007e+00 -6.001197845929197e+00 3.516486695351934e+00 4.699762617854215e+00 9.220719594528915e+03 + 121500 1.021841162282658e+00 -5.940140666739715e+00 -6.023974361829350e+00 4.026212159424689e+00 4.544826108997619e+00 9.290799416461312e+03 + 121520 1.052874672012439e+00 -5.996569107062159e+00 -5.992574701592865e+00 3.721050305995814e+00 4.743986800332748e+00 9.194269037532487e+03 + 121540 9.930289370731258e-01 -5.920225118955974e+00 -6.014556203529160e+00 4.048063973464924e+00 4.506400288157529e+00 9.261775255303022e+03 + 121560 1.044875982242426e+00 -6.011504840563324e+00 -5.973467343526960e+00 3.684408773130088e+00 4.902825967396535e+00 9.135752009909986e+03 + 121580 1.011304992222589e+00 -5.976427129148696e+00 -5.981054563940313e+00 3.834900365620900e+00 4.808328918954218e+00 9.158985704190751e+03 + 121600 1.042125695592204e+00 -6.035800992500590e+00 -5.990845993499123e+00 3.546543520134346e+00 4.804682081164385e+00 9.188969779892801e+03 + 121620 1.033527192132480e+00 -6.039349387612493e+00 -6.014889717085278e+00 3.430940207387507e+00 4.571391420676555e+00 9.262849916570456e+03 + 121640 9.423159415643282e-01 -5.924062507319928e+00 -6.013836737909394e+00 4.143872235158001e+00 4.628374710596002e+00 9.259578505187861e+03 + 121660 9.729372905423213e-01 -5.990009792258607e+00 -6.001375806811071e+00 3.738298162665063e+00 4.673032748219750e+00 9.221244394258079e+03 + 121680 9.809903823783795e-01 -6.020338507080901e+00 -5.987958471578653e+00 3.605547184769109e+00 4.791478359417317e+00 9.180096122922141e+03 + 121700 9.778020122563776e-01 -6.030568173277602e+00 -5.977384485340634e+00 3.520424488425790e+00 4.825813454708966e+00 9.147758041523737e+03 + 121720 9.758121057134208e-01 -6.039933634616521e+00 -5.991878868879057e+00 3.494461161462595e+00 4.770399062778081e+00 9.192145801171517e+03 + 121740 1.010982614319852e+00 -6.107690358915373e+00 -5.981169768117153e+00 3.100566123224136e+00 4.827066934585668e+00 9.159336684973672e+03 + 121760 9.510183134270938e-01 -6.038002816645294e+00 -6.008109474312771e+00 3.456851902847640e+00 4.628504100500763e+00 9.241978029209382e+03 + 121780 8.920619179159005e-01 -5.978078102665229e+00 -6.013311226627407e+00 3.806399576001565e+00 4.604085525902426e+00 9.257964088378983e+03 + 121800 9.938102198696558e-01 -6.167748987942008e+00 -5.975091789595844e+00 2.842348693031621e+00 4.948616139540387e+00 9.140756154825483e+03 + 121820 8.866757569174428e-01 -6.053866567145263e+00 -5.978663026228306e+00 3.412171797879533e+00 4.844002167535047e+00 9.151659210062262e+03 + 121840 9.093505231862662e-01 -6.124588554515836e+00 -5.937308791416124e+00 3.000939450432246e+00 5.076328831600471e+00 9.025621313172338e+03 + 121860 8.902374586426863e-01 -6.121643501776951e+00 -5.918623909304513e+00 3.029870754798961e+00 5.195640671956106e+00 8.968945935654234e+03 + 121880 9.050258394637319e-01 -6.154644913154473e+00 -5.946190486766049e+00 2.923136723197566e+00 5.120114297738125e+00 9.052612489507806e+03 + 121900 9.029497083271938e-01 -6.150982039816471e+00 -5.971586533844656e+00 2.858213085900206e+00 4.888329842555197e+00 9.130048261281341e+03 + 121920 8.604832331806368e-01 -6.077178713361105e+00 -5.994859128997772e+00 3.245723444216935e+00 4.718415236545706e+00 9.201277821007536e+03 + 121940 9.376422981614223e-01 -6.168114025059063e+00 -5.967958902140009e+00 2.764527977837838e+00 4.913849667544215e+00 9.118954881387763e+03 + 121960 9.101516513341555e-01 -6.095437811994779e+00 -5.930974275933783e+00 3.194946217856076e+00 5.139321292568269e+00 9.006369607993951e+03 + 121980 9.346798986038559e-01 -6.089668045233255e+00 -5.952216426641725e+00 3.219714137558170e+00 5.008982602079973e+00 9.070940195702065e+03 + 122000 9.410189873303456e-01 -6.055529195793968e+00 -5.959261712208278e+00 3.364482285276341e+00 4.917265073370309e+00 9.092415827697667e+03 + 122020 9.798991656505787e-01 -6.074905415280423e+00 -5.998302563217940e+00 3.328207445404776e+00 4.768072876200599e+00 9.211843795998626e+03 + 122040 9.609516737032383e-01 -6.017180377735293e+00 -5.981495345601553e+00 3.639810382054740e+00 4.844719358807552e+00 9.160327899001120e+03 + 122060 9.821289830365720e-01 -6.025619003816757e+00 -5.980568237888972e+00 3.574883892959057e+00 4.833572362499896e+00 9.157452699469293e+03 + 122080 9.979085440310806e-01 -6.027320124278249e+00 -5.972595680339477e+00 3.521329597994332e+00 4.835565823671091e+00 9.133096939966934e+03 + 122100 1.002869739644761e+00 -6.016519292147098e+00 -5.993487417398477e+00 3.570940165947724e+00 4.703192754925409e+00 9.197065035637486e+03 + 122120 1.029929193201647e+00 -6.037737507444032e+00 -5.995974800738132e+00 3.461258637346802e+00 4.701066562010054e+00 9.204703177795203e+03 + 122140 1.080917716975854e+00 -6.096908600001250e+00 -5.987229304821057e+00 3.161002420144367e+00 4.790797905885105e+00 9.177899885864827e+03 + 122160 1.088824434160567e+00 -6.094343725205970e+00 -6.014173600427892e+00 3.150131315445810e+00 4.610480578208250e+00 9.260641740470815e+03 + 122180 1.009719376867404e+00 -5.969221736784609e+00 -6.061479394062688e+00 3.835538468577746e+00 4.305780723660699e+00 9.406741467945907e+03 + 122200 9.998825215194708e-01 -5.951323024192961e+00 -5.981435251874603e+00 3.950484643969417e+00 4.777575572769253e+00 9.160134748578779e+03 + 122220 1.036089518310060e+00 -6.001307656786956e+00 -6.000487181402216e+00 3.663072005951427e+00 4.667783302578759e+00 9.218520944961461e+03 + 122240 9.567386705094217e-01 -5.880999696965853e+00 -6.014943654857236e+00 4.294797817507950e+00 4.525670883535137e+00 9.262960183300385e+03 + 122260 1.051291385237442e+00 -6.019350571971252e+00 -6.026025313932031e+00 3.561750288189684e+00 4.523422886937908e+00 9.297094766661421e+03 + 122280 9.819952131167700e-01 -5.918856509009894e+00 -5.978196604981057e+00 4.133510554327278e+00 4.792770540410684e+00 9.150239248376385e+03 + 122300 1.014408627500457e+00 -5.969495803437639e+00 -5.947771479876598e+00 3.846741060775320e+00 4.971485488491024e+00 9.057414634226583e+03 + 122320 1.036374928939502e+00 -6.003183884752712e+00 -5.993049619845838e+00 3.676364567476289e+00 4.734557084843984e+00 9.195732476865509e+03 + 122340 1.012912006670207e+00 -5.972644060084479e+00 -6.020685273428502e+00 3.848397084437621e+00 4.572537003062497e+00 9.280645622427761e+03 + 122360 1.043054828880466e+00 -6.028329656942354e+00 -5.982634289103353e+00 3.542011185060284e+00 4.804401058527150e+00 9.163811519780727e+03 + 122380 9.931228099573532e-01 -5.969653362318398e+00 -5.977369314798119e+00 3.877578842484034e+00 4.833272649305696e+00 9.147694892254143e+03 + 122400 9.769114615291542e-01 -5.965396723851484e+00 -6.021738856648417e+00 3.839666905949836e+00 4.516141660512972e+00 9.283903196216381e+03 + 122420 9.995456258044076e-01 -6.023584583055886e+00 -5.956723650206575e+00 3.578813018039786e+00 4.962738841156447e+00 9.084671686346774e+03 + 122440 1.000567539152121e+00 -6.049675101042125e+00 -5.983043269190605e+00 3.464932813269992e+00 4.847543103004076e+00 9.165068138440483e+03 + 122460 9.247101712025075e-01 -5.964008916073676e+00 -6.016006479125511e+00 3.904296614459505e+00 4.605718560818994e+00 9.266264946022984e+03 + 122480 1.030097384736203e+00 -6.147243639526334e+00 -5.976003457453750e+00 2.960333215438640e+00 4.943620840231949e+00 9.143531422552460e+03 + 122500 8.791260856659509e-01 -5.947377355477783e+00 -6.039615824554296e+00 4.060186438746396e+00 4.530538875452097e+00 9.339043744131923e+03 + 122520 9.870046225568153e-01 -6.126901660136317e+00 -5.991783150080886e+00 3.022569438647797e+00 4.798440832907936e+00 9.191854236752226e+03 + 122540 9.277157605241924e-01 -6.054282811729825e+00 -6.034666970944995e+00 3.428874550976054e+00 4.541511744304097e+00 9.323790557575529e+03 + 122560 9.414313625454815e-01 -6.084676106544887e+00 -6.012577837688470e+00 3.244816440075190e+00 4.658815857019780e+00 9.255722869666548e+03 + 122580 9.874663075425356e-01 -6.157632707266377e+00 -5.998413498572673e+00 2.879290326506329e+00 4.793551661918490e+00 9.212201212512547e+03 + 122600 8.927902172021072e-01 -6.018114954958522e+00 -5.987462944949216e+00 3.644318485212009e+00 4.820327070068656e+00 9.178598133491209e+03 + 122620 9.845891002148218e-01 -6.145555387075291e+00 -5.966205619003479e+00 2.955901429532537e+00 4.985755552087790e+00 9.113598192730165e+03 + 122640 9.488800552739127e-01 -6.073510969596118e+00 -5.997781220383851e+00 3.313690126397181e+00 4.748542065514830e+00 9.210257732474243e+03 + 122660 9.348169316160505e-01 -6.019862831718884e+00 -6.015656372578133e+00 3.612778031639345e+00 4.636932170972986e+00 9.265177024568668e+03 + 122680 8.962433046018666e-01 -5.918897333094039e+00 -6.013782079650056e+00 4.129815517159447e+00 4.584972619067717e+00 9.259399160506771e+03 + 122700 9.765604431988583e-01 -5.984141715566715e+00 -6.019281544516533e+00 3.790329372867823e+00 4.588551037167018e+00 9.276341620635569e+03 + 122720 1.070888754482547e+00 -6.074050727053908e+00 -6.012854685118414e+00 3.284433882673605e+00 4.635831025524094e+00 9.256568533325672e+03 + 122740 1.060499065976080e+00 -6.025078847329861e+00 -6.017952499984123e+00 3.520825867563031e+00 4.561746456820947e+00 9.272247623605417e+03 + 122760 1.032877614827621e+00 -5.966045465613968e+00 -5.959971167854588e+00 3.918363365708214e+00 4.953242923437109e+00 9.094558896081859e+03 + 122780 1.045780770506027e+00 -5.974045944498114e+00 -5.964472206899363e+00 3.760552346466306e+00 4.815526229289437e+00 9.108268160121366e+03 + 122800 1.020885709437235e+00 -5.928936931305628e+00 -6.002098033421676e+00 4.081933191624293e+00 4.661830821629985e+00 9.223464357342311e+03 + 122820 1.045353995968192e+00 -5.962851071167560e+00 -5.983097977452791e+00 3.888408986782205e+00 4.772148117693780e+00 9.165205288475883e+03 + 122840 1.037917843777814e+00 -5.952346323169175e+00 -5.984898218119812e+00 3.968453447757590e+00 4.781535429561570e+00 9.170747462183183e+03 + 122860 1.100136628099640e+00 -6.049922393685627e+00 -6.019428737193754e+00 3.391606223622214e+00 4.566705518076634e+00 9.276782992322409e+03 + 122880 1.001486459018440e+00 -5.914790619809280e+00 -6.039417402940503e+00 4.148054526841458e+00 4.432428252169621e+00 9.338437713746278e+03 + 122900 9.510768414023982e-01 -5.855236463538844e+00 -6.084901732676049e+00 4.383944823306430e+00 4.065171307335063e+00 9.479476874784144e+03 + 122920 1.014382483156633e+00 -5.968151873532575e+00 -6.023529452612203e+00 3.866744391454054e+00 4.548757762726165e+00 9.289396026544913e+03 + 122940 1.075449252843866e+00 -6.081350923668669e+00 -6.003695898174231e+00 3.235975424712325e+00 4.681882598177750e+00 9.228421482934062e+03 + 122960 9.714942785359929e-01 -5.953090315343530e+00 -6.049492708752046e+00 3.959425888868059e+00 4.405868427694189e+00 9.369617837301683e+03 + 122980 9.999830474379393e-01 -6.025682589014585e+00 -5.994326581473207e+00 3.601220545054272e+00 4.781271592683358e+00 9.199615373656792e+03 + 123000 9.353571634814601e-01 -5.956606102626738e+00 -5.993823340707903e+00 3.949316011362501e+00 4.735608870951475e+00 9.198065647158304e+03 + 123020 9.617424523834007e-01 -6.018294446758979e+00 -6.005991531169879e+00 3.577762055775512e+00 4.648407300958162e+00 9.235440106169435e+03 + 123040 9.810338316832351e-01 -6.066546404928065e+00 -6.001685815633303e+00 3.307304637820075e+00 4.679744178694353e+00 9.222196171340556e+03 + 123060 8.981903905473215e-01 -5.959052819680023e+00 -5.989504513536997e+00 3.864250710314789e+00 4.689392371803651e+00 9.184835439848219e+03 + 123080 9.233032421075045e-01 -6.003290590720638e+00 -5.981335205268850e+00 3.611934272222372e+00 4.738005493071453e+00 9.159814924076578e+03 + 123100 8.961786383637401e-01 -5.962948324582951e+00 -5.968887062587974e+00 3.897043500831348e+00 4.862942348189764e+00 9.121751130204519e+03 + 123120 9.589724294120278e-01 -6.048853518712105e+00 -5.952812089967578e+00 3.430442625743459e+00 4.981927371957594e+00 9.072749345895940e+03 + 123140 1.019823544630263e+00 -6.123312589556784e+00 -5.976467318368161e+00 3.038797683442435e+00 4.882005954839786e+00 9.144971738131851e+03 + 123160 9.783873284830409e-01 -6.039639126161354e+00 -6.048053332980606e+00 3.500465954372110e+00 4.452150276721671e+00 9.365153793126658e+03 + 123180 9.753662348907484e-01 -6.011395669193637e+00 -5.982652295932747e+00 3.636373614249070e+00 4.801422511535735e+00 9.163869735313883e+03 + 123200 1.029269657130164e+00 -6.055810762351106e+00 -5.976634323982339e+00 3.401752475085615e+00 4.856395836713313e+00 9.145455917663065e+03 + 123220 9.766531739523108e-01 -5.924274672480021e+00 -6.029502369455225e+00 4.055523035645011e+00 4.451289315679918e+00 9.307820473694181e+03 + 123240 9.760855008512722e-01 -5.858531788725176e+00 -6.012707568320865e+00 4.447625872860448e+00 4.562324687797219e+00 9.256055935077136e+03 + 123260 1.037264087229442e+00 -5.888012098048853e+00 -6.002762768482450e+00 4.265592297963953e+00 4.606676190725380e+00 9.225497171500001e+03 + 123280 1.082225067367437e+00 -5.914933356042854e+00 -5.997152439834236e+00 4.063722409228193e+00 4.591607706735978e+00 9.208277388038296e+03 + 123300 1.086413010269645e+00 -5.904242522291137e+00 -6.017507002555410e+00 4.221280893281145e+00 4.570898719982011e+00 9.270825457388677e+03 + 123320 1.086533403303641e+00 -5.902736523743066e+00 -6.023875064063701e+00 4.219941687159072e+00 4.524345442509454e+00 9.290469691578812e+03 + 123340 1.075121783865439e+00 -5.893722155340365e+00 -6.053518550361066e+00 4.238054818062079e+00 4.320479189441001e+00 9.382054804775635e+03 + 123360 1.130916518602930e+00 -5.993200945748066e+00 -6.015873767076912e+00 3.757967351538693e+00 4.627776502860693e+00 9.265837597208278e+03 + 123380 1.018081394845946e+00 -5.851318013690781e+00 -6.050901102033979e+00 4.420888046642055e+00 4.274851067992308e+00 9.373973593803041e+03 + 123400 9.848739845725890e-01 -5.830803442273425e+00 -6.031570217133051e+00 4.533652417317088e+00 4.380818527515108e+00 9.314207815057445e+03 + 123420 1.023887270737367e+00 -5.919409735109416e+00 -6.037825914218544e+00 4.124323097207048e+00 4.444359071917943e+00 9.333535233108365e+03 + 123440 1.035221388202900e+00 -5.970357855967075e+00 -5.996995743875067e+00 3.798552223506367e+00 4.645593348938850e+00 9.207813600839261e+03 + 123460 1.013800955855953e+00 -5.970559444624490e+00 -6.006196193292432e+00 3.856031991626109e+00 4.651400266005754e+00 9.236072443157367e+03 + 123480 1.062981806146859e+00 -6.072167894436558e+00 -5.989579703220973e+00 3.307259082600848e+00 4.781493257042022e+00 9.185100461183276e+03 + 123500 9.802938354409672e-01 -5.978811813148240e+00 -5.992838082421144e+00 3.858425006691630e+00 4.777883997968462e+00 9.195090379940202e+03 + 123520 9.431878851314405e-01 -5.946473503884246e+00 -6.027745406525801e+00 3.947269333876174e+00 4.480593492122077e+00 9.302416921691001e+03 + 123540 1.003177447096939e+00 -6.053040126858627e+00 -5.995829504914009e+00 3.406671760968773e+00 4.735184005489901e+00 9.204272683740994e+03 + 123560 1.039973595454174e+00 -6.123697155019639e+00 -5.991245078687010e+00 3.010090640529167e+00 4.770650959723691e+00 9.190213983537262e+03 + 123580 9.723041819441364e-01 -6.036397712744627e+00 -5.989526971310569e+00 3.527003023913356e+00 4.796142074451510e+00 9.184941507235135e+03 + 123600 8.786513663463639e-01 -5.905554047788812e+00 -6.053829789942530e+00 4.167239809343012e+00 4.315817552299415e+00 9.383060623138097e+03 + 123620 1.007253991704887e+00 -6.101579265283224e+00 -6.037000009322678e+00 3.128592426213861e+00 4.499416507546880e+00 9.330996097703426e+03 + 123640 9.920399508359660e-01 -6.083113302185224e+00 -6.023941574478631e+00 3.298730677059297e+00 4.638503894345831e+00 9.290717816219178e+03 + 123660 9.767461172764059e-01 -6.063422801863068e+00 -6.012780349513439e+00 3.384849372772928e+00 4.675646171058670e+00 9.256337802428052e+03 + 123680 1.006743890164171e+00 -6.107438909229407e+00 -5.975517978094436e+00 3.122438080739188e+00 4.879948482014306e+00 9.142062286298164e+03 + 123700 9.979922091691785e-01 -6.089791463520310e+00 -6.010443200652583e+00 3.234551768540202e+00 4.690181773030684e+00 9.249132210228405e+03 + 123720 1.017126544827034e+00 -6.110311489777317e+00 -5.942562864492560e+00 3.148672802998337e+00 5.111911368399280e+00 9.041587451238711e+03 + 123740 9.377786304736554e-01 -5.977181395860317e+00 -6.010991290671952e+00 3.807447729491142e+00 4.613306081418419e+00 9.250808640906951e+03 + 123760 1.083944312910552e+00 -6.166235570746960e+00 -5.979232470584986e+00 2.841809092271783e+00 4.915609832038063e+00 9.153423238277472e+03 + 123780 9.587316744157260e-01 -5.945599402925202e+00 -6.018278901199039e+00 3.974607166379101e+00 4.557270240174722e+00 9.273249091001513e+03 + 123800 1.021472519920928e+00 -5.994356981359410e+00 -6.034966183564231e+00 3.708638883822547e+00 4.475454560508732e+00 9.324695275781913e+03 + 123820 1.012722126021111e+00 -5.934705175862732e+00 -6.032610553077223e+00 4.070325354045004e+00 4.508137527271235e+00 9.317403748673705e+03 + 123840 1.048229268904558e+00 -5.948545848719429e+00 -5.989897803875113e+00 3.989815781076932e+00 4.752366455378616e+00 9.186047824070094e+03 + 123860 9.720628159192579e-01 -5.805789434241822e+00 -6.024875465437868e+00 4.723866336246204e+00 4.465840441664752e+00 9.293535047868398e+03 + 123880 1.099858067453143e+00 -5.975067076769561e+00 -5.961241146541541e+00 3.872606932587036e+00 4.951997563512112e+00 9.098431599694331e+03 + 123900 1.097501487090715e+00 -5.958867705275149e+00 -6.002951639614788e+00 3.932932204256019e+00 4.679795431311021e+00 9.226114408316113e+03 + 123920 1.080317660111342e+00 -5.932873808120159e+00 -6.007194519942589e+00 4.079824550973101e+00 4.653063522595725e+00 9.239146092755549e+03 + 123940 1.058119810902120e+00 -5.906593576231476e+00 -6.037324715323791e+00 4.183924755166663e+00 4.433246323920198e+00 9.331986920327610e+03 + 123960 1.053487809124982e+00 -5.913525642412194e+00 -6.020311279822441e+00 4.146375808819167e+00 4.533196153785547e+00 9.279507109512202e+03 + 123980 1.061941219730768e+00 -5.946699513365287e+00 -6.002665700684656e+00 4.036012228432083e+00 4.714645720104769e+00 9.225220351265700e+03 + 124000 1.012274077957281e+00 -5.897146912239277e+00 -6.050321248374281e+00 4.257637395463574e+00 4.378086653724472e+00 9.372141612023126e+03 + 124020 1.085680059621698e+00 -6.032239523861806e+00 -5.990036748671830e+00 3.498025847786092e+00 4.740360713785288e+00 9.186502418393038e+03 + 124040 1.022959445064382e+00 -5.965549981880623e+00 -6.015037502389326e+00 3.882266527122741e+00 4.598101526192719e+00 9.263268334457896e+03 + 124060 9.931326954876774e-01 -5.944988685611698e+00 -6.008312219287410e+00 3.920535993613307e+00 4.556922463962203e+00 9.242595171412024e+03 + 124080 1.057353561950592e+00 -6.059763867882184e+00 -5.988670350776236e+00 3.389567508188625e+00 4.797797485097194e+00 9.182301848971339e+03 + 124100 9.860858845003762e-01 -5.968581534442435e+00 -6.029708915971403e+00 3.835963311580020e+00 4.484960427408964e+00 9.308474208341360e+03 + 124120 1.061590941755535e+00 -6.093015288310814e+00 -5.999832540400881e+00 3.200820403088874e+00 4.735890161571348e+00 9.216546919144843e+03 + 124140 9.662817435301387e-01 -5.963171499859463e+00 -6.024900944515498e+00 3.875060482300348e+00 4.520600458484710e+00 9.293645340266856e+03 + 124160 9.881626582202623e-01 -6.003270910871541e+00 -5.976794962613015e+00 3.720640723439520e+00 4.872669715479725e+00 9.145930727461193e+03 + 124180 9.420939858967305e-01 -5.939318836310806e+00 -6.010773312933384e+00 4.038768325183471e+00 4.628465662872100e+00 9.250123394625247e+03 + 124200 9.934017734789602e-01 -6.015850568389206e+00 -5.963817536660697e+00 3.630940506482832e+00 4.929722226753569e+00 9.106306362934552e+03 + 124220 9.764651631955996e-01 -5.988109143830149e+00 -6.008053979347290e+00 3.749287603562169e+00 4.634761271569426e+00 9.241788763333712e+03 + 124240 9.840243280086807e-01 -5.995880406869042e+00 -6.020968213968503e+00 3.740855524687925e+00 4.596797453997217e+00 9.281542774138152e+03 + 124260 9.455904234278267e-01 -5.936645003790912e+00 -6.058827784888255e+00 4.073631724131467e+00 4.372039287346259e+00 9.398501024624293e+03 + 124280 1.076525222016993e+00 -6.129727327848756e+00 -5.970224897729970e+00 3.015144184634052e+00 4.931031821297410e+00 9.125886647472122e+03 + 124300 1.028786921610537e+00 -6.058171765522241e+00 -5.959352873463576e+00 3.356961891230990e+00 4.924395261605964e+00 9.092714778637652e+03 + 124320 9.899272841505514e-01 -5.997180629092604e+00 -6.007641243055870e+00 3.691021345129546e+00 4.630954880977694e+00 9.240500578839205e+03 + 124340 1.039555768408490e+00 -6.065036819715152e+00 -5.955507943451718e+00 3.379680437452158e+00 5.008612194495617e+00 9.080981140633074e+03 + 124360 9.825832472930974e-01 -5.974527624199014e+00 -5.975736413218733e+00 3.812250640495523e+00 4.805309586884799e+00 9.142711285820058e+03 + 124380 9.980322335042471e-01 -5.986770752267056e+00 -5.985306378016524e+00 3.754519553745834e+00 4.762928217303569e+00 9.172010152928520e+03 + 124400 1.044156042935792e+00 -6.038724291714997e+00 -6.016594664034223e+00 3.495827737133202e+00 4.622899483825025e+00 9.268057505579911e+03 + 124420 1.008758843966250e+00 -5.966960003574558e+00 -6.043515457421063e+00 3.846618743116153e+00 4.407025480211324e+00 9.351117504385731e+03 + 124440 1.070176921641926e+00 -6.033976577163402e+00 -5.980121491141333e+00 3.499725663965798e+00 4.808969901952151e+00 9.156133345841441e+03 + 124460 9.687547762710829e-01 -5.854936462646704e+00 -6.091204725781299e+00 4.470013084408931e+00 4.113324155094525e+00 9.499115901188057e+03 + 124480 1.036390555258667e+00 -5.923838573028403e+00 -6.022000355350316e+00 4.128384730591566e+00 4.564724586012425e+00 9.284686351820284e+03 + 124500 1.077511879157249e+00 -5.954704252766570e+00 -5.999133839975630e+00 3.895802664695853e+00 4.640681099485028e+00 9.214395758764327e+03 + 124520 9.953991383502016e-01 -5.807520480812563e+00 -6.047994305195404e+00 4.652095024823709e+00 4.271257112013383e+00 9.364939454663674e+03 + 124540 1.103043397986634e+00 -5.946767529431950e+00 -6.003041792448391e+00 3.999357860055679e+00 4.676222333401218e+00 9.226390505049303e+03 + 124560 1.185328625152855e+00 -6.056189807233237e+00 -5.996630478980332e+00 3.364306645829181e+00 4.706305525433617e+00 9.206707340062268e+03 + 124580 1.055063125440739e+00 -5.861554272663236e+00 -6.028714716112446e+00 4.467007815042721e+00 4.507146680762335e+00 9.305390820419036e+03 + 124600 1.104701881009136e+00 -5.944126686991133e+00 -6.015340942527543e+00 3.984900490179546e+00 4.575977214519051e+00 9.264202707385744e+03 + 124620 1.123438516348996e+00 -5.996404864448864e+00 -5.952522487754739e+00 3.739715559563866e+00 4.991694957317378e+00 9.071843158278227e+03 + 124640 9.880794721018266e-01 -5.828707062166655e+00 -6.026754623939762e+00 4.585878759020074e+00 4.448659011557758e+00 9.299268423159070e+03 + 124660 9.611105052715775e-01 -5.828862280797315e+00 -6.025052169648831e+00 4.634601284068941e+00 4.508048581996360e+00 9.294081026644240e+03 + 124680 1.073689594477091e+00 -6.039275873682342e+00 -5.994560381599896e+00 3.476525705914460e+00 4.733288981151896e+00 9.200354453593309e+03 + 124700 1.000584873663811e+00 -5.972200184111881e+00 -6.011712062090627e+00 3.768431409911373e+00 4.541548092114057e+00 9.253028618328897e+03 + 124720 9.893961610914653e-01 -5.987684590170650e+00 -6.024597190060384e+00 3.683335744543269e+00 4.471377883770044e+00 9.292703218230341e+03 + 124740 9.767814076171210e-01 -5.991620114108662e+00 -6.000817584938131e+00 3.770828147298456e+00 4.718014846491632e+00 9.219537083458108e+03 + 124760 1.008583611188331e+00 -6.055134777382788e+00 -5.962131998624566e+00 3.443293655654013e+00 4.977330003417229e+00 9.101154378674348e+03 + 124780 1.004712251642494e+00 -6.060629468958676e+00 -5.972598745691249e+00 3.386000263988252e+00 4.891486299700218e+00 9.133125089315479e+03 + 124800 9.513251416107497e-01 -5.988520385929957e+00 -5.989467489666035e+00 3.772880635535071e+00 4.767442219318679e+00 9.184734011475017e+03 + 124820 9.285224611198164e-01 -5.954981763343010e+00 -6.003881627522146e+00 3.932140672107892e+00 4.651350084761767e+00 9.228963818344326e+03 + 124840 9.856680175868193e-01 -6.037245889566232e+00 -5.972432766620466e+00 3.470289073969006e+00 4.842456055721950e+00 9.132612531193368e+03 + 124860 9.820446753741117e-01 -6.025641160062878e+00 -5.994831593049836e+00 3.599242060546033e+00 4.776155362100006e+00 9.201173595634313e+03 + 124880 9.719838054304180e-01 -6.004110762060463e+00 -6.019491239388354e+00 3.655244803399943e+00 4.566927722462021e+00 9.276961003162845e+03 + 124900 9.993336514014178e-01 -6.036433120738961e+00 -5.990876299556321e+00 3.522248426066599e+00 4.783842743192610e+00 9.189051743137688e+03 + 124920 9.760227571907198e-01 -5.990515593656283e+00 -5.987647554355265e+00 3.787178271790977e+00 4.803646997285075e+00 9.179155326055947e+03 + 124940 9.554723263286306e-01 -5.946911489419190e+00 -6.019467089154888e+00 3.968366163028428e+00 4.551740681403272e+00 9.276899071956868e+03 + 124960 1.038749121411120e+00 -6.054603960946668e+00 -5.955746115074043e+00 3.421012064725437e+00 4.988669113928258e+00 9.081704888463535e+03 + 124980 9.813518341174633e-01 -5.950411096188477e+00 -5.982615319779734e+00 3.974584633840274e+00 4.789662998391776e+00 9.163742366609622e+03 + 125000 1.058803600663917e+00 -6.042477251681595e+00 -6.008397168562554e+00 3.469756770881097e+00 4.665449882026449e+00 9.242845901049623e+03 + 125020 1.011004311163601e+00 -5.946555565902699e+00 -5.992371278758494e+00 4.017328654570617e+00 4.754247741393989e+00 9.193654352469128e+03 + 125040 1.128335769362622e+00 -6.093145724125940e+00 -5.982813594951210e+00 3.255061843655502e+00 4.888606003218612e+00 9.164367245017345e+03 + 125060 1.033658255271295e+00 -5.923999791388416e+00 -6.021214713332393e+00 4.077389607437232e+00 4.519166481674371e+00 9.282286635071421e+03 + 125080 1.025966170264179e+00 -5.888257660416938e+00 -6.011463058625383e+00 4.295738492166388e+00 4.588274029679744e+00 9.252226795352315e+03 + 125100 1.113718045768765e+00 -5.990579328552990e+00 -5.958087728954386e+00 3.732188272629949e+00 4.918760065583925e+00 9.088815987963491e+03 + 125120 1.088892424095274e+00 -5.919433775150998e+00 -6.005311331332893e+00 4.120602829942239e+00 4.627480612836932e+00 9.233347157559654e+03 + 125140 1.123476671422095e+00 -5.938802811383860e+00 -6.003112945550227e+00 4.081365768712224e+00 4.712087026367843e+00 9.226581232640488e+03 + 125160 1.108949422776599e+00 -5.890135581963097e+00 -6.008993687416028e+00 4.347248372412208e+00 4.664746737669102e+00 9.244656940776127e+03 + 125180 1.143370688259858e+00 -5.920544147752681e+00 -6.019509448664929e+00 4.161625847191600e+00 4.593351774522647e+00 9.277014287426362e+03 + 125200 1.094110113884833e+00 -5.838998421105206e+00 -6.024589389549471e+00 4.546446071248368e+00 4.480754010331850e+00 9.292663251758731e+03 + 125220 1.038305704692693e+00 -5.760919899281270e+00 -6.026490744578792e+00 4.981287881755168e+00 4.456338991101307e+00 9.298541681479464e+03 + 125240 1.093935211188485e+00 -5.863307236382985e+00 -6.055842015506163e+00 4.460424192384732e+00 4.354859695998669e+00 9.389257707173074e+03 + 125260 1.126232741316094e+00 -5.956377788187481e+00 -6.035169918780081e+00 3.894981494797281e+00 4.442544887891774e+00 9.325341462850929e+03 + 125280 1.060329743271590e+00 -5.921405287826175e+00 -5.997415048166975e+00 4.108176238694208e+00 4.671716432344941e+00 9.209081660912554e+03 + 125300 9.959776766886681e-01 -5.881774580489923e+00 -5.986453988118081e+00 4.367209691398728e+00 4.766124333711869e+00 9.175486083134778e+03 + 125320 1.058343273395161e+00 -6.021569833116390e+00 -6.027113593794644e+00 3.615001761481444e+00 4.583168629772723e+00 9.300447000261905e+03 + 125340 1.032239960784057e+00 -6.019484366065891e+00 -6.013728990104951e+00 3.582298378778156e+00 4.615346638187423e+00 9.259240547244699e+03 + 125360 1.004056682584813e+00 -6.005140857387198e+00 -6.027485510414293e+00 3.750589200923406e+00 4.622282745417943e+00 9.301587421743461e+03 + 125380 9.495696676121819e-01 -5.945150443567941e+00 -6.029309399088422e+00 4.027230015644466e+00 4.543976269489586e+00 9.307266409712036e+03 + 125400 1.004442792203323e+00 -6.041271262809451e+00 -6.019008557231185e+00 3.500140360204990e+00 4.627976260777943e+00 9.275496987756451e+03 + 125420 1.019347572263133e+00 -6.076425444433160e+00 -6.027221883980931e+00 3.303540257994933e+00 4.586074716338003e+00 9.300815091392524e+03 + 125440 9.998373153607814e-01 -6.060262729001812e+00 -6.025429212092256e+00 3.396966124105709e+00 4.596985568669699e+00 9.295280468895882e+03 + 125460 9.742724174621146e-01 -6.033757408641801e+00 -6.025860709988849e+00 3.586384309538112e+00 4.631728375213531e+00 9.296604814371507e+03 + 125480 9.153272335643468e-01 -5.955091350048226e+00 -6.005609558047333e+00 3.982518049293447e+00 4.692434681295154e+00 9.234266505126632e+03 + 125500 9.868012582977953e-01 -6.066774652642710e+00 -5.972992715060176e+00 3.413240324224066e+00 4.951750722530917e+00 9.134312333079199e+03 + 125520 9.985416562089677e-01 -6.083955579526577e+00 -6.019096506027084e+00 3.243013985497389e+00 4.615444822440663e+00 9.275772760288344e+03 + 125540 9.445451434350892e-01 -6.001333626880140e+00 -6.012134515679953e+00 3.760322799775299e+00 4.698302424854639e+00 9.254339058744630e+03 + 125560 9.835987135488923e-01 -6.054060138273593e+00 -5.977890539476261e+00 3.425088351162915e+00 4.862465974664511e+00 9.149283993474472e+03 + 125580 9.708156242733434e-01 -6.024077856301126e+00 -5.971016804859226e+00 3.585428967917394e+00 4.890113736467957e+00 9.128289769474139e+03 + 125600 9.857284541798346e-01 -6.029705592649568e+00 -5.994952979789590e+00 3.560689023068963e+00 4.760243904060419e+00 9.201566393754481e+03 + 125620 9.805411172365961e-01 -6.000845723118795e+00 -5.979062321355821e+00 3.729771165415884e+00 4.854854829309413e+00 9.152871373833053e+03 + 125640 9.934446052095677e-01 -5.992923987257125e+00 -5.983330262727788e+00 3.786043740712754e+00 4.841132391584279e+00 9.165950421119356e+03 + 125660 1.022898881955278e+00 -6.003557834794901e+00 -6.017623691529747e+00 3.650318669887091e+00 4.569550343831317e+00 9.271233004227084e+03 + 125680 9.812225521664235e-01 -5.906446408435178e+00 -6.045647728547983e+00 4.180376924205397e+00 4.381061402783005e+00 9.357719973328123e+03 + 125700 1.038884968407810e+00 -5.961967490074636e+00 -6.027117250243458e+00 3.920760873364321e+00 4.546660868582142e+00 9.300474460682615e+03 + 125720 1.014047045385409e+00 -5.900581840825416e+00 -6.011258037263846e+00 4.215125837972691e+00 4.579605990937181e+00 9.251632841745142e+03 + 125740 1.037712204943780e+00 -5.915738759912657e+00 -6.043271843560960e+00 4.143604827142261e+00 4.411290125152793e+00 9.350347361157903e+03 + 125760 1.005843100422138e+00 -5.855608947953996e+00 -6.027832879838955e+00 4.494285117316235e+00 4.505348648865480e+00 9.302666314612770e+03 + 125780 1.036442332250424e+00 -5.895079259929557e+00 -6.007487392778660e+00 4.242393021369736e+00 4.596928127447848e+00 9.240036300420748e+03 + 125800 1.033653182969207e+00 -5.889618706327971e+00 -5.976926671792755e+00 4.370213115916081e+00 4.868877267353295e+00 9.146316581893683e+03 + 125820 1.082547965046774e+00 -5.966157099810196e+00 -5.993469264419600e+00 3.909754789037940e+00 4.752924113306930e+00 9.197013130416244e+03 + 125840 1.084015407373549e+00 -5.979980014909617e+00 -5.998812477741950e+00 3.875629713342537e+00 4.767490797445076e+00 9.213405186930671e+03 + 125860 1.003395864353425e+00 -5.883054022419498e+00 -6.016418003925783e+00 4.304371042801083e+00 4.538574422982554e+00 9.267524651271990e+03 + 125880 1.038953409490851e+00 -5.974182885231290e+00 -6.016763570687524e+00 3.792090700238202e+00 4.547585815008726e+00 9.268565002541289e+03 + 125900 1.025848325204767e+00 -6.009920869454565e+00 -5.990857512342031e+00 3.625327550425429e+00 4.734792297010582e+00 9.188989005385682e+03 + 125920 9.596258813945371e-01 -5.971204780737382e+00 -6.002307298466624e+00 3.871643566576727e+00 4.693048096676356e+00 9.224135433907537e+03 + 125940 9.468187152049662e-01 -6.004159660645293e+00 -5.990954673519568e+00 3.738623504474289e+00 4.814448584015354e+00 9.189262783893882e+03 + 125960 9.252418716497699e-01 -6.003438821257785e+00 -5.994394916267987e+00 3.688867618492083e+00 4.740799120483282e+00 9.199824549649265e+03 + 125980 9.433694283047944e-01 -6.045222461096742e+00 -5.993417263737068e+00 3.420763689308691e+00 4.718237149376325e+00 9.196846677307958e+03 + 126000 9.074247295366429e-01 -5.997226572508357e+00 -6.031488266485722e+00 3.671191290242314e+00 4.474455341444274e+00 9.313961143393215e+03 + 126020 9.417788512939868e-01 -6.048655753032055e+00 -5.990211702502586e+00 3.431866868207617e+00 4.767461650535415e+00 9.187012355122486e+03 + 126040 9.181244022498743e-01 -6.007371570285549e+00 -5.972997233893471e+00 3.683062796262651e+00 4.880445555237331e+00 9.134345306285408e+03 + 126060 9.140409062871906e-01 -5.989046965932240e+00 -6.025225613837806e+00 3.748907054077019e+00 4.541163659175592e+00 9.294667101149495e+03 + 126080 1.021718872608038e+00 -6.133475266382705e+00 -5.968548278077069e+00 3.006553739935851e+00 4.953590029155766e+00 9.120745260658678e+03 + 126100 1.036007945343511e+00 -6.136547581298867e+00 -5.971573664939749e+00 2.972605432932966e+00 4.919911190298073e+00 9.129985653594542e+03 + 126120 9.840400007309779e-01 -6.037958745068978e+00 -5.998311055281426e+00 3.510391570145234e+00 4.738054740365525e+00 9.211870340881129e+03 + 126140 9.591541988278618e-01 -5.977231370806799e+00 -6.035831487645790e+00 3.809679177326709e+00 4.473188238098448e+00 9.327387610250129e+03 + 126160 9.831623845582614e-01 -5.989809122046782e+00 -6.005626307270774e+00 3.743399847132836e+00 4.652575121875172e+00 9.234333106555781e+03 + 126180 9.831261497659205e-01 -5.965843649577028e+00 -6.060248918319530e+00 3.887280286198827e+00 4.345190623911259e+00 9.402937246209694e+03 + 126200 1.100700991815297e+00 -6.118245281910656e+00 -5.998540302343055e+00 3.093601244710562e+00 4.780965761673448e+00 9.212572041959735e+03 + 126220 1.068825287626537e+00 -6.054677497409041e+00 -5.999042020917519e+00 3.422207399134424e+00 4.741674914710908e+00 9.214105910211345e+03 + 126240 1.034571182758139e+00 -5.991617902713482e+00 -5.980836128841276e+00 3.795915381388534e+00 4.857825995436857e+00 9.158297883393012e+03 + 126260 1.023293506858967e+00 -5.962895328007463e+00 -5.991718378693212e+00 3.957544216841449e+00 4.792037799451193e+00 9.191624687795342e+03 + 126280 1.014627145856603e+00 -5.940210215362608e+00 -6.018133682075455e+00 4.030413921479928e+00 4.582965316997265e+00 9.272783850424348e+03 + 126300 9.837103546122099e-01 -5.886610371647957e+00 -6.020328436126865e+00 4.325706851607530e+00 4.557877032566034e+00 9.279530911443155e+03 + 126320 1.041775249319381e+00 -5.967195202276034e+00 -6.045504061155243e+00 3.822602832692018e+00 4.372941246750855e+00 9.357266769537484e+03 + 126340 1.032482657250843e+00 -5.953581899024300e+00 -6.000539965073119e+00 3.919912582996281e+00 4.650272101006726e+00 9.218701611591128e+03 + 126360 1.074996796693191e+00 -6.020785166852886e+00 -6.017103585694621e+00 3.574730064034863e+00 4.595870272768465e+00 9.269628744233378e+03 + 126380 1.040044141715966e+00 -5.982160316614779e+00 -6.005431420206675e+00 3.784663072232191e+00 4.651036794215885e+00 9.233737403517143e+03 + 126400 1.043615083844873e+00 -6.011658766460149e+00 -5.999620990639462e+00 3.616192333872894e+00 4.685315105475064e+00 9.215880829103737e+03 + 126420 9.493937484818084e-01 -5.908592090418303e+00 -6.023982552886112e+00 4.193688698476589e+00 4.531098806370071e+00 9.290803859937976e+03 + 126440 1.011406119749822e+00 -6.045839445242018e+00 -6.005960103451505e+00 3.432407941876658e+00 4.661401293745983e+00 9.235377222422225e+03 + 126460 1.023678153577608e+00 -6.114306313820338e+00 -6.010621662886549e+00 3.049069872270353e+00 4.644443183080046e+00 9.249703494021627e+03 + 126480 9.540694749489361e-01 -6.055316112252806e+00 -5.981672625444338e+00 3.410059807228490e+00 4.832932104775468e+00 9.160879625706701e+03 + 126500 9.955999900932107e-01 -6.147457260935766e+00 -5.947314333033954e+00 2.912145683520015e+00 5.061397347550221e+00 9.056019583226489e+03 + 126520 9.167819055554327e-01 -6.048334273562610e+00 -5.994541524917432e+00 3.406992279772886e+00 4.715878566894446e+00 9.200290776742981e+03 + 126540 9.522111950455127e-01 -6.108753218698528e+00 -5.959076799027974e+00 3.152969742236919e+00 5.012434906336326e+00 9.091837321232588e+03 + 126560 9.506452207683755e-01 -6.106796466361642e+00 -5.960762548506428e+00 3.109165788454054e+00 4.947715143454448e+00 9.096989888241151e+03 + 126580 9.471114000031166e-01 -6.094382142904365e+00 -5.958676104472291e+00 3.150265834388096e+00 4.929510907506646e+00 9.090647226400770e+03 + 126600 9.487255147836527e-01 -6.081802974480584e+00 -5.987142901727276e+00 3.254514960139605e+00 4.798067746488016e+00 9.177624758793811e+03 + 126620 9.941834773784647e-01 -6.126552186362151e+00 -5.984209160008705e+00 3.056247166330020e+00 4.873602851163648e+00 9.168640290362178e+03 + 126640 9.345920617210182e-01 -6.012617169982644e+00 -5.975473328570888e+00 3.643158156219315e+00 4.856443841596498e+00 9.141914545494041e+03 + 126660 9.706563502237273e-01 -6.037503061292819e+00 -5.967404989428872e+00 3.481696244071721e+00 4.884210220356067e+00 9.117258457561353e+03 + 126680 9.639067441494563e-01 -5.995491733028210e+00 -5.961172398454392e+00 3.774898639708575e+00 4.971965569731302e+00 9.098198319145669e+03 + 126700 1.008261769052061e+00 -6.029658765942020e+00 -5.943176154995239e+00 3.557029441056906e+00 5.053625976254112e+00 9.043412518523703e+03 + 126720 9.970643201092895e-01 -5.984493772983585e+00 -5.972907714916406e+00 3.730276098933138e+00 4.796805037291570e+00 9.134060293682871e+03 + 126740 1.049933145617008e+00 -6.040989452569630e+00 -5.976023063038459e+00 3.447608015976301e+00 4.820655078180573e+00 9.143588036187504e+03 + 126760 9.868219497222818e-01 -5.932048595677825e+00 -5.992948340681076e+00 4.040102658794053e+00 4.690406898780309e+00 9.195407426080634e+03 + 126780 9.980300797949851e-01 -5.938000364645976e+00 -5.989558066145712e+00 4.028415500373043e+00 4.732363199833039e+00 9.185020808859656e+03 + 126800 1.028464457138578e+00 -5.975626108810529e+00 -6.015376970573717e+00 3.786085384605621e+00 4.557829784935413e+00 9.264318200817546e+03 + 126820 1.025703953085985e+00 -5.969627670504784e+00 -6.021912772219588e+00 3.793587152548197e+00 4.493358007408451e+00 9.284442247047527e+03 + 126840 9.984488201142101e-01 -5.930326579934677e+00 -5.993357715621778e+00 4.095930431014089e+00 4.733995895862028e+00 9.196594132604121e+03 + 126860 9.621866375370721e-01 -5.877247972913261e+00 -6.027786235507817e+00 4.331471233858212e+00 4.467057234319422e+00 9.302514322946876e+03 + 126880 1.064593734511871e+00 -6.032495445997998e+00 -5.967204341599871e+00 3.558012482312989e+00 4.932924107532786e+00 9.116648804736615e+03 + 126900 9.737903680949692e-01 -5.902686682178262e+00 -6.032938494603252e+00 4.188780094572940e+00 4.440854031225812e+00 9.318432046980965e+03 + 126920 1.052819996258342e+00 -6.027648730335134e+00 -6.018445143941685e+00 3.479306669440790e+00 4.532155086762362e+00 9.273772356962736e+03 + 126940 9.919873355300870e-01 -5.949833708650692e+00 -6.025178757636807e+00 3.975002013452395e+00 4.542359082565475e+00 9.294517230436159e+03 + 126960 9.917578423447562e-01 -5.965268771509736e+00 -6.021728681872689e+00 3.879071845077743e+00 4.554870302630778e+00 9.283855661434280e+03 + 126980 1.013263728604067e+00 -6.014374353414841e+00 -5.971392284462335e+00 3.636769354757162e+00 4.883579046136122e+00 9.129420355565026e+03 + 127000 1.022603874958202e+00 -6.045912280210102e+00 -5.985798212731823e+00 3.452509324463841e+00 4.797693602545993e+00 9.173515049382457e+03 + 127020 1.015561887116795e+00 -6.058070276800820e+00 -5.978091713976291e+00 3.332012902153485e+00 4.791262186534535e+00 9.149924274270854e+03 + 127040 9.043615711825281e-01 -5.919493354035021e+00 -5.997697410829794e+00 4.120573121927379e+00 4.671513325773114e+00 9.209984103850622e+03 + 127060 1.014252189478500e+00 -6.113931453507769e+00 -6.024172367306615e+00 3.043978774025595e+00 4.559389337166318e+00 9.291423858159529e+03 + 127080 9.593592194692250e-01 -6.072542510234534e+00 -6.009478703103726e+00 3.301243945930372e+00 4.663366085568082e+00 9.246174354934357e+03 + 127100 9.015870049721679e-01 -6.026519446661443e+00 -6.008404230252973e+00 3.541652007734915e+00 4.645672383673035e+00 9.242872514427767e+03 + 127120 9.990307641025947e-01 -6.209352165825001e+00 -5.978437125359591e+00 2.594327263182106e+00 4.920277159521517e+00 9.150983321374553e+03 + 127140 9.084509835110506e-01 -6.107426670704972e+00 -5.989908204527757e+00 3.143938694499359e+00 4.818747913212793e+00 9.186089210668133e+03 + 127160 9.244882007937428e-01 -6.153562771851583e+00 -5.976258070787955e+00 2.877610284849740e+00 4.895721316170906e+00 9.144298236244025e+03 + 127180 8.504790203082592e-01 -6.053395514576076e+00 -5.995470703970223e+00 3.407297225363354e+00 4.739910451697635e+00 9.203141239047183e+03 + 127200 8.885694387093030e-01 -6.107188957488241e+00 -5.973805462804898e+00 3.143428009635155e+00 4.909336677136000e+00 9.136799946080862e+03 + 127220 8.958302941423194e-01 -6.103299302875531e+00 -5.945963605280572e+00 3.146366567383388e+00 5.049812490594155e+00 9.051920415285314e+03 + 127240 8.765755654581900e-01 -6.048673280952560e+00 -5.984944817265025e+00 3.452121226841267e+00 4.818059927282977e+00 9.170890575193031e+03 + 127260 9.759236799546855e-01 -6.164807424510532e+00 -5.961720939526692e+00 2.844803162704984e+00 5.010957187014180e+00 9.099919666177393e+03 + 127280 9.104275537397444e-01 -6.035465354080143e+00 -6.000150608195881e+00 3.520367179473318e+00 4.723149915280015e+00 9.217511210654533e+03 + 127300 9.952333733855508e-01 -6.131981841854936e+00 -5.975538992640811e+00 3.007035452120751e+00 4.905354501760932e+00 9.142124595957663e+03 + 127320 9.346279061661406e-01 -6.020325345258759e+00 -6.021321082679785e+00 3.572377591121918e+00 4.566659912760518e+00 9.282606336470413e+03 + 127340 9.407729467588528e-01 -6.012880996123896e+00 -6.000333076079414e+00 3.580808387125946e+00 4.652860485805715e+00 9.218087695853681e+03 + 127360 9.766444499051924e-01 -6.051322748034778e+00 -6.015891374567842e+00 3.403447400720510e+00 4.606899830154979e+00 9.265889872404841e+03 + 127380 9.543635393758086e-01 -6.004981608993443e+00 -6.031773753968452e+00 3.617535151012880e+00 4.463690508495349e+00 9.314851945013756e+03 + 127400 1.011547457715317e+00 -6.076381021692956e+00 -6.037392279824749e+00 3.248586429482230e+00 4.472465818777787e+00 9.332194335241436e+03 + 127420 1.022351064199831e+00 -6.079483171173040e+00 -5.989005119304127e+00 3.278369098549660e+00 4.797908073814233e+00 9.183334380262815e+03 + 127440 1.056920713897966e+00 -6.118899077014094e+00 -5.980426361778528e+00 3.060688781893487e+00 4.855820541359533e+00 9.157055895969101e+03 + 127460 9.769051316479397e-01 -5.986007062309012e+00 -5.982893078266102e+00 3.761534030257490e+00 4.779415008519356e+00 9.164599861467263e+03 + 127480 9.362620345062764e-01 -5.910264058259147e+00 -6.009392175507827e+00 4.163157782269461e+00 4.593948793000971e+00 9.245856017173834e+03 + 127500 1.037020497505846e+00 -6.040872372215827e+00 -6.000256015503711e+00 3.511144904902483e+00 4.744370310504342e+00 9.217835416183261e+03 + 127520 1.028722671049858e+00 -6.009575557581574e+00 -5.973910512949543e+00 3.709133762458935e+00 4.913927967883874e+00 9.137141834266686e+03 + 127540 9.624747677999433e-01 -5.893757721519711e+00 -6.053484730436590e+00 4.209558613855549e+00 4.292381410980076e+00 9.381938159287627e+03 + 127560 1.090080258347061e+00 -6.066935040616704e+00 -5.994585310292456e+00 3.314684298890981e+00 4.730127646497392e+00 9.200432133342587e+03 + 127580 1.007191360059820e+00 -5.929114689223937e+00 -6.060652352552559e+00 4.057989185868950e+00 4.302679567648384e+00 9.404155847173575e+03 + 127600 1.011812233518575e+00 -5.926219271986834e+00 -6.050407230685113e+00 4.028941558385343e+00 4.315835081515325e+00 9.372437679758055e+03 + 127620 1.070322103340254e+00 -6.008763646443046e+00 -5.991379467544618e+00 3.690863193839013e+00 4.790685839266777e+00 9.190561383893388e+03 + 127640 1.017461155922950e+00 -5.928324726385360e+00 -5.997245953604642e+00 4.057553042525242e+00 4.661796690306682e+00 9.208559534514436e+03 + 127660 1.004773866765832e+00 -5.907992505647534e+00 -5.993893064066500e+00 4.241701974095027e+00 4.748447674584873e+00 9.198291600701936e+03 + 127680 1.026260531868406e+00 -5.941467341365021e+00 -5.998795158406031e+00 4.026789155913205e+00 4.697603959012715e+00 9.213356812865102e+03 + 127700 1.047910136316763e+00 -5.981455137926904e+00 -6.013897593849566e+00 3.758651125176722e+00 4.572361522814967e+00 9.259773576759901e+03 + 127720 1.047184019493177e+00 -5.997153305851448e+00 -6.016812281269359e+00 3.703153671641148e+00 4.590268792574890e+00 9.268716712274882e+03 + 127740 1.008240590328148e+00 -5.965909146258094e+00 -5.988940704785584e+00 3.903280894323582e+00 4.771030121136572e+00 9.183122651570988e+03 + 127760 1.007796344426536e+00 -5.998180202237426e+00 -5.961197743709556e+00 3.771068983624221e+00 4.983427983508212e+00 9.098312622408001e+03 + 127780 1.010228455336822e+00 -6.039499163939140e+00 -6.009429050583632e+00 3.490991029600625e+00 4.663658273822952e+00 9.246016412755722e+03 + 127800 1.010801155267739e+00 -6.079246759812655e+00 -6.033104276329803e+00 3.240175439769998e+00 4.505132720454776e+00 9.318963303286648e+03 + 127820 9.732746016710978e-01 -6.061500255328550e+00 -6.010759082051681e+00 3.354766535290266e+00 4.646130204417235e+00 9.250124965197783e+03 + 127840 1.001492954255722e+00 -6.133948890435713e+00 -5.978817854620903e+00 2.958966478767818e+00 4.849752892866665e+00 9.152147119166935e+03 + 127860 9.082763612129098e-01 -6.016577961495685e+00 -5.975859739036301e+00 3.614132537128376e+00 4.847942871614718e+00 9.143082795671931e+03 + 127880 9.579078061137467e-01 -6.100391848098502e+00 -6.003602501526389e+00 3.174436530605568e+00 4.730215936725611e+00 9.228092336387032e+03 + 127900 9.612172359892955e-01 -6.109962996245846e+00 -5.972415500436060e+00 3.109731815706260e+00 4.899550822052241e+00 9.132558471509383e+03 + 127920 9.059452279812215e-01 -6.024854133018119e+00 -5.996012019907109e+00 3.532553395730067e+00 4.698169272516066e+00 9.204781343721061e+03 + 127940 8.736080385693705e-01 -5.965881818102577e+00 -5.955801721672975e+00 3.930657730869412e+00 4.988539204458069e+00 9.081828736273741e+03 + 127960 9.957576108738313e-01 -6.127172550232813e+00 -5.956140520955687e+00 2.990453315067025e+00 4.972545694297276e+00 9.082913870460263e+03 + 127980 9.754811778341296e-01 -6.071999062819128e+00 -5.985467191231405e+00 3.309645563535001e+00 4.806524960955556e+00 9.172509619449565e+03 + 128000 9.654507645089453e-01 -6.032146535642744e+00 -5.993516840004962e+00 3.506235263517421e+00 4.728052953795648e+00 9.197147331460341e+03 + 128020 9.677328979384587e-01 -6.009809161885104e+00 -5.978228982434555e+00 3.641111929642785e+00 4.822450207064819e+00 9.150338396339881e+03 + 128040 9.448769873186841e-01 -5.950490925886834e+00 -6.009381356753849e+00 3.954088583214701e+00 4.615930615911575e+00 9.245864002718792e+03 + 128060 9.937629834265210e-01 -6.000415420942415e+00 -6.006296574374933e+00 3.667719453242782e+00 4.633948960127714e+00 9.236409200882212e+03 + 128080 1.035050171015811e+00 -6.046072296141639e+00 -6.004840375476181e+00 3.417058006687169e+00 4.653818075767326e+00 9.231916623211149e+03 + 128100 9.764341102110845e-01 -5.949258235763965e+00 -5.990942696128662e+00 4.007458624397588e+00 4.768100002334106e+00 9.189268343743037e+03 + 128120 1.032948509422864e+00 -6.025791829462957e+00 -5.954543688448536e+00 3.557358977398851e+00 4.966476828717846e+00 9.078039496182633e+03 + 128140 1.058648198845030e+00 -6.058106460400031e+00 -5.974338949722354e+00 3.360267291018784e+00 4.841273300310389e+00 9.138449133751052e+03 + 128160 9.676756839569388e-01 -5.920498791139682e+00 -5.980095734338475e+00 4.150359762873517e+00 4.808144892428897e+00 9.156050604161488e+03 + 128180 1.003457117960137e+00 -5.969604234616411e+00 -6.018022183805282e+00 3.885862509873321e+00 4.607839152977399e+00 9.272455500527642e+03 + 128200 1.082234146400672e+00 -6.086439804212803e+00 -5.980373637678067e+00 3.235998617921222e+00 4.845046959849906e+00 9.156897974937894e+03 + 128220 1.033487423352725e+00 -6.016080806067976e+00 -6.002490389994877e+00 3.605248671584007e+00 4.683286943785832e+00 9.224691013326039e+03 + 128240 9.530500556957630e-01 -5.901190313025213e+00 -6.005532935653758e+00 4.211015523616226e+00 4.611864037514460e+00 9.234039109386131e+03 + 128260 9.620994771598668e-01 -5.918121074776619e+00 -6.015097233869730e+00 4.116140220453154e+00 4.559288107928392e+00 9.263458491759042e+03 + 128280 9.974484138168876e-01 -5.973078439384391e+00 -6.025987124040616e+00 3.808759307451641e+00 4.504949452563110e+00 9.296985542199340e+03 + 128300 1.079425612706120e+00 -6.100022684942491e+00 -5.964573825041390e+00 3.178173910770239e+00 4.955942224965689e+00 9.108623733721075e+03 + 128320 1.001142902072301e+00 -5.992161745392119e+00 -5.976209932414944e+00 3.739713133523697e+00 4.831310912173715e+00 9.144153788989503e+03 + 128340 9.872812772178077e-01 -5.980907371555402e+00 -5.933344519637441e+00 3.839081091245891e+00 5.112194347286369e+00 9.013539073314381e+03 + 128360 1.035076673531440e+00 -6.059163323213880e+00 -5.972963122791487e+00 3.406764308367213e+00 4.901739198630491e+00 9.134234134621376e+03 + 128380 9.709245880925518e-01 -5.974499738754015e+00 -6.018367628643727e+00 3.849341795605787e+00 4.597445583325038e+00 9.273532481664237e+03 + 128400 9.737951930847101e-01 -5.994692987035931e+00 -6.022123587434970e+00 3.706591279947901e+00 4.549080527584927e+00 9.285108217157698e+03 + 128420 1.018304878002660e+00 -6.080795237224591e+00 -6.009558886659461e+00 3.244441527166341e+00 4.653491675900943e+00 9.246421812080547e+03 + 128440 1.017113791085324e+00 -6.105703769652395e+00 -5.987110110685302e+00 3.154984730715035e+00 4.835967872813498e+00 9.177528217024319e+03 + 128460 9.208370804711532e-01 -5.994838854076720e+00 -6.027635653970679e+00 3.732711213416429e+00 4.544386913136940e+00 9.302079997682213e+03 + 128480 9.437501303737642e-01 -6.059186659972251e+00 -5.995518537055216e+00 3.406455579933851e+00 4.772047794333647e+00 9.203307725230748e+03 + 128500 9.345167627928597e-01 -6.074359179929963e+00 -6.038465827587848e+00 3.256848914334841e+00 4.462954097961585e+00 9.335522124487714e+03 + 128520 9.559437298619869e-01 -6.129864919985712e+00 -5.980881694606651e+00 3.012849683019882e+00 4.868334418226071e+00 9.158458740557371e+03 + 128540 9.032210429967854e-01 -6.067754081571346e+00 -5.983148123879960e+00 3.324238731292831e+00 4.810059233086402e+00 9.165392135013983e+03 + 128560 8.801647633934440e-01 -6.040105126661830e+00 -6.028453371051267e+00 3.461559256740132e+00 4.528465440559342e+00 9.304589040195979e+03 + 128580 9.619821771486821e-01 -6.160779672898782e+00 -5.955627600524290e+00 2.869238148472404e+00 5.047253095227333e+00 9.081334337549175e+03 + 128600 9.152371521820265e-01 -6.080838248678182e+00 -5.992685305704716e+00 3.262583620737569e+00 4.768771460915049e+00 9.194614869696172e+03 + 128620 8.711415040924867e-01 -5.993613409209078e+00 -6.060355610717561e+00 3.669689219174053e+00 4.286445169790039e+00 9.403268308838455e+03 + 128640 9.824333271557915e-01 -6.127194001682281e+00 -5.992791018057348e+00 3.005057216049078e+00 4.776819946817941e+00 9.194940661165070e+03 + 128660 9.222612616105965e-01 -5.999082189916067e+00 -5.997007016716132e+00 3.684625783707280e+00 4.696541749353321e+00 9.207861049730191e+03 + 128680 9.340841079834711e-01 -5.972921620003774e+00 -6.024309903158194e+00 3.822379048395539e+00 4.527299574211741e+00 9.291835223682332e+03 + 128700 9.157328492946151e-01 -5.903759119694975e+00 -6.067158872259439e+00 4.186523150098655e+00 4.248256484843513e+00 9.424397059378944e+03 + 128720 1.066717470641097e+00 -6.097108327083287e+00 -5.973750410481124e+00 3.180249181555795e+00 4.888589428261316e+00 9.136656564899091e+03 + 128740 1.007049864689797e+00 -5.988831984002792e+00 -6.040468846189336e+00 3.710166940850664e+00 4.413660087396934e+00 9.341646370907192e+03 + 128760 9.969658591018101e-01 -5.961823251049095e+00 -6.009493789809204e+00 3.881072776314035e+00 4.607341165761462e+00 9.246210779813944e+03 + 128780 9.923620390066570e-01 -5.945718529825307e+00 -6.034892190513863e+00 3.901228796042058e+00 4.389179836788976e+00 9.324476397199731e+03 + 128800 1.000106938618093e+00 -5.952020961031598e+00 -6.008491455541188e+00 3.920869816145808e+00 4.596607497890962e+00 9.243130898265372e+03 + 128820 1.057929545241915e+00 -6.033752621115360e+00 -5.987292465947128e+00 3.483913045693549e+00 4.750694446355311e+00 9.178093050968460e+03 + 128840 1.093818700164423e+00 -6.087827329357928e+00 -5.979373053306605e+00 3.229300495308684e+00 4.852061731640362e+00 9.153831815709274e+03 + 128860 1.004423072441234e+00 -5.959710237629121e+00 -5.986134143042574e+00 3.916445360524895e+00 4.764715206554699e+00 9.174524082864375e+03 + 128880 1.008539273848093e+00 -5.971426967829748e+00 -5.966046161291739e+00 3.829963220531481e+00 4.860860644349847e+00 9.113076872415650e+03 + 128900 1.055127142291735e+00 -6.045006030220060e+00 -5.971328645821119e+00 3.456123426335318e+00 4.879190369092423e+00 9.129213445994073e+03 + 128920 1.033422803455056e+00 -6.020032158480019e+00 -5.983043042679641e+00 3.557555100850963e+00 4.769952327823907e+00 9.165057184771174e+03 + 128940 9.680326533134758e-01 -5.931697202826408e+00 -5.971446137863349e+00 4.063665462440170e+00 4.835420926330241e+00 9.129583941881709e+03 + 128960 1.032098293613718e+00 -6.035204683795853e+00 -5.937599786631828e+00 3.535586456827988e+00 5.096048880652843e+00 9.026472335858865e+03 + 128980 1.034493499479607e+00 -6.047042392660358e+00 -5.978627616346857e+00 3.417195312828504e+00 4.810043545573045e+00 9.151558259326528e+03 + 129000 1.006171309796463e+00 -6.017072151163605e+00 -6.008453277886951e+00 3.589886776420461e+00 4.639377680541338e+00 9.243019464982692e+03 + 129020 9.341254896397182e-01 -5.927003425691939e+00 -6.043519348451069e+00 4.045005219864233e+00 4.375952760600536e+00 9.351114945490746e+03 + 129040 9.860075082440577e-01 -6.023469626471840e+00 -6.011024787510211e+00 3.554134424148387e+00 4.625594615298667e+00 9.250914611541668e+03 + 129060 9.639737572455594e-01 -6.013515971868909e+00 -6.019643330006526e+00 3.595186736596333e+00 4.560002497964526e+00 9.277473235405847e+03 + 129080 1.027449794957783e+00 -6.135822720032940e+00 -5.950287107082921e+00 2.986506317536744e+00 5.051880518639070e+00 9.065085653959524e+03 + 129100 9.671836068588365e-01 -6.075413950427336e+00 -5.981393099326080e+00 3.284691332220448e+00 4.824573608923550e+00 9.160033817885675e+03 + 129120 9.245174010955705e-01 -6.039809864423798e+00 -6.012772101914381e+00 3.417489864612519e+00 4.572744881021820e+00 9.256305305909071e+03 + 129140 9.319521892205886e-01 -6.075818290102951e+00 -6.001509498430783e+00 3.283288054236778e+00 4.709980635266713e+00 9.221682915198273e+03 + 129160 9.128937140768254e-01 -6.066282050034484e+00 -5.968855034256105e+00 3.351824504424506e+00 4.911265505805927e+00 9.121675089020244e+03 + 129180 9.245339745460468e-01 -6.094452521603944e+00 -5.939275073879644e+00 3.195222899967907e+00 5.086275818433261e+00 9.031580994046211e+03 + 129200 9.339436463764496e-01 -6.111274533898261e+00 -5.944929720637922e+00 3.083750867182780e+00 5.038928526700305e+00 9.048762819841420e+03 + 129220 9.281593182456351e-01 -6.096148966111992e+00 -5.963632611783428e+00 3.194048492139138e+00 4.954977905533307e+00 9.105701668443924e+03 + 129240 9.072135605278561e-01 -6.047428258397335e+00 -5.977549556699731e+00 3.494317766785595e+00 4.895572085627372e+00 9.148259591521877e+03 + 129260 9.188448161568123e-01 -6.030383439753365e+00 -6.012569169089827e+00 3.538888122043214e+00 4.641180420942727e+00 9.255678301912612e+03 + 129280 9.118224665895619e-01 -5.975026511973351e+00 -6.034644634922781e+00 3.826147766461717e+00 4.483811278611380e+00 9.323727832952020e+03 + 129300 1.025146159059513e+00 -6.092467095814302e+00 -6.009238166402124e+00 3.174732512788587e+00 4.652645905108516e+00 9.245449401255852e+03 + 129320 1.015117929308483e+00 -6.034748045844030e+00 -5.987265010510431e+00 3.515469693270357e+00 4.788124630131859e+00 9.178002971347369e+03 + 129340 9.335812917316212e-01 -5.883384774188620e+00 -6.028421915475858e+00 4.256925559051675e+00 4.424099849355280e+00 9.304497196190774e+03 + 129360 1.036327053993415e+00 -6.013226345842714e+00 -5.991806406730674e+00 3.647047926804245e+00 4.770044531910445e+00 9.191916497315024e+03 + 129380 1.026877672673132e+00 -5.985633070068450e+00 -6.044178648008410e+00 3.783866196613983e+00 4.447688428183825e+00 9.353173429878327e+03 + 129400 1.009276299591125e+00 -5.952149595721756e+00 -6.074857068358862e+00 3.971572498010091e+00 4.266967201207804e+00 9.448279334395809e+03 + 129420 1.040985967185833e+00 -5.997378871524619e+00 -6.018834661637285e+00 3.704365985769367e+00 4.581163518669653e+00 9.274959229231068e+03 + 129440 1.064811273874027e+00 -6.034269001749547e+00 -6.015518683693140e+00 3.506564159441399e+00 4.614231387323635e+00 9.264754660148681e+03 + 129460 1.030975690457545e+00 -5.990966038896381e+00 -6.000567431918346e+00 3.796001994984536e+00 4.740869310441649e+00 9.218776066590895e+03 + 129480 9.844319334987990e-01 -5.929669017065686e+00 -6.029007516140009e+00 4.068563991668848e+00 4.498146957401036e+00 9.306300382415440e+03 + 129500 1.040163420141318e+00 -6.021732011072735e+00 -6.005197732822660e+00 3.579720114122737e+00 4.674662498505955e+00 9.233018287771631e+03 + 129520 1.068082595570755e+00 -6.076563857957208e+00 -5.989158681862374e+00 3.262877359248948e+00 4.764771406292767e+00 9.183806813643550e+03 + 129540 9.709707668020946e-01 -5.947613464711456e+00 -6.050097479269049e+00 4.012325378038756e+00 4.423846307099054e+00 9.371473863153195e+03 + 129560 1.005902038355223e+00 -6.019296624848729e+00 -6.006545328712858e+00 3.569904747741351e+00 4.643124663410221e+00 9.237149443273058e+03 + 129580 9.298289463997406e-01 -5.926954287668595e+00 -5.990481969132403e+00 4.057450089812495e+00 4.692664311970378e+00 9.187839865066184e+03 + 129600 1.030030375407591e+00 -6.091856401712850e+00 -5.996375204697285e+00 3.126557942093946e+00 4.674825751024803e+00 9.205943902130874e+03 + 129620 9.988993340110458e-01 -6.065203333834758e+00 -5.984948430979443e+00 3.324813984874410e+00 4.785650056475708e+00 9.170905414680263e+03 + 129640 9.268190574951019e-01 -5.978073380745987e+00 -6.007460127924151e+00 3.758600261463767e+00 4.589857011582320e+00 9.239966444600755e+03 + 129660 9.686763216865590e-01 -6.059095192291855e+00 -6.013980629797294e+00 3.366554667910996e+00 4.625609467210752e+00 9.260006269246871e+03 + 129680 9.668306824222946e-01 -6.076710071103831e+00 -5.975023260879812e+00 3.275422850373065e+00 4.859324250662405e+00 9.140516175380773e+03 + 129700 8.937728645520689e-01 -5.986472353495123e+00 -5.956749439546799e+00 3.766315100924344e+00 4.936988672421686e+00 9.084752442045874e+03 + 129720 9.200753940898841e-01 -6.038857293263064e+00 -5.995170047948045e+00 3.436581580363463e+00 4.687440503541666e+00 9.202202511019364e+03 + 129740 9.872176668838795e-01 -6.148353661172314e+00 -5.966080318675376e+00 2.917486634089538e+00 4.964128373415550e+00 9.113220184481908e+03 + 129760 9.256531287892650e-01 -6.064358629739904e+00 -5.991256003532211e+00 3.350915626390644e+00 4.770682218670064e+00 9.190245744394666e+03 + 129780 9.714905507034255e-01 -6.134963044584921e+00 -5.978233684249467e+00 2.994586699616590e+00 4.894550940452893e+00 9.150361989080753e+03 + 129800 9.305192445025794e-01 -6.070285205790953e+00 -5.973451413895965e+00 3.366821513068014e+00 4.922856131109901e+00 9.135715927127480e+03 + 129820 8.887904997029160e-01 -5.995156219089777e+00 -5.985576553173556e+00 3.753401586237926e+00 4.808409510377378e+00 9.172808643157929e+03 + 129840 9.876475701062374e-01 -6.113874538717629e+00 -6.004195891854090e+00 3.091400198144704e+00 4.721191961150895e+00 9.229956943211682e+03 + 129860 1.035172078284576e+00 -6.145348753568552e+00 -5.997112737024753e+00 2.925130501964847e+00 4.776324648408766e+00 9.208220066055703e+03 + 129880 9.100978147403386e-01 -5.919461795787170e+00 -6.070923237614566e+00 4.115479402913041e+00 4.245764365357759e+00 9.436062135638471e+03 + 129900 1.040157942737347e+00 -6.072724864014445e+00 -5.987151494239729e+00 3.312684689323380e+00 4.804060221005971e+00 9.177651957818816e+03 + 129920 9.953724396492994e-01 -5.972382261355053e+00 -6.016110802137147e+00 3.788720667499106e+00 4.537624619358505e+00 9.266582569055889e+03 + 129940 1.035336575554755e+00 -6.002960981349743e+00 -6.008213515845567e+00 3.697678840006529e+00 4.667517974104424e+00 9.242274913530824e+03 + 129960 1.022618371383055e+00 -5.961794595014908e+00 -5.992602864713087e+00 4.004190523261604e+00 4.827284671090332e+00 9.194312566764047e+03 + 129980 1.032588886695788e+00 -5.958018635050045e+00 -5.995527108989883e+00 3.908422690084037e+00 4.693043228303905e+00 9.203319157043894e+03 + 130000 1.104169247170680e+00 -6.051172124072947e+00 -5.992990249935561e+00 3.412671128223337e+00 4.746760453136130e+00 9.195562279572714e+03 + 130020 1.000316218995396e+00 -5.892143466740721e+00 -6.022364122956566e+00 4.253596790065225e+00 4.505849630492417e+00 9.285830696154315e+03 + 130040 1.048947475846856e+00 -5.964370614595948e+00 -6.004242905016046e+00 3.864574935602495e+00 4.635622073793296e+00 9.230058375729537e+03 + 130060 9.904828112649209e-01 -5.879937943812184e+00 -6.044182958571730e+00 4.317256268352542e+00 4.374135976769337e+00 9.353154149855442e+03 + 130080 1.029365307274480e+00 -5.944667164374422e+00 -6.011741387629565e+00 3.981629076653193e+00 4.596478507019665e+00 9.253117967692006e+03 + 130100 1.080638449795668e+00 -6.034767466587525e+00 -5.949705089496352e+00 3.518720864561803e+00 5.007162197179633e+00 9.063284305845484e+03 + 130120 1.034259727427872e+00 -5.982712071735659e+00 -5.936224279661723e+00 3.808493362329170e+00 5.075433458380278e+00 9.022303937304468e+03 + 130140 1.056719416506494e+00 -6.036123573529244e+00 -5.966908527277853e+00 3.555804936897505e+00 4.953248443466784e+00 9.115737919893192e+03 + 130160 9.905948052021167e-01 -5.965020390388405e+00 -6.041319455319518e+00 3.901718163797132e+00 4.463597125720543e+00 9.344323849298471e+03 + 130180 9.852535461557632e-01 -5.988795027637960e+00 -6.022957829889998e+00 3.775484125859629e+00 4.579316028651862e+00 9.287624509998550e+03 + 130200 9.617900430711576e-01 -5.988978959765634e+00 -5.991145230193576e+00 3.784477133488790e+00 4.772038073462277e+00 9.189862170572374e+03 + 130220 1.000741158316274e+00 -6.082955040292641e+00 -5.938731713495676e+00 3.345121163728994e+00 5.173273824684863e+00 9.029915307258010e+03 + 130240 9.671098931843203e-01 -6.064675324646883e+00 -5.971642482322729e+00 3.332470274717930e+00 4.866679252129041e+00 9.130198387050483e+03 + 130260 9.470679993183454e-01 -6.059282507156906e+00 -5.970030566175299e+00 3.397346378767563e+00 4.909844835577181e+00 9.125254392793679e+03 + 130280 9.115916060253344e-01 -6.021920827461239e+00 -6.006742320785550e+00 3.587840075765000e+00 4.674997409963122e+00 9.237751664008620e+03 + 130300 9.826911079357723e-01 -6.136374981652850e+00 -5.967887495065792e+00 2.984464477184970e+00 4.951945698522143e+00 9.118737888407073e+03 + 130320 9.413933053210759e-01 -6.076489319074319e+00 -6.004150031652622e+00 3.252367026750905e+00 4.667750409594841e+00 9.229782101381503e+03 + 130340 9.358362672922282e-01 -6.063213732096999e+00 -6.000063702931143e+00 3.331598659599098e+00 4.694215899504872e+00 9.217222123339934e+03 + 130360 9.202683130911380e-01 -6.029777433358518e+00 -5.970868036264891e+00 3.527192629727333e+00 4.865459504038681e+00 9.127836659636167e+03 + 130380 1.007434289069087e+00 -6.141531942369340e+00 -6.015672404605356e+00 2.902121885936533e+00 4.624826828477854e+00 9.265224295447328e+03 + 130400 9.610841965572609e-01 -6.055748746282560e+00 -5.987992894516507e+00 3.458148079893774e+00 4.847212665918621e+00 9.180230892413229e+03 + 130420 9.712142581419018e-01 -6.053999630078730e+00 -5.983516695311410e+00 3.420128726337561e+00 4.824852644970418e+00 9.166492570010927e+03 + 130440 8.914294441318441e-01 -5.917833730222050e+00 -6.012626566155738e+00 4.124695887786398e+00 4.580380754711209e+00 9.255845430501769e+03 + 130460 9.746777641571345e-01 -6.025970631301579e+00 -6.017984819290037e+00 3.538505855539825e+00 4.584361623910514e+00 9.272354104194324e+03 + 130480 9.554933727410769e-01 -5.987034396581089e+00 -6.039768711522166e+00 3.773455777968345e+00 4.470647180967817e+00 9.339527515018615e+03 + 130500 1.009959137325287e+00 -6.060990727859224e+00 -6.013587327288979e+00 3.359058424141346e+00 4.631256085868224e+00 9.258810393314587e+03 + 130520 9.298974331030029e-01 -5.935522818380198e+00 -6.028977878049615e+00 4.097710619651657e+00 4.561077204906124e+00 9.306200844730762e+03 + 130540 9.896155771267494e-01 -6.017766070810324e+00 -5.997970511058551e+00 3.602179310635658e+00 4.715848478083314e+00 9.210837812094398e+03 + 130560 1.063879928018026e+00 -6.120811555752455e+00 -5.988829426599659e+00 3.075477298613058e+00 4.833339108376896e+00 9.182806426970648e+03 + 130580 9.578590312585442e-01 -5.956442928587865e+00 -6.010886961579125e+00 3.948815708574311e+00 4.636189645951619e+00 9.250516146140999e+03 + 130600 9.739441242910462e-01 -5.973072805362641e+00 -6.035849441481784e+00 3.880881009944719e+00 4.520407850695554e+00 9.327425134101979e+03 + 130620 1.048864346095900e+00 -6.077673890480655e+00 -5.977135258139565e+00 3.307249515920778e+00 4.884557901126386e+00 9.147007687428682e+03 + 130640 9.375531545102268e-01 -5.904043950642779e+00 -6.003484146915490e+00 4.208719382000007e+00 4.637718386681465e+00 9.227751053033373e+03 + 130660 1.034946471911228e+00 -6.037881714897889e+00 -6.005444373408693e+00 3.524351024748786e+00 4.710611259242124e+00 9.233775091995743e+03 + 130680 9.980527736920107e-01 -5.973548436107194e+00 -6.015492585124742e+00 3.842910254094558e+00 4.602060459599718e+00 9.264674998671993e+03 + 130700 1.028196710792318e+00 -6.008327543449901e+00 -6.000216270880836e+00 3.641267957900877e+00 4.687844140207821e+00 9.217698524971920e+03 + 130720 1.000472493239456e+00 -5.957097399252117e+00 -5.992470716131067e+00 3.948427920654928e+00 4.745308861132900e+00 9.193945784968475e+03 + 130740 1.028938099898568e+00 -5.989575283487385e+00 -5.998982991710323e+00 3.712144080762183e+00 4.658123564307934e+00 9.213924038575715e+03 + 130760 1.022498028302934e+00 -5.973625808936009e+00 -5.970487614694260e+00 3.839725633422481e+00 4.857745630392595e+00 9.126650229371771e+03 + 130780 9.678498911483023e-01 -5.883692294812350e+00 -5.974707901027978e+00 4.295914099478324e+00 4.773288403968642e+00 9.139557636021002e+03 + 130800 1.055893623337957e+00 -6.002951444357945e+00 -5.996612883958681e+00 3.665229779310629e+00 4.701626774012256e+00 9.206637095838989e+03 + 130820 1.083105300658058e+00 -6.030172810975066e+00 -5.991095705151839e+00 3.498372706007542e+00 4.722759494807097e+00 9.189749086874102e+03 + 130840 9.930522249106003e-01 -5.885538104014326e+00 -6.012472668687282e+00 4.265764627075155e+00 4.536886713662646e+00 9.255387872958439e+03 + 130860 9.837088888554437e-01 -5.864683403278612e+00 -6.063964566549617e+00 4.432434001460917e+00 4.288130723298454e+00 9.414423665507786e+03 + 130880 1.015465813765257e+00 -5.908737858817327e+00 -6.038190531683166e+00 4.217017951591750e+00 4.473680671259716e+00 9.334633392943884e+03 + 130900 1.093378820823633e+00 -6.025616306331575e+00 -5.988783410465001e+00 3.583469388544033e+00 4.794969576482109e+00 9.182629574772362e+03 + 130920 9.844216271553589e-01 -5.870779829866249e+00 -6.012634728848759e+00 4.358465680169422e+00 4.543912898237179e+00 9.255855361041904e+03 + 130940 1.049766353035625e+00 -5.979760622077858e+00 -5.947197157564784e+00 3.882875203683592e+00 5.069859656097518e+00 9.055636036135560e+03 + 130960 1.034808536778568e+00 -5.974453884372552e+00 -5.997634473490846e+00 3.846096663090794e+00 4.712990133188976e+00 9.209765849884041e+03 + 130980 1.058571508920091e+00 -6.034454980228020e+00 -5.991423197730352e+00 3.544955052572833e+00 4.792050206821258e+00 9.190760146519862e+03 + 131000 9.729217140004026e-01 -5.937520976741134e+00 -6.068091635626637e+00 4.003432963641904e+00 4.253676034577194e+00 9.427263012983856e+03 + 131020 1.023117271640621e+00 -6.047900618823444e+00 -6.023523298410036e+00 3.434914323667209e+00 4.574892669859143e+00 9.289423045298492e+03 + 131040 9.792328030079827e-01 -6.017284379289269e+00 -6.026926058847527e+00 3.591996084157357e+00 4.536632068088749e+00 9.299882663117291e+03 + 131060 1.028063036809075e+00 -6.121693854656348e+00 -5.983900863720138e+00 3.033232045018208e+00 4.824460722370358e+00 9.167694330289994e+03 + 131080 9.784915469439992e-01 -6.075070998859776e+00 -5.993393248880324e+00 3.275358059997616e+00 4.744364339970590e+00 9.196799486556767e+03 + 131100 8.929855728145889e-01 -5.968905037673095e+00 -5.983164664511335e+00 3.892831067490689e+00 4.810950083515394e+00 9.165423659265716e+03 + 131120 9.390158082438451e-01 -6.047199449797296e+00 -5.979854739945525e+00 3.469332055524716e+00 4.856035801053755e+00 9.155303080128442e+03 + 131140 9.529250796158291e-01 -6.071186369016491e+00 -5.976791512373100e+00 3.304354348348292e+00 4.846384222751500e+00 9.145948430963761e+03 + 131160 9.628042162825089e-01 -6.084439843649562e+00 -5.952978825050783e+00 3.267995672998639e+00 5.022865185319712e+00 9.073269579074671e+03 + 131180 9.529225121940557e-01 -6.060763829946472e+00 -5.959541543510480e+00 3.334539859213369e+00 4.915773892027037e+00 9.093276760006544e+03 + 131200 9.843104700832480e-01 -6.091784959350332e+00 -5.933433055117296e+00 3.220791236076818e+00 5.130072375060895e+00 9.013840610252479e+03 + 131220 9.632823848209409e-01 -6.037856903994149e+00 -5.984121226546807e+00 3.479249372514864e+00 4.787807947986709e+00 9.168350657808873e+03 + 131240 1.003149601599338e+00 -6.069349974640456e+00 -5.947581458198631e+00 3.336874722842397e+00 5.036088387868378e+00 9.056837350599457e+03 + 131260 1.003882030734760e+00 -6.037010689502744e+00 -6.001101326580766e+00 3.525462472792474e+00 4.731659591646424e+00 9.220435011158090e+03 + 131280 1.011573596948397e+00 -6.016727133510457e+00 -6.031726160174792e+00 3.585877047928306e+00 4.499750315729825e+00 9.314684451544721e+03 + 131300 1.003517268057811e+00 -5.978475278454981e+00 -6.004379727327705e+00 3.835951791675412e+00 4.687204437547726e+00 9.230490125454924e+03 + 131320 1.024670644035960e+00 -5.988018049024664e+00 -5.978881997371198e+00 3.762795335035885e+00 4.815255957429509e+00 9.152337624715574e+03 + 131340 1.013711990584448e+00 -5.954577926499031e+00 -6.035890161482587e+00 3.903169574101386e+00 4.436262137798112e+00 9.327535822650003e+03 + 131360 1.027736378969403e+00 -5.966304505494363e+00 -6.030483259794224e+00 3.863999355027829e+00 4.495475016207898e+00 9.310863441606340e+03 + 131380 1.096662246956929e+00 -6.066370202480748e+00 -6.003530021955664e+00 3.294054089233345e+00 4.654892130294888e+00 9.227920485331419e+03 + 131400 1.002971500064141e+00 -5.929542413956620e+00 -6.052065801018373e+00 4.032331159122984e+00 4.328782910181526e+00 9.377558768115701e+03 + 131420 1.024252901945822e+00 -5.967334963738172e+00 -6.016513718779505e+00 3.890162338614638e+00 4.607770316779557e+00 9.267760171297110e+03 + 131440 9.552777418968104e-01 -5.870043585041251e+00 -6.034664707817273e+00 4.382179863938366e+00 4.436899901922034e+00 9.323758297068562e+03 + 131460 1.111093076941678e+00 -6.107199925980609e+00 -5.984324433964461e+00 3.103530814023912e+00 4.809100904101571e+00 9.169000551798281e+03 + 131480 1.034067381378517e+00 -6.002030817801160e+00 -6.026948078869804e+00 3.680074811773742e+00 4.536996042783896e+00 9.299966314376548e+03 + 131500 9.800802440599204e-01 -5.934208479089004e+00 -6.007206031127135e+00 4.068390366851407e+00 4.649227126713792e+00 9.239187526972961e+03 + 131520 9.904397121340484e-01 -5.961069445252014e+00 -6.021699258602359e+00 3.876805013153832e+00 4.528659242462859e+00 9.283791684599188e+03 + 131540 1.009320208691154e+00 -6.002319489631943e+00 -5.999227060342406e+00 3.674462336076394e+00 4.692219543608804e+00 9.214672691537919e+03 + 131560 9.942509269962964e-01 -5.992841053761710e+00 -5.966336333956363e+00 3.712945304523986e+00 4.865139507238423e+00 9.114004415441399e+03 + 131580 9.922053275991994e-01 -6.000434444788290e+00 -5.995532394467409e+00 3.678733182852928e+00 4.706881514385265e+00 9.203345883124173e+03 + 131600 9.932263045687070e-01 -6.013151342920659e+00 -5.987463116665161e+00 3.661385234279831e+00 4.808891004679062e+00 9.178602529660893e+03 + 131620 9.962850676794905e-01 -6.028378167334931e+00 -5.976142671296111e+00 3.556598190067735e+00 4.856542491739523e+00 9.143951231423700e+03 + 131640 9.892026251246759e-01 -6.026297067608541e+00 -5.987555243024403e+00 3.512244412028348e+00 4.734705964068448e+00 9.178891634993031e+03 + 131660 9.232309999023891e-01 -5.934829297567035e+00 -6.001256226481390e+00 4.039787889919560e+00 4.658354184559303e+00 9.220904008991245e+03 + 131680 9.758791956918986e-01 -6.019050206698671e+00 -6.006221712125369e+00 3.584775615656803e+00 4.658438816699818e+00 9.236177475569066e+03 + 131700 9.379765139869896e-01 -5.968728490081491e+00 -6.025465343664683e+00 3.870589257793169e+00 4.544797464518767e+00 9.295386008157093e+03 + 131720 1.068688699769764e+00 -6.166949710804097e+00 -5.986420234401045e+00 2.767759461580971e+00 4.804387651933485e+00 9.175432835358639e+03 + 131740 1.010672282084292e+00 -6.085201506505737e+00 -6.019034090828414e+00 3.251414644663130e+00 4.631358184856807e+00 9.275590098882094e+03 + 131760 9.672416606802616e-01 -6.027484325782861e+00 -6.010263357789781e+00 3.541324996198633e+00 4.640210459351079e+00 9.248593404961703e+03 + 131780 8.990563676294964e-01 -5.933764814130628e+00 -5.993892673009589e+00 4.046496905119414e+00 4.701233434680330e+00 9.198291125269139e+03 + 131800 1.038125876916316e+00 -6.142920579136632e+00 -5.969092155092786e+00 2.906201421942535e+00 4.904351132663981e+00 9.122428041154088e+03 + 131820 9.336075908135112e-01 -5.986167483097782e+00 -5.988673618617832e+00 3.800672008963500e+00 4.786281390984155e+00 9.182334222898880e+03 + 131840 9.878151102638031e-01 -6.061804369842512e+00 -5.950797403524747e+00 3.393677135780793e+00 5.031096314649919e+00 9.066640535965522e+03 + 131860 9.865914064252586e-01 -6.050376180636450e+00 -5.962026668483629e+00 3.480060342562836e+00 4.987376913387152e+00 9.100823836790238e+03 + 131880 9.445672601381528e-01 -5.972743128378099e+00 -5.976238986286807e+00 3.864576965926697e+00 4.844503208832627e+00 9.144187179621895e+03 + 131900 1.004275211599622e+00 -6.041527336471732e+00 -5.983193338018093e+00 3.504773914341240e+00 4.839736760619123e+00 9.165484007019277e+03 + 131920 9.397166042841005e-01 -5.920827738968568e+00 -6.011634026479029e+00 4.111252523058181e+00 4.589828767945540e+00 9.252783576783117e+03 + 131940 1.014172009258640e+00 -6.001714591919812e+00 -6.004351778834083e+00 3.734970459769611e+00 4.719827324404513e+00 9.230404506783309e+03 + 131960 1.040292781208354e+00 -6.009262734987058e+00 -6.030985741784840e+00 3.628496766306086e+00 4.503759899648781e+00 9.312437086212592e+03 + 131980 1.091325419117280e+00 -6.061280453268994e+00 -5.993701127256977e+00 3.407655214320084e+00 4.795706162147988e+00 9.197734834099634e+03 + 132000 1.065491629368890e+00 -6.006357849481001e+00 -5.988849929763671e+00 3.677192905432705e+00 4.777726089791430e+00 9.182830727780081e+03 + 132020 1.097982224709716e+00 -6.041110335532081e+00 -6.003855494576903e+00 3.442345939596186e+00 4.656269001528827e+00 9.228886558694063e+03 + 132040 1.042641291503157e+00 -5.950442739269262e+00 -6.020862972557248e+00 3.932588006154520e+00 4.528224129119018e+00 9.281198642108719e+03 + 132060 9.670522844470950e-01 -5.834790289531083e+00 -6.010805359870869e+00 4.606704417277696e+00 4.595998645142537e+00 9.250233854253935e+03 + 132080 1.031694068182383e+00 -5.927710078348651e+00 -6.053375662990991e+00 4.075868358367709e+00 4.354277124665022e+00 9.381627841401547e+03 + 132100 1.085594302868293e+00 -6.011336903759373e+00 -6.044093479945431e+00 3.616895930739825e+00 4.428802601215695e+00 9.352913991088779e+03 + 132120 1.004034373578224e+00 -5.904955667835869e+00 -6.038635803351039e+00 4.231354169923298e+00 4.463742144861082e+00 9.336044575848769e+03 + 132140 1.011996683522389e+00 -5.941020581627084e+00 -6.045269578689521e+00 3.936270175725488e+00 4.337656302112824e+00 9.356561771851471e+03 + 132160 1.028914546577905e+00 -5.999003166372002e+00 -6.038518008307820e+00 3.687107321548306e+00 4.460206984250814e+00 9.335667176930072e+03 + 132180 1.019849808999467e+00 -6.026534625272331e+00 -6.022051008064526e+00 3.502165410843935e+00 4.527911034688666e+00 9.284880485476251e+03 + 132200 1.012623171946348e+00 -6.064271342466329e+00 -5.970147196136766e+00 3.395855943493614e+00 4.936331357382537e+00 9.125633440172893e+03 + 132220 9.289310653323588e-01 -5.977806489100574e+00 -5.981984973218800e+00 3.767703268759718e+00 4.743709766334542e+00 9.161829742829306e+03 + 132240 9.788010731458674e-01 -6.078465725720863e+00 -5.974930509937734e+00 3.298154279157154e+00 4.892669510206739e+00 9.140250162495971e+03 + 132260 9.056257970189709e-01 -5.987363499975785e+00 -6.013080522961729e+00 3.721027244242376e+00 4.573356118560641e+00 9.257247613947013e+03 + 132280 9.687206735547004e-01 -6.089846880600771e+00 -5.949337209370480e+00 3.200616543378893e+00 5.007444819384570e+00 9.062177757202646e+03 + 132300 9.837147614891352e-01 -6.113326970592984e+00 -5.927305740322531e+00 3.078358691937990e+00 5.146521382843280e+00 8.995247236102583e+03 + 132320 9.732155548080043e-01 -6.093108531640963e+00 -5.955384602501708e+00 3.204487378155700e+00 4.995319491982460e+00 9.080591460390004e+03 + 132340 9.259666563576376e-01 -6.014169397835060e+00 -5.994024838300223e+00 3.560688462965369e+00 4.676361641174916e+00 9.198708811588360e+03 + 132360 9.468459342125349e-01 -6.032069346177106e+00 -5.962392780363214e+00 3.484453197271210e+00 4.884546820588293e+00 9.101954768722744e+03 + 132380 9.931548021200675e-01 -6.081912210435366e+00 -5.974958340296141e+00 3.263662616668333e+00 4.877808290065678e+00 9.140331218752799e+03 + 132400 9.978232879279847e-01 -6.069466686281583e+00 -5.990065413504260e+00 3.293888703338349e+00 4.749823098932993e+00 9.186611281373320e+03 + 132420 9.755819342792181e-01 -6.020240606927674e+00 -5.991446720606729e+00 3.624056526153888e+00 4.789395477248263e+00 9.190800448748456e+03 + 132440 9.876318718610894e-01 -6.020997067034952e+00 -5.974584813014150e+00 3.539831400726244e+00 4.806337745586788e+00 9.139191490546593e+03 + 132460 9.619286599317186e-01 -5.966008975138416e+00 -5.957216133789147e+00 3.920706737639317e+00 4.971196593354620e+00 9.086167989934866e+03 + 132480 9.684243621514940e-01 -5.959933992194438e+00 -5.988866182920771e+00 3.921830565043568e+00 4.755697448650919e+00 9.182832211999927e+03 + 132500 9.968536327579650e-01 -5.986071645493661e+00 -5.959517372668894e+00 3.816382722590130e+00 4.968861466410383e+00 9.093165898632915e+03 + 132520 1.073760765343268e+00 -6.085755324841104e+00 -5.957761940218028e+00 3.240893678151458e+00 4.975851499569416e+00 9.087804172344389e+03 + 132540 9.503138910657258e-01 -5.890535030509758e+00 -6.016768520279302e+00 4.234925515942152e+00 4.510073283116022e+00 9.268591851678852e+03 + 132560 1.061598141578479e+00 -6.045118774323414e+00 -5.997917878656546e+00 3.462602953580725e+00 4.733637800814882e+00 9.210665034399417e+03 + 132580 1.047073050887451e+00 -6.019174509706593e+00 -6.049116625835873e+00 3.618445616652516e+00 4.446513352310697e+00 9.368457879060266e+03 + 132600 1.012329356064740e+00 -5.967912076320514e+00 -6.044644954614967e+00 3.825554684552512e+00 4.384942623011230e+00 9.354624718448758e+03 + 132620 1.074335375212432e+00 -6.064133231423622e+00 -5.982201753007153e+00 3.412075707702636e+00 4.882538935625304e+00 9.162491119385550e+03 + 132640 1.000683350686506e+00 -5.961894101005387e+00 -6.027278708396974e+00 3.826534434304731e+00 4.451085900426946e+00 9.301002372879384e+03 + 132660 9.952222537251562e-01 -5.960874785455147e+00 -5.976199833273202e+00 3.951452786444573e+00 4.863453990329815e+00 9.144114084491806e+03 + 132680 9.685060113734959e-01 -5.926333978142932e+00 -6.014116595834272e+00 4.059144302285968e+00 4.555082927186105e+00 9.260431053259235e+03 + 132700 1.013015892019874e+00 -5.997578356718474e+00 -6.016209828900536e+00 3.687652617482683e+00 4.580667821002285e+00 9.266901428351002e+03 + 132720 1.017748377019775e+00 -6.010737734397365e+00 -5.999686875342457e+00 3.664312227496306e+00 4.727767970304503e+00 9.216094041071743e+03 + 132740 1.046446692403036e+00 -6.060388098956939e+00 -5.993540975613866e+00 3.323617599800807e+00 4.707464126595641e+00 9.197245332741266e+03 + 132760 1.045636680786479e+00 -6.065083308789472e+00 -5.998838682304964e+00 3.316791909646820e+00 4.697178806243683e+00 9.213499532439931e+03 + 132780 9.910110354007096e-01 -5.989919203249939e+00 -6.037265830415930e+00 3.723955442007225e+00 4.452083781953228e+00 9.331818695346989e+03 + 132800 1.016887882463320e+00 -6.036375968303036e+00 -5.997676989985738e+00 3.467906624911351e+00 4.690122147056814e+00 9.209922307614843e+03 + 132820 9.135835618522420e-01 -5.889363979045744e+00 -6.027805036475682e+00 4.245488445165089e+00 4.450538469717989e+00 9.302587896450643e+03 + 132840 9.963030995598791e-01 -6.015078879046035e+00 -5.986842951038905e+00 3.593917101422632e+00 4.756052169535311e+00 9.176697264218750e+03 + 132860 9.357127828952373e-01 -5.924831562705464e+00 -5.998210431183720e+00 4.084999963413543e+00 4.663647145268200e+00 9.211532445087132e+03 + 132880 9.728254357506572e-01 -5.977886351611906e+00 -5.987861116234787e+00 3.849915674684055e+00 4.792639032629637e+00 9.179817425617102e+03 + 132900 1.010979254693925e+00 -6.032296229543508e+00 -6.018828389152844e+00 3.519305315373654e+00 4.596639739038409e+00 9.274942297706419e+03 + 132920 1.041289677381281e+00 -6.076095047557565e+00 -5.968174778661417e+00 3.300743427986961e+00 4.920438312596279e+00 9.119590342137746e+03 + 132940 9.728509201570851e-01 -5.972934293654172e+00 -6.025700450918322e+00 3.787877109338278e+00 4.484885668791089e+00 9.296115284521691e+03 + 132960 1.042032012706514e+00 -6.075207414533070e+00 -5.983115162766888e+00 3.298392140211113e+00 4.827200101082434e+00 9.165296331132051e+03 + 132980 9.811635603611188e-01 -5.985174268897868e+00 -5.996712030767289e+00 3.790222215670905e+00 4.723970601553814e+00 9.206939770255321e+03 + 133000 1.021611416103556e+00 -6.043127404011926e+00 -6.000875772150067e+00 3.472732417349893e+00 4.715347825919585e+00 9.219744608200876e+03 + 133020 9.614238177046439e-01 -5.952072365826485e+00 -6.015943679661754e+00 3.974120946377314e+00 4.607361978281325e+00 9.266063132773794e+03 + 133040 9.844347216610244e-01 -5.983949154266593e+00 -6.005933623532785e+00 3.761649757279128e+00 4.635411532667028e+00 9.235266744773096e+03 + 133060 1.022024253025465e+00 -6.036225515218599e+00 -5.987645007417905e+00 3.576280397605971e+00 4.855237191206844e+00 9.179146135739655e+03 + 133080 9.944918664090714e-01 -5.992962742917793e+00 -6.002547765177829e+00 3.756715514431574e+00 4.701676833337051e+00 9.224868867186875e+03 + 133100 1.000072931153555e+00 -5.997791882617317e+00 -5.995945400943048e+00 3.722657060183177e+00 4.733259843698946e+00 9.204621778787463e+03 + 133120 9.880038362072485e-01 -5.975057693731678e+00 -5.997654064574769e+00 3.826186152413892e+00 4.696434294255772e+00 9.209845558612440e+03 + 133140 1.007296367605285e+00 -5.998446503964416e+00 -5.992849022749831e+00 3.749199550586853e+00 4.781341153928421e+00 9.195096269403031e+03 + 133160 1.022312113888329e+00 -6.012678510309021e+00 -6.033530965880084e+00 3.675002880202512e+00 4.555264853406396e+00 9.320236927074082e+03 + 133180 9.755465692595282e-01 -5.936087632264056e+00 -6.059905395981245e+00 4.033154525675057e+00 4.322173765673947e+00 9.401864788991856e+03 + 133200 1.010484279731543e+00 -5.983046209162685e+00 -6.011352755255274e+00 3.824557649833385e+00 4.662017081745891e+00 9.251953365905067e+03 + 133220 1.068534883137551e+00 -6.063534430613060e+00 -5.983183235217634e+00 3.452964643342029e+00 4.914353641609862e+00 9.165496817305606e+03 + 133240 9.756001788886215e-01 -5.920824373854352e+00 -6.038898860642904e+00 4.178707734149523e+00 4.500705759041874e+00 9.336820224489678e+03 + 133260 1.018398722836955e+00 -5.978350310281646e+00 -6.031372011106472e+00 3.811479864132397e+00 4.507021052914562e+00 9.313597523188659e+03 + 133280 1.082010886613598e+00 -6.066938973140800e+00 -5.989770017521053e+00 3.384313447468956e+00 4.827429532494830e+00 9.185679887215731e+03 + 133300 1.043756066800481e+00 -6.004157574887813e+00 -6.032215683075380e+00 3.676106735840803e+00 4.514992736649584e+00 9.316205789113486e+03 + 133320 9.988357980798949e-01 -5.939456200701182e+00 -6.028598252945498e+00 4.051652970772368e+00 4.539785512097500e+00 9.305054359362692e+03 + 133340 1.034020073990885e+00 -5.998098615566682e+00 -5.993577173514683e+00 3.750706367783864e+00 4.776669187737340e+00 9.197333115433823e+03 + 133360 9.979772258468070e-01 -5.951276845109858e+00 -6.005027316906256e+00 3.995683337825139e+00 4.687039810911591e+00 9.232480132862082e+03 + 133380 1.092090430819119e+00 -6.100815788967999e+00 -6.004321175711237e+00 3.169559669594496e+00 4.723646671407965e+00 9.230327824027623e+03 + 133400 1.045444614916810e+00 -6.049375438739567e+00 -5.973062956596912e+00 3.434935946066087e+00 4.873134027847652e+00 9.134548708699273e+03 + 133420 1.006400882420135e+00 -6.010395030561625e+00 -5.982295707111049e+00 3.740578819125603e+00 4.901929482735061e+00 9.162715864367174e+03 + 133440 1.006301222965949e+00 -6.030538245893702e+00 -5.980323030988106e+00 3.588832781443134e+00 4.877176316210459e+00 9.156735872814821e+03 + 133460 9.744693481587791e-01 -6.004143449749841e+00 -5.983178983694544e+00 3.755389363523106e+00 4.875770571853257e+00 9.165474057823581e+03 + 133480 9.996493155797510e-01 -6.062088974312039e+00 -5.962109271571446e+00 3.430686766960992e+00 5.004785691906475e+00 9.101108286649629e+03 + 133500 9.392357459343811e-01 -5.990627513504789e+00 -6.025356018297121e+00 3.802708998287035e+00 4.603292549550720e+00 9.295046262874081e+03 + 133520 9.885394959847975e-01 -6.081035520198896e+00 -5.980499073663968e+00 3.332587027680298e+00 4.909882861648676e+00 9.157292879561677e+03 + 133540 9.390579377029294e-01 -6.021898092908790e+00 -6.004083173440559e+00 3.526649485632805e+00 4.628945510069267e+00 9.229587862271745e+03 + 133560 9.568118876994509e-01 -6.057819627929410e+00 -6.008575191448968e+00 3.355825347765805e+00 4.638594522588418e+00 9.243405153077834e+03 + 133580 9.422198224381588e-01 -6.042500190932707e+00 -5.990855018018841e+00 3.550530026956140e+00 4.847084601892239e+00 9.189007222907296e+03 + 133600 9.866663318926765e-01 -6.110453859554553e+00 -6.015472110183592e+00 3.079207693257113e+00 4.624607596523379e+00 9.264618360085222e+03 + 133620 8.758316124251760e-01 -5.944627056473825e+00 -6.021659807009289e+00 4.081627976549974e+00 4.639294002195723e+00 9.283659284282045e+03 + 133640 1.010333598767250e+00 -6.135323771416097e+00 -5.970362842315738e+00 3.034659971061434e+00 4.981891153576972e+00 9.126292925254187e+03 + 133660 1.023747679642860e+00 -6.134972516802505e+00 -6.008692120771023e+00 2.960601719166342e+00 4.685723295007245e+00 9.243765895507302e+03 + 133680 9.675502897781302e-01 -6.024620544959927e+00 -6.011093709865127e+00 3.579170808346773e+00 4.656843988732079e+00 9.251153603818173e+03 + 133700 1.022924529241480e+00 -6.069758163752358e+00 -5.986630012174479e+00 3.359118090977419e+00 4.836452801377478e+00 9.176040616420030e+03 + 133720 9.693445031740692e-01 -5.947312740090167e+00 -5.987320557307003e+00 4.002433028080965e+00 4.772701950432188e+00 9.178168048289728e+03 + 133740 1.014906938909986e+00 -5.969152934584564e+00 -5.991404543873026e+00 3.861593077542620e+00 4.733820893582858e+00 9.190677206076682e+03 + 133760 1.034525676877319e+00 -5.959200510914160e+00 -5.997432855127107e+00 3.973334536627337e+00 4.753798499720453e+00 9.209150405367393e+03 + 133780 1.047551927982597e+00 -5.950047975767287e+00 -5.992221320504731e+00 4.010408989760336e+00 4.768243117973928e+00 9.193165424498096e+03 + 133800 1.047382632163678e+00 -5.930504006402900e+00 -6.077838660065508e+00 4.035907596185502e+00 4.189889214890838e+00 9.457526639036023e+03 + 133820 1.067592633276134e+00 -5.953493670025167e+00 -6.006175135294981e+00 3.999513421773573e+00 4.697008295763895e+00 9.235999133222560e+03 + 133840 1.024598464676316e+00 -5.890901253678570e+00 -6.046346266758817e+00 4.266493200531729e+00 4.373903880386920e+00 9.359821077611796e+03 + 133860 1.089893670702421e+00 -5.994562544421340e+00 -5.979622404804341e+00 3.746664932003067e+00 4.832453525663009e+00 9.154594674828333e+03 + 133880 1.028452736194007e+00 -5.915484211146172e+00 -5.990627659439177e+00 4.144529804704362e+00 4.713044496194885e+00 9.188292095955674e+03 + 133900 1.019130713260869e+00 -5.916355080529220e+00 -6.004676849145951e+00 4.132235759298339e+00 4.625078496151550e+00 9.231388951708464e+03 + 133920 1.069731765673821e+00 -6.008009702309238e+00 -5.996602401607418e+00 3.736181900654938e+00 4.801684386558867e+00 9.206612787295093e+03 + 133940 1.001965224132118e+00 -5.929672060925872e+00 -6.008156038396509e+00 4.088965533100654e+00 4.638298389107995e+00 9.242119761074562e+03 + 133960 1.027490143177410e+00 -5.989894042185160e+00 -6.013890739351978e+00 3.742881808825680e+00 4.605089060216928e+00 9.259715503503076e+03 + 133980 1.067912451512028e+00 -6.073965761799312e+00 -5.975350895065555e+00 3.304502155789173e+00 4.870763981175713e+00 9.141540601346815e+03 + 134000 9.693855976090501e-01 -5.951789062086675e+00 -6.005529549819242e+00 3.978268212404368e+00 4.669682015530370e+00 9.234029073231279e+03 + 134020 9.850179330002994e-01 -5.993880461575698e+00 -6.014831733071897e+00 3.724366163056486e+00 4.604060719926522e+00 9.262602551839103e+03 + 134040 1.022316947304968e+00 -6.065203377117165e+00 -5.998385655778762e+00 3.377530052709362e+00 4.761207748643431e+00 9.212102658197040e+03 + 134060 9.685420893611494e-01 -6.000055978357385e+00 -5.991315750313665e+00 3.672820886631006e+00 4.723008628603967e+00 9.190419090504687e+03 + 134080 9.675016255973119e-01 -6.006777841202176e+00 -5.985332737273795e+00 3.645898136828800e+00 4.769039242204670e+00 9.172091573425259e+03 + 134100 9.987927667428893e-01 -6.057315661192904e+00 -6.006577417620312e+00 3.364101355145591e+00 4.655448201457235e+00 9.237243426216733e+03 + 134120 9.891238694806389e-01 -6.045044431508938e+00 -5.963969130624257e+00 3.470326461442858e+00 4.935873385484958e+00 9.106775270434056e+03 + 134140 1.009325133210154e+00 -6.073557213045891e+00 -5.977243092935130e+00 3.321817926304601e+00 4.874868508542507e+00 9.147330760374400e+03 + 134160 9.900317657755426e-01 -6.042056738018474e+00 -5.962694825111071e+00 3.486470097737828e+00 4.942178482868464e+00 9.102897099848773e+03 + 134180 1.004366147770202e+00 -6.058984551196311e+00 -5.988999906650637e+00 3.393898833703850e+00 4.795761492773851e+00 9.183309098727465e+03 + 134200 9.942767605354268e-01 -6.038701791099617e+00 -5.984676269694502e+00 3.468954368724030e+00 4.779177273054621e+00 9.170048861755786e+03 + 134220 1.021518048426868e+00 -6.072821963655356e+00 -5.960891510292544e+00 3.300673376086620e+00 4.943395360477563e+00 9.097376845939089e+03 + 134240 1.019161672622134e+00 -6.062242265885670e+00 -5.995344438864782e+00 3.367724596338359e+00 4.751862271497576e+00 9.202752845324329e+03 + 134260 9.610888330709214e-01 -5.971615402964286e+00 -5.965934931912919e+00 3.905206002112065e+00 4.937824145939070e+00 9.112744266560085e+03 + 134280 1.018666246237368e+00 -6.048582836219751e+00 -5.964752338175651e+00 3.493342728011412e+00 4.974710420508282e+00 9.109161697702893e+03 + 134300 1.040997337240444e+00 -6.073201000975438e+00 -6.004422058034249e+00 3.305617302833265e+00 4.700556636708588e+00 9.230638335123154e+03 + 134320 9.479888132480758e-01 -5.928743289853869e+00 -6.023495900197874e+00 4.097735703901222e+00 4.553651552386883e+00 9.289308953045289e+03 + 134340 1.005909444483253e+00 -6.007448915618292e+00 -5.981607238275156e+00 3.701910293942968e+00 4.850297204233896e+00 9.160645192752936e+03 + 134360 9.971478318097469e-01 -5.987602592421088e+00 -5.990589133667696e+00 3.770458504570193e+00 4.753309322566405e+00 9.188166196479338e+03 + 134380 9.758011944731900e-01 -5.947960174813698e+00 -6.047862549175901e+00 3.879266638289443e+00 4.305611744859206e+00 9.364546439025322e+03 + 134400 9.607141446627846e-01 -5.918174955671712e+00 -6.038808408901946e+00 4.113751420653486e+00 4.421055464238924e+00 9.336560012845373e+03 + 134420 9.995263430993162e-01 -5.967554043913330e+00 -6.014060722201032e+00 3.863116795134810e+00 4.596068251521615e+00 9.260270346862137e+03 + 134440 1.025596552570541e+00 -5.999110019148148e+00 -5.984945890844894e+00 3.681179126760616e+00 4.762511743369672e+00 9.170897205268937e+03 + 134460 1.009192076701818e+00 -5.967819416353110e+00 -5.991135487223989e+00 3.840461473434199e+00 4.706576986343307e+00 9.189843261634976e+03 + 134480 1.018353642119958e+00 -5.974081819353414e+00 -5.988797655040019e+00 3.825913812738619e+00 4.741413206957921e+00 9.182662543663386e+03 + 134500 1.038082731226579e+00 -5.992792976043125e+00 -5.979571995722969e+00 3.661661158626714e+00 4.737578073565146e+00 9.154429665937147e+03 + 134520 1.039148482053148e+00 -5.977997944494911e+00 -6.009690746063496e+00 3.819613332727813e+00 4.637628361675802e+00 9.246781316351502e+03 + 134540 1.054294598957380e+00 -5.982806259994755e+00 -5.964349953773574e+00 3.795647079058558e+00 4.901626045484734e+00 9.107917711286569e+03 + 134560 1.031685957251909e+00 -5.927442796213885e+00 -5.997511897161767e+00 4.087619037228540e+00 4.685271416427473e+00 9.209379552612036e+03 + 134580 1.050846355528312e+00 -5.933447240556674e+00 -5.956285469426932e+00 4.054840936648051e+00 4.923700292270538e+00 9.083310093397437e+03 + 134600 9.868172858354941e-01 -5.815896147771146e+00 -6.002506264824526e+00 4.672323624231315e+00 4.600779454288520e+00 9.224730547199986e+03 + 134620 1.065319446531914e+00 -5.912389848494087e+00 -6.025652131942617e+00 4.137865906443736e+00 4.487496347600556e+00 9.295958589057031e+03 + 134640 1.165298504725571e+00 -6.044671046841195e+00 -5.999911672135897e+00 3.408936962013492e+00 4.665952218062165e+00 9.216784101410321e+03 + 134660 1.056661575111701e+00 -5.879890672372785e+00 -6.026681419684789e+00 4.273435621857557e+00 4.430540434997297e+00 9.299117143105021e+03 + 134680 1.059135195929530e+00 -5.888783646542569e+00 -5.993277319534114e+00 4.298004629299840e+00 4.697985788638758e+00 9.196421204960492e+03 + 134700 1.105262874123701e+00 -5.972455513418467e+00 -6.029491930187564e+00 3.815172638291730e+00 4.487660706846609e+00 9.307825196991465e+03 + 134720 1.029460959793053e+00 -5.886940553401670e+00 -6.034197054338677e+00 4.274683945490054e+00 4.429114329239887e+00 9.322312014995603e+03 + 134740 1.047640861917031e+00 -5.950784742812106e+00 -5.994652742285909e+00 3.947651232741168e+00 4.695754391211606e+00 9.200615151631762e+03 + 134760 1.085622329303730e+00 -6.046396782389277e+00 -5.951603110781282e+00 3.424977434311804e+00 4.969297365958179e+00 9.069063769672222e+03 + 134780 1.007791660956589e+00 -5.968761765576872e+00 -5.970796670881665e+00 3.925504198953459e+00 4.913819457792757e+00 9.127603499507843e+03 + 134800 9.960253549706910e-01 -5.982698544896148e+00 -6.003733975759372e+00 3.785179708127253e+00 4.664391008888219e+00 9.228523492853761e+03 + 134820 1.031191351411042e+00 -6.062949003318506e+00 -6.005603398817518e+00 3.407445278128759e+00 4.736732613377044e+00 9.234230016667179e+03 + 134840 9.631474975457992e-01 -5.984337695897054e+00 -6.027757915251029e+00 3.846213007832618e+00 4.596887389044864e+00 9.302457301578139e+03 + 134860 1.016100817482414e+00 -6.081246143451756e+00 -5.997187779380221e+00 3.291232671993211e+00 4.773908806481759e+00 9.208428020006540e+03 + 134880 1.001620654917322e+00 -6.074394260780251e+00 -5.988475172941440e+00 3.299860991771201e+00 4.793221690077523e+00 9.181719622016404e+03 + 134900 9.452512744020880e-01 -6.000575100119785e+00 -5.983466728798295e+00 3.715976794340584e+00 4.814215709980489e+00 9.166365370623625e+03 + 134920 1.035858085596521e+00 -6.139903652990537e+00 -5.939406451799563e+00 3.000548275708071e+00 5.151834231788252e+00 9.031966824771089e+03 + 134940 9.806801799775273e-01 -6.056923951259271e+00 -5.982898748014649e+00 3.395202511415492e+00 4.820266683809291e+00 9.164638377278070e+03 + 134960 9.706567946439090e-01 -6.037985796318637e+00 -5.961965732688894e+00 3.494130133908828e+00 4.930649103337642e+00 9.100658891363943e+03 + 134980 1.026500069257789e+00 -6.113504785810966e+00 -5.963035551411349e+00 3.086165500970229e+00 4.950183129931600e+00 9.103922118072915e+03 + 135000 9.441283902600983e-01 -5.980527992136636e+00 -6.032063927690107e+00 3.793453320629696e+00 4.497526003521418e+00 9.315732016160026e+03 + 135020 9.699100370285354e-01 -6.004797800914381e+00 -6.003701178532358e+00 3.685534390018776e+00 4.691831365438119e+00 9.228389407549601e+03 + 135040 1.028570529851006e+00 -6.072643387283338e+00 -6.001737866183896e+00 3.300236171042739e+00 4.707386645789661e+00 9.222378724136333e+03 + 135060 9.511553005823629e-01 -5.935978222331883e+00 -6.032103461830918e+00 3.973370130034900e+00 4.421404129498708e+00 9.315868899307596e+03 + 135080 9.786968550244616e-01 -5.950054624323963e+00 -6.007187707149327e+00 3.921018095882695e+00 4.592951092983462e+00 9.239089218903740e+03 + 135100 1.065759519242730e+00 -6.045741456757829e+00 -5.983953661229345e+00 3.422955427952078e+00 4.777750511507096e+00 9.167864200979138e+03 + 135120 9.873612230474046e-01 -5.892611808302609e+00 -6.008775799516830e+00 4.246267843491736e+00 4.579236229620140e+00 9.243977444242879e+03 + 135140 9.943683144454598e-01 -5.863648102501340e+00 -5.989268644040829e+00 4.454361338075440e+00 4.733028748839721e+00 9.184106023196482e+03 + 135160 1.052177033054590e+00 -5.905560402170901e+00 -6.017199082653247e+00 4.128131152204877e+00 4.487084572845274e+00 9.269941740021002e+03 + 135180 1.112511364232299e+00 -5.955090173022720e+00 -6.065720301258491e+00 3.914548631752203e+00 4.279293315465390e+00 9.419921521966677e+03 + 135200 1.118199811178228e+00 -5.941498463680056e+00 -6.016107444912985e+00 3.998595513854009e+00 4.570179197912005e+00 9.266565141251320e+03 + 135220 1.082082846107906e+00 -5.880305315426551e+00 -6.035921588727494e+00 4.290363606121955e+00 4.396790883287475e+00 9.327649658784549e+03 + 135240 1.144026176979042e+00 -5.976263702709836e+00 -6.024694337569596e+00 3.803687557046655e+00 4.525591357065392e+00 9.293001546020940e+03 + 135260 1.016573477156018e+00 -5.802309068600850e+00 -6.017072038330365e+00 4.776696594798352e+00 4.543494388149321e+00 9.269514108850843e+03 + 135280 1.018464550294152e+00 -5.822165013882079e+00 -6.029245122615507e+00 4.701807362572509e+00 4.512721332681905e+00 9.307006965628820e+03 + 135300 1.078683951858797e+00 -5.929136331625910e+00 -6.036984237087646e+00 4.112693306759055e+00 4.493413944188337e+00 9.330897796232546e+03 + 135320 1.102503338278025e+00 -5.984685412995852e+00 -6.018822574090304e+00 3.767833241336247e+00 4.571812379623298e+00 9.274940708316939e+03 + 135340 1.000381840260648e+00 -5.853480491373474e+00 -6.115997669310183e+00 4.463011276990899e+00 3.955597016876324e+00 9.576558676097997e+03 + 135360 1.036288556508216e+00 -5.927288094729210e+00 -6.039756766939353e+00 4.080553818717797e+00 4.434741298416381e+00 9.339508052467345e+03 + 135380 1.008885702006785e+00 -5.904188662354951e+00 -6.049724396166170e+00 4.118826313818513e+00 4.283137608692473e+00 9.370333197481761e+03 + 135400 1.098850966616866e+00 -6.055269495244323e+00 -5.971049090710268e+00 3.412930332299593e+00 4.896536928199613e+00 9.128370050946889e+03 + 135420 1.012268195559939e+00 -5.944048547938035e+00 -6.019939863975795e+00 3.977758430077702e+00 4.541978749245684e+00 9.278363559132378e+03 + 135440 1.039086573435671e+00 -6.003820155753894e+00 -6.019217687719358e+00 3.680039136395698e+00 4.591624125089632e+00 9.276145469640014e+03 + 135460 9.915039857539619e-01 -5.955711032291807e+00 -6.021888641135829e+00 3.942906216358691e+00 4.562904145424445e+00 9.284372031514735e+03 + 135480 1.012653147205272e+00 -6.009281084948046e+00 -6.031936761153135e+00 3.629216470479775e+00 4.499124071755592e+00 9.315345951659900e+03 + 135500 9.790247544170458e-01 -5.980493464703635e+00 -6.033648457104173e+00 3.791452731743013e+00 4.486228539670636e+00 9.320640111860293e+03 + 135520 1.010916748225532e+00 -6.047868083113204e+00 -5.999066124609559e+00 3.477255838361529e+00 4.757484236168128e+00 9.214180743651013e+03 + 135540 9.365665324388841e-01 -5.957258474512021e+00 -6.044225159663116e+00 3.918145974132976e+00 4.418769809944358e+00 9.353317062263635e+03 + 135560 9.693315292775547e-01 -6.024462184572679e+00 -5.993521650430470e+00 3.563501171764242e+00 4.741166506840991e+00 9.197165381959639e+03 + 135580 9.765809358310944e-01 -6.047971207562903e+00 -5.990114005949865e+00 3.446595496048858e+00 4.778820501083938e+00 9.186735857560681e+03 + 135600 9.756597860699231e-01 -6.057220907372679e+00 -6.021319687129094e+00 3.361019684835315e+00 4.567170047169858e+00 9.282621401419761e+03 + 135620 9.670370181049692e-01 -6.053333161925959e+00 -5.964614562776795e+00 3.422320441254473e+00 4.931756366727821e+00 9.108742352261819e+03 + 135640 9.399305302177708e-01 -6.017128357251917e+00 -5.939335424018664e+00 3.648372712114222e+00 5.095071773157068e+00 9.031742620538071e+03 + 135660 9.698250323518357e-01 -6.058391754585021e+00 -5.935862784866839e+00 3.425009361351492e+00 5.128589666770072e+00 9.021191237886973e+03 + 135680 9.833197398999090e-01 -6.068501608080950e+00 -5.967825743087045e+00 3.322705944823363e+00 4.900802341158123e+00 9.118537588040628e+03 + 135700 9.697748506479794e-01 -6.029664261863756e+00 -5.972275329576894e+00 3.548565837645918e+00 4.878101967745653e+00 9.132151829336684e+03 + 135720 9.947047555983253e-01 -6.039957343609053e+00 -5.990938256300926e+00 3.516689165776619e+00 4.798164350779131e+00 9.189233843014656e+03 + 135740 9.698472589285689e-01 -5.967902484689058e+00 -5.993434706796222e+00 3.887732568236027e+00 4.741122597798088e+00 9.196908758910497e+03 + 135760 9.756602916013396e-01 -5.932776782742335e+00 -6.005688425508307e+00 4.011272950905856e+00 4.592603015103397e+00 9.234502236335253e+03 + 135780 1.058376787479655e+00 -6.006723029622833e+00 -5.964605190247257e+00 3.721560020129755e+00 4.963407171538896e+00 9.108721712377755e+03 + 135800 1.054884865080725e+00 -5.959966577596602e+00 -6.049179584955121e+00 3.872290064920249e+00 4.360015170999358e+00 9.368615350093904e+03 + 135820 1.131695902005475e+00 -6.046891975041634e+00 -6.012002662872479e+00 3.429582244673742e+00 4.629922074252640e+00 9.253933026855324e+03 + 135840 1.026233991138003e+00 -5.877476038899651e+00 -6.004968319904576e+00 4.350833547327445e+00 4.618753140430443e+00 9.232303994951715e+03 + 135860 1.080899336777158e+00 -5.953675157549505e+00 -5.979208715582567e+00 3.936517614843690e+00 4.789899973312506e+00 9.153329870916816e+03 + 135880 1.115068463555549e+00 -6.007393651003335e+00 -5.942931160761962e+00 3.699596641466969e+00 5.069750235971062e+00 9.042677861279537e+03 + 135900 1.047323664768908e+00 -5.913983911730012e+00 -5.979347272339563e+00 4.182371091289316e+00 4.807044559721915e+00 9.153727755913891e+03 + 135920 1.042555090627455e+00 -5.917647004575754e+00 -6.014038745590931e+00 4.143961400175561e+00 4.590465106692701e+00 9.260173957358707e+03 + 135940 1.086599288545800e+00 -5.998660037815684e+00 -6.017376928826088e+00 3.598879879528782e+00 4.491404594917522e+00 9.270466009296541e+03 + 135960 1.028703449135273e+00 -5.933017058571592e+00 -5.952720001181738e+00 4.096143166726923e+00 4.983005821238952e+00 9.072455452798426e+03 + 135980 9.884316537942814e-01 -5.894173497068046e+00 -5.978731971672183e+00 4.251315682267518e+00 4.765767835708909e+00 9.151854119570376e+03 + 136000 1.068829454451514e+00 -6.031925359048610e+00 -5.974268403934760e+00 3.514698260619154e+00 4.845773419267852e+00 9.138208440017092e+03 + 136020 9.923740732413736e-01 -5.937253905537931e+00 -6.023377624458455e+00 3.998437318276388e+00 4.503901596632307e+00 9.288936771605182e+03 + 136040 9.831399858522880e-01 -5.941776456375737e+00 -6.005777535823306e+00 3.987437445958242e+00 4.619933343635267e+00 9.234783891962534e+03 + 136060 1.029582504137016e+00 -6.027464969864919e+00 -5.991915725529092e+00 3.551348362954362e+00 4.755477625158465e+00 9.192247975908940e+03 + 136080 1.079615942437887e+00 -6.115691952261560e+00 -5.990161401319341e+00 3.076929676701972e+00 4.797745526002171e+00 9.186881068693207e+03 + 136100 9.804265967112398e-01 -5.979844360952997e+00 -6.035738125105898e+00 3.792516532201380e+00 4.471565888903374e+00 9.327069084425008e+03 + 136120 1.018159779493264e+00 -6.047949349649494e+00 -5.974251079190813e+00 3.515632131807721e+00 4.938819005551964e+00 9.138161194984836e+03 + 136140 1.031754214405736e+00 -6.075394080199154e+00 -5.966401892107920e+00 3.357477421468967e+00 4.983327431975427e+00 9.114209044339868e+03 + 136160 9.881896471347161e-01 -6.018045594737544e+00 -6.019437011769536e+00 3.603040908526334e+00 4.595051176607541e+00 9.276813628054977e+03 + 136180 1.025537463870473e+00 -6.076541186602233e+00 -5.981423473805411e+00 3.311111287621318e+00 4.857291913919154e+00 9.160138673985983e+03 + 136200 1.049294905017373e+00 -6.112936852459408e+00 -5.997469061609136e+00 3.134222761881956e+00 4.797256685527103e+00 9.209286596863099e+03 + 136220 1.030480316237187e+00 -6.088448563352166e+00 -6.000950707215428e+00 3.179935868201008e+00 4.682362098387634e+00 9.219983242503758e+03 + 136240 9.800394824228993e-01 -6.015279309471921e+00 -5.985659644916852e+00 3.604335380663481e+00 4.774416078166961e+00 9.173060881181395e+03 + 136260 9.327598249139613e-01 -5.943701726181975e+00 -5.984420254801326e+00 3.996657198520198e+00 4.762845106015947e+00 9.169249325679388e+03 + 136280 9.947544090140791e-01 -6.030327406915912e+00 -5.957359847416629e+00 3.548048417552612e+00 4.967039435890837e+00 9.086614322854315e+03 + 136300 1.035373375075447e+00 -6.083595145491326e+00 -5.987623166447296e+00 3.215321843233778e+00 4.766407798520362e+00 9.179102025234037e+03 + 136320 1.043303927466342e+00 -6.088843917815097e+00 -5.995982418005545e+00 3.181694769188292e+00 4.714919871365394e+00 9.204740844845363e+03 + 136340 9.859887317825763e-01 -5.999058807247710e+00 -6.018569316120496e+00 3.737448838558730e+00 4.625416477369705e+00 9.274135586794842e+03 + 136360 1.022032885797105e+00 -6.049153231499328e+00 -5.976708572228217e+00 3.423478069706188e+00 4.839466514015696e+00 9.145700717058980e+03 + 136380 1.016252438895692e+00 -6.036684514363619e+00 -5.996698208227883e+00 3.503198113690507e+00 4.732805671382783e+00 9.206924383055019e+03 + 136400 1.014482498470448e+00 -6.029549134088272e+00 -6.011645242074867e+00 3.548935445464845e+00 4.651742364024158e+00 9.252832395275582e+03 + 136420 9.533320776774808e-01 -5.935803778719102e+00 -6.058946885636515e+00 4.044018890980732e+00 4.336912114726741e+00 9.398874558101950e+03 + 136440 1.043551046472035e+00 -6.067790238199271e+00 -5.988998273047525e+00 3.351066890789775e+00 4.803502547708301e+00 9.183293640561616e+03 + 136460 1.009567018459496e+00 -6.015804172106607e+00 -6.018914666286268e+00 3.575053416593328e+00 4.557192477666303e+00 9.275181320537002e+03 + 136480 1.055207706873927e+00 -6.083637818639451e+00 -5.980840702918184e+00 3.231200825890635e+00 4.821477772164396e+00 9.158313885694066e+03 + 136500 9.769912277580959e-01 -5.966508622928183e+00 -6.000414632927589e+00 3.895634315256324e+00 4.700940758901644e+00 9.218302952114913e+03 + 136520 9.592987908398813e-01 -5.938047514754180e+00 -5.999560604571658e+00 4.019184505718325e+00 4.665966824866481e+00 9.215701098857555e+03 + 136540 9.930154643752914e-01 -5.986656723328995e+00 -6.001034322119532e+00 3.829639475082289e+00 4.747081077900802e+00 9.220236615551896e+03 + 136560 9.393170316115811e-01 -5.906753013072812e+00 -6.046785262528307e+00 4.217883368264553e+00 4.413796521970531e+00 9.361217317982031e+03 + 136580 1.014361554918613e+00 -6.017548869094822e+00 -5.987257307178396e+00 3.640287334015340e+00 4.814226170143519e+00 9.177976036951895e+03 + 136600 1.049508309133553e+00 -6.068130563942215e+00 -5.998809841904775e+00 3.336706849374489e+00 4.734757162660538e+00 9.213396969624082e+03 + 136620 1.050224248707701e+00 -6.069998407104860e+00 -6.014946134142451e+00 3.312019151792184e+00 4.628137822454043e+00 9.262983528208568e+03 + 136640 9.938130468497640e-01 -5.987928601449500e+00 -6.052697156356228e+00 3.784227532066514e+00 4.412316466890602e+00 9.379521414192508e+03 + 136660 1.003249465753937e+00 -6.004862845175831e+00 -6.023081911109543e+00 3.639795031304911e+00 4.535178335322192e+00 9.288055932018675e+03 + 136680 8.663398807591594e-01 -5.805993617139563e+00 -6.023344023454684e+00 4.754316060158915e+00 4.506256392230812e+00 9.288835057160612e+03 + 136700 1.022852591551916e+00 -6.038842254689841e+00 -5.996160786648855e+00 3.457662613733013e+00 4.702746208160193e+00 9.205251547359612e+03 + 136720 1.031042785058859e+00 -6.050082347954968e+00 -5.943424205858021e+00 3.470149467673318e+00 5.082597024888136e+00 9.044178437805391e+03 + 136740 1.010345902938224e+00 -6.017956916554642e+00 -5.965156673192554e+00 3.551413347304666e+00 4.854600515501026e+00 9.110381177025030e+03 + 136760 9.969983523697701e-01 -5.994849308984442e+00 -5.988292709296669e+00 3.757334273116612e+00 4.794983283154327e+00 9.181129682060484e+03 + 136780 9.383349662954873e-01 -5.905015326955368e+00 -6.011508165907759e+00 4.224583027785691e+00 4.613084666807500e+00 9.252373547788882e+03 + 136800 1.056538955588018e+00 -6.076730027265558e+00 -5.950642221161815e+00 3.279762704018359e+00 5.003778398690987e+00 9.066150266720502e+03 + 136820 1.017433314496651e+00 -6.014737072655810e+00 -6.006742345649879e+00 3.634895106788549e+00 4.680802066436617e+00 9.237753621280091e+03 + 136840 1.053938348691172e+00 -6.068721751190915e+00 -5.998458840856856e+00 3.284280317697745e+00 4.687740821986146e+00 9.212336201006718e+03 + 136860 1.023933812072702e+00 -6.024727097400055e+00 -5.971149597429758e+00 3.565893577135892e+00 4.873543873056660e+00 9.128714584627225e+03 + 136880 9.171326666869494e-01 -5.866192653570816e+00 -6.037496800703400e+00 4.378759660371657e+00 4.395104738305262e+00 9.332470430465688e+03 + 136900 9.731781716433238e-01 -5.949051863263223e+00 -5.991726823775732e+00 4.013442234542912e+00 4.768396007351291e+00 9.191602766661701e+03 + 136920 1.003551197297427e+00 -5.992529006678416e+00 -5.994521466068285e+00 3.699616592392836e+00 4.688175582244117e+00 9.200240724413039e+03 + 136940 9.850617178139464e-01 -5.962408810751944e+00 -6.043124128283266e+00 3.912542448450152e+00 4.449062604530285e+00 9.349917536960749e+03 + 136960 9.814483441930956e-01 -5.957777023111169e+00 -6.037393199660933e+00 3.945938427809754e+00 4.488770021497510e+00 9.332170957164843e+03 + 136980 1.010788853924944e+00 -6.002811659139951e+00 -6.039851389527048e+00 3.650797052169974e+00 4.438109188407505e+00 9.339761497556856e+03 + 137000 9.991509272069224e-01 -5.987039792058004e+00 -6.039458329302597e+00 3.722407626844988e+00 4.421412274244115e+00 9.338576042741306e+03 + 137020 9.425519045384113e-01 -5.908139262995117e+00 -6.007241296622684e+00 4.165716854978040e+00 4.596657641898414e+00 9.239278192523421e+03 + 137040 9.847560173297604e-01 -5.975791591805898e+00 -5.961302530805293e+00 3.843737093029719e+00 4.926935523470135e+00 9.098587468652093e+03 + 137060 9.500754724545072e-01 -5.924315410507564e+00 -6.022354792423129e+00 4.050512891230443e+00 4.487555588725950e+00 9.285745949651615e+03 + 137080 9.787311358600240e-01 -5.966735096419446e+00 -5.985952574586157e+00 3.871478261902932e+00 4.761128528374536e+00 9.173935144261697e+03 + 137100 1.016092318549220e+00 -6.019859542490249e+00 -5.994218071076720e+00 3.602587206573203e+00 4.749824503434564e+00 9.199289705744904e+03 + 137120 1.009299135336053e+00 -6.002109285396493e+00 -6.066207364882803e+00 3.632647272468966e+00 4.264586180912826e+00 9.421401557511925e+03 + 137140 9.693261549808431e-01 -5.935282326772901e+00 -6.050631331699191e+00 4.008602142591174e+00 4.346250306103594e+00 9.373166693150031e+03 + 137160 1.057429804314449e+00 -6.059033954811825e+00 -6.014690726511027e+00 3.335773955671503e+00 4.590399634667089e+00 9.262235012547486e+03 + 137180 1.007707836587857e+00 -5.980127180827967e+00 -5.991922505446376e+00 3.810327277476088e+00 4.742596698196599e+00 9.192257296548027e+03 + 137200 9.722190211236019e-01 -5.920930844757012e+00 -6.012102045310597e+00 4.064921501791073e+00 4.541402359514700e+00 9.254197411327381e+03 + 137220 1.045125957836011e+00 -6.023307613043908e+00 -6.001630501505958e+00 3.524311414399945e+00 4.648784743373024e+00 9.222004912192220e+03 + 137240 1.025203195130222e+00 -5.989980039138755e+00 -6.010233472738074e+00 3.678825906634024e+00 4.562527556698010e+00 9.248490975439730e+03 + 137260 1.036443409954271e+00 -6.005486639700235e+00 -5.997011005150795e+00 3.606393478573316e+00 4.655061883756412e+00 9.207865168493468e+03 + 137280 9.880746729940637e-01 -5.934209034861803e+00 -6.002298174611841e+00 4.043693242958551e+00 4.652714865753514e+00 9.224111538711813e+03 + 137300 1.035012770052782e+00 -6.006504461609005e+00 -6.006042723025380e+00 3.653046953024022e+00 4.655698327425010e+00 9.235595868857026e+03 + 137320 9.933715614793592e-01 -5.948430477397632e+00 -5.989252760354288e+00 3.952962838567592e+00 4.718554972602598e+00 9.184085904773186e+03 + 137340 1.103067595199341e+00 -6.116679781961702e+00 -5.965442594243738e+00 3.131336592246091e+00 4.999763928001799e+00 9.111275839451793e+03 + 137360 9.801011743172191e-01 -5.943571899264999e+00 -6.011131453011259e+00 3.989239786796552e+00 4.601302374378373e+00 9.251263111601284e+03 + 137380 1.012125873004371e+00 -6.001266297558162e+00 -5.985256174862652e+00 3.749443764772908e+00 4.841376366849010e+00 9.171826151075013e+03 + 137400 1.015875855811291e+00 -6.017101832974991e+00 -6.032300689227538e+00 3.607433456874138e+00 4.520159272256610e+00 9.316476143471064e+03 + 137420 9.390818254618089e-01 -5.916933309184474e+00 -6.041277744760224e+00 4.190523796161138e+00 4.476518804845963e+00 9.344182118599329e+03 + 137440 9.268913129030821e-01 -5.913492943034760e+00 -6.063421331249753e+00 4.122571215880407e+00 4.261659209406823e+00 9.412755554742398e+03 + 137460 1.003693176782576e+00 -6.042348121349740e+00 -5.994641690231393e+00 3.475401720344188e+00 4.749339430372093e+00 9.200607425135258e+03 + 137480 1.014275253891363e+00 -6.070996583992850e+00 -5.971843635295945e+00 3.307995106593990e+00 4.877346681880843e+00 9.130837578405924e+03 + 137500 9.761930896543723e-01 -6.026664991074238e+00 -6.010681756831959e+00 3.582038777376604e+00 4.673816981793274e+00 9.249880208489782e+03 + 137520 9.261329957568745e-01 -5.963818183670790e+00 -6.012757357767892e+00 3.869548783529076e+00 4.588532472550796e+00 9.256276857838908e+03 + 137540 9.529555810347632e-01 -6.013414472810366e+00 -6.034240429970730e+00 3.571359099086399e+00 4.451773230265137e+00 9.322463771785577e+03 + 137560 9.632833903457236e-01 -6.036060639208438e+00 -5.983217216545308e+00 3.500313336870534e+00 4.803748447295461e+00 9.165601287729743e+03 + 137580 1.005613619977791e+00 -6.102785852834947e+00 -5.936403440720850e+00 3.185644342267028e+00 5.141037900221228e+00 9.022854526544124e+03 + 137600 9.316863074455614e-01 -5.991482601766986e+00 -6.002945903811332e+00 3.708371628200380e+00 4.642547573921487e+00 9.226085325274686e+03 + 137620 1.013644838625650e+00 -6.107177497048085e+00 -5.953069854233986e+00 3.139964784029895e+00 5.024874717149101e+00 9.073544232524080e+03 + 137640 9.985450496543775e-01 -6.073395807523471e+00 -5.979357647802161e+00 3.259493673137089e+00 4.799475338615038e+00 9.153780635259969e+03 + 137660 9.538997279997700e-01 -5.986399366319057e+00 -5.998530414692991e+00 3.769194535355457e+00 4.699536178318662e+00 9.212541867476628e+03 + 137680 9.513754178153582e-01 -5.955048421416341e+00 -6.046653284192769e+00 3.898340496978556e+00 4.372331199109609e+00 9.360844776769673e+03 + 137700 9.863946398659318e-01 -5.973181949033245e+00 -6.033878264688854e+00 3.839927821726656e+00 4.491400184507654e+00 9.321327363211572e+03 + 137720 1.052721075930549e+00 -6.038316993780059e+00 -6.000194311327752e+00 3.458011377695419e+00 4.676917719802614e+00 9.217624122263445e+03 + 137740 1.028975455613955e+00 -5.969280478631759e+00 -5.979167010943874e+00 3.872767590713560e+00 4.815997592241470e+00 9.153197746047375e+03 + 137760 1.045228388056955e+00 -5.962669358035461e+00 -5.934527932839773e+00 3.930638129736055e+00 5.092230548081174e+00 9.017114825166649e+03 + 137780 9.638230810847727e-01 -5.815198992629285e+00 -6.011218332099558e+00 4.662011530033492e+00 4.536438148900440e+00 9.251381311769286e+03 + 137800 1.054819274374448e+00 -5.925484529122527e+00 -5.965691044621343e+00 4.084184783166855e+00 4.853312749234491e+00 9.111992791914519e+03 + 137820 1.080693730775991e+00 -5.945972798286506e+00 -5.993049876208326e+00 3.984154664931423e+00 4.713830798350070e+00 9.195714321888952e+03 + 137840 1.068536481653145e+00 -5.921304782566994e+00 -6.039717230122331e+00 4.082052087496232e+00 4.402109489366443e+00 9.339345817118980e+03 + 137860 1.042696320296683e+00 -5.886808703348026e+00 -5.961230830388187e+00 4.304113337225914e+00 4.876769966974368e+00 9.098429385891070e+03 + 137880 1.049047846503601e+00 -5.904242853294108e+00 -5.987238653431401e+00 4.203162089807955e+00 4.726587361861054e+00 9.177896004437242e+03 + 137900 1.032368797295968e+00 -5.891545802812154e+00 -6.030010601036810e+00 4.252995971438995e+00 4.457909672674750e+00 9.309401280316724e+03 + 137920 1.031320840278714e+00 -5.909493258160772e+00 -6.035571399722849e+00 4.182827649848450e+00 4.458867450469655e+00 9.326573258441604e+03 + 137940 1.084386338774264e+00 -6.014917637770553e+00 -6.046534799593216e+00 3.574527503588335e+00 4.392976867662629e+00 9.360462651654494e+03 + 137960 9.806100879962542e-01 -5.894508259018193e+00 -6.072894439720367e+00 4.275916158171389e+00 4.251595103407255e+00 9.442169637758463e+03 + 137980 9.746444907094887e-01 -5.918124582160170e+00 -6.026824729304174e+00 4.117214500329135e+00 4.493041434134859e+00 9.299594320245291e+03 + 138000 1.002655025271267e+00 -5.985561745014941e+00 -6.028884666879778e+00 3.800473275896725e+00 4.551706354348342e+00 9.305930415170416e+03 + 138020 1.021587260246894e+00 -6.032710394794419e+00 -6.052026040993356e+00 3.537139517368584e+00 4.426226087807702e+00 9.377437905892188e+03 + 138040 1.003598909513602e+00 -6.021678344218886e+00 -5.975921254573771e+00 3.678027742021504e+00 4.940772031650495e+00 9.143274972527448e+03 + 138060 1.036855406240606e+00 -6.079145838427833e+00 -5.956767916724377e+00 3.353368691316671e+00 5.056081655660101e+00 9.084799581062793e+03 + 138080 9.692985466900462e-01 -5.982011384036091e+00 -5.969046473801894e+00 3.829320036532633e+00 4.903766557410764e+00 9.122279449202002e+03 + 138100 9.705385883862624e-01 -5.983871693693493e+00 -6.022801306091651e+00 3.763650142845127e+00 4.540110284116850e+00 9.287171819150723e+03 + 138120 1.004241753919461e+00 -6.033933026100030e+00 -5.987717956306110e+00 3.460306635150106e+00 4.725680717665734e+00 9.179402358871139e+03 + 138140 1.004430960219895e+00 -6.033118093050096e+00 -5.950079721520694e+00 3.546348541405741e+00 5.023167720874033e+00 9.064448063266120e+03 + 138160 9.448985344343350e-01 -5.940255046665037e+00 -6.005938809572994e+00 3.973507301390738e+00 4.596340970243789e+00 9.235287171347456e+03 + 138180 9.637906311211420e-01 -5.961740620637454e+00 -6.032187939712964e+00 3.958748128401083e+00 4.554228720582112e+00 9.316092890239892e+03 + 138200 1.041595366902554e+00 -6.069537852135358e+00 -5.976082909544226e+00 3.325321252180357e+00 4.861953994644269e+00 9.143780259532145e+03 + 138220 1.038763545836012e+00 -6.055755800306680e+00 -5.991239620572197e+00 3.389417197040455e+00 4.759879084922408e+00 9.190184767276489e+03 + 138240 1.020484566701619e+00 -6.020246891444675e+00 -6.028169760272017e+00 3.561484315241386e+00 4.515989976374799e+00 9.303717100691145e+03 + 138260 9.846594290080384e-01 -5.960587759450487e+00 -5.995623723902191e+00 3.909500125317707e+00 4.708318195638046e+00 9.203616775346487e+03 + 138280 1.039759743207341e+00 -6.032964843821327e+00 -6.012656656190168e+00 3.501704569987524e+00 4.618317326047523e+00 9.255952399805512e+03 + 138300 1.084784439111142e+00 -6.091616299301173e+00 -5.980096095560764e+00 3.211652031174335e+00 4.852018298747520e+00 9.156063042812691e+03 + 138320 9.879542921735197e-01 -5.941809809663524e+00 -6.007566030336269e+00 4.001272010257619e+00 4.623689615412450e+00 9.240291643761675e+03 + 138340 1.046189547665074e+00 -6.020601061450487e+00 -6.035305597768387e+00 3.583694215661820e+00 4.499258492604799e+00 9.325743325774547e+03 + 138360 1.068618341087495e+00 -6.048931712658112e+00 -6.004940092340472e+00 3.397381311920565e+00 4.649988003465699e+00 9.232243802107501e+03 + 138380 1.022370128481884e+00 -5.977514290134662e+00 -6.006153562918412e+00 3.879671595288193e+00 4.715220459050766e+00 9.235941490792888e+03 + 138400 1.001460545296459e+00 -5.945620486254661e+00 -5.985203637428327e+00 4.053029792299196e+00 4.825737212787161e+00 9.171681104954676e+03 + 138420 9.812835069223571e-01 -5.916991081304393e+00 -6.006818866024022e+00 4.192546932533500e+00 4.676741891868629e+00 9.237985897473292e+03 + 138440 9.953844457100985e-01 -5.939052170580297e+00 -6.004218045245167e+00 4.081524110721523e+00 4.707331574009327e+00 9.230005080993293e+03 + 138460 1.064159170383417e+00 -6.046071940492279e+00 -6.012421881285512e+00 3.469317511262850e+00 4.662541358557942e+00 9.255223193440588e+03 + 138480 9.432464641669073e-01 -5.877711681396527e+00 -6.040010978526224e+00 4.373021298605189e+00 4.441073618751409e+00 9.340290989251767e+03 + 138500 1.008942094328704e+00 -5.990392563598535e+00 -5.991600202403768e+00 3.802662279441262e+00 4.795727830540112e+00 9.191271955658051e+03 + 138520 9.358043935023291e-01 -5.898106111662854e+00 -6.022678769913165e+00 4.268944926179107e+00 4.553629444949263e+00 9.286778958091843e+03 + 138540 1.044815194930107e+00 -6.077730035631197e+00 -6.006793263512779e+00 3.254680231093122e+00 4.662010154027083e+00 9.237919679964583e+03 + 138560 1.029685823305845e+00 -6.077118343001547e+00 -5.978525901160941e+00 3.307503684641595e+00 4.873636742821419e+00 9.151254881921288e+03 + 138580 1.041986097576706e+00 -6.118899287609727e+00 -5.982773793551007e+00 3.121123305329147e+00 4.902776957566441e+00 9.164254938415968e+03 + 138600 9.434210668659752e-01 -5.997978123939192e+00 -5.989008340254092e+00 3.714647691383093e+00 4.766153577372479e+00 9.183327121603985e+03 + 138620 9.778652783946806e-01 -6.073034833166809e+00 -5.932014614208673e+00 3.407782252884164e+00 5.217542172950139e+00 9.009489686534414e+03 + 138640 8.673369738455792e-01 -5.925262866408961e+00 -5.969771041935225e+00 4.084711828119826e+00 4.829138996630116e+00 9.124446694627542e+03 + 138660 9.174413039729665e-01 -6.005559085466901e+00 -5.961579496322836e+00 3.670581823392223e+00 4.923119430076870e+00 9.099464190790106e+03 + 138680 1.009182807692230e+00 -6.140629772894999e+00 -5.991452622781026e+00 2.919654585254289e+00 4.776252866298099e+00 9.190822974973729e+03 + 138700 8.819863618150909e-01 -5.948426511265433e+00 -6.000359121455020e+00 3.978633197593742e+00 4.680428113339682e+00 9.218166923918370e+03 + 138720 9.407669504974367e-01 -6.025366141121287e+00 -6.043016302486016e+00 3.490896523069382e+00 4.389546565159463e+00 9.349561206106628e+03 + 138740 1.011927435349186e+00 -6.113459499682836e+00 -5.998734152976636e+00 3.055954881164031e+00 4.714725575641056e+00 9.213187814071629e+03 + 138760 9.283232574156345e-01 -5.964693016350180e+00 -6.016168090356844e+00 3.882199355770090e+00 4.586621515081868e+00 9.266759278513631e+03 + 138780 9.569219939692702e-01 -5.973720322636479e+00 -6.037206229427882e+00 3.825852656197193e+00 4.461306754988635e+00 9.331608585942515e+03 + 138800 1.043105661801749e+00 -6.060855863922247e+00 -6.003814847363433e+00 3.401724719217296e+00 4.729263063366788e+00 9.228763191977489e+03 + 138820 9.937292131565840e-01 -5.943337266582921e+00 -6.008948677897992e+00 4.025990558698645e+00 4.649239681594417e+00 9.244548890601902e+03 + 138840 9.406335730223223e-01 -5.827071053885653e+00 -6.074870368496941e+00 4.620240162521058e+00 4.197338151203037e+00 9.448311864407284e+03 + 138860 1.093336986825499e+00 -6.023944676421438e+00 -5.979663963811009e+00 3.533800493852026e+00 4.788067198079241e+00 9.154742781016363e+03 + 138880 1.077618088895531e+00 -5.979999476624354e+00 -6.030896311568420e+00 3.755452120840701e+00 4.463194618332118e+00 9.312148974158610e+03 + 138900 1.025076721348547e+00 -5.893375333804697e+00 -6.070243049612462e+00 4.170109718994785e+00 4.154507924636035e+00 9.433957516822491e+03 + 138920 1.066802855599658e+00 -5.956322259872403e+00 -6.028999958571063e+00 3.991306853848634e+00 4.573980261083403e+00 9.306288592703144e+03 + 138940 1.105810857849289e+00 -6.020293704888637e+00 -6.021312005501794e+00 3.574513108108667e+00 4.568665868406411e+00 9.282603560394917e+03 + 138960 1.001323654027588e+00 -5.879914577305163e+00 -6.024592106800130e+00 4.283075902127582e+00 4.452315138992148e+00 9.292703584699679e+03 + 138980 1.016703981596852e+00 -5.917372767650296e+00 -5.985478221033047e+00 4.119432188960545e+00 4.728360136351933e+00 9.172518502835144e+03 + 139000 9.969975007127980e-01 -5.901972861624685e+00 -6.012017579144143e+00 4.247640206581140e+00 4.615746409219418e+00 9.253977629274381e+03 + 139020 1.070860151517397e+00 -6.028146528194418e+00 -5.998492167324613e+00 3.546228308199573e+00 4.716508237311502e+00 9.212402734487845e+03 + 139040 9.665655290721255e-01 -5.890514600040862e+00 -6.009347325674596e+00 4.252227442690048e+00 4.569871542796289e+00 9.245736486230961e+03 + 139060 9.739695294179109e-01 -5.917192747182552e+00 -5.988390402281745e+00 4.173887493334298e+00 4.765059539953216e+00 9.181415268287930e+03 + 139080 1.016564594898197e+00 -5.993829685212724e+00 -5.973671336891360e+00 3.742823090910468e+00 4.858575446466062e+00 9.136375153600749e+03 + 139100 9.919120175399586e-01 -5.967905339242114e+00 -5.960571862941193e+00 3.849810611086823e+00 4.891920566858506e+00 9.096385732133824e+03 + 139120 9.593431401980245e-01 -5.927740052867414e+00 -5.989763380468634e+00 4.081457245404864e+00 4.725309700239735e+00 9.185641248078313e+03 + 139140 1.029260602735118e+00 -6.038429149571138e+00 -5.987843712715988e+00 3.452830170317347e+00 4.743299576810673e+00 9.179757957045314e+03 + 139160 1.007602529722866e+00 -6.013369668526346e+00 -5.997165788775633e+00 3.640375003335248e+00 4.733420188406130e+00 9.208353816702804e+03 + 139180 1.005751298805370e+00 -6.016636340406102e+00 -5.982758828792088e+00 3.585977554120060e+00 4.780507468335709e+00 9.164211451440220e+03 + 139200 1.012859047746622e+00 -6.032285668830134e+00 -6.007847296346293e+00 3.541653493668940e+00 4.681982410297072e+00 9.241136555172676e+03 + 139220 9.412601307221020e-01 -5.929863041632634e+00 -6.030119315717780e+00 4.106342520559301e+00 4.530655480154121e+00 9.309724776983961e+03 + 139240 1.039867683526883e+00 -6.078774398843350e+00 -6.000508568280813e+00 3.283556733968843e+00 4.732971244657071e+00 9.218616700334074e+03 + 139260 9.579760975566122e-01 -5.960302341834712e+00 -6.017738175606967e+00 3.966804398253108e+00 4.636998952566271e+00 9.271579522465128e+03 + 139280 1.006513485075464e+00 -6.035688213205995e+00 -6.027483372912727e+00 3.532560273749913e+00 4.579673736408793e+00 9.301609465580883e+03 + 139300 9.413413535085295e-01 -5.941315067493709e+00 -6.035004718854179e+00 3.953206693070244e+00 4.415226216531734e+00 9.324799873752816e+03 + 139320 1.036604837790182e+00 -6.085094896611094e+00 -5.958378488481497e+00 3.260980158272331e+00 4.988605383053264e+00 9.089712485498809e+03 + 139340 9.602035904648629e-01 -5.970819675345785e+00 -5.981712978074727e+00 3.862568968958901e+00 4.800017938956170e+00 9.160994394184114e+03 + 139360 9.555371278452660e-01 -5.960854684823919e+00 -6.004735016827692e+00 3.925630273042839e+00 4.673662616217740e+00 9.231568127956347e+03 + 139380 1.041683927286453e+00 -6.078293093063744e+00 -5.962992567082728e+00 3.324131167721012e+00 4.986204630602735e+00 9.103783677294819e+03 + 139400 1.008814371850416e+00 -6.008775004673254e+00 -5.980103053268999e+00 3.639574031765455e+00 4.804212813698829e+00 9.156058797477979e+03 + 139420 1.018405908523166e+00 -5.989106267237901e+00 -5.967593905722952e+00 3.754195921302007e+00 4.877723230148027e+00 9.117810849008187e+03 + 139440 1.026589314700578e+00 -5.959363941247018e+00 -5.950992857716891e+00 3.936936231434696e+00 4.985004288485678e+00 9.067206479068494e+03 + 139460 1.058996101984110e+00 -5.961220186556544e+00 -5.992187929920552e+00 3.916145616186856e+00 4.738324041547919e+00 9.193067210214364e+03 + 139480 1.057187127234161e+00 -5.918014733182435e+00 -6.037050520730308e+00 4.135955587373111e+00 4.452433674544634e+00 9.331141309028935e+03 + 139500 1.060839069856907e+00 -5.894758090857223e+00 -6.043060071204196e+00 4.233914976503533e+00 4.382342055693925e+00 9.349694142146733e+03 + 139520 1.069032013165838e+00 -5.890548527149431e+00 -6.021337900824861e+00 4.259769335976289e+00 4.508756512741805e+00 9.282658669001094e+03 + 139540 1.047311496178486e+00 -5.850123600122386e+00 -6.073504708125919e+00 4.445543681402930e+00 4.162854791131896e+00 9.444039534669551e+03 + 139560 1.071327160342137e+00 -5.889239343635555e+00 -6.040401216516305e+00 4.263145443432229e+00 4.395150577126740e+00 9.341486027049808e+03 + 139580 1.121221342033233e+00 -5.979564799131463e+00 -5.958737164783913e+00 3.797898436561423e+00 4.917493936051053e+00 9.090816094392132e+03 + 139600 1.063692413359104e+00 -5.917159640320579e+00 -6.006363360616401e+00 4.132521552781726e+00 4.620299986612008e+00 9.236588354938336e+03 + 139620 1.084823498349184e+00 -5.981191321971450e+00 -6.041709383644728e+00 3.721161804040230e+00 4.373657728772494e+00 9.345544496698485e+03 + 139640 9.905322450335997e-01 -5.881280409533627e+00 -6.005254813588605e+00 4.311662510868109e+00 4.599782297807402e+00 9.233194272476068e+03 + 139660 1.021144749275619e+00 -5.966474441909938e+00 -6.012886819951032e+00 3.894619190388229e+00 4.628112133383977e+00 9.256633330416696e+03 + 139680 9.633283261434359e-01 -5.914937797774867e+00 -6.030870314345679e+00 4.136103828051098e+00 4.470401377402542e+00 9.312047847433660e+03 + 139700 1.031224508358351e+00 -6.046010203432660e+00 -6.008185940397095e+00 3.408265564828944e+00 4.625458336464947e+00 9.242204062429020e+03 + 139720 9.835376527396956e-01 -6.000598169744826e+00 -6.006803270722343e+00 3.672060804250850e+00 4.636430154201676e+00 9.237958176929886e+03 + 139740 1.037252904784985e+00 -6.099637402106771e+00 -5.973884537289730e+00 3.176311832843171e+00 4.898404242815557e+00 9.137052912916975e+03 + 139760 9.710522183907180e-01 -6.015795025050281e+00 -5.987860510203809e+00 3.602875718061262e+00 4.763280025161905e+00 9.179784302628845e+03 + 139780 9.628781758015147e-01 -6.012300674185990e+00 -6.009910026788692e+00 3.633670400817359e+00 4.647397868124134e+00 9.247501150983402e+03 + 139800 9.251426510128338e-01 -5.961898783981693e+00 -6.044961014792069e+00 3.914760062295630e+00 4.437803879143777e+00 9.355577989612069e+03 + 139820 9.111794078438058e-01 -5.943203107269698e+00 -6.033744682280211e+00 4.008448155365498e+00 4.488544420391674e+00 9.320927061407769e+03 + 139840 1.010410791248123e+00 -6.089584368775077e+00 -5.980213761559461e+00 3.200264222750792e+00 4.828287174429628e+00 9.156419337689182e+03 + 139860 9.890780792576576e-01 -6.053689281354137e+00 -5.998952167624942e+00 3.371121898652071e+00 4.685430876226085e+00 9.213837128099700e+03 + 139880 1.020476860372789e+00 -6.093270882862875e+00 -6.012202981566916e+00 3.177106716043943e+00 4.642611150502521e+00 9.254559113163687e+03 + 139900 9.381846549064705e-01 -5.961654492799696e+00 -6.011679781752263e+00 3.863185179100062e+00 4.575932228545980e+00 9.252931766910113e+03 + 139920 1.078120048000827e+00 -6.155622852792122e+00 -5.974382907820118e+00 2.871242399158222e+00 4.911950209978311e+00 9.138578302428348e+03 + 139940 1.012277511651776e+00 -6.040295660276224e+00 -6.018938546770022e+00 3.418404196668437e+00 4.541040047423682e+00 9.275278756475209e+03 + 139960 9.837023350126741e-01 -5.976340485370481e+00 -5.974034036775229e+00 3.862664182041054e+00 4.875908166796759e+00 9.137412638484386e+03 + 139980 9.897853041003999e-01 -5.953432011634995e+00 -5.988309437539861e+00 3.907579020859092e+00 4.707307444049130e+00 9.181193269775307e+03 + 140000 9.788193215398436e-01 -5.898574522652016e+00 -6.021652540946462e+00 4.198561371742542e+00 4.491828344434055e+00 9.283616034230648e+03 + 140020 1.008471367237756e+00 -5.895193949358843e+00 -6.030760004478312e+00 4.202796580545804e+00 4.424355313270582e+00 9.311714060576729e+03 + 140040 1.081658994576293e+00 -5.958535139447593e+00 -6.021997897689684e+00 3.887060779285941e+00 4.522647800629755e+00 9.284688273059926e+03 + 140060 1.085007409799589e+00 -5.930830541671099e+00 -5.977621087107359e+00 4.082940093156421e+00 4.814261540447915e+00 9.148440811459113e+03 + 140080 1.054751194101547e+00 -5.865046221644407e+00 -5.966547831393621e+00 4.430732242558745e+00 4.847894292055416e+00 9.114616009324458e+03 + 140100 1.062840565039670e+00 -5.865858224838235e+00 -5.958679053611625e+00 4.450954182416525e+00 4.917962619622888e+00 9.090603062603448e+03 + 140120 1.089002408052415e+00 -5.900774906675563e+00 -5.967981992874171e+00 4.256486673931043e+00 4.870573184715660e+00 9.119009899836290e+03 + 140140 1.101494017388322e+00 -5.923305071183652e+00 -6.031510824903899e+00 4.069028146953702e+00 4.447693964305776e+00 9.314041442297921e+03 + 140160 1.059511841788898e+00 -5.876515788766618e+00 -6.085020664064515e+00 4.323714984927514e+00 4.126447724941817e+00 9.479895542089440e+03 + 140180 1.055811097029639e+00 -5.895141315342804e+00 -6.048825302839449e+00 4.236943274327874e+00 4.354466035601938e+00 9.367555721373099e+03 + 140200 1.077080582811771e+00 -5.956175741882549e+00 -5.991816381960835e+00 3.951605360287705e+00 4.746951289586966e+00 9.191936144123456e+03 + 140220 1.013577984007188e+00 -5.888480011771967e+00 -5.990719679491425e+00 4.338743698699642e+00 4.751667705117069e+00 9.188566570094565e+03 + 140240 1.014807061416192e+00 -5.911937573848485e+00 -6.015297004913188e+00 4.113462445488429e+00 4.519956597494644e+00 9.264047713150818e+03 + 140260 1.011870125922103e+00 -5.925393132056071e+00 -6.006478961283511e+00 4.041827625931523e+00 4.576220246516042e+00 9.236894733949674e+03 + 140280 1.037888241080970e+00 -5.978495142178147e+00 -5.989560141606611e+00 3.804515528069345e+00 4.740978589047979e+00 9.185000174563103e+03 + 140300 1.059458314577908e+00 -6.022170766720881e+00 -6.007795162030860e+00 3.593462577633149e+00 4.676009524380891e+00 9.240987028045221e+03 + 140320 9.928459108879778e-01 -5.937889506755788e+00 -5.996343098227166e+00 3.975954882125606e+00 4.640305314232902e+00 9.205826055707430e+03 + 140340 9.414358892970871e-01 -5.873705785645719e+00 -6.016098786212575e+00 4.392744974476403e+00 4.575102329975897e+00 9.266510395859012e+03 + 140360 1.093373903859890e+00 -6.110343039601594e+00 -5.955036651650448e+00 3.097671364319747e+00 4.989464677521092e+00 9.079545273787515e+03 + 140380 9.922463446956121e-01 -5.972117021342447e+00 -5.998829289255700e+00 3.844684661258877e+00 4.691298685190879e+00 9.213439607026763e+03 + 140400 9.559224387258649e-01 -5.928162493654090e+00 -6.052052777752324e+00 4.065038849151660e+00 4.353641665900105e+00 9.377543267164880e+03 + 140420 1.028093704335014e+00 -6.048228259499221e+00 -6.016331087746416e+00 3.431095685859646e+00 4.614254182135628e+00 9.267257262237585e+03 + 140440 9.450772014969973e-01 -5.939134386186402e+00 -6.019081920188301e+00 4.014089781500839e+00 4.555018669421037e+00 9.275704016104866e+03 + 140460 1.015908355243267e+00 -6.056892853905057e+00 -5.993002516316306e+00 3.389698334626581e+00 4.756566540058983e+00 9.195577686742017e+03 + 140480 9.647227394242229e-01 -5.992419198496027e+00 -6.002366616130443e+00 3.767405665334308e+00 4.710286053919589e+00 9.224303478137925e+03 + 140500 9.366416597217013e-01 -5.960324618634110e+00 -6.000612400208841e+00 3.946551785190970e+00 4.715213108874821e+00 9.218906527237963e+03 + 140520 9.726252299728879e-01 -6.019858129595307e+00 -6.019665326027194e+00 3.576291190045314e+00 4.577398297969672e+00 9.277539908694649e+03 + 140540 1.009385246964118e+00 -6.080886184857526e+00 -5.995840122695757e+00 3.250973229134085e+00 4.739320878902546e+00 9.204303632552141e+03 + 140560 9.539913150621055e-01 -6.005898857533337e+00 -6.006363848199791e+00 3.693699383504472e+00 4.691029335140621e+00 9.236578667269458e+03 + 140580 9.227247949162940e-01 -5.965080602331487e+00 -5.975026034680650e+00 3.866811972823949e+00 4.809703761224377e+00 9.140518207064582e+03 + 140600 1.037740492441840e+00 -6.136212861319004e+00 -5.949213254971285e+00 2.980900110661939e+00 5.054680788406097e+00 9.061796572884432e+03 + 140620 9.787228143780681e-01 -6.045927634867674e+00 -5.989167562199748e+00 3.390185558412396e+00 4.716110679264485e+00 9.183835726612167e+03 + 140640 9.557002688564795e-01 -6.004246027041735e+00 -6.000561403767816e+00 3.666952759430593e+00 4.688110436463047e+00 9.218773042713676e+03 + 140660 9.426766024006065e-01 -5.970222813042710e+00 -5.987534453734143e+00 3.925270740590129e+00 4.825864620772182e+00 9.178806425668810e+03 + 140680 9.986807348933981e-01 -6.030919755454440e+00 -6.014774377601023e+00 3.460506042119018e+00 4.553215300242492e+00 9.262486633880677e+03 + 140700 1.016887322057612e+00 -6.029932147385885e+00 -5.993680414850035e+00 3.553574627788989e+00 4.761737685947323e+00 9.197661951509031e+03 + 140720 1.000472705871802e+00 -5.975758663559182e+00 -6.027681450178287e+00 3.801847112263010e+00 4.503698436470849e+00 9.302218832366023e+03 + 140740 1.001973364321476e+00 -5.947302567451344e+00 -6.009000630967154e+00 3.984556031641565e+00 4.630276203189314e+00 9.244700495838237e+03 + 140760 9.681501632530367e-01 -5.868471974583949e+00 -6.033635741875741e+00 4.432636094611668e+00 4.484240183811815e+00 9.320570995451511e+03 + 140780 1.034248566292155e+00 -5.942229175413677e+00 -5.978082685144418e+00 4.031093606834003e+00 4.825217205647383e+00 9.149873088407252e+03 + 140800 1.058140341021698e+00 -5.953095906468089e+00 -6.024186750079615e+00 3.962987038897569e+00 4.554772413607699e+00 9.291434277284676e+03 + 140820 1.099336863563966e+00 -5.996971844636814e+00 -5.998072564186392e+00 3.755171062362095e+00 4.748850560372616e+00 9.211127408571156e+03 + 140840 1.024683675855185e+00 -5.878286826960359e+00 -6.044496268919011e+00 4.333211804644463e+00 4.378811468089865e+00 9.354137605622242e+03 + 140860 1.047304959649211e+00 -5.912891585353480e+00 -6.024671465848774e+00 4.109030859434010e+00 4.467173487749429e+00 9.292908974942040e+03 + 140880 1.068801363808031e+00 -5.951779825137063e+00 -6.009736274695192e+00 3.975985901427654e+00 4.643190999333292e+00 9.246938773748656e+03 + 140900 1.057245026878601e+00 -5.947500703666660e+00 -6.023847464513727e+00 3.986849720346205e+00 4.548454804939289e+00 9.290388251615086e+03 + 140920 1.020892057826922e+00 -5.915475163943222e+00 -6.017124508921835e+00 4.165330246031246e+00 4.581643976978750e+00 9.269685559645030e+03 + 140940 1.080815778321744e+00 -6.034227627796374e+00 -6.007622734535374e+00 3.495954007815252e+00 4.648723422013837e+00 9.240469447319761e+03 + 140960 1.038798334836277e+00 -6.015374902291191e+00 -5.998582371447091e+00 3.630212588720040e+00 4.726637899462610e+00 9.212711608191994e+03 + 140980 9.846476907999268e-01 -5.977725911144168e+00 -5.969058226808738e+00 3.831910974285732e+00 4.881682159059583e+00 9.122306711057085e+03 + 141000 1.012782988623940e+00 -6.056358123216759e+00 -5.981927082762950e+00 3.382684468068678e+00 4.810079020520734e+00 9.161645465491947e+03 + 141020 9.331963290987556e-01 -5.966837015806142e+00 -5.998211895047554e+00 3.880286940358214e+00 4.700127528507155e+00 9.211550377967083e+03 + 141040 9.725698411944492e-01 -6.042824452769178e+00 -5.964668686558828e+00 3.513912276968919e+00 4.962694781114483e+00 9.108897483434388e+03 + 141060 9.537777346531708e-01 -6.024603945271705e+00 -5.989731729349669e+00 3.627969236650291e+00 4.828210896932591e+00 9.185469231339333e+03 + 141080 9.125449879887032e-01 -5.967204689353025e+00 -5.944220701510270e+00 3.868266407372017e+00 5.000244022325738e+00 9.046577184114920e+03 + 141100 9.496454377090862e-01 -6.017469537974544e+00 -5.980613062874609e+00 3.577687722714566e+00 4.789323306259485e+00 9.157614873322362e+03 + 141120 1.022608858818241e+00 -6.117334194985709e+00 -5.970021056435797e+00 3.058069603344914e+00 4.903964441533018e+00 9.125255897962623e+03 + 141140 9.422624947674526e-01 -5.988318403748321e+00 -5.995116197180967e+00 3.744915328758613e+00 4.705881346913229e+00 9.202047737251341e+03 + 141160 9.318497058825266e-01 -5.961813257693670e+00 -6.030668081679886e+00 3.916895673474701e+00 4.521520618896270e+00 9.311418934605976e+03 + 141180 9.524203649108555e-01 -5.979643797843841e+00 -6.004447479106374e+00 3.852015169154395e+00 4.709588592987660e+00 9.230692083684376e+03 + 141200 1.014496659151786e+00 -6.056633779084986e+00 -6.033242699549225e+00 3.353348863298372e+00 4.487664061750570e+00 9.319395643766569e+03 + 141220 9.736842024005447e-01 -5.982301170022232e+00 -6.067746071573859e+00 3.712569755154459e+00 4.221931907889236e+00 9.426186998773475e+03 + 141240 9.617641525119370e-01 -5.951982066857266e+00 -6.035442762282052e+00 3.974889991080258e+00 4.495645762450260e+00 9.326158613294971e+03 + 141260 1.029320540777737e+00 -6.040648165187566e+00 -5.959920431303212e+00 3.505469023021348e+00 4.969020163561749e+00 9.094427259907759e+03 + 141280 9.875343725921770e-01 -5.967881427458170e+00 -6.009298894153105e+00 3.892703649416815e+00 4.654878146322243e+00 9.245608769350609e+03 + 141300 1.004000578093182e+00 -5.980530047746252e+00 -6.019062288346904e+00 3.738870420153007e+00 4.517612331779099e+00 9.275663200677953e+03 + 141320 9.898567604551874e-01 -5.946921836710097e+00 -6.055306890354071e+00 3.960407259145301e+00 4.338043508588762e+00 9.387600233710555e+03 + 141340 1.003409714762444e+00 -5.954736996179795e+00 -6.025439686042429e+00 4.000539419814517e+00 4.594553633417381e+00 9.295323515626227e+03 + 141360 1.050138721125615e+00 -6.014553387524312e+00 -6.037529100276554e+00 3.620434675669820e+00 4.488504577566387e+00 9.332599284020900e+03 + 141380 1.014948745599096e+00 -5.956235385869240e+00 -5.988026770453421e+00 3.970006449783819e+00 4.787455399800590e+00 9.180324299223661e+03 + 141400 1.008376528857462e+00 -5.940272961427265e+00 -6.000319095568400e+00 4.046751586574173e+00 4.701957392226553e+00 9.217984286201090e+03 + 141420 1.042282943946845e+00 -5.981289389704787e+00 -6.009819210059625e+00 3.785965672385986e+00 4.622143028933072e+00 9.247200175719410e+03 + 141440 1.043389738560972e+00 -5.973973967391723e+00 -5.998117719773798e+00 3.796829680706877e+00 4.658192518295397e+00 9.211284237683783e+03 + 141460 1.049973237070911e+00 -5.974610867961662e+00 -6.010088325621212e+00 3.832711939192586e+00 4.628994887192618e+00 9.248045090373784e+03 + 141480 9.856353910073936e-01 -5.872350682940461e+00 -6.030281705590166e+00 4.430477351003837e+00 4.523612979202460e+00 9.310221950251613e+03 + 141500 1.094852320423915e+00 -6.030770292825814e+00 -6.002127256903139e+00 3.575721172615216e+00 4.740193917378697e+00 9.223560225688245e+03 + 141520 1.002548746000000e+00 -5.893710241434317e+00 -6.010223148557893e+00 4.240847041340434e+00 4.571811898322761e+00 9.248444762372636e+03 + 141540 1.096090919969329e+00 -6.036114783093078e+00 -5.958350855130687e+00 3.551108919685816e+00 4.997641427974829e+00 9.089632304879780e+03 + 141560 1.045250521026980e+00 -5.970255347940622e+00 -6.008056563159828e+00 3.889484182805476e+00 4.672423755297642e+00 9.241781394227923e+03 + 141580 1.030683709581593e+00 -5.964883530541449e+00 -6.034062025869428e+00 3.902590036932113e+00 4.505356411421309e+00 9.321891699754453e+03 + 141600 1.051152989156530e+00 -6.019141668627091e+00 -5.997305045410230e+00 3.581932894701833e+00 4.707322164419569e+00 9.208781417289596e+03 + 141620 9.923238020042643e-01 -5.957025928739258e+00 -5.963957881092998e+00 3.970087832479134e+00 4.930283489347799e+00 9.106713194566510e+03 + 141640 9.815858782634215e-01 -5.965825807573410e+00 -6.000506403483266e+00 3.844340741284245e+00 4.645199392764978e+00 9.218591295164460e+03 + 141660 1.019925299904355e+00 -6.048205966553680e+00 -5.958491160784597e+00 3.456635971742735e+00 4.971792269790132e+00 9.090066627262768e+03 + 141680 1.001210581587734e+00 -6.044873883275864e+00 -5.978163979940311e+00 3.491459476902040e+00 4.874518065178965e+00 9.150121781112641e+03 + 141700 1.024266102268441e+00 -6.100128644344905e+00 -5.977549582267455e+00 3.150897502713097e+00 4.854765446210365e+00 9.148249470543460e+03 + 141720 8.916198222627948e-01 -5.920832729548112e+00 -6.021505051829986e+00 4.105865387718702e+00 4.527789334184658e+00 9.283189159539441e+03 + 141740 9.998075039834057e-01 -6.095855681469897e+00 -6.001302177405094e+00 3.174716221088308e+00 4.717657073535867e+00 9.221065941595492e+03 + 141760 9.192097224682672e-01 -5.987577876302164e+00 -6.046774304328042e+00 3.799407642252626e+00 4.459492591910403e+00 9.361195924863256e+03 + 141780 9.445068678504496e-01 -6.034281019726019e+00 -6.044552441291101e+00 3.504477944360279e+00 4.445497852236227e+00 9.354320379923614e+03 + 141800 9.850064074616284e-01 -6.099480375510989e+00 -6.001499315171895e+00 3.123502340826925e+00 4.686124751814091e+00 9.221661916059093e+03 + 141820 9.353130997985565e-01 -6.026393856622533e+00 -6.022079995445178e+00 3.564320443441181e+00 4.589091301889416e+00 9.284955839328552e+03 + 141840 9.768670996770961e-01 -6.082097873160181e+00 -6.028410819218248e+00 3.220268853999540e+00 4.528548225778868e+00 9.304474137151225e+03 + 141860 9.340788116085329e-01 -6.006797864839420e+00 -6.007033555084535e+00 3.658235856278199e+00 4.656882486417803e+00 9.238666043791689e+03 + 141880 1.032612029671214e+00 -6.135757858655850e+00 -5.946721232059984e+00 3.005109744250366e+00 5.090587307487256e+00 9.054206587493045e+03 + 141900 9.694995961509025e-01 -6.014555211385390e+00 -5.975979135865552e+00 3.655149753707003e+00 4.876659548970305e+00 9.143453577473605e+03 + 141920 1.018078996903040e+00 -6.046732447701013e+00 -5.973917602483297e+00 3.471901531389994e+00 4.890015640690995e+00 9.137141519424158e+03 + 141940 1.039177700143413e+00 -6.031613439680869e+00 -5.985591131026885e+00 3.546934726198931e+00 4.811201944419356e+00 9.172872084839390e+03 + 141960 1.033790809398444e+00 -5.973328423817815e+00 -6.017317592531891e+00 3.806633526622475e+00 4.554040912564389e+00 9.270306603429259e+03 + 141980 1.010613518134506e+00 -5.902777376837367e+00 -5.998089968504837e+00 4.188496949899607e+00 4.641197298969103e+00 9.211200695012167e+03 + 142000 1.085989377118981e+00 -5.988551024929858e+00 -6.037586731496352e+00 3.740986665128835e+00 4.459416049772964e+00 9.332799712749376e+03 + 142020 1.075967449344958e+00 -5.962875558030481e+00 -6.017958792207370e+00 3.896025813869053e+00 4.579729359122413e+00 9.272263114751131e+03 + 142040 1.050914389592182e+00 -5.923077000341830e+00 -6.023369420478124e+00 4.108783720181778e+00 4.532889123557322e+00 9.288921579586791e+03 + 142060 9.898549394867717e-01 -5.835474626863780e+00 -6.059301056624584e+00 4.544648944894635e+00 4.259402948180038e+00 9.399960356058997e+03 + 142080 1.007299785204346e+00 -5.871988965834976e+00 -6.010120530617906e+00 4.353042719287075e+00 4.559869898512924e+00 9.248131814015062e+03 + 142100 1.028874016260903e+00 -5.915968114960552e+00 -5.993505069272464e+00 4.169829871874262e+00 4.724600681410362e+00 9.197103460815284e+03 + 142120 1.041062544570025e+00 -5.949924961931789e+00 -6.040554018836059e+00 3.952181820744643e+00 4.431775751199092e+00 9.341917643926519e+03 + 142140 1.038253447292529e+00 -5.965403382672638e+00 -6.000938914415531e+00 3.848457240493013e+00 4.644406718119555e+00 9.219946602703412e+03 + 142160 9.717387905417684e-01 -5.889732832903052e+00 -6.065346806235516e+00 4.308769550061026e+00 4.300366939011473e+00 9.418740722976783e+03 + 142180 9.600550569993933e-01 -5.896121343948279e+00 -6.055001655958865e+00 4.252474326961165e+00 4.340158988747556e+00 9.386663050480975e+03 + 142200 9.989612713387177e-01 -5.978506378029313e+00 -6.024550376888639e+00 3.798361880046777e+00 4.533970113310733e+00 9.292582508432160e+03 + 142220 9.701679759790333e-01 -5.956276431651458e+00 -6.043077060742815e+00 3.914791548917440e+00 4.416368904320928e+00 9.349771173021309e+03 + 142240 9.864297481616576e-01 -5.999418203416937e+00 -6.025839808031574e+00 3.710761903742735e+00 4.559044961315392e+00 9.296547119568961e+03 + 142260 1.031589454125466e+00 -6.082048271402744e+00 -6.008292101447406e+00 3.259860461572296e+00 4.683379803186260e+00 9.242529125631792e+03 + 142280 1.016206748975860e+00 -6.072456171134401e+00 -6.022243432512639e+00 3.318849047931903e+00 4.607178363494247e+00 9.285466238119976e+03 + 142300 9.858973379806485e-01 -6.038551832869407e+00 -5.985631719274734e+00 3.480776706664734e+00 4.784652188286460e+00 9.173000170833815e+03 + 142320 9.534620895438528e-01 -5.995974948553473e+00 -6.009262741024678e+00 3.677424332527555e+00 4.601123771878659e+00 9.245485222882207e+03 + 142340 9.489995838093430e-01 -5.989588171874563e+00 -5.979357207521215e+00 3.810090324967979e+00 4.868838105521526e+00 9.153762590515036e+03 + 142360 9.500831472902470e-01 -5.987758019551035e+00 -6.008425495397796e+00 3.769934879740749e+00 4.651259035147090e+00 9.242938058384516e+03 + 142380 1.023676604158108e+00 -6.091337946633017e+00 -6.002438846524937e+00 3.216520128650160e+00 4.726992518562037e+00 9.224551582208713e+03 + 142400 1.013586864427438e+00 -6.072448578674462e+00 -5.983697261469882e+00 3.319816177805480e+00 4.829439975416133e+00 9.167087563257079e+03 + 142420 1.022026477152856e+00 -6.080068177248421e+00 -5.983484283676161e+00 3.259589680829872e+00 4.814189344031015e+00 9.166428147024097e+03 + 142440 9.895899956530062e-01 -6.026610351980243e+00 -5.971528076764933e+00 3.567814229968127e+00 4.884105178208978e+00 9.129851227510797e+03 + 142460 1.010728375195445e+00 -6.050949332534872e+00 -5.977266161939693e+00 3.442969799816917e+00 4.866069967808233e+00 9.147411440921094e+03 + 142480 9.812315753803259e-01 -6.001184729880938e+00 -6.020532297198506e+00 3.701712320875436e+00 4.590615595311595e+00 9.280150625260138e+03 + 142500 1.019444973036665e+00 -6.050085042662143e+00 -6.005232460303950e+00 3.391845757584712e+00 4.649396226400144e+00 9.233115279460686e+03 + 142520 1.029499258447256e+00 -6.057401513283143e+00 -6.000540998176605e+00 3.433233313639404e+00 4.759735190517420e+00 9.218714593633642e+03 + 142540 9.618571081634936e-01 -5.951746004969213e+00 -5.999166428194438e+00 3.941791989701279e+00 4.669496581255256e+00 9.214502083700158e+03 + 142560 1.001727373234672e+00 -6.004722465743097e+00 -5.996221575610094e+00 3.678935239312044e+00 4.727748665964242e+00 9.205436810204093e+03 + 142580 9.480885807851986e-01 -5.918878042020682e+00 -5.998090536997521e+00 4.113115086089448e+00 4.658264681838456e+00 9.211156645162946e+03 + 142600 1.048312946464728e+00 -6.060417564157462e+00 -5.975054610638480e+00 3.367626782042234e+00 4.857794071022595e+00 9.140636609128493e+03 + 142620 1.019216192891963e+00 -6.011375754087511e+00 -6.003825778553175e+00 3.639902134216960e+00 4.683255262090052e+00 9.228783407872977e+03 + 142640 9.882163786831829e-01 -5.962273561268762e+00 -5.964831452257936e+00 3.842188508273817e+00 4.827500702381627e+00 9.109373022364780e+03 + 142660 1.022600669047640e+00 -6.006887851033656e+00 -5.956866279247644e+00 3.665691168348492e+00 4.952922774356986e+00 9.085086920442895e+03 + 142680 1.049926383602889e+00 -6.037773493208575e+00 -5.947468761277122e+00 3.514185640661143e+00 5.032729386023646e+00 9.056488991712788e+03 + 142700 1.021219795649507e+00 -5.981882270770957e+00 -5.995665069764787e+00 3.788894575842684e+00 4.709751611138866e+00 9.203741779564223e+03 + 142720 1.024966490489663e+00 -5.969496319399387e+00 -5.988248490353747e+00 3.868447438090159e+00 4.760769570581144e+00 9.180991001768512e+03 + 142740 1.055866591551193e+00 -5.989928265178365e+00 -5.958941048449887e+00 3.730951483933304e+00 4.908884877644520e+00 9.091422519873271e+03 + 142760 1.095657879687061e+00 -6.008336664920087e+00 -5.982331836525477e+00 3.605687774639610e+00 4.755011523515647e+00 9.162888183519692e+03 + 142780 9.958254094129426e-01 -5.815371353214683e+00 -5.995108840829507e+00 4.717870584141266e+00 4.685790115970634e+00 9.201999632085857e+03 + 142800 1.068792494073418e+00 -5.880290535489213e+00 -5.953758514181800e+00 4.398506087079436e+00 4.976641584293638e+00 9.075588118607597e+03 + 142820 1.171344088723258e+00 -5.992870329852718e+00 -5.985252137904786e+00 3.701995812048761e+00 4.745740649125178e+00 9.171834879952445e+03 + 142840 1.038292397008148e+00 -5.769439035492558e+00 -6.093083061941872e+00 4.920606220133546e+00 4.062192136510355e+00 9.505003950539349e+03 + 142860 1.040854983894000e+00 -5.765640372611668e+00 -6.070115187477225e+00 4.925792759288347e+00 4.177451255004997e+00 9.433558859541592e+03 + 142880 1.083892364367855e+00 -5.837398419737574e+00 -6.043075261630007e+00 4.540640632548518e+00 4.359612378013749e+00 9.349745829748987e+03 + 142900 1.083050220023592e+00 -5.855956581785444e+00 -6.024990393755004e+00 4.474023076753097e+00 4.503404770526022e+00 9.293906311276118e+03 + 142920 1.058499636185399e+00 -5.850904018880387e+00 -6.039179486100780e+00 4.516723776860369e+00 4.435616908546479e+00 9.337695721105898e+03 + 142940 1.093233512574005e+00 -5.942965610034361e+00 -6.016498762209756e+00 4.027711076425636e+00 4.605472337415993e+00 9.267773322001169e+03 + 142960 1.074025373600346e+00 -5.962304428774550e+00 -6.017148776779352e+00 3.914921311431216e+00 4.599996578052219e+00 9.269772369297718e+03 + 142980 1.114653814353787e+00 -6.067129309714629e+00 -5.966810141681367e+00 3.310872852441630e+00 4.886921039629700e+00 9.115440435412678e+03 + 143000 9.644143239396895e-01 -5.879117943352171e+00 -5.991867773820264e+00 4.378232663692804e+00 4.730805689165137e+00 9.192091812818011e+03 + 143020 1.019796335116242e+00 -5.985815115387457e+00 -5.980709999230152e+00 3.805512179011711e+00 4.834826546001127e+00 9.157916864582157e+03 + 143040 1.035987757969618e+00 -6.030734295820723e+00 -5.981186633486726e+00 3.551762044729329e+00 4.836272389327107e+00 9.159381494778885e+03 + 143060 9.884198835724802e-01 -5.977048389649038e+00 -5.969308873895418e+00 3.838289753524994e+00 4.882731250668472e+00 9.123058810185208e+03 + 143080 9.953583068783813e-01 -5.999776818724980e+00 -5.960280502096255e+00 3.726740549890734e+00 4.953534512008114e+00 9.095497602818015e+03 + 143100 9.920789540924153e-01 -6.002597878325419e+00 -5.978398854958395e+00 3.704329074406661e+00 4.843283611366878e+00 9.150840018443323e+03 + 143120 9.908955265973325e-01 -6.007824424275439e+00 -5.992937248101034e+00 3.657266956603045e+00 4.742751425979547e+00 9.195388443355501e+03 + 143140 9.938459515122293e-01 -6.019248223096881e+00 -6.000418311489446e+00 3.616649479811765e+00 4.724773746181054e+00 9.218315976803462e+03 + 143160 1.019046575549265e+00 -6.061282033957120e+00 -6.004059930903273e+00 3.360345409239273e+00 4.688923580066292e+00 9.229520592024382e+03 + 143180 9.908524969450737e-01 -6.023884561524197e+00 -6.029648822217053e+00 3.586266130925079e+00 4.553166854010239e+00 9.308297737400046e+03 + 143200 1.019004037398567e+00 -6.071859029278377e+00 -5.973011158537732e+00 3.320662602099191e+00 4.888262372550537e+00 9.134391687265306e+03 + 143220 1.013192699346962e+00 -6.067033069506929e+00 -5.981346321444700e+00 3.355770482760747e+00 4.847797050115471e+00 9.159877250343457e+03 + 143240 9.703230209736557e-01 -6.005240798331498e+00 -6.000551397854529e+00 3.758893499769442e+00 4.785820762990580e+00 9.218731755714207e+03 + 143260 9.777612806289899e-01 -6.015686162632171e+00 -6.020828834811243e+00 3.599351322991653e+00 4.569821303513477e+00 9.281111852829643e+03 + 143280 1.037132512269292e+00 -6.101701990771929e+00 -5.984046903817799e+00 3.137331009936041e+00 4.812924726292515e+00 9.168160908455964e+03 + 143300 1.017483713298927e+00 -6.067810860020703e+00 -5.975745111138258e+00 3.429310495775940e+00 4.957966272987539e+00 9.142747554677597e+03 + 143320 1.001701053967201e+00 -6.039020616099960e+00 -6.010316649574150e+00 3.481512072326722e+00 4.646334690042393e+00 9.248732795863594e+03 + 143340 9.429618201607630e-01 -5.942260997003803e+00 -5.981227165646139e+00 4.053180597943015e+00 4.829430827603613e+00 9.159484370498229e+03 + 143360 9.573825642428547e-01 -5.947405151181627e+00 -5.964103275443799e+00 3.953679777623731e+00 4.857796564083962e+00 9.107178738114002e+03 + 143380 9.909587528747177e-01 -5.971671506017308e+00 -5.958668849105213e+00 3.875537923630510e+00 4.950201191774413e+00 9.090567240228469e+03 + 143400 9.728773850022959e-01 -5.912766620098158e+00 -6.045065966579863e+00 4.111757837808510e+00 4.352074517052866e+00 9.355909839969980e+03 + 143420 1.039247182666702e+00 -5.976327385477138e+00 -5.968749075673207e+00 3.785697706329996e+00 4.829213533963820e+00 9.121369585638840e+03 + 143440 9.910360917759028e-01 -5.873124420696885e+00 -6.005601026030686e+00 4.357691327980401e+00 4.596990159465297e+00 9.234241727177148e+03 + 143460 1.039106640999686e+00 -5.915652273699784e+00 -6.020688190551758e+00 4.159732232187347e+00 4.556599743367712e+00 9.280629548374067e+03 + 143480 1.059320112497310e+00 -5.920105466146627e+00 -6.051041610130254e+00 4.080998883592365e+00 4.329143282535579e+00 9.374380273595882e+03 + 143500 1.028989859516793e+00 -5.861530406938961e+00 -5.994089601992082e+00 4.442579873633837e+00 4.681404462169681e+00 9.198894362493518e+03 + 143520 1.005064874320691e+00 -5.819507195159078e+00 -5.991548112444883e+00 4.656026098072791e+00 4.668140527771795e+00 9.191080956019543e+03 + 143540 1.023443437908404e+00 -5.845007038240031e+00 -6.039265476144996e+00 4.477523671901001e+00 4.362061660054576e+00 9.337974898463488e+03 + 143560 1.141437484198878e+00 -6.024625374393328e+00 -6.020050064001441e+00 3.523847795420421e+00 4.550119935717634e+00 9.278706092752509e+03 + 143580 1.037560196757685e+00 -5.889292628200973e+00 -6.036716455520191e+00 4.227397161992857e+00 4.380866731762366e+00 9.330108210897586e+03 + 143600 1.074574940066438e+00 -5.974381151766103e+00 -5.969536640676546e+00 3.804035273672960e+00 4.831853206034862e+00 9.123761100624386e+03 + 143620 1.025863708981987e+00 -5.939372409630199e+00 -5.966803862184516e+00 4.031281334753073e+00 4.873765689182622e+00 9.115379252716872e+03 + 143640 9.965258894866950e-01 -5.933248211228533e+00 -5.990476190842358e+00 4.054289056186426e+00 4.725677141242621e+00 9.187818645921463e+03 + 143660 1.016271450202795e+00 -6.001761796687785e+00 -5.971560938256169e+00 3.722598472716184e+00 4.896016475398263e+00 9.129934479923877e+03 + 143680 1.054378766366740e+00 -6.092996396786535e+00 -5.988905248468065e+00 3.143331870482801e+00 4.741039352180602e+00 9.183026145573014e+03 + 143700 9.456376595879629e-01 -5.960515907759085e+00 -6.044429421667810e+00 3.851721803474777e+00 4.369877421036568e+00 9.353925453000766e+03 + 143720 9.631501900113086e-01 -6.005923202668134e+00 -5.977990645994030e+00 3.649647463359674e+00 4.810040526331557e+00 9.149608182424976e+03 + 143740 9.040649337756710e-01 -5.926686671724698e+00 -6.000311243950444e+00 4.112443082967743e+00 4.689679395881781e+00 9.217953821855735e+03 + 143760 9.599376745611714e-01 -6.011369168994648e+00 -5.959550385350087e+00 3.605930623228148e+00 4.903482097846068e+00 9.093287827184857e+03 + 143780 9.874584965527364e-01 -6.049215391736672e+00 -6.004565222820297e+00 3.360445156225188e+00 4.616833335734320e+00 9.231071411556037e+03 + 143800 1.060655303099585e+00 -6.153037678239428e+00 -5.970254833759023e+00 2.872069574249736e+00 4.921636952809988e+00 9.125977779248944e+03 + 143820 9.330518483103182e-01 -5.959911877105672e+00 -5.995723343930269e+00 3.912969435908378e+00 4.707334451594957e+00 9.203905125697520e+03 + 143840 9.816754693393441e-01 -6.025141425626161e+00 -5.980401404740652e+00 3.638088979206262e+00 4.894993102626707e+00 9.156965128476388e+03 + 143860 1.058628340156113e+00 -6.129267750195740e+00 -5.976833341808441e+00 3.010949824351136e+00 4.886251786459464e+00 9.146074848882672e+03 + 143880 9.904539789550721e-01 -6.018650270942724e+00 -5.992525777153535e+00 3.570262962020410e+00 4.720273848110282e+00 9.194114196513798e+03 + 143900 9.858467773739675e-01 -6.001806244166477e+00 -5.990046620022056e+00 3.674666049900069e+00 4.742191631533284e+00 9.186490743652348e+03 + 143920 9.706999507522228e-01 -5.965324733470921e+00 -6.014089077404838e+00 3.886196252471652e+00 4.606183843345264e+00 9.260327842593188e+03 + 143940 1.074541068784169e+00 -6.102902188370853e+00 -5.989193402554600e+00 3.145894188303734e+00 4.798827632838398e+00 9.183895265783778e+03 + 143960 9.896227914799409e-01 -5.960522621961890e+00 -6.037138986237969e+00 3.887453232460321e+00 4.447510212443023e+00 9.331416781630693e+03 + 143980 1.017054348292765e+00 -5.987057445264989e+00 -5.991647073566656e+00 3.736126215753573e+00 4.709771859802719e+00 9.191431309678665e+03 + 144000 1.022210512030115e+00 -5.979876391222276e+00 -5.978317748697746e+00 3.804485241539632e+00 4.813435208114633e+00 9.150575148061374e+03 + 144020 1.019506348873456e+00 -5.957407019379268e+00 -5.991794151450773e+00 3.908318973119612e+00 4.710862739373541e+00 9.191880949439386e+03 + 144040 1.081909361299180e+00 -6.027101171231140e+00 -6.005364235839410e+00 3.508432198633287e+00 4.633249045432477e+00 9.233525483210513e+03 + 144060 1.058050817585162e+00 -5.970070189010050e+00 -5.995677086120103e+00 3.865495883729396e+00 4.718457117868953e+00 9.203789048286679e+03 + 144080 1.045439195547904e+00 -5.930207067719433e+00 -5.990963257512362e+00 4.100621600936991e+00 4.751750157156009e+00 9.189324728198761e+03 + 144100 1.002310321649499e+00 -5.843141820207396e+00 -6.017425792052732e+00 4.587162958620532e+00 4.586397421927137e+00 9.270568640940879e+03 + 144120 1.113194084908791e+00 -5.977711090998692e+00 -6.014225874473762e+00 3.789250978116157e+00 4.579577440757830e+00 9.260756263992034e+03 + 144140 1.074339933024374e+00 -5.892846716401976e+00 -6.058872254665230e+00 4.227364878080413e+00 4.274020545003800e+00 9.398661326688747e+03 + 144160 1.084576815986524e+00 -5.885817982326344e+00 -6.080039586433305e+00 4.267204894341847e+00 4.151954387863579e+00 9.464390209110636e+03 + 144180 1.099266312391600e+00 -5.896018113260707e+00 -6.025156422859846e+00 4.256711920881668e+00 4.515179763074593e+00 9.294407779454898e+03 + 144200 1.139527688894762e+00 -5.956281023152593e+00 -5.969595845379710e+00 3.963682963740604e+00 4.887227194050419e+00 9.123904570726650e+03 + 144220 1.088409644539106e+00 -5.889807148574015e+00 -5.998751155450886e+00 4.321051029984109e+00 4.695477683466536e+00 9.213197423590684e+03 + 144240 1.090722640484478e+00 -5.915033335285470e+00 -6.058294199434290e+00 4.166893839248626e+00 4.344267787759019e+00 9.396848877641376e+03 + 144260 1.031690603948053e+00 -5.866787428604852e+00 -6.087184945505877e+00 4.342914940429584e+00 4.077358291978386e+00 9.486639844870337e+03 + 144280 1.081580318112931e+00 -5.995840430430276e+00 -6.040969974633354e+00 3.638987312003587e+00 4.379846485415114e+00 9.343237265402704e+03 + 144300 9.895424516891865e-01 -5.914372512536897e+00 -5.997117801620967e+00 4.161830789921556e+00 4.686694535208722e+00 9.208177127617755e+03 + 144320 1.028894866350819e+00 -6.014172289051032e+00 -5.940742022683645e+00 3.675536627769886e+00 5.097184580548415e+00 9.036010459950436e+03 + 144340 1.003021136453330e+00 -6.004606227890990e+00 -5.969709671151866e+00 3.665370519414098e+00 4.865751948434852e+00 9.124293362559742e+03 + 144360 1.009401528671106e+00 -6.033870525334589e+00 -5.989728921704151e+00 3.515393466631568e+00 4.768861385568625e+00 9.185540045976764e+03 + 144380 9.632569665107366e-01 -5.981185782711842e+00 -6.013656363404124e+00 3.773713924353793e+00 4.587262825212588e+00 9.259018927265357e+03 + 144400 9.753166321323964e-01 -6.011151492597649e+00 -5.979733154133045e+00 3.588571784611976e+00 4.768980746047892e+00 9.154947755014713e+03 + 144420 1.045682136508665e+00 -6.123657601323297e+00 -5.957476263850237e+00 3.018691810421093e+00 4.972930766670261e+00 9.086967654820019e+03 + 144440 9.535999721654209e-01 -5.992495236923250e+00 -5.984232388350178e+00 3.728768940104316e+00 4.776215495282580e+00 9.168702510670742e+03 + 144460 9.513768366710755e-01 -5.990304478016673e+00 -5.990258613430318e+00 3.761729979195532e+00 4.761993340747908e+00 9.187182371330233e+03 + 144480 9.806073741835450e-01 -6.032380883743617e+00 -6.006958534409096e+00 3.496343115530336e+00 4.642322179505001e+00 9.238429535308773e+03 + 144500 9.745920288590990e-01 -6.020277490444245e+00 -5.992884226306334e+00 3.543309841916659e+00 4.700606203690469e+00 9.195208122482767e+03 + 144520 9.340482544890468e-01 -5.951720121933333e+00 -6.026634266697121e+00 3.888694646812982e+00 4.458526034652875e+00 9.299007190604298e+03 + 144540 1.019799356386708e+00 -6.067388832615380e+00 -5.997753120263240e+00 3.304281100630583e+00 4.704140137048229e+00 9.210178536369178e+03 + 144560 9.479756135049967e-01 -5.947418971767434e+00 -6.009805578760052e+00 3.945855066478356e+00 4.587621514830509e+00 9.247168177007085e+03 + 144580 1.068742493181399e+00 -6.109168809382945e+00 -5.993523557016772e+00 3.097755680432335e+00 4.761808615563867e+00 9.197164489598061e+03 + 144600 1.074366698628719e+00 -6.094852414082236e+00 -5.954083720782201e+00 3.243482759870324e+00 5.051798380684007e+00 9.076618156033925e+03 + 144620 9.272528846528260e-01 -5.852761415177568e+00 -6.010219164835382e+00 4.519477897279837e+00 4.615331132236661e+00 9.248373320994437e+03 + 144640 1.021122445897783e+00 -5.963309523337470e+00 -5.973642789842378e+00 3.885903857799278e+00 4.826568642460275e+00 9.136313122453925e+03 + 144660 1.053579758318158e+00 -5.978359457042215e+00 -6.022590149626675e+00 3.751495968461701e+00 4.497516486964179e+00 9.286524824209167e+03 + 144680 1.087530503184823e+00 -5.995616671637519e+00 -5.975483328181280e+00 3.734232699615602e+00 4.849841473366154e+00 9.141954048594871e+03 + 144700 1.058618305535936e+00 -5.923067438614238e+00 -6.007527054110591e+00 4.105628317559749e+00 4.620648135296428e+00 9.240172208885006e+03 + 144720 1.014105610612681e+00 -5.834858279590419e+00 -6.039659591302023e+00 4.548796176677758e+00 4.372795351929168e+00 9.339182477500692e+03 + 144740 1.065971384166577e+00 -5.895465308475139e+00 -5.987356337836994e+00 4.226817112511135e+00 4.699164601824532e+00 9.178278897593535e+03 + 144760 1.089920194613861e+00 -5.924744779308169e+00 -6.011976713913104e+00 4.073906463849817e+00 4.573007196250026e+00 9.253854196730705e+03 + 144780 1.081875838801640e+00 -5.914778047749969e+00 -5.993459270111188e+00 4.157130119845022e+00 4.705330365167094e+00 9.196961348463303e+03 + 144800 1.030758418947701e+00 -5.848285047751322e+00 -6.066881885614263e+00 4.472339368284453e+00 4.217122497524109e+00 9.423451258036243e+03 + 144820 1.046777032082592e+00 -5.896318539539203e+00 -6.000549380695677e+00 4.299794026186107e+00 4.701284406595089e+00 9.218693037413834e+03 + 144840 9.174913557389572e-01 -5.745428229510479e+00 -6.034182019329323e+00 5.071579430675111e+00 4.413510485030745e+00 9.322295719849444e+03 + 144860 1.033346144513867e+00 -5.977513232519722e+00 -5.991807082905179e+00 3.870698576724243e+00 4.788621075844745e+00 9.191910749924802e+03 + 144880 1.029691638621359e+00 -6.035682330906645e+00 -6.007862760977277e+00 3.465442370621318e+00 4.625186646220284e+00 9.241197659497673e+03 + 144900 9.014181341543103e-01 -5.895490161570365e+00 -6.065428932962612e+00 4.244541878251824e+00 4.268727154977660e+00 9.418986874853807e+03 + 144920 1.022773368964170e+00 -6.107727929010672e+00 -5.963183272421752e+00 3.103350451936961e+00 4.933348238283855e+00 9.104377040485999e+03 + 144940 9.202254579638478e-01 -5.971516355608389e+00 -6.029853712228320e+00 3.823675503586328e+00 4.488693374197928e+00 9.308916647082553e+03 + 144960 9.999674536031598e-01 -6.098616511009944e+00 -6.020479729250301e+00 3.161547198417656e+00 4.610220690909427e+00 9.280032580656794e+03 + 144980 9.353313826043863e-01 -6.008271943074234e+00 -6.014039800343128e+00 3.649184272402096e+00 4.616064343391082e+00 9.260241115020186e+03 + 145000 9.402824927763279e-01 -6.016044062625248e+00 -6.030840056288740e+00 3.671387140918637e+00 4.586426255630248e+00 9.311966398989898e+03 + 145020 1.014612525758448e+00 -6.123028949670284e+00 -5.990771384741592e+00 3.098717688129210e+00 4.858161092741788e+00 9.188756428489314e+03 + 145040 9.856358195201276e-01 -6.074171252950487e+00 -6.037138641460466e+00 3.280297313348916e+00 4.492944299302723e+00 9.331433168950050e+03 + 145060 9.910961800157465e-01 -6.075562049968168e+00 -5.994832907714406e+00 3.302435634549190e+00 4.765994862164682e+00 9.201189289772547e+03 + 145080 9.265106746528887e-01 -5.968652506652664e+00 -6.004093556596342e+00 3.867260839283770e+00 4.663752846022420e+00 9.229619171935434e+03 + 145100 1.007630389315747e+00 -6.069471706922844e+00 -6.032385342674567e+00 3.326692324012121e+00 4.539647966622047e+00 9.316717724349959e+03 + 145120 1.004489994047310e+00 -6.045466677972623e+00 -5.975574500915295e+00 3.470004175051850e+00 4.871335871494471e+00 9.142236971032236e+03 + 145140 1.000361597229159e+00 -6.017020275008067e+00 -5.984367488565338e+00 3.600245583138165e+00 4.787742935894690e+00 9.169119170233715e+03 + 145160 1.043492840104798e+00 -6.056080637472655e+00 -5.976283730272459e+00 3.392190540375252e+00 4.850396730050258e+00 9.144377773847245e+03 + 145180 1.030687016017780e+00 -6.009220651392867e+00 -5.979208818897622e+00 3.693689881858887e+00 4.866022468362649e+00 9.153332159257750e+03 + 145200 1.084739891407558e+00 -6.060862086425541e+00 -6.000773103772461e+00 3.364293719803807e+00 4.709333956937799e+00 9.219431255154874e+03 + 145220 1.013861317247316e+00 -5.933185849791751e+00 -6.026473335328024e+00 4.073713051270901e+00 4.538041873129889e+00 9.298475839618830e+03 + 145240 1.024210170290731e+00 -5.928930607336943e+00 -6.008524868250376e+00 4.051050670610904e+00 4.594008107273903e+00 9.243223955405769e+03 + 145260 1.033253249543048e+00 -5.926389871113110e+00 -6.038677174131772e+00 4.082437446982111e+00 4.437666376644970e+00 9.336150055767594e+03 + 145280 1.024330032871510e+00 -5.903576431191135e+00 -6.010641276595285e+00 4.196602034441721e+00 4.581819123899811e+00 9.249739792479517e+03 + 145300 1.075815503310104e+00 -5.974940125914619e+00 -6.035925724369997e+00 3.865753458469554e+00 4.515564714647917e+00 9.327554911388850e+03 + 145320 1.050802755703566e+00 -5.938989548900341e+00 -6.016315849371900e+00 4.014762494409170e+00 4.570742910895151e+00 9.267183335682712e+03 + 145340 1.035284839996167e+00 -5.924478064644788e+00 -6.000709660989774e+00 4.127435987219649e+00 4.689702364205336e+00 9.219203640200816e+03 + 145360 1.096100206323709e+00 -6.032225134913777e+00 -5.999096805512743e+00 3.522833711056095e+00 4.713061705069236e+00 9.214278796387667e+03 + 145380 1.057844779514080e+00 -6.010001178175404e+00 -6.000964599435188e+00 3.659233380557971e+00 4.711122814090331e+00 9.220005172006977e+03 + 145400 9.812983468918689e-01 -5.951284538609361e+00 -6.013485944670389e+00 3.949656890903705e+00 4.592486791664799e+00 9.258465446992779e+03 + 145420 9.695403398682304e-01 -5.995059824520369e+00 -5.972667062485584e+00 3.749535344019309e+00 4.878118048891769e+00 9.133288935937293e+03 + 145440 9.492126248428828e-01 -6.011315618752801e+00 -5.949965760116690e+00 3.669124776310314e+00 5.021405158458803e+00 9.064105518136528e+03 + 145460 9.963536766049228e-01 -6.112316346535594e+00 -5.984779539855507e+00 3.151921438033155e+00 4.884257518247265e+00 9.170399251879613e+03 + 145480 9.768848009823462e-01 -6.105319595678480e+00 -6.000018195779527e+00 3.136104217100899e+00 4.740761150659663e+00 9.217126239879466e+03 + 145500 9.536619736909214e-01 -6.082586736577495e+00 -6.015892782011670e+00 3.183637609306931e+00 4.566604617280014e+00 9.265920349722568e+03 + 145520 9.315211007725590e-01 -6.054779123871855e+00 -5.991251516370577e+00 3.364999255031987e+00 4.729784608169813e+00 9.190217088988478e+03 + 145540 9.563276649230867e-01 -6.087915213814458e+00 -5.991565169624117e+00 3.201539102471016e+00 4.754795966333106e+00 9.191178015771033e+03 + 145560 9.464222445353853e-01 -6.063952163193084e+00 -6.006552729487130e+00 3.377321730575746e+00 4.706918161448993e+00 9.237150529073073e+03 + 145580 9.828026523752563e-01 -6.104394685498788e+00 -5.977180053670898e+00 3.115625257835192e+00 4.846111360191591e+00 9.147130278504867e+03 + 145600 9.419860758394146e-01 -6.026533706947342e+00 -5.959135884320141e+00 3.572825870383506e+00 4.959834597688239e+00 9.092038538306422e+03 + 145620 9.264686217235986e-01 -5.979390641820293e+00 -5.999140303428212e+00 3.836116567089472e+00 4.722710953886545e+00 9.214397839794090e+03 + 145640 9.718506940803160e-01 -6.018292394312661e+00 -5.992363561094612e+00 3.628937168428922e+00 4.777824541240939e+00 9.193604643203998e+03 + 145660 9.673341232956011e-01 -5.980989476808312e+00 -6.011925309605004e+00 3.811075606634886e+00 4.633437267411626e+00 9.253693502129914e+03 + 145680 1.017150124093664e+00 -6.026598991360386e+00 -5.998791858387049e+00 3.533938548676491e+00 4.693611409349309e+00 9.213365494635496e+03 + 145700 1.036336776721640e+00 -6.030979473267756e+00 -5.985283951640790e+00 3.513344734289950e+00 4.775735490831108e+00 9.171919334673577e+03 + 145720 1.008424842964302e+00 -5.970666558281130e+00 -6.016868246825199e+00 3.803343818416237e+00 4.538046573108002e+00 9.268903704054819e+03 + 145740 1.092679012282497e+00 -6.080622457259713e+00 -5.963750656243575e+00 3.281056566107306e+00 4.952152533394724e+00 9.106102564002424e+03 + 145760 9.896663383496291e-01 -5.917941202575729e+00 -6.032257001989129e+00 4.125334342474461e+00 4.468915331929934e+00 9.316303544804752e+03 + 145780 1.024669244691494e+00 -5.964500725380759e+00 -5.970629716091297e+00 3.845350468436670e+00 4.810156855318517e+00 9.127117786387407e+03 + 145800 1.033974309198313e+00 -5.975203785341843e+00 -6.021644452705235e+00 3.795847204324480e+00 4.529177705653829e+00 9.283610288832748e+03 + 145820 1.053974900331853e+00 -6.006010319967837e+00 -5.987273548350285e+00 3.634791705710557e+00 4.742381147844577e+00 9.178028983136453e+03 + 145840 9.686296009404674e-01 -5.881863325669591e+00 -6.009877685312694e+00 4.295581742821562e+00 4.560503479592733e+00 9.247382788318540e+03 + 145860 9.918676002531757e-01 -5.919795120908255e+00 -6.019832179645833e+00 4.068950686820813e+00 4.494522414864828e+00 9.278038021576484e+03 + 145880 1.012636813102866e+00 -5.956361530280740e+00 -6.073651006220183e+00 3.914609825497327e+00 4.241115504165304e+00 9.444522555556372e+03 + 145900 1.019826426751164e+00 -5.978890025242512e+00 -6.074609364966562e+00 3.745134671314812e+00 4.195499410099369e+00 9.447520761164520e+03 + 145920 9.596632627022854e-01 -5.904969280523870e+00 -6.074766042607113e+00 4.209163400356357e+00 4.234164116510363e+00 9.448006437426937e+03 + 145940 9.166657448468659e-01 -5.859188295659235e+00 -6.118582576476643e+00 4.396656850731762e+00 3.907174749142977e+00 9.584659018303391e+03 + 145960 9.451047375814985e-01 -5.918498155660906e+00 -6.042971738802627e+00 4.166058255374759e+00 4.451311678750261e+00 9.349436115981409e+03 + 145980 1.029244736227485e+00 -6.061080400523420e+00 -5.991988577991420e+00 3.338908209363752e+00 4.735644146267480e+00 9.192495451212404e+03 + 146000 9.342851060260058e-01 -5.934926355011434e+00 -6.031473250344757e+00 3.999009562269385e+00 4.444622348681677e+00 9.313919966606927e+03 + 146020 1.036109983915124e+00 -6.098624775872919e+00 -5.991098744529488e+00 3.200533173107086e+00 4.817964284680640e+00 9.189752132059140e+03 + 146040 1.004844848805031e+00 -6.064070847854333e+00 -5.971360041954200e+00 3.340589182457312e+00 4.872948976886724e+00 9.129357455780539e+03 + 146060 9.220943852611928e-01 -5.949768947245596e+00 -6.036265380636284e+00 3.988821093952277e+00 4.492145188143146e+00 9.328692514496652e+03 + 146080 9.394140042392169e-01 -5.980500558987492e+00 -6.012567318522181e+00 3.870543017006704e+00 4.686410721443521e+00 9.255631927328368e+03 + 146100 1.007636365126500e+00 -6.081441286611076e+00 -6.000896493096358e+00 3.246992156974399e+00 4.709492825602419e+00 9.219805047034175e+03 + 146120 1.010934195611452e+00 -6.084485848711070e+00 -6.006276504836556e+00 3.240557420672793e+00 4.689647576057099e+00 9.236349451632273e+03 + 146140 9.530579177429476e-01 -5.997143773545310e+00 -6.022395723529105e+00 3.703991101034936e+00 4.558990496501350e+00 9.285930150874072e+03 + 146160 9.153430128449697e-01 -5.935614127046904e+00 -6.039403185116655e+00 4.021666789973533e+00 4.425693957232191e+00 9.338408267679031e+03 + 146180 9.715258362893063e-01 -6.010076478124630e+00 -6.016760744284140e+00 3.625956441152251e+00 4.587574350477501e+00 9.268589037019037e+03 + 146200 9.912515427010384e-01 -6.030202372210554e+00 -5.980692373218643e+00 3.599761923024462e+00 4.884055998883595e+00 9.157864262854146e+03 + 146220 1.024582103101166e+00 -6.067747915930495e+00 -5.954168125094353e+00 3.358224248756162e+00 5.010416984153117e+00 9.076873524453042e+03 + 146240 9.670679323961847e-01 -5.963396194687419e+00 -6.002328294838356e+00 3.911769445813695e+00 4.688215302023986e+00 9.224167475698501e+03 + 146260 1.008773283356508e+00 -5.993052056678286e+00 -5.985069600499534e+00 3.719968805595022e+00 4.765805304254516e+00 9.171265388962431e+03 + 146280 1.027288565056898e+00 -5.947802140321048e+00 -6.015801507295537e+00 3.965727396987771e+00 4.575264508952228e+00 9.265604784411173e+03 + 146300 1.111955114151632e+00 -5.959920671568852e+00 -6.050366921944659e+00 3.891647098214544e+00 4.372290732044654e+00 9.372294528523209e+03 + 146320 1.087208159887513e+00 -5.848605863574324e+00 -6.040435353471667e+00 4.456346697323673e+00 4.354832080815507e+00 9.341605921023394e+03 + 146340 1.043880534879352e+00 -5.754364875933859e+00 -6.072309229424271e+00 4.926875901588481e+00 4.101190222116844e+00 9.440353048889740e+03 + 146360 1.169809082914887e+00 -5.930774781233576e+00 -6.016153246938061e+00 4.112759487924408e+00 4.622503125574386e+00 9.266667810748861e+03 + 146380 1.101922384045817e+00 -5.836258983292675e+00 -6.036339890320859e+00 4.507378846789016e+00 4.358483316212886e+00 9.328892319920233e+03 + 146400 1.116708983005252e+00 -5.877251382618168e+00 -6.006907448438943e+00 4.371097275739075e+00 4.626592081584846e+00 9.238199891018883e+03 + 146420 1.160910734506137e+00 -5.974314684826933e+00 -6.009129376328239e+00 3.891575052098006e+00 4.691663705941401e+00 9.245081919875582e+03 + 146440 1.079686478738224e+00 -5.901251396800552e+00 -6.009321596623297e+00 4.238402309887483e+00 4.617846498695905e+00 9.245667919054637e+03 + 146460 1.000436535070707e+00 -5.832051175285336e+00 -6.007973260775412e+00 4.533844618934726e+00 4.523672780195964e+00 9.241507304548446e+03 + 146480 1.043528295530512e+00 -5.937287004014801e+00 -5.964442604232580e+00 4.057515353812769e+00 4.901583695046736e+00 9.108179071638870e+03 + 146500 1.052968497102157e+00 -5.991292262785580e+00 -5.978799920304808e+00 3.744663598178206e+00 4.816396561886551e+00 9.152073395797621e+03 + 146520 9.450617676091623e-01 -5.866320667628278e+00 -6.044881260346232e+00 4.374563642292497e+00 4.349241086743588e+00 9.355310905864157e+03 + 146540 1.059459729669544e+00 -6.068117757063598e+00 -6.004002751691242e+00 3.325600830293661e+00 4.693759112906747e+00 9.229349639658469e+03 + 146560 9.762615968622409e-01 -5.976841463301147e+00 -6.021815879598275e+00 3.827370158705786e+00 4.569120100559249e+00 9.284153061544215e+03 + 146580 9.837622833302723e-01 -6.015081557244224e+00 -6.000876733763139e+00 3.659985856438309e+00 4.741552151056032e+00 9.219730120251721e+03 + 146600 9.895468458199043e-01 -6.047286768419053e+00 -5.980933209117491e+00 3.467008554364013e+00 4.848020960053704e+00 9.158608221394285e+03 + 146620 9.268175425018635e-01 -5.972631948408539e+00 -5.993802967006736e+00 3.904449500121281e+00 4.782882235125896e+00 9.198040363791337e+03 + 146640 9.730050360575444e-01 -6.054932920029318e+00 -5.991519495867454e+00 3.386141549431748e+00 4.750271244164841e+00 9.191037916374617e+03 + 146660 9.435965040782058e-01 -6.021032396404289e+00 -5.949270850708078e+00 3.600375730651872e+00 5.012441631102821e+00 9.061965545065597e+03 + 146680 9.069092825532131e-01 -5.968753422099710e+00 -6.001533519528506e+00 3.831560764744709e+00 4.643332372604881e+00 9.221760422436364e+03 + 146700 1.023129760213275e+00 -6.138774815565306e+00 -5.976199038212815e+00 2.906689225728219e+00 4.840224497806453e+00 9.144127640002300e+03 + 146720 9.106533745834371e-01 -5.964969595488947e+00 -6.027678269566131e+00 3.888959026707203e+00 4.528876116020059e+00 9.302208635157644e+03 + 146740 9.816642441512673e-01 -6.058059572114021e+00 -6.008261649549547e+00 3.448765028940618e+00 4.734712406509441e+00 9.242441817963208e+03 + 146760 9.602061028990557e-01 -6.009836657078118e+00 -6.030841297446315e+00 3.694795097062862e+00 4.574183201611086e+00 9.311973111244853e+03 + 146780 9.465773008191593e-01 -5.970769631690213e+00 -6.024705174694003e+00 3.890791281949823e+00 4.581085047523753e+00 9.293055208687261e+03 + 146800 1.051881201774814e+00 -6.102172420625910e+00 -5.968781686874832e+00 3.170689257803601e+00 4.936639493151633e+00 9.121459156711924e+03 + 146820 1.030034153027777e+00 -6.043764254290242e+00 -5.969213939520788e+00 3.450765145634434e+00 4.878844589664564e+00 9.122766742847803e+03 + 146840 9.578559505898195e-01 -5.907396640882239e+00 -5.982610396859833e+00 4.203198468786928e+00 4.771309442672460e+00 9.163731504778136e+03 + 146860 9.835758747559161e-01 -5.915158701652629e+00 -6.024708435846550e+00 4.089430708818883e+00 4.460379182310808e+00 9.293035843837541e+03 + 146880 1.041698229453244e+00 -5.973637069850342e+00 -5.969037742336551e+00 3.868327679966797e+00 4.894737730294616e+00 9.122227505274044e+03 + 146900 1.036591265634566e+00 -5.940698445555705e+00 -5.981523925160052e+00 4.046236107206683e+00 4.811809885595975e+00 9.160384753972750e+03 + 146920 1.137507595585855e+00 -6.068260593515021e+00 -5.980472154791829e+00 3.333383379054134e+00 4.837478179419690e+00 9.157186841484103e+03 + 146940 1.060253650914079e+00 -5.939315938293372e+00 -6.003284998534792e+00 4.033492218615823e+00 4.666171975529508e+00 9.227131020809828e+03 + 146960 1.078809901012547e+00 -5.962229592209948e+00 -5.983384166629034e+00 3.941872529699975e+00 4.820399689725773e+00 9.166109483097316e+03 + 146980 1.076939042687234e+00 -5.963376231277841e+00 -6.021608163384031e+00 3.844729617554468e+00 4.510352852038351e+00 9.283502056754358e+03 + 147000 1.065575680493418e+00 -5.957056636055171e+00 -5.988477482670197e+00 3.929533801357894e+00 4.749110437734119e+00 9.181704382120643e+03 + 147020 1.038781878793479e+00 -5.931090521878517e+00 -6.014556670254990e+00 4.016933121431184e+00 4.537657581108758e+00 9.261784148521132e+03 + 147040 1.054521931198552e+00 -5.974860904767612e+00 -6.032177421541622e+00 3.793301625074341e+00 4.464181316055677e+00 9.316115124706421e+03 + 147060 1.038106267173353e+00 -5.983094594282507e+00 -6.031167052647656e+00 3.750372570441196e+00 4.474333075319620e+00 9.312988281615584e+03 + 147080 9.994126646414436e-01 -5.965684668715010e+00 -6.050155479140535e+00 3.837214694255285e+00 4.352170228976258e+00 9.371652230757254e+03 + 147100 1.014509075177281e+00 -6.035644222920311e+00 -6.002347598644500e+00 3.488514158277843e+00 4.679708527505507e+00 9.224262476350224e+03 + 147120 9.005830134463917e-01 -5.908052361275734e+00 -6.023322909968011e+00 4.207686203989504e+00 4.545784875338691e+00 9.288758475968454e+03 + 147140 9.664849589515255e-01 -6.035920220072896e+00 -5.985951064684791e+00 3.488929921140056e+00 4.775860544080357e+00 9.173989277730780e+03 + 147160 9.833159863705071e-01 -6.077120020470039e+00 -5.993662525977967e+00 3.268260743270071e+00 4.747486591649080e+00 9.197618573484098e+03 + 147180 1.071702441569530e+00 -6.215868830488357e+00 -5.963522215591906e+00 2.507723693578843e+00 4.956737006826712e+00 9.105428332483261e+03 + 147200 9.063400326202361e-01 -5.972899672621519e+00 -5.979447507094841e+00 3.892546192647443e+00 4.854947513827520e+00 9.154057849802955e+03 + 147220 9.238033691271338e-01 -5.994680416787252e+00 -5.973492394366275e+00 3.736256850303139e+00 4.857921753880263e+00 9.135848601139942e+03 + 147240 9.849302506238601e-01 -6.075127673092194e+00 -6.019546359866382e+00 3.248494218628837e+00 4.567650720351875e+00 9.277155519780332e+03 + 147260 9.900832801166953e-01 -6.073425549873228e+00 -5.999914128183327e+00 3.254102506932759e+00 4.676216466131912e+00 9.216800582905278e+03 + 147280 9.358519618907827e-01 -5.981461744723795e+00 -6.009364514814460e+00 3.813151173951300e+00 4.652929150150985e+00 9.245796517852639e+03 + 147300 9.620424738932651e-01 -6.005351367794629e+00 -5.958462514590823e+00 3.720610079839340e+00 4.989853130962174e+00 9.089975349374659e+03 + 147320 9.517193564429207e-01 -5.969286434528465e+00 -6.019167643720662e+00 3.843229661656856e+00 4.556804039383088e+00 9.275993883675023e+03 + 147340 9.761731745966711e-01 -5.982982948636804e+00 -6.034665513054563e+00 3.764026743959082e+00 4.467257461221319e+00 9.323774966314444e+03 + 147360 9.620806314382306e-01 -5.940894605468012e+00 -6.018795472709902e+00 4.003762599551262e+00 4.556443764728082e+00 9.274835982946093e+03 + 147380 1.053950414784084e+00 -6.055378410997507e+00 -5.998590259523348e+00 3.405511401523996e+00 4.731597755226661e+00 9.212730034656228e+03 + 147400 9.746849345650567e-01 -5.917286345482706e+00 -6.023482603312237e+00 4.133236107743421e+00 4.523440761468467e+00 9.289277242842885e+03 + 147420 1.002034272145176e+00 -5.938845063052676e+00 -6.010563860946154e+00 4.007221108667495e+00 4.595400672715038e+00 9.249519886817592e+03 + 147440 1.063516812609236e+00 -6.011986556318882e+00 -6.009990314305742e+00 3.609276332790502e+00 4.620739063347401e+00 9.247748070705702e+03 + 147460 1.046558709219932e+00 -5.973582295562760e+00 -5.992184964819701e+00 3.893349586993884e+00 4.786530181366762e+00 9.193069295768459e+03 + 147480 1.003200678486407e+00 -5.900412400235664e+00 -6.036925115245118e+00 4.233603799659062e+00 4.449726664800409e+00 9.330755391530533e+03 + 147500 1.033195957798800e+00 -5.941454520431762e+00 -6.008884689188932e+00 4.020420489456436e+00 4.633226025667877e+00 9.244332840296043e+03 + 147520 1.064224873673664e+00 -5.988247667743936e+00 -5.941558246238659e+00 3.701368962373131e+00 4.969466845821056e+00 9.038510936037195e+03 + 147540 9.900921216704990e-01 -5.879983190819305e+00 -6.012190578809145e+00 4.329706245102539e+00 4.570550964237704e+00 9.254477856492844e+03 + 147560 1.027615365927224e+00 -5.943513842298212e+00 -5.993355259057427e+00 3.940937225420726e+00 4.654740097454996e+00 9.196638944863356e+03 + 147580 1.022876803181970e+00 -5.950417256321040e+00 -5.988910148648042e+00 3.957827220099767e+00 4.736795075602284e+00 9.183013458760865e+03 + 147600 1.021630542410002e+00 -5.970076544807824e+00 -6.004554534990737e+00 3.839002992449868e+00 4.641025037367847e+00 9.231042900396122e+03 + 147620 1.013971619028438e+00 -5.992951406702041e+00 -6.021127145486098e+00 3.724278026759573e+00 4.562488574480028e+00 9.282000749989444e+03 + 147640 9.973840496026797e-01 -6.013352510834546e+00 -6.013440113448819e+00 3.614213577279701e+00 4.613710549512083e+00 9.258335593894883e+03 + 147660 9.659350174744817e-01 -6.013427311245348e+00 -6.010615253451397e+00 3.604307670926669e+00 4.620454941944070e+00 9.249667257046320e+03 + 147680 9.326462148087226e-01 -6.006166824762192e+00 -6.007304268134179e+00 3.656508337030825e+00 4.649976961170085e+00 9.239487153383199e+03 + 147700 8.762308564632937e-01 -5.952200555265967e+00 -5.997181539113994e+00 3.917996625372281e+00 4.659708855332154e+00 9.208391797685956e+03 + 147720 9.631774218283768e-01 -6.098232115861881e+00 -5.955396384148790e+00 3.206463354235003e+00 5.026648229489616e+00 9.080612763524956e+03 + 147740 1.006732566218577e+00 -6.169690765988399e+00 -5.966564313123426e+00 2.791608017057621e+00 4.957991543125289e+00 9.114692745410408e+03 + 147760 9.582760488326885e-01 -6.098627338073102e+00 -5.977817635701862e+00 3.151518502508643e+00 4.845226508765329e+00 9.149088868060491e+03 + 147780 9.124698496834842e-01 -6.026244475273343e+00 -5.996217592543302e+00 3.511200658943180e+00 4.683619666224157e+00 9.205457175119485e+03 + 147800 9.619191808835996e-01 -6.088770859700382e+00 -5.980713946478601e+00 3.200835481023085e+00 4.821314998495833e+00 9.157946998757323e+03 + 147820 9.643448144814772e-01 -6.075806403219199e+00 -5.970229967586068e+00 3.316718521734194e+00 4.922954753040242e+00 9.125889863179658e+03 + 147840 9.945182932585239e-01 -6.098257931198596e+00 -5.978582328889623e+00 3.146310545172474e+00 4.833506373370197e+00 9.151440790382949e+03 + 147860 9.659590021196989e-01 -6.029853890456608e+00 -6.023860722850536e+00 3.553677313261809e+00 4.588091009095567e+00 9.290448549146882e+03 + 147880 1.008633885569229e+00 -6.067012649180972e+00 -5.992863839636564e+00 3.380044035580053e+00 4.805817974475240e+00 9.195178686062993e+03 + 147900 9.739620046932055e-01 -5.990595908688277e+00 -6.006056025127406e+00 3.772206202857211e+00 4.683431821818449e+00 9.235654066938181e+03 + 147920 9.549093951965635e-01 -5.937644596725423e+00 -6.002175842041855e+00 4.041788017124788e+00 4.671239620339900e+00 9.223738745119814e+03 + 147940 1.102483691256749e+00 -6.134570095467152e+00 -5.971418594391340e+00 3.015390527356396e+00 4.952231694146906e+00 9.129529188449993e+03 + 147960 1.012972697169058e+00 -5.986470560179397e+00 -6.019681031939598e+00 3.776799564435340e+00 4.586099896284371e+00 9.277571518651042e+03 + 147980 9.749425719556081e-01 -5.921756953769655e+00 -6.011932315107870e+00 4.098352750917704e+00 4.580551871521605e+00 9.253713896591165e+03 + 148000 1.070109286821341e+00 -6.056461821687487e+00 -6.004682316373098e+00 3.387248628629103e+00 4.684574560996876e+00 9.231433618198329e+03 + 148020 9.902638893803355e-01 -5.934004418055082e+00 -6.055515975046729e+00 3.999620939125487e+00 4.301882775026778e+00 9.388262209456941e+03 + 148040 9.897615351195371e-01 -5.935095973336256e+00 -6.032618998503080e+00 4.060936000445651e+00 4.500943698298376e+00 9.317412069560112e+03 + 148060 1.085238530396146e+00 -6.080636314945125e+00 -5.973808091320646e+00 3.317256016635258e+00 4.930680208301196e+00 9.136809844629766e+03 + 148080 1.044579815054365e+00 -6.023698084897552e+00 -6.016759152074973e+00 3.546902630688328e+00 4.586747056751956e+00 9.268580222813556e+03 + 148100 9.777590692165292e-01 -5.931180533100734e+00 -6.005818790237676e+00 4.076376993264252e+00 4.647792570550965e+00 9.234911934408750e+03 + 148120 1.017846441823961e+00 -5.995942894019807e+00 -5.974599481775986e+00 3.712939888816869e+00 4.835497064803263e+00 9.139252034248559e+03 + 148140 9.687294014955719e-01 -5.927740579051606e+00 -6.004043646354701e+00 4.091859878097296e+00 4.653715857781419e+00 9.229462204884001e+03 + 148160 9.568014478491175e-01 -5.915720381028480e+00 -6.031999256519079e+00 4.133053586156850e+00 4.465362288992003e+00 9.315513469276739e+03 + 148180 1.040862425197149e+00 -6.044900724036706e+00 -5.967284382335305e+00 3.485574211159155e+00 4.931259256298662e+00 9.116904444728318e+03 + 148200 1.093514159926527e+00 -6.127858350442940e+00 -6.021650884542738e+00 2.977264262886303e+00 4.587123967637496e+00 9.283648161511939e+03 + 148220 9.929950509154217e-01 -5.988609665090152e+00 -6.010066238327926e+00 3.740932442519514e+00 4.617725478594238e+00 9.247974064104626e+03 + 148240 9.666243152533401e-01 -5.959223132149596e+00 -5.982976106263047e+00 3.951427961839134e+00 4.815034708718830e+00 9.164839325451787e+03 + 148260 1.002547017168844e+00 -6.019288246549095e+00 -5.993514408845407e+00 3.576722223395052e+00 4.724719587978129e+00 9.197137975280353e+03 + 148280 9.976035775731529e-01 -6.020089016037030e+00 -6.006557711453492e+00 3.634055163049969e+00 4.711754007931258e+00 9.237197792729736e+03 + 148300 9.540656092471164e-01 -5.965740245904180e+00 -6.034828531490184e+00 3.841916967584449e+00 4.445201340371968e+00 9.324276101881456e+03 + 148320 9.969973121791984e-01 -6.042946331290940e+00 -5.965635073050022e+00 3.459791514901797e+00 4.903724723599694e+00 9.111821305377945e+03 + 148340 9.175811620376667e-01 -5.936979560581555e+00 -5.987864776537041e+00 4.026215869347523e+00 4.734025084869402e+00 9.179822746833552e+03 + 148360 1.025532050027586e+00 -6.112464981045278e+00 -5.982841078788863e+00 3.134623639762816e+00 4.878944145753195e+00 9.164432509077413e+03 + 148380 9.880441680680256e-01 -6.078765111875846e+00 -5.988947983625831e+00 3.285995029152028e+00 4.801738878719291e+00 9.183153073458876e+03 + 148400 9.352657659337830e-01 -6.026375731617719e+00 -6.019747673759342e+00 3.511084420148667e+00 4.549143754060107e+00 9.277771379252350e+03 + 148420 1.013464001358629e+00 -6.171507172323161e+00 -5.960602172133965e+00 2.811034647558906e+00 5.022083796088568e+00 9.096513191541651e+03 + 148440 8.658300657255028e-01 -5.978487883916946e+00 -5.984699938558352e+00 3.860848085377656e+00 4.825177506314352e+00 9.170132059299083e+03 + 148460 8.880314509268985e-01 -6.028685999159032e+00 -5.944306759751037e+00 3.577305355727041e+00 5.061824006052845e+00 9.046871231343488e+03 + 148480 9.499737271605003e-01 -6.127431368286963e+00 -5.971024592361706e+00 3.012914314268948e+00 4.911026225502125e+00 9.128325516498280e+03 + 148500 9.200298726309915e-01 -6.082194985358914e+00 -6.012535216179670e+00 3.214402611523302e+00 4.614399785964961e+00 9.255582319247356e+03 + 148520 9.095102014506612e-01 -6.058969412480756e+00 -5.975625303661701e+00 3.359088080670662e+00 4.837662850968830e+00 9.142397685464090e+03 + 148540 9.319930251231311e-01 -6.076202214124780e+00 -5.999378835731135e+00 3.264479304566550e+00 4.705611031682246e+00 9.215142340782442e+03 + 148560 9.185771989205889e-01 -6.030133724783111e+00 -5.990288760691397e+00 3.488318908989651e+00 4.717114858792534e+00 9.187262146434723e+03 + 148580 9.933580252418474e-01 -6.107932558055012e+00 -5.958759244047257e+00 3.104452653946216e+00 4.961028907474484e+00 9.090881840822160e+03 + 148600 9.652521055641422e-01 -6.025656040751643e+00 -6.003783164317905e+00 3.505971389677570e+00 4.631568830976778e+00 9.228652813772884e+03 + 148620 9.646374783845550e-01 -5.985273385677446e+00 -6.016797800565131e+00 3.765343663714059e+00 4.584325595041532e+00 9.268684762820349e+03 + 148640 1.001975721026050e+00 -6.006255588601622e+00 -6.043902065070998e+00 3.607918458961228e+00 4.391746565300664e+00 9.352320249103474e+03 + 148660 9.782465868450666e-01 -5.946126578793100e+00 -6.012126025975050e+00 4.021860133346900e+00 4.642881094246701e+00 9.254300808336084e+03 + 148680 1.022760238256472e+00 -5.992994312313469e+00 -6.006713354730621e+00 3.703611086925390e+00 4.624834222351147e+00 9.237673139326453e+03 + 148700 1.034743026161218e+00 -5.996271033619035e+00 -6.017194727830335e+00 3.699215474075153e+00 4.579068383982657e+00 9.269890653597382e+03 + 148720 9.387954426731207e-01 -5.843726190093903e+00 -6.048000820985521e+00 4.512763240338693e+00 4.339786698362054e+00 9.364984567096795e+03 + 148740 9.677469747871864e-01 -5.879972586521713e+00 -6.060071170627753e+00 4.335937562442474e+00 4.301783622339769e+00 9.402358684882523e+03 + 148760 9.971600232127474e-01 -5.920728958438067e+00 -6.043774029824622e+00 4.109844174453989e+00 4.403300333389136e+00 9.351904209580603e+03 + 148780 1.047498724932693e+00 -5.997544673534498e+00 -6.006933432583651e+00 3.679303634103386e+00 4.625391926737386e+00 9.238340299851656e+03 + 148800 9.916242281609570e-01 -5.919892821259730e+00 -6.011215512767518e+00 4.106615615668069e+00 4.582226588889511e+00 9.251487443974584e+03 + 148820 1.062032548363734e+00 -6.030909085956646e+00 -5.942137054137520e+00 3.589417414724179e+00 5.099160158857122e+00 9.040259916154726e+03 + 148840 9.889760202788839e-01 -5.930878951691304e+00 -6.052217116120625e+00 4.065889967477486e+00 4.369147450304069e+00 9.378030385070228e+03 + 148860 1.071976316426278e+00 -6.065252806374444e+00 -6.052835209810787e+00 3.340097495650378e+00 4.411401256735749e+00 9.379960253764222e+03 + 148880 9.882297925071922e-01 -5.963903461326367e+00 -6.013592048739210e+00 3.894300214978604e+00 4.608980656770004e+00 9.258818132621109e+03 + 148900 9.871604654665437e-01 -5.986731541088610e+00 -5.989215707812895e+00 3.825310274147645e+00 4.811045804393244e+00 9.183966735012884e+03 + 148920 9.777326463762732e-01 -6.003538379710181e+00 -6.023180842145290e+00 3.638972515173342e+00 4.526182456209707e+00 9.288348106427902e+03 + 148940 9.495409983705687e-01 -5.994488103511454e+00 -6.014997420916482e+00 3.726118397581784e+00 4.608350723235501e+00 9.263135443837726e+03 + 148960 9.319298647783092e-01 -6.002202821176582e+00 -6.001387315318129e+00 3.654518268516340e+00 4.659201029354701e+00 9.221308722505426e+03 + 148980 9.702531358586300e-01 -6.091171752653831e+00 -5.990256878513732e+00 3.205448550181603e+00 4.784917374020354e+00 9.187166954510483e+03 + 149000 9.555480309803654e-01 -6.100320506180590e+00 -6.003177801217802e+00 3.162452934140269e+00 4.720261378821602e+00 9.226823093561648e+03 + 149020 9.591630989133524e-01 -6.132941951060305e+00 -5.969454774439789e+00 2.948138390893425e+00 4.886907058607241e+00 9.123537672225229e+03 + 149040 9.140790069492226e-01 -6.083851962012092e+00 -5.979621453797276e+00 3.159510866347591e+00 4.758018574136085e+00 9.154615912074874e+03 + 149060 9.117785071603963e-01 -6.089485847995926e+00 -5.972103891576873e+00 3.198406760948568e+00 4.872432119505814e+00 9.131607181773656e+03 + 149080 8.583247656209404e-01 -6.010624228428672e+00 -5.966538034642333e+00 3.640939604770538e+00 4.894089351808131e+00 9.114589635427281e+03 + 149100 9.501773447563995e-01 -6.135318296125980e+00 -5.930370335609149e+00 3.005573517974896e+00 5.182416422856931e+00 9.004543364281204e+03 + 149120 9.264847934953789e-01 -6.072462028013182e+00 -5.978967278175997e+00 3.336631522709883e+00 4.873492844540779e+00 9.152596373130513e+03 + 149140 9.355808766771774e-01 -6.040604153960872e+00 -6.032395586041773e+00 3.465258771190565e+00 4.512393638453808e+00 9.316779311326984e+03 + 149160 9.884416968087282e-01 -6.055404590142630e+00 -6.005520307828047e+00 3.396294796824091e+00 4.682738065442166e+00 9.234011761123716e+03 + 149180 9.867515331203045e-01 -5.990610590998948e+00 -5.977677466831366e+00 3.801426784502123e+00 4.875690784866874e+00 9.148650647885794e+03 + 149200 1.020920510450418e+00 -5.999172827693941e+00 -6.013765568103580e+00 3.690198444107339e+00 4.606404670455915e+00 9.259346967431886e+03 + 149220 1.036985912253243e+00 -6.001431769816188e+00 -5.999273197546904e+00 3.706843581318633e+00 4.719238437326844e+00 9.214827103708058e+03 + 149240 1.001393952414178e+00 -5.937612394299311e+00 -6.085626569206395e+00 3.979500050982625e+00 4.129579753546606e+00 9.481763069203724e+03 + 149260 1.038083052648653e+00 -5.988403336767922e+00 -6.013168730324876e+00 3.742238449915355e+00 4.600031727679052e+00 9.257517256108127e+03 + 149280 1.037310504143736e+00 -5.986417597222532e+00 -6.031912138781911e+00 3.731747438689307e+00 4.470510740797804e+00 9.315272311562769e+03 + 149300 1.041967014936237e+00 -5.998017109849537e+00 -6.012996483587679e+00 3.660581895853194e+00 4.574568013798186e+00 9.256970636369058e+03 + 149320 9.908451584400902e-01 -5.929769545863131e+00 -6.007679407669706e+00 4.027420204523898e+00 4.580049721518400e+00 9.240626411628657e+03 + 149340 1.001830568977747e+00 -5.955565987267375e+00 -6.002386047659849e+00 3.928199807384543e+00 4.659351775230032e+00 9.224378226870338e+03 + 149360 1.063645601089322e+00 -6.057813144452950e+00 -5.978726939641605e+00 3.409230508741682e+00 4.863355735319066e+00 9.151850529137759e+03 + 149380 9.833041858305926e-01 -5.950701212686327e+00 -6.018840682235790e+00 3.957597870671585e+00 4.566330491969732e+00 9.274981058467969e+03 + 149400 1.078167837241122e+00 -6.106101913856929e+00 -5.992282548280976e+00 3.145612108179131e+00 4.799180518806155e+00 9.193382353133262e+03 + 149420 9.755743138805277e-01 -5.971023819325926e+00 -6.039032650222440e+00 3.829550099223270e+00 4.439032867882920e+00 9.337265770922233e+03 + 149440 1.014931793493759e+00 -6.049210875425539e+00 -6.011248871591116e+00 3.445051931484599e+00 4.663035632102963e+00 9.251618942493558e+03 + 149460 9.774026326215259e-01 -6.014053303605452e+00 -5.999158755489930e+00 3.654169457951653e+00 4.739696258154851e+00 9.214467735918312e+03 + 149480 9.847264595742603e-01 -6.043244683192965e+00 -5.981946429175494e+00 3.532139633569160e+00 4.884123694011631e+00 9.161709560640547e+03 + 149500 9.632228593569714e-01 -6.027641463495756e+00 -5.987627714814349e+00 3.537491705154677e+00 4.767256842190916e+00 9.179110272909693e+03 + 149520 9.915909337872482e-01 -6.083030043256894e+00 -5.951728909570742e+00 3.325629221041859e+00 5.079580649452518e+00 9.069443639713385e+03 + 149540 9.725159434259926e-01 -6.063826628035661e+00 -5.979826651131965e+00 3.383129321255899e+00 4.865470187591337e+00 9.155238416776147e+03 + 149560 9.717511553640832e-01 -6.068794314393019e+00 -5.995228782927384e+00 3.316295938762303e+00 4.738720604667180e+00 9.202414602310961e+03 + 149580 9.994400049201998e-01 -6.112574230212691e+00 -5.957922970474870e+00 3.142641462993562e+00 5.030672928613227e+00 9.088330817529939e+03 + 149600 9.513113547820288e-01 -6.037909897300880e+00 -5.964561762916744e+00 3.542207855021135e+00 4.963384193241955e+00 9.108579069419260e+03 + 149620 9.375791821707874e-01 -6.008700076293080e+00 -5.983504837305659e+00 3.721800116843144e+00 4.866475078059546e+00 9.166455537760432e+03 + 149640 8.888240276595070e-01 -5.917267942746625e+00 -6.005005717301918e+00 4.088296276718696e+00 4.584492397845471e+00 9.232410213825611e+03 + 149660 1.009800773049985e+00 -6.064530962323119e+00 -6.003779253352840e+00 3.337498257860947e+00 4.686343972064872e+00 9.228673241704328e+03 + 149680 9.193357898233663e-01 -5.891054566751519e+00 -6.087553056543850e+00 4.245092694024150e+00 4.116767957593565e+00 9.487783593235583e+03 + 149700 9.787528916850636e-01 -5.936026885089722e+00 -6.049497378526199e+00 4.044486983728270e+00 4.392921850913903e+00 9.369628379168274e+03 + 149720 1.072466895120564e+00 -6.033003489680712e+00 -6.005129751853829e+00 3.493390171887607e+00 4.653445487936553e+00 9.232798612643783e+03 + 149740 1.038466236429112e+00 -5.949317558955997e+00 -6.024779434142694e+00 3.926345429696016e+00 4.493031664686553e+00 9.293275561486022e+03 + 149760 1.036670938581995e+00 -5.924329651562857e+00 -6.002892079101688e+00 4.139888742640146e+00 4.688771126215812e+00 9.225881688195797e+03 + 149780 9.806966176860448e-01 -5.827433295578679e+00 -5.994457425476673e+00 4.670729796033187e+00 4.711651395258335e+00 9.199998395170323e+03 + 149800 1.057798340113215e+00 -5.931999799765908e+00 -6.007535645936189e+00 4.024585721051024e+00 4.590847203206855e+00 9.240198847355317e+03 + 149820 1.073693507750809e+00 -5.953218678511425e+00 -6.030547813270803e+00 3.957610270984331e+00 4.513574412551055e+00 9.311058448744236e+03 + 149840 1.025149097673004e+00 -5.888863406411859e+00 -6.017017231332128e+00 4.271739025066626e+00 4.535859930634131e+00 9.269363188716614e+03 + 149860 1.109093960834532e+00 -6.025474583973589e+00 -5.969561222567913e+00 3.638966087782962e+00 4.960029261539067e+00 9.123836889986344e+03 + 149880 1.042197706272741e+00 -5.943459064003320e+00 -6.000979797891327e+00 4.008828459277579e+00 4.678535503987839e+00 9.220061135477297e+03 + 149900 1.005023587935166e+00 -5.909418153165021e+00 -6.012822217676428e+00 4.189358427481056e+00 4.595596287329291e+00 9.256430575993565e+03 + 149920 1.023595695931044e+00 -5.958653209371946e+00 -5.986424501881814e+00 3.947681562046709e+00 4.788214502861420e+00 9.175419226850287e+03 + 149940 1.037728898461327e+00 -6.001910845855869e+00 -5.964693530483965e+00 3.674134047309070e+00 4.887841631535485e+00 9.108977499518473e+03 + 149960 1.036291945791406e+00 -6.018534218417487e+00 -5.970547045372105e+00 3.598908720968963e+00 4.874458494586575e+00 9.126824168694717e+03 + 149980 9.749912919555134e-01 -5.944265280159549e+00 -5.981527251371983e+00 4.035816310930693e+00 4.821852305957482e+00 9.160422363548916e+03 + 150000 1.000746349859700e+00 -5.995105229027912e+00 -5.990612669802424e+00 3.751209043129280e+00 4.777006013423326e+00 9.188260787544164e+03 + 150020 1.009603466233564e+00 -6.018629198197260e+00 -6.036802247050409e+00 3.542910449175948e+00 4.438557990390946e+00 9.330382329884915e+03 + 150040 9.836447938387544e-01 -5.989361828706469e+00 -6.033672867363838e+00 3.721827478535733e+00 4.467386637454053e+00 9.320703486986977e+03 + 150060 9.682959386008054e-01 -5.972433656819764e+00 -6.017577125455869e+00 3.808675339552505e+00 4.549454556714792e+00 9.271096659975286e+03 + 150080 9.913470011297861e-01 -6.010796410608586e+00 -5.999179344801330e+00 3.657421045325327e+00 4.724128034925714e+00 9.214521491659189e+03 + 150100 1.002680263297291e+00 -6.029727691708482e+00 -5.982564618148485e+00 3.553567764419905e+00 4.824385431263449e+00 9.163604274640982e+03 + 150120 9.885494621538494e-01 -6.008486574460028e+00 -5.988226887899067e+00 3.665169241879245e+00 4.781503497288641e+00 9.180950021348504e+03 + 150140 9.854882495488646e-01 -6.003111420752450e+00 -6.004734622407958e+00 3.673081871635125e+00 4.663761196539555e+00 9.231582999484290e+03 + 150160 1.001620122669466e+00 -6.024787143490674e+00 -5.966297787391675e+00 3.565151430961454e+00 4.901006364880510e+00 9.113887872352245e+03 + 150180 1.006850765052086e+00 -6.029272273626804e+00 -6.002492806843060e+00 3.568478557346657e+00 4.722250399728006e+00 9.224672881719383e+03 + 150200 1.069526029800845e+00 -6.118678166112872e+00 -5.970627143627156e+00 3.088102318475911e+00 4.938234200410579e+00 9.127100687385555e+03 + 150220 9.781274685791935e-01 -5.979278314600574e+00 -5.979121257550968e+00 3.829296643927057e+00 4.830198489810392e+00 9.153053027941969e+03 + 150240 9.798517785923420e-01 -5.977052730942283e+00 -6.015042033294630e+00 3.861029414290817e+00 4.642888961358103e+00 9.263278214659425e+03 + 150260 9.913663567693438e-01 -5.990582008605550e+00 -5.975565499295971e+00 3.781550438150769e+00 4.867777558403677e+00 9.142185886324654e+03 + 150280 1.012050797497780e+00 -6.015109069964392e+00 -6.021130178125844e+00 3.638982806793945e+00 4.604408671967409e+00 9.282021712660486e+03 + 150300 1.029540921495488e+00 -6.034392888289961e+00 -5.986448426344984e+00 3.559541937392017e+00 4.834846457261585e+00 9.175491254244005e+03 + 150320 9.978671226835317e-01 -5.982908181390681e+00 -5.972123789735834e+00 3.803116241090053e+00 4.865041886851404e+00 9.131652337420877e+03 + 150340 9.381223577589265e-01 -5.885865212881697e+00 -6.020214775705394e+00 4.319582601652487e+00 4.548126621391163e+00 9.279175175170591e+03 + 150360 9.352425656863960e-01 -5.868417254345248e+00 -6.002190784166351e+00 4.449764373080928e+00 4.681616063461318e+00 9.223755515455765e+03 + 150380 1.057054880633936e+00 -6.027909476075520e+00 -5.980814780400161e+00 3.535939825062264e+00 4.806364855510777e+00 9.158244685302805e+03 + 150400 1.001193349014441e+00 -5.916284104545692e+00 -6.063316047368043e+00 4.057038005090810e+00 4.212757836285252e+00 9.412459852805780e+03 + 150420 1.103224072128724e+00 -6.030423665264951e+00 -6.025890324804283e+00 3.542312920547334e+00 4.568344063004659e+00 9.296699708782435e+03 + 150440 1.068042584619465e+00 -5.940288506571102e+00 -6.023882524146398e+00 4.054847110345259e+00 4.574837325295502e+00 9.290482814981440e+03 + 150460 1.028568924415552e+00 -5.849764074165900e+00 -6.017967045616854e+00 4.491420788369796e+00 4.525573296972710e+00 9.272274902596249e+03 + 150480 1.084235660274938e+00 -5.905153815394046e+00 -5.955591223289929e+00 4.211413696916372e+00 4.921794295614568e+00 9.081206241346359e+03 + 150500 1.094939847214556e+00 -5.897740067211156e+00 -5.971194970466074e+00 4.274782874112671e+00 4.852993452513390e+00 9.128806988302778e+03 + 150520 1.060008473138131e+00 -5.829648248098029e+00 -6.059722497898953e+00 4.625197545053721e+00 4.304075598821727e+00 9.401288103742056e+03 + 150540 1.136285198194765e+00 -5.941342614665860e+00 -6.035066194293719e+00 4.009425257606282e+00 4.471249959706038e+00 9.325021519130018e+03 + 150560 1.046491546269421e+00 -5.821540823654393e+00 -6.019268157367252e+00 4.673651547476949e+00 4.538270599091711e+00 9.276288455753749e+03 + 150580 1.092924541058410e+00 -5.916316963423075e+00 -6.020332770608984e+00 4.081090575929458e+00 4.483815714673825e+00 9.279564841650561e+03 + 150600 1.077246319718537e+00 -5.930027000145854e+00 -6.040420973581192e+00 4.070501726875413e+00 4.436602447997526e+00 9.341555576119184e+03 + 150620 1.081387906507317e+00 -5.987286941151554e+00 -6.032736518740514e+00 3.737841324369370e+00 4.476862816554158e+00 9.317815934375285e+03 + 150640 1.023219331424679e+00 -5.951808265275351e+00 -6.014570848949219e+00 3.954020418633097e+00 4.593627950699307e+00 9.261829989445889e+03 + 150660 1.014746412120589e+00 -5.978792372843383e+00 -6.013589318559614e+00 3.795706367186674e+00 4.595896920074132e+00 9.258799497109085e+03 + 150680 1.017859844087429e+00 -6.011506238431652e+00 -5.989162073297894e+00 3.618121464770067e+00 4.746425118716484e+00 9.183805419742781e+03 + 150700 1.060636454275692e+00 -6.094071834431030e+00 -6.021455591352630e+00 3.152929558368030e+00 4.569903263451500e+00 9.283021814229569e+03 + 150720 9.821993193527552e-01 -5.992657394375923e+00 -5.994080561695123e+00 3.744938196799296e+00 4.736766149818022e+00 9.198891160476036e+03 + 150740 9.635046167031955e-01 -5.974920530622235e+00 -6.024096479542361e+00 3.823787941086658e+00 4.541412032433788e+00 9.291175671679908e+03 + 150760 1.042071127438678e+00 -6.098107566615688e+00 -6.016159517634082e+00 3.203109982586342e+00 4.673668361258318e+00 9.266728194264100e+03 + 150780 1.011272806120310e+00 -6.060286492676744e+00 -6.006288543062744e+00 3.399615054123844e+00 4.709679636963134e+00 9.236370023235317e+03 + 150800 9.555380627667490e-01 -5.984971494940432e+00 -5.980547607617535e+00 3.772756442785968e+00 4.798159088388392e+00 9.157430516894054e+03 + 150820 9.880269080683777e-01 -6.037741707127041e+00 -5.985799948641088e+00 3.447923292194662e+00 4.746180907382150e+00 9.173472128589383e+03 + 150840 9.148411601213425e-01 -5.929302776842778e+00 -6.016592279999100e+00 4.025868009781565e+00 4.524638174651007e+00 9.268053518418810e+03 + 150860 9.321045864257766e-01 -5.952194765918282e+00 -6.011620012060129e+00 3.939221379425699e+00 4.597992420052098e+00 9.252745622296132e+03 + 150880 9.728569281342325e-01 -6.006241222399943e+00 -5.986137395386181e+00 3.704225050593066e+00 4.819664336363266e+00 9.174531479800720e+03 + 150900 9.893637918491844e-01 -6.019609921429345e+00 -5.955452140312008e+00 3.590855052966243e+00 4.959258960526535e+00 9.080794259479362e+03 + 150920 1.008402946986077e+00 -6.030958457477076e+00 -5.995343764100028e+00 3.546702795087030e+00 4.751207875814027e+00 9.202760372928915e+03 + 150940 1.022731407626673e+00 -6.032584004146097e+00 -5.978275517940849e+00 3.506725739959434e+00 4.818573471961047e+00 9.150501377640547e+03 + 150960 1.021737826429853e+00 -6.009138179770336e+00 -5.998419615855447e+00 3.650294408842746e+00 4.711842061534446e+00 9.212190929214590e+03 + 150980 9.855800317423309e-01 -5.928319463220397e+00 -6.039809292605836e+00 4.103228238858790e+00 4.463036385532257e+00 9.339661018993216e+03 + 151000 1.050683322057888e+00 -5.995094499545748e+00 -6.017637894544511e+00 3.718395229882715e+00 4.588947567220716e+00 9.271282799102430e+03 + 151020 1.039756909373752e+00 -5.950449733795551e+00 -6.041610032516839e+00 3.953006807920958e+00 4.429550265652687e+00 9.345226937602096e+03 + 151040 1.004350151788975e+00 -5.870714517990969e+00 -6.071100218273487e+00 4.374976780474732e+00 4.224331079865612e+00 9.436603161260675e+03 + 151060 1.035419117880078e+00 -5.895318297519967e+00 -6.031860348723509e+00 4.238822721477089e+00 4.454777133652220e+00 9.315085216248077e+03 + 151080 1.013239379056700e+00 -5.845526081629730e+00 -6.020885361710429e+00 4.562613153395092e+00 4.555673030410825e+00 9.281248897543073e+03 + 151100 1.089987410997262e+00 -5.945447472461987e+00 -6.040801766408169e+00 3.921136500382726e+00 4.373597388514450e+00 9.342736046459726e+03 + 151120 1.046933333672284e+00 -5.876016179774455e+00 -6.016227262640525e+00 4.413409645981955e+00 4.608295910570028e+00 9.266894558813861e+03 + 151140 9.997341997972827e-01 -5.809299877916972e+00 -6.037906275497038e+00 4.728736593388832e+00 4.416043281758401e+00 9.333752132077156e+03 + 151160 1.054316638405036e+00 -5.901428653358761e+00 -6.037300865957439e+00 4.232211390203929e+00 4.452012119305372e+00 9.331882616571107e+03 + 151180 1.089892910539441e+00 -5.980809869769407e+00 -6.026353267570629e+00 3.875352355195365e+00 4.613835117202721e+00 9.298120899873840e+03 + 151200 1.111558855991609e+00 -6.061577603584464e+00 -5.979556420188363e+00 3.395930232750122e+00 4.866908560547642e+00 9.154412026811136e+03 + 151220 1.038555593839252e+00 -6.013742703627779e+00 -6.018848756443674e+00 3.651552032497980e+00 4.622232287069993e+00 9.275003443206826e+03 + 151240 9.537137507573855e-01 -5.945284433539432e+00 -6.030055523776670e+00 3.972891672558619e+00 4.486122954132580e+00 9.309532999795378e+03 + 151260 9.608485051562297e-01 -5.993885626088748e+00 -5.943001539665609e+00 3.740501935153751e+00 5.032686233682341e+00 9.042909555079072e+03 + 151280 9.885008514243666e-01 -6.057868271828751e+00 -5.972277873604152e+00 3.395122078017342e+00 4.886595389694306e+00 9.132140561423039e+03 + 151300 1.022368306136238e+00 -6.124591808290953e+00 -5.966443700180272e+00 3.056367475744671e+00 4.964478385856838e+00 9.114332302103292e+03 + 151320 9.277085231573764e-01 -5.995926366840009e+00 -5.955245322107059e+00 3.750064700879829e+00 4.983661555107751e+00 9.080166409642865e+03 + 151340 9.080652603581796e-01 -5.970086408282470e+00 -6.001645538076616e+00 3.856741655205158e+00 4.675524248167622e+00 9.222076994487079e+03 + 151360 9.686739199831036e-01 -6.057474377292611e+00 -5.985852268852433e+00 3.385588171691384e+00 4.796853401840345e+00 9.173653816994352e+03 + 151380 9.498473788330186e-01 -6.023202979297734e+00 -5.941977970994039e+00 3.626665844597869e+00 5.093072411807098e+00 9.039764843709552e+03 + 151400 8.855328462794647e-01 -5.913053894147227e+00 -6.006844887595846e+00 4.121425079999998e+00 4.582862681508700e+00 9.238051998011737e+03 + 151420 1.042985979738206e+00 -6.123439052208607e+00 -5.984627929134223e+00 3.037999781587738e+00 4.835074731232725e+00 9.169953202528999e+03 + 151440 1.029442640730459e+00 -6.079459701929698e+00 -5.998923613769241e+00 3.263824303145713e+00 4.726274984282420e+00 9.213764793352764e+03 + 151460 9.508834342594117e-01 -5.942930283648078e+00 -6.005044776252562e+00 3.924978776569339e+00 4.568307747847728e+00 9.232530797675730e+03 + 151480 9.573613764998928e-01 -5.930364706034017e+00 -5.992060578919617e+00 4.067218508461268e+00 4.712951258946686e+00 9.192688381108583e+03 + 151500 1.050669843975219e+00 -6.043460816906126e+00 -5.989097317499439e+00 3.436287346052890e+00 4.748450972370430e+00 9.183582736164168e+03 + 151520 9.754121981980741e-01 -5.905724162552630e+00 -5.960108389391514e+00 4.235842388922688e+00 4.923559742481914e+00 9.094966612387749e+03 + 151540 1.046768753281480e+00 -5.985679061813991e+00 -5.945752296412028e+00 3.735635685041546e+00 4.964901350626601e+00 9.051269500635104e+03 + 151560 1.039619638059015e+00 -5.952393851155655e+00 -5.967376942602351e+00 3.979164584042289e+00 4.893129354329457e+00 9.117156867652677e+03 + 151580 1.094868753602539e+00 -6.016869995758238e+00 -5.985187022377287e+00 3.576338436330576e+00 4.758266972408279e+00 9.171650158144310e+03 + 151600 9.808656533992882e-01 -5.837423940619686e+00 -6.059900664333373e+00 4.547602721991810e+00 4.270106946266093e+00 9.401837026703997e+03 + 151620 1.005518223028536e+00 -5.869103954008161e+00 -5.983765814729772e+00 4.347297826150006e+00 4.688891678020918e+00 9.167252386327955e+03 + 151640 9.979406654387901e-01 -5.854790864603054e+00 -5.962540505830664e+00 4.517827004764499e+00 4.899111890632467e+00 9.102389696456972e+03 + 151660 1.090934673361515e+00 -5.992366462405522e+00 -6.008079897274205e+00 3.713876612203406e+00 4.623647637541244e+00 9.241834854397872e+03 + 151680 1.127731640294702e+00 -6.056094071076554e+00 -6.013456467352157e+00 3.350252870857004e+00 4.595084589590345e+00 9.258417637162349e+03 + 151700 9.688795251540822e-01 -5.842611912661931e+00 -6.062191743688187e+00 4.526159033567650e+00 4.265297663945856e+00 9.408947638814087e+03 + 151720 1.040962093349269e+00 -5.986177187411456e+00 -6.000021611171896e+00 3.775798356841198e+00 4.696301533191095e+00 9.217116453050055e+03 + 151740 9.985513396979232e-01 -5.978220100310472e+00 -6.019107118908904e+00 3.790253302049563e+00 4.555473714011690e+00 9.275802348232399e+03 + 151760 9.814636402093748e-01 -6.016737616388793e+00 -6.014098625587303e+00 3.618262176150427e+00 4.633415669715092e+00 9.260364008094855e+03 + 151780 9.497965227361332e-01 -6.025017881645683e+00 -6.011111935756190e+00 3.550634300379274e+00 4.630484393614910e+00 9.251201689018544e+03 + 151800 1.017309151803874e+00 -6.160230993182501e+00 -5.989701302592079e+00 2.823899115914128e+00 4.803106988668665e+00 9.185481732898510e+03 + 151820 9.080378795330997e-01 -6.019383029669922e+00 -5.982483163606519e+00 3.606382410596440e+00 4.818267151768318e+00 9.163371781458760e+03 + 151840 9.930165723566796e-01 -6.152805521028907e+00 -5.968809347419153e+00 2.921526963881445e+00 4.978061466064498e+00 9.121554539774961e+03 + 151860 9.287734568370655e-01 -6.056796138967373e+00 -5.976438043134815e+00 3.401485337586604e+00 4.862913959232293e+00 9.144853252147526e+03 + 151880 8.915203591566058e-01 -5.992765054561088e+00 -5.992568796550957e+00 3.697035225486222e+00 4.698162169351218e+00 9.194250967014876e+03 + 151900 9.865639182463944e-01 -6.118455592844485e+00 -5.954648309205840e+00 3.094322897933846e+00 5.034929669682163e+00 9.078350893013456e+03 + 151920 1.001897570064303e+00 -6.121695840513720e+00 -5.976914558390227e+00 3.040967131320513e+00 4.872323658104604e+00 9.146346032762878e+03 + 151940 9.776868465406648e-01 -6.063825616327211e+00 -5.979907732020536e+00 3.404329185811634e+00 4.886198663751187e+00 9.155467200339654e+03 + 151960 9.073038871709135e-01 -5.936366178977369e+00 -5.994652868809597e+00 4.082329953395200e+00 4.747638760542449e+00 9.200629070096418e+03 + 151980 9.593235549090360e-01 -5.985631880952491e+00 -5.978098256306125e+00 3.834230342906069e+00 4.877489581450149e+00 9.149910388174412e+03 + 152000 9.650688264619897e-01 -5.963330700456472e+00 -6.001100713295623e+00 3.812159882421151e+00 4.595278623808152e+00 9.220422354491822e+03 + 152020 1.009724315320795e+00 -6.000263569253713e+00 -6.011478655281321e+00 3.686647499036401e+00 4.622248739536921e+00 9.252322948016867e+03 + 152040 9.934536845042076e-01 -5.949933688814662e+00 -6.042872261414586e+00 3.956901327389128e+00 4.423233661322735e+00 9.349125320160934e+03 + 152060 1.038646279971501e+00 -5.998375483227020e+00 -5.985524209543942e+00 3.793262239484405e+00 4.867056241700816e+00 9.172654466487344e+03 + 152080 1.007490496990422e+00 -5.936832301570265e+00 -5.968376994437580e+00 4.070109301632755e+00 4.888974793663186e+00 9.120228344967505e+03 + 152100 1.011568116049612e+00 -5.930314944141040e+00 -6.008801603758715e+00 4.133566190075120e+00 4.682883644779108e+00 9.244093624613079e+03 + 152120 1.089849109918662e+00 -6.038442299063486e+00 -5.976042066626178e+00 3.547514689886591e+00 4.905826480946375e+00 9.143648413596991e+03 + 152140 1.040920804665440e+00 -5.963328535396206e+00 -6.007955121633658e+00 3.855764435307505e+00 4.599511671190157e+00 9.241453813885266e+03 + 152160 1.047741791748945e+00 -5.975004945024188e+00 -5.978016821206632e+00 3.866764577567192e+00 4.849469918441265e+00 9.149680885955409e+03 + 152180 1.017126808175849e+00 -5.933604854760050e+00 -5.968031940034569e+00 4.073359382756071e+00 4.875673731535552e+00 9.119140063977700e+03 + 152200 1.021413381180211e+00 -5.948419546313046e+00 -5.963405267335819e+00 4.009993215434157e+00 4.923942886288559e+00 9.105003205990231e+03 + 152220 1.037872248559532e+00 -5.983546293985240e+00 -5.995322205007122e+00 3.777482503338159e+00 4.709863399934175e+00 9.202664858758279e+03 + 152240 1.061344235020368e+00 -6.033536530420349e+00 -5.991134365940708e+00 3.497017339121199e+00 4.740497129277045e+00 9.189875020405578e+03 + 152260 9.724242737112576e-01 -5.928111150760007e+00 -6.020780719955232e+00 4.089356035912435e+00 4.557233029023970e+00 9.280965346086998e+03 + 152280 9.734181061354155e-01 -5.966542651882375e+00 -5.993346222180249e+00 3.850110323903590e+00 4.696200075414102e+00 9.196629206981708e+03 + 152300 9.807074969776035e-01 -6.022257177696241e+00 -5.958537805692300e+00 3.555958694945168e+00 4.921845189532741e+00 9.090187518500117e+03 + 152320 9.460268187827032e-01 -6.016364302611555e+00 -5.973304536783368e+00 3.571136876652202e+00 4.818392715514877e+00 9.135253987750337e+03 + 152340 9.957645920621123e-01 -6.130277785117588e+00 -5.977897921213822e+00 3.004723448662648e+00 4.879712207905805e+00 9.149334862484138e+03 + 152360 9.144244795561043e-01 -6.041463363314792e+00 -6.021737881943308e+00 3.417869459376813e+00 4.531136225920255e+00 9.283916961003186e+03 + 152380 9.510485177636557e-01 -6.114906766791842e+00 -6.004633345103129e+00 3.044412846917959e+00 4.677619899011404e+00 9.231302258434202e+03 + 152400 9.317684506012232e-01 -6.096622610461853e+00 -5.988198460511848e+00 3.179959371542298e+00 4.802547619138210e+00 9.180876413758879e+03 + 152420 8.724421049795216e-01 -6.009025872905376e+00 -6.021322321277962e+00 3.618627483867034e+00 4.548019374442407e+00 9.282610690357960e+03 + 152440 9.278044059932564e-01 -6.083522531374467e+00 -6.000600214443496e+00 3.241127958462223e+00 4.717280734466926e+00 9.218911000992346e+03 + 152460 9.739913095595303e-01 -6.139071521827939e+00 -5.978511003789442e+00 2.964543850684228e+00 4.886507191921142e+00 9.151220578373835e+03 + 152480 9.361620388874895e-01 -6.067622955364333e+00 -6.024047368880511e+00 3.319519718284912e+00 4.569737479175231e+00 9.291006311304318e+03 + 152500 9.540451158088731e-01 -6.076768471437614e+00 -5.974522921512234e+00 3.303998949968892e+00 4.891108720088138e+00 9.138992676441019e+03 + 152520 9.185414480152624e-01 -6.004646483188917e+00 -5.928134737535126e+00 3.722372169990082e+00 5.161714453688522e+00 8.997740183010006e+03 + 152540 9.863562788746199e-01 -6.082725699831085e+00 -5.934148425122495e+00 3.273914974415125e+00 5.127068678050805e+00 9.016007954111856e+03 + 152560 1.004814774849207e+00 -6.086531350468787e+00 -6.011405818296346e+00 3.173742848924284e+00 4.605125280296972e+00 9.252097471347273e+03 + 152580 9.724440988292451e-01 -6.018943348303868e+00 -6.009122779820667e+00 3.592253950329463e+00 4.648645174288061e+00 9.245076340146414e+03 + 152600 1.033754263615396e+00 -6.092347320427087e+00 -5.959597241149662e+00 3.236919587692019e+00 4.999191085911371e+00 9.093435170841292e+03 + 152620 9.832708279676347e-01 -6.001726916928268e+00 -5.978932706055276e+00 3.662625009478275e+00 4.793512895703728e+00 9.152486293960792e+03 + 152640 9.716104636217388e-01 -5.969749055036559e+00 -6.019513617082342e+00 3.842058719808273e+00 4.556302903500299e+00 9.277023090367182e+03 + 152660 9.757009670874064e-01 -5.962129251666004e+00 -5.992517099610720e+00 3.950687596414144e+00 4.776195871011311e+00 9.194101945122809e+03 + 152680 1.004161888860337e+00 -5.991635062758340e+00 -6.054511815855344e+00 3.717348725455260e+00 4.356300679026173e+00 9.385120210703290e+03 + 152700 9.849092733880136e-01 -5.953640991704454e+00 -6.006415400989546e+00 3.933780779134803e+00 4.630741954206361e+00 9.236747968713547e+03 + 152720 1.026322183232623e+00 -6.007382823888434e+00 -5.985048788064599e+00 3.696211335283707e+00 4.824456825165035e+00 9.171196855116852e+03 + 152740 1.052263435778194e+00 -6.038387555637335e+00 -6.033193424914826e+00 3.490718082539106e+00 4.520543584936887e+00 9.319197854678241e+03 + 152760 9.561111621181165e-01 -5.891348247350078e+00 -6.023021860351321e+00 4.285514320438153e+00 4.529424058159259e+00 9.287844235709686e+03 + 152780 1.006205264120804e+00 -5.962621026212300e+00 -6.033340631720892e+00 3.889779627724578e+00 4.483696709070665e+00 9.319673505356963e+03 + 152800 1.035678310114099e+00 -6.004849970007421e+00 -6.023470710147678e+00 3.621365234606639e+00 4.514442063171058e+00 9.289249773610716e+03 + 152820 1.002909960394694e+00 -5.958295830262862e+00 -5.996574135811009e+00 3.945221405634840e+00 4.725421451628737e+00 9.206521534613526e+03 + 152840 1.049340940448883e+00 -6.032053488185921e+00 -6.013369327541003e+00 3.499621224820776e+00 4.606908566608410e+00 9.258149517155152e+03 + 152860 9.552944572485400e-01 -5.901413573379068e+00 -6.033433121129609e+00 4.235641316391090e+00 4.477564643248500e+00 9.319962416598990e+03 + 152880 1.001238933322254e+00 -5.983068787004171e+00 -6.018187951148816e+00 3.804326385125058e+00 4.602666709933416e+00 9.272958364873710e+03 + 152900 1.045583396787685e+00 -6.071694065072273e+00 -6.017245159213985e+00 3.320603455657172e+00 4.633257499036409e+00 9.270084911892520e+03 + 152920 9.760510207340989e-01 -6.003371857535328e+00 -6.032117048297929e+00 3.645590097358416e+00 4.480530763695667e+00 9.315895805861030e+03 + 152940 9.613747960673488e-01 -6.023372271324771e+00 -6.023539436153528e+00 3.545728457187481e+00 4.544768570872083e+00 9.289441006479201e+03 + 152960 9.626213296228121e-01 -6.066835953596167e+00 -5.976457042763319e+00 3.381964561721490e+00 4.900934253814952e+00 9.144934496002877e+03 + 152980 9.462104689922540e-01 -6.078670493013249e+00 -5.992996153318811e+00 3.269370609250515e+00 4.761325925837198e+00 9.195588810865202e+03 + 153000 8.788373256814356e-01 -6.003928805939038e+00 -6.026385224462270e+00 3.670973573715602e+00 4.542025343435670e+00 9.298241825249623e+03 + 153020 9.969368942648322e-01 -6.195097486899137e+00 -5.964046704298610e+00 2.684114957557548e+00 5.010844306242821e+00 9.107040314229964e+03 + 153040 9.392618986218996e-01 -6.118829865922464e+00 -6.017933183328455e+00 3.013374984096410e+00 4.592739349262380e+00 9.272210405991475e+03 + 153060 9.363078166696888e-01 -6.116291488023835e+00 -6.024341624858243e+00 2.983314381357895e+00 4.511304724850061e+00 9.291958710900117e+03 + 153080 9.667008446549012e-01 -6.156012141110791e+00 -5.954260735141370e+00 2.849142343835590e+00 5.007630137841177e+00 9.077190872755367e+03 + 153100 8.735992339277909e-01 -6.003954867271736e+00 -6.024908054785431e+00 3.669088021983172e+00 4.548771576784240e+00 9.293644363126283e+03 + 153120 9.039768161870817e-01 -6.024754910643693e+00 -5.994577505375348e+00 3.575777958844550e+00 4.749061289833756e+00 9.200402349783340e+03 + 153140 9.547856047857561e-01 -6.067868999869823e+00 -6.043347971778338e+00 3.285486207986787e+00 4.426289745904927e+00 9.350588048143516e+03 + 153160 9.771029646153233e-01 -6.064148449236200e+00 -6.015580131006017e+00 3.357869905991578e+00 4.636756705192246e+00 9.264944697437861e+03 + 153180 9.637103805507405e-01 -6.009981024979293e+00 -6.019870740815078e+00 3.585822138419163e+00 4.529033859661505e+00 9.278148140457253e+03 + 153200 9.447780169096544e-01 -5.951049849357537e+00 -6.019395218710231e+00 3.942259326149399e+00 4.549809638914505e+00 9.276686561150704e+03 + 153220 9.735626733495769e-01 -5.969420498445515e+00 -6.025300587178010e+00 3.892122876535245e+00 4.571250759617479e+00 9.294876883141364e+03 + 153240 9.610265611767959e-01 -5.934415803918671e+00 -6.040945926586103e+00 4.040212877577897e+00 4.428500427738298e+00 9.343156908080618e+03 + 153260 9.481231927026337e-01 -5.904789393837875e+00 -5.999381544992257e+00 4.193810701909038e+00 4.650647931892496e+00 9.215140899030426e+03 + 153280 9.782213688880540e-01 -5.940314088004233e+00 -6.001259531361214e+00 4.039418387068326e+00 4.689460220035664e+00 9.220901398364244e+03 + 153300 1.003123243523314e+00 -5.970006846398224e+00 -5.992294591299472e+00 3.810476608074689e+00 4.682496927834348e+00 9.193389325536124e+03 + 153320 9.904573086532718e-01 -5.944207594545228e+00 -6.002229146828857e+00 3.955461907968220e+00 4.622293175949421e+00 9.223889945072231e+03 + 153340 1.002449493439268e+00 -5.955147782143270e+00 -5.974535999241034e+00 3.957435482893847e+00 4.846105340001587e+00 9.139064671872025e+03 + 153360 1.059985694239380e+00 -6.037180141995123e+00 -6.010640438044944e+00 3.444855186736093e+00 4.597250273823934e+00 9.249747995055330e+03 + 153380 1.022722290656006e+00 -5.983609956418340e+00 -5.980134805934759e+00 3.799816603384638e+00 4.819771455239158e+00 9.156169821518946e+03 + 153400 1.097037367047074e+00 -6.096309468548624e+00 -5.996465429942455e+00 3.222164099945383e+00 4.795484020437044e+00 9.206194016866068e+03 + 153420 1.030770880464101e+00 -6.003380074113911e+00 -5.989654575423401e+00 3.695056555980212e+00 4.773870493475172e+00 9.185325590239227e+03 + 153440 9.908544557560722e-01 -5.952598274952019e+00 -6.028928235556302e+00 3.937371861010150e+00 4.499073415197122e+00 9.306069028368243e+03 + 153460 9.829452643138996e-01 -5.952253397929202e+00 -6.010844794705353e+00 3.957797720682790e+00 4.621356853404786e+00 9.250368403505921e+03 + 153480 1.027339726141806e+00 -6.030433789177856e+00 -6.024391935516743e+00 3.537387005737943e+00 4.572080264433890e+00 9.292084529715423e+03 + 153500 1.023849961036998e+00 -6.044975767954078e+00 -5.990247144830064e+00 3.445910683335350e+00 4.760170906540494e+00 9.187150619517564e+03 + 153520 9.547442190166811e-01 -5.965966181443966e+00 -6.035065954131987e+00 3.828242526057328e+00 4.431460938127449e+00 9.325017367878658e+03 + 153540 1.019553052641491e+00 -6.092683179443765e+00 -5.986958359559166e+00 3.179270945097727e+00 4.786359221738092e+00 9.177067918133298e+03 + 153560 9.661256427502110e-01 -6.048467106918759e+00 -5.982163206343514e+00 3.423966649087431e+00 4.804693906685943e+00 9.162362600295761e+03 + 153580 9.175701559950632e-01 -6.012024366023091e+00 -5.936124898335567e+00 3.652763329656314e+00 5.088589818522743e+00 9.021990595011657e+03 + 153600 9.022807241043519e-01 -6.016378919778482e+00 -5.965886617405851e+00 3.619955482293023e+00 4.909890096175211e+00 9.112631575299682e+03 + 153620 9.573449953944353e-01 -6.121536261596678e+00 -5.978906736587676e+00 3.088905269802506e+00 4.907906074251850e+00 9.152424743540423e+03 + 153640 9.272487411317598e-01 -6.095656336233136e+00 -5.949675136093950e+00 3.147663190549060e+00 4.985909832265980e+00 9.063214169415332e+03 + 153660 8.767374418213179e-01 -6.029544094242864e+00 -6.018545095497592e+00 3.454139121203798e+00 4.517297074088706e+00 9.274063761594572e+03 + 153680 9.666683368634530e-01 -6.164456121813123e+00 -5.955218010683176e+00 2.782526596188335e+00 4.984004209789537e+00 9.080082666283019e+03 + 153700 8.794937894475620e-01 -6.027258036991245e+00 -5.971929843182073e+00 3.590246663221222e+00 4.907949714083814e+00 9.131076505607400e+03 + 153720 9.641473479542558e-01 -6.131525861154378e+00 -5.949849627419757e+00 3.047983097016624e+00 5.091196145427130e+00 9.063735016651513e+03 + 153740 9.473542403892279e-01 -6.068086599518979e+00 -5.952590971779626e+00 3.337317960086676e+00 5.000511727456669e+00 9.072094896664770e+03 + 153760 9.969739157248306e-01 -6.085985269030145e+00 -5.986071301259081e+00 3.204821608077544e+00 4.778543072655536e+00 9.174316988321079e+03 + 153780 9.676419825191406e-01 -5.982243014527521e+00 -6.000636628308075e+00 3.799938448870523e+00 4.694319472140048e+00 9.218997498861174e+03 + 153800 9.941716391912007e-01 -5.973791920685066e+00 -5.986089372779013e+00 3.880624619365888e+00 4.810010746417884e+00 9.174371035872664e+03 + 153820 9.626057239374757e-01 -5.897159334753761e+00 -6.032827387437418e+00 4.246392525307648e+00 4.467365572234788e+00 9.318049720931374e+03 + 153840 1.003440677831400e+00 -5.940320484278769e+00 -5.944564562322978e+00 4.059856484249380e+00 5.035486331350576e+00 9.047629498799410e+03 + 153860 1.044376643708210e+00 -5.989244937005662e+00 -5.970829355362403e+00 3.804426409425975e+00 4.910171529023620e+00 9.127703964085449e+03 + 153880 1.092648252342945e+00 -6.053321206300581e+00 -6.020163700156647e+00 3.453030192198693e+00 4.643425723584648e+00 9.279038146164243e+03 + 153900 9.935389305330289e-01 -5.905550950552178e+00 -6.037455237535251e+00 4.235294584885150e+00 4.477879756905899e+00 9.332399147615497e+03 + 153920 1.054973676932879e+00 -6.000626110001885e+00 -6.048369914216551e+00 3.648781496459367e+00 4.374629184328930e+00 9.366144515964897e+03 + 153940 1.028336474424619e+00 -5.970130267083856e+00 -6.008690719962944e+00 3.895340055551937e+00 4.673919967909415e+00 9.243768101206140e+03 + 153960 1.043782559703057e+00 -6.006934579772891e+00 -5.990275543346154e+00 3.711313767348333e+00 4.806972532488210e+00 9.187187738415490e+03 + 153980 1.032681045868201e+00 -6.005836048067446e+00 -5.978672109091969e+00 3.649075586495680e+00 4.805055127698843e+00 9.151680134737024e+03 + 154000 1.006080890299680e+00 -5.982756562088112e+00 -6.009717087762290e+00 3.798318232553808e+00 4.643506722004813e+00 9.246902604799121e+03 + 154020 9.938012898309097e-01 -5.984191769701455e+00 -6.030521179340216e+00 3.751615145645855e+00 4.485584506047119e+00 9.310983881207705e+03 + 154040 1.029228187109917e+00 -6.057995793930031e+00 -5.977659898696462e+00 3.418668609902217e+00 4.879969752272980e+00 9.148584361984618e+03 + 154060 9.448789164223784e-01 -5.953630557006893e+00 -6.010437846705200e+00 3.996607726730534e+00 4.670411478383182e+00 9.249109060347453e+03 + 154080 1.009757339626900e+00 -6.068588255829212e+00 -5.980761570543135e+00 3.376924354305031e+00 4.881238772353312e+00 9.158100821936592e+03 + 154100 9.392274216121579e-01 -5.981859031018712e+00 -6.030878378208710e+00 3.811658282361489e+00 4.530181605077063e+00 9.312090458607387e+03 + 154120 1.013398561154043e+00 -6.108927377502023e+00 -5.981959008347394e+00 3.139203651328573e+00 4.868275675306080e+00 9.161776405733168e+03 + 154140 9.847284461100466e-01 -6.082163747212057e+00 -6.002491596351607e+00 3.232770344824009e+00 4.690260164290210e+00 9.224723281347957e+03 + 154160 8.891249252763935e-01 -5.954036926601228e+00 -5.999353912640581e+00 3.973152165212837e+00 4.712935018593948e+00 9.215051434976633e+03 + 154180 1.010695062991616e+00 -6.144228698042324e+00 -5.986388248200079e+00 2.893246582419514e+00 4.799590871144355e+00 9.175297550585898e+03 + 154200 8.976551954383657e-01 -5.982154802278624e+00 -6.034669217880718e+00 3.777458515093786e+00 4.475912614127008e+00 9.323771414901508e+03 + 154220 9.267975141770829e-01 -6.025942909113143e+00 -6.025102861691266e+00 3.522290435190690e+00 4.527114117484023e+00 9.294273133982944e+03 + 154240 9.747091464879393e-01 -6.090851176663282e+00 -6.017697597758962e+00 3.223524536828151e+00 4.643583707376502e+00 9.271463412809058e+03 + 154260 8.991316002943195e-01 -5.966303028795561e+00 -5.997456858739715e+00 3.904234604861705e+00 4.725344492282767e+00 9.209245800359011e+03 + 154280 9.517127353987361e-01 -6.019742815986369e+00 -5.990321042541113e+00 3.580771024045219e+00 4.749715400172608e+00 9.187364369645513e+03 + 154300 1.022103448853994e+00 -6.082870360477687e+00 -6.003676220204540e+00 3.265347900906856e+00 4.720092909608873e+00 9.228369775409104e+03 + 154320 1.009698595177319e+00 -6.015308589739647e+00 -6.065904331185815e+00 3.580529316953831e+00 4.290000739904252e+00 9.420493181511301e+03 + 154340 9.520899029581139e-01 -5.885820376740973e+00 -6.031291122647040e+00 4.297842788383287e+00 4.462527253865482e+00 9.313362351734597e+03 + 154360 1.039817945788410e+00 -5.979074963860912e+00 -5.965693378358049e+00 3.873264613599658e+00 4.950103748350764e+00 9.112019940709477e+03 + 154380 1.042665236396224e+00 -5.952602664287590e+00 -6.035252045076518e+00 3.901890441206923e+00 4.427304906766555e+00 9.325587652223721e+03 + 154400 1.056671231701882e+00 -5.953477353435457e+00 -6.031531570526425e+00 3.932524534342086e+00 4.484325140954686e+00 9.314086686568638e+03 + 154420 1.041206936490361e+00 -5.919790783163110e+00 -6.036283992811867e+00 4.122831491696986e+00 4.453909454627898e+00 9.328766334648357e+03 + 154440 1.077353464080280e+00 -5.971906687747246e+00 -6.020854921047511e+00 3.799361646520855e+00 4.518293316196107e+00 9.281176911086073e+03 + 154460 1.050662359765104e+00 -5.938111412813444e+00 -5.997530544599448e+00 3.992707872859653e+00 4.651514023063493e+00 9.209470160265948e+03 + 154480 1.044188756724534e+00 -5.939293008700773e+00 -5.995886893698918e+00 3.996457685880661e+00 4.671486840345914e+00 9.204413585341727e+03 + 154500 1.056411966800912e+00 -5.971606862999575e+00 -5.988314213086397e+00 3.881084573767780e+00 4.785148384115178e+00 9.181176802076287e+03 + 154520 1.006109171421546e+00 -5.914268114855199e+00 -6.038180177857820e+00 4.117815343033474e+00 4.406293101942648e+00 9.334595006468091e+03 + 154540 1.052493294595480e+00 -6.005321365856107e+00 -6.001714903300647e+00 3.713800387418453e+00 4.734509253510177e+00 9.222313349846541e+03 + 154560 1.017567024626996e+00 -5.980702188931515e+00 -6.021083183032514e+00 3.782711302634873e+00 4.550837385568290e+00 9.281897505798352e+03 + 154580 1.029368401639717e+00 -6.029537199522997e+00 -6.002248626779322e+00 3.514687021347194e+00 4.671382228934362e+00 9.223962022826190e+03 + 154600 1.016554670475315e+00 -6.041754999992593e+00 -5.973443823636511e+00 3.477049771702257e+00 4.869303117459255e+00 9.135707477755164e+03 + 154620 1.002347071816549e+00 -6.046517669782873e+00 -5.961707286988086e+00 3.441065667171873e+00 4.928060009543863e+00 9.099875812788687e+03 + 154640 9.526002382775833e-01 -5.993792867952488e+00 -6.037056613503819e+00 3.745990949928134e+00 4.497563827929403e+00 9.331169596918073e+03 + 154660 1.006998132780232e+00 -6.091282498006998e+00 -5.987972692843293e+00 3.198479097300505e+00 4.791699985691179e+00 9.180191744120095e+03 + 154680 9.855735511252161e-01 -6.071082940301535e+00 -6.024602928029518e+00 3.280315971981467e+00 4.547211395206045e+00 9.292754343494769e+03 + 154700 9.987860882714890e-01 -6.097433771488230e+00 -6.001418740183117e+00 3.187286408718414e+00 4.738619576750452e+00 9.221422727191490e+03 + 154720 9.885942687883705e-01 -6.086037059760309e+00 -6.005148637832950e+00 3.262154145199430e+00 4.726627981349163e+00 9.232872842498065e+03 + 154740 1.000484362593262e+00 -6.102551110553986e+00 -5.969756779877024e+00 3.132820338525222e+00 4.895345935128592e+00 9.124454428296962e+03 + 154760 9.623357330313957e-01 -6.041942160877678e+00 -5.998271164052441e+00 3.477105226686450e+00 4.727870848521878e+00 9.211747087016871e+03 + 154780 9.120489470733505e-01 -5.961673508596509e+00 -6.027722346101544e+00 3.880697314254594e+00 4.501434668276116e+00 9.302337071551781e+03 + 154800 9.446420730459519e-01 -6.001939354056098e+00 -5.985688169431195e+00 3.730754405218601e+00 4.824071222197489e+00 9.173143066909055e+03 + 154820 9.364642473442250e-01 -5.978841645601251e+00 -5.978854311216190e+00 3.787346787231974e+00 4.787274059310996e+00 9.152254800597519e+03 + 154840 9.903654985101851e-01 -6.045655042458341e+00 -5.993477139563081e+00 3.422808995321298e+00 4.722422588250257e+00 9.197051251903724e+03 + 154860 9.836687708530971e-01 -6.022210411091764e+00 -6.043196821196949e+00 3.596496089502685e+00 4.475988875042244e+00 9.350140963723992e+03 + 154880 9.337780692557968e-01 -5.938960945611880e+00 -6.062915981825025e+00 3.959821812262275e+00 4.248052812346536e+00 9.411213393050923e+03 + 154900 1.039395085132604e+00 -6.087293198703271e+00 -5.987438224943905e+00 3.275703609341793e+00 4.849086321175315e+00 9.178534791128577e+03 + 154920 9.883209247688736e-01 -6.002477573116246e+00 -6.015988151753326e+00 3.694977102334287e+00 4.617397269044886e+00 9.266177920584181e+03 + 154940 9.686264342623134e-01 -5.963883416001982e+00 -6.008055264186673e+00 3.836715109180907e+00 4.583073521332997e+00 9.241812636574761e+03 + 154960 1.043631862460856e+00 -6.063973094014504e+00 -5.986436178312775e+00 3.369834934786154e+00 4.815063903544408e+00 9.175480488115734e+03 + 154980 9.650582382571515e-01 -5.936681899378245e+00 -6.034724945559202e+00 4.037046001893794e+00 4.474067658610376e+00 9.323953457007387e+03 + 155000 1.035056902793770e+00 -6.033265329854432e+00 -5.966780518779539e+00 3.537344406204184e+00 4.919110479887483e+00 9.115359997335991e+03 + 155020 1.010303888629375e+00 -5.989269439649504e+00 -6.006877358014536e+00 3.743124013928789e+00 4.642016621860209e+00 9.238151058921952e+03 + 155040 9.914973223094834e-01 -5.952485873759290e+00 -6.033725944173218e+00 3.900639786064115e+00 4.434146729887075e+00 9.320854594971821e+03 + 155060 1.057460335104942e+00 -6.042651673292700e+00 -5.993463286420224e+00 3.484674397250779e+00 4.767121726550806e+00 9.197003528155330e+03 + 155080 9.722620562372843e-01 -5.908752667586335e+00 -5.990254974933360e+00 4.226402970241930e+00 4.758404109014014e+00 9.187158956624247e+03 + 155100 1.041578493503403e+00 -6.002341114401576e+00 -6.009647876754705e+00 3.714135324297154e+00 4.672178764147660e+00 9.246681870184239e+03 + 155120 1.041435836887612e+00 -5.990281481912597e+00 -6.024638969735434e+00 3.765918469679080e+00 4.568632457796296e+00 9.292837383047796e+03 + 155140 1.061291202962360e+00 -6.008097191518011e+00 -6.024181590967688e+00 3.679163574624073e+00 4.586804463931262e+00 9.291426788958108e+03 + 155160 1.047448198177473e+00 -5.976095052715634e+00 -6.035215607405886e+00 3.819167572829837e+00 4.479688198922140e+00 9.325473718520625e+03 + 155180 1.088754246874466e+00 -6.028814091855928e+00 -5.971248585753687e+00 3.566744401615643e+00 4.897294445887988e+00 9.129009412207473e+03 + 155200 1.016608044376245e+00 -5.913871592854204e+00 -6.039546291258212e+00 4.124355575520633e+00 4.402712009188101e+00 9.338849999580167e+03 + 155220 1.011504184395611e+00 -5.903366027331806e+00 -6.047389268381857e+00 4.231320649803256e+00 4.404316912169343e+00 9.363070355941267e+03 + 155240 1.071295279424158e+00 -5.994786209954467e+00 -6.046987099676588e+00 3.690052896497691e+00 4.390307309651690e+00 9.361871414390405e+03 + 155260 1.053722524360117e+00 -5.980221197072319e+00 -6.021875025487752e+00 3.801849016046261e+00 4.562666287375727e+00 9.284310905088021e+03 + 155280 1.090790198209860e+00 -6.053838519153247e+00 -5.951289482473940e+00 3.459922729628629e+00 5.048775167653350e+00 9.068101084046541e+03 + 155300 1.011207572895067e+00 -5.956988867562002e+00 -5.985985380735051e+00 3.961867090381518e+00 4.795364624545959e+00 9.174064775328492e+03 + 155320 1.006504407648036e+00 -5.974424589579948e+00 -6.042376941808323e+00 3.797678113692786e+00 4.407485191604939e+00 9.347612098864491e+03 + 155340 1.038854880366614e+00 -6.051189301147229e+00 -6.005123966939442e+00 3.396812090312909e+00 4.661326367921458e+00 9.232811217379762e+03 + 155360 1.022489040317271e+00 -6.058836749789315e+00 -5.969386158484447e+00 3.475717352507204e+00 4.989356490214021e+00 9.123301553288591e+03 + 155380 1.014544281163765e+00 -6.075096379394166e+00 -5.995218061641643e+00 3.296395204902759e+00 4.755068866567466e+00 9.202378480461513e+03 + 155400 9.559461935484818e-01 -6.013778226130894e+00 -5.982696124984864e+00 3.584693535240283e+00 4.763171769960392e+00 9.164016333722568e+03 + 155420 9.742975685088897e-01 -6.059866047811530e+00 -5.949499880338741e+00 3.403033160974968e+00 5.036772773712944e+00 9.062665376014393e+03 + 155440 9.883034321457554e-01 -6.094304241457007e+00 -5.968940994276501e+00 3.201747554784375e+00 4.921602719994638e+00 9.121945987859974e+03 + 155460 9.863232496103932e-01 -6.099621375215275e+00 -5.972986819736896e+00 3.168361648924166e+00 4.895516863115143e+00 9.134319448441529e+03 + 155480 9.077974402566161e-01 -5.985752506666948e+00 -6.031573625243134e+00 3.816336240832210e+00 4.553224287172574e+00 9.314220576921434e+03 + 155500 9.885345826337424e-01 -6.104095591786633e+00 -5.975247824185892e+00 3.110402238683869e+00 4.850266059374921e+00 9.141233940022905e+03 + 155520 1.015824948648091e+00 -6.138532878060566e+00 -5.952567812812851e+00 2.950721416822712e+00 5.018561599475936e+00 9.072009584539368e+03 + 155540 9.812670754642160e-01 -6.072861301059818e+00 -6.003457304417253e+00 3.320607243375947e+00 4.719135732331329e+00 9.227688118560482e+03 + 155560 9.546894915921815e-01 -6.013897599782829e+00 -6.028821599306686e+00 3.630530302899227e+00 4.544834388151776e+00 9.305763706607768e+03 + 155580 9.624324658799677e-01 -5.998873025801113e+00 -6.023930486324878e+00 3.667067601244392e+00 4.523183785287447e+00 9.290656488576948e+03 + 155600 1.033203170669302e+00 -6.068753016955212e+00 -5.998868482269229e+00 3.295825791295843e+00 4.697113604059545e+00 9.213593200067369e+03 + 155620 1.106133514291326e+00 -6.133681148039849e+00 -5.981476204342202e+00 2.995949345124469e+00 4.869933685475274e+00 9.160273873662969e+03 + 155640 1.024351242360092e+00 -5.969707618402991e+00 -6.003469187820439e+00 3.863905056946735e+00 4.670040900765763e+00 9.227702651371414e+03 + 155660 9.601339179608509e-01 -5.837627598919338e+00 -6.065888349858691e+00 4.531111896348618e+00 4.220403341217808e+00 9.420342824656331e+03 + 155680 1.015983081776965e+00 -5.891613233582048e+00 -6.006185725404034e+00 4.229429852934018e+00 4.571536874856371e+00 9.236040997258324e+03 + 155700 1.093403137191323e+00 -5.984000314471436e+00 -5.993919306734241e+00 3.837977404279981e+00 4.781021015747863e+00 9.198376782757394e+03 + 155720 9.964840804970309e-01 -5.830294643931099e+00 -5.988778879480504e+00 4.599105167342852e+00 4.689064161461975e+00 9.182612104095408e+03 + 155740 1.132352218787188e+00 -6.028278700333013e+00 -5.994184507249237e+00 3.557687517078174e+00 4.753461649824546e+00 9.199177121952112e+03 + 155760 1.052859249978167e+00 -5.915467756682727e+00 -6.058292093411502e+00 4.163582927811536e+00 4.343463484320232e+00 9.396857416898505e+03 + 155780 1.098535808826655e+00 -5.997014267934558e+00 -6.009639015376395e+00 3.703876900104375e+00 4.631383646619994e+00 9.246661503300144e+03 + 155800 1.007069154100690e+00 -5.877486615868667e+00 -5.981380048376424e+00 4.398729458987925e+00 4.802157292071667e+00 9.159947486844745e+03 + 155820 1.023878129901651e+00 -5.915327796069828e+00 -6.006949935625534e+00 4.174690608207760e+00 4.648582104398625e+00 9.238348513479963e+03 + 155840 1.059814095847255e+00 -5.980261146204718e+00 -6.051766594778003e+00 3.774650120958275e+00 4.364054769818067e+00 9.376625730390850e+03 + 155860 1.139290421738917e+00 -6.115998943307925e+00 -5.975275989028055e+00 3.056520302391248e+00 4.864573282673060e+00 9.141341782463545e+03 + 155880 9.981908238546902e-01 -5.926913117107254e+00 -5.994911366547557e+00 4.165780225675929e+00 4.775323754694614e+00 9.201437247012262e+03 + 155900 1.002792510749386e+00 -5.953124735761390e+00 -6.042992285277506e+00 3.926649903096367e+00 4.410616526816483e+00 9.349523469527163e+03 + 155920 9.945031672500202e-01 -5.959463760407226e+00 -6.037594810679018e+00 3.944078838937155e+00 4.495438257535570e+00 9.332804785542416e+03 + 155940 9.850905384689252e-01 -5.962716826341114e+00 -6.024792714950874e+00 3.891147331570772e+00 4.534697972960814e+00 9.293316680392380e+03 + 155960 1.011653132141998e+00 -6.018644201957330e+00 -6.014584062783694e+00 3.571068042134197e+00 4.594381989573719e+00 9.261883706508699e+03 + 155980 9.371380778417941e-01 -5.922981565632353e+00 -5.996843727456358e+00 4.135278859213571e+00 4.711150895887531e+00 9.207359068338445e+03 + 156000 9.851230987112951e-01 -6.004878197790578e+00 -5.962133440557000e+00 3.652274632626282e+00 4.897721643391293e+00 9.101169737538214e+03 + 156020 9.990774585533788e-01 -6.032995610621001e+00 -6.012875936001409e+00 3.510112531514966e+00 4.625642816690249e+00 9.256619978974708e+03 + 156040 1.011747495597885e+00 -6.057249728880647e+00 -5.999241132703499e+00 3.367203003745300e+00 4.700297339795726e+00 9.214735036419277e+03 + 156060 1.063585064737059e+00 -6.139408995420933e+00 -5.969327801771431e+00 2.989396851156600e+00 4.966029385071694e+00 9.123138460588090e+03 + 156080 9.641798038935850e-01 -5.995343728123187e+00 -6.023021890624529e+00 3.771814504942692e+00 4.612882212678183e+00 9.287839999837002e+03 + 156100 1.003090409415947e+00 -6.055691296501591e+00 -5.999080117361984e+00 3.417468219278377e+00 4.742538370449654e+00 9.214222853198764e+03 + 156120 9.390381197776414e-01 -5.961113833621155e+00 -6.040690526836850e+00 3.869743148953634e+00 4.412801462055636e+00 9.342394299930696e+03 + 156140 9.109249101219047e-01 -5.917681603447852e+00 -6.038896976955733e+00 4.073734085726843e+00 4.377696653026162e+00 9.336826763981226e+03 + 156160 1.019794619009582e+00 -6.073377437246371e+00 -5.961722555472705e+00 3.349387993824565e+00 4.990527603506070e+00 9.099930599153546e+03 + 156180 1.019154207653741e+00 -6.058072738377920e+00 -6.021262427045079e+00 3.410416214388498e+00 4.621786718438941e+00 9.282441997596097e+03 + 156200 9.609526069457154e-01 -5.952472589226481e+00 -6.025903173115400e+00 3.932921154646199e+00 4.511271378609896e+00 9.296741948251791e+03 + 156220 1.001043112834890e+00 -5.982341694331422e+00 -5.988434244038456e+00 3.829648002381205e+00 4.794663639144392e+00 9.181553288765843e+03 + 156240 9.952326640482679e-01 -5.929245085809661e+00 -6.048950060377127e+00 4.081486999461239e+00 4.394122511209905e+00 9.367919609744566e+03 + 156260 1.072756704655115e+00 -5.996960179455620e+00 -6.029950125559624e+00 3.690207862303613e+00 4.500774486596763e+00 9.309227207156920e+03 + 156280 1.013614955635552e+00 -5.870773792142417e+00 -6.037293102255300e+00 4.402582445094914e+00 4.446402797646784e+00 9.331883622983794e+03 + 156300 1.055384163672764e+00 -5.904465956091917e+00 -5.995221977014692e+00 4.203043360599409e+00 4.681908244011982e+00 9.202356617316394e+03 + 156320 1.015397216574106e+00 -5.823621163102004e+00 -5.993618855450769e+00 4.624205993379015e+00 4.648052936854535e+00 9.197408735938725e+03 + 156340 1.087146289081227e+00 -5.915924775817325e+00 -5.962802958618751e+00 4.090276423514592e+00 4.821094643493460e+00 9.103186919996086e+03 + 156360 1.038832348907501e+00 -5.836962326337999e+00 -6.014769479880101e+00 4.503902970224948e+00 4.482906779018111e+00 9.262429412176094e+03 + 156380 1.117641657109536e+00 -5.956120259857387e+00 -5.995846331590268e+00 3.941174450640115e+00 4.713061199160181e+00 9.204267095964839e+03 + 156400 1.080602510073727e+00 -5.912883905079114e+00 -6.005055901154387e+00 4.135881484286486e+00 4.606615619251970e+00 9.232550863667015e+03 + 156420 1.015369853445159e+00 -5.837795996599421e+00 -6.018230258854945e+00 4.571552135200927e+00 4.535470679217863e+00 9.273087401370789e+03 + 156440 1.116103947650118e+00 -6.017424889882971e+00 -5.976440752276223e+00 3.682639541668831e+00 4.917976802081576e+00 9.144858400394629e+03 + 156460 1.092769064215351e+00 -6.023542121639212e+00 -5.999008060798825e+00 3.584859023385814e+00 4.725737397364965e+00 9.214003906910191e+03 + 156480 1.037669976125390e+00 -5.984915596349691e+00 -6.013467000131739e+00 3.753439163514512e+00 4.589492584682533e+00 9.258432795034898e+03 + 156500 1.046553427409252e+00 -6.035946978274758e+00 -6.021143740525937e+00 3.502290793866459e+00 4.587293275813829e+00 9.282065351618279e+03 + 156520 1.015782283051081e+00 -6.022934476135940e+00 -6.025768095866501e+00 3.561401748456954e+00 4.545130665462838e+00 9.296287322666318e+03 + 156540 9.432264844886296e-01 -5.939019675339206e+00 -6.031603387012860e+00 4.004180264741649e+00 4.472550265028447e+00 9.314293213354391e+03 + 156560 9.805687936000543e-01 -6.009118622692423e+00 -6.011476841579672e+00 3.663701995120478e+00 4.650160737336702e+00 9.252287208458176e+03 + 156580 9.829337792183133e-01 -6.021831343743437e+00 -5.999291391585315e+00 3.587518559512631e+00 4.716946452850889e+00 9.214860689132303e+03 + 156600 9.913589372530340e-01 -6.038629645227829e+00 -5.971977789750348e+00 3.494821393812114e+00 4.877546662305112e+00 9.131222593573433e+03 + 156620 9.967725493112850e-01 -6.048315203686377e+00 -5.976963443925165e+00 3.436716227430488e+00 4.846429073628507e+00 9.146456864043907e+03 + 156640 1.026767591212955e+00 -6.091996373300296e+00 -5.975948420162380e+00 3.219090266285857e+00 4.885455571566478e+00 9.143343084268938e+03 + 156660 9.291764153782525e-01 -5.944657951602942e+00 -6.009470843749691e+00 4.015882142928965e+00 4.643716486459685e+00 9.246117237877334e+03 + 156680 1.005280362309762e+00 -6.051563900604213e+00 -5.974686341121933e+00 3.417543912404411e+00 4.858986755715549e+00 9.139484794370057e+03 + 156700 9.992639319888027e-01 -6.034749473561571e+00 -5.972288352867204e+00 3.518288975098570e+00 4.876950395952816e+00 9.132190167618193e+03 + 156720 9.516052486632066e-01 -5.953114996471902e+00 -6.017959103336563e+00 3.971312914206007e+00 4.598968017996016e+00 9.272251518344594e+03 + 156740 9.751507718386345e-01 -5.974512103796578e+00 -6.023987043353328e+00 3.874348379813012e+00 4.590255620656001e+00 9.290822372255067e+03 + 156760 9.646689384553735e-01 -5.944008880182968e+00 -6.041119270709475e+00 3.962089644884244e+00 4.404466754696675e+00 9.343713441704891e+03 + 156780 9.870792174785599e-01 -5.961074132495041e+00 -5.999057298311868e+00 3.903521554840482e+00 4.685416338844347e+00 9.214152307847327e+03 + 156800 1.069617506845110e+00 -6.063495803781873e+00 -5.955635750534007e+00 3.362699799617932e+00 4.982048916656476e+00 9.081371265339438e+03 + 156820 1.014449764805830e+00 -5.957839963746443e+00 -5.998112598996258e+00 3.947334018542061e+00 4.716082314767458e+00 9.211243456001532e+03 + 156840 1.096186385861377e+00 -6.051851488654359e+00 -5.970996054770513e+00 3.441937311837814e+00 4.906221725536811e+00 9.128208772096474e+03 + 156860 9.951249893995683e-01 -5.873342655746431e+00 -6.010071723735328e+00 4.353436779631140e+00 4.568317312484000e+00 9.247935734267356e+03 + 156880 1.048712750449049e+00 -5.920499500150036e+00 -5.952384535590358e+00 4.137844818474079e+00 4.954756010782457e+00 9.071406467579274e+03 + 156900 1.056515038695708e+00 -5.895690937675800e+00 -5.982991389947125e+00 4.284984816990825e+00 4.783692110347554e+00 9.164867015284124e+03 + 156920 1.105078396103916e+00 -5.931851520081457e+00 -6.030796998413899e+00 4.034788088542762e+00 4.466627840194596e+00 9.311795850556864e+03 + 156940 1.099777838596810e+00 -5.895211644363241e+00 -6.056351713464003e+00 4.182153284508842e+00 4.256862071387165e+00 9.390838665671847e+03 + 156960 1.071742439975349e+00 -5.836578673374818e+00 -6.051888869362928e+00 4.544513562631026e+00 4.308169098122154e+00 9.376986452750667e+03 + 156980 1.054475492560718e+00 -5.805955899100940e+00 -6.020717472631752e+00 4.737430004809797e+00 4.504235815349783e+00 9.280706229068415e+03 + 157000 1.142860433472879e+00 -5.941816423490788e+00 -6.019534558078012e+00 4.032950823108855e+00 4.586681267466561e+00 9.277066605409145e+03 + 157020 1.062622493338061e+00 -5.843525353233388e+00 -6.064790475018648e+00 4.498348373514592e+00 4.227809803556694e+00 9.416989485221964e+03 + 157040 1.091539414494438e+00 -5.931480737932060e+00 -6.005510042661849e+00 4.023203317868013e+00 4.598115594111680e+00 9.233967471476586e+03 + 157060 1.032116976829460e+00 -5.906596294733038e+00 -6.012549521037408e+00 4.163786529025667e+00 4.555386707377198e+00 9.255568719159790e+03 + 157080 1.007582193526400e+00 -5.933097264583997e+00 -5.995729330970470e+00 4.039702297778644e+00 4.680059280306573e+00 9.203955471330619e+03 + 157100 9.896826739414173e-01 -5.955258450748525e+00 -6.030704566855634e+00 3.905376156660423e+00 4.472152882724675e+00 9.311559972260700e+03 + 157120 1.042940571472123e+00 -6.065074415784890e+00 -5.983400746921841e+00 3.339358764897483e+00 4.808341610468521e+00 9.166164208962065e+03 + 157140 9.589700562608268e-01 -5.959330021442903e+00 -6.042723456121260e+00 3.912986425373518e+00 4.434128418358083e+00 9.348678495264727e+03 + 157160 9.629021088978623e-01 -5.979889871749885e+00 -6.011243202394236e+00 3.785441285732074e+00 4.605405609259972e+00 9.251609294110604e+03 + 157180 1.005790794598529e+00 -6.054794439742697e+00 -5.997737756898220e+00 3.385317515781769e+00 4.712945818167891e+00 9.210113343501733e+03 + 157200 9.902741142434432e-01 -6.040599465257844e+00 -6.026831781891191e+00 3.403359778422529e+00 4.482415946855964e+00 9.299609918739154e+03 + 157220 9.800126280290037e-01 -6.031103688883891e+00 -6.003087114168600e+00 3.543813984901270e+00 4.704689492467397e+00 9.226510883837142e+03 + 157240 9.670576831069158e-01 -6.013250071269490e+00 -6.022343809787680e+00 3.637639795407150e+00 4.585422141584218e+00 9.285761266061034e+03 + 157260 9.967855240684532e-01 -6.058884703230060e+00 -5.957752991741849e+00 3.413495841172593e+00 4.994209778619673e+00 9.087824545238231e+03 + 157280 9.454745252467858e-01 -5.982260287942500e+00 -5.981484619526378e+00 3.798255854708663e+00 4.802709862788335e+00 9.160293606043782e+03 + 157300 9.623262530696711e-01 -6.000526819987513e+00 -6.013050354267374e+00 3.713587493944276e+00 4.641675422098647e+00 9.257150123927047e+03 + 157320 1.003892435471925e+00 -6.052968344125878e+00 -5.982609639753900e+00 3.420042741725688e+00 4.824053310203900e+00 9.163737228298145e+03 + 157340 9.770093710873025e-01 -6.000808518935791e+00 -5.975172066354933e+00 3.737081720305492e+00 4.884290198252994e+00 9.140971816895339e+03 + 157360 1.002396486050873e+00 -6.020820637139413e+00 -6.004899937567920e+00 3.570229333651800e+00 4.661648454311607e+00 9.232116354268739e+03 + 157380 1.014581446087795e+00 -6.018282131158774e+00 -6.005542311517429e+00 3.620896720460178e+00 4.694050736321502e+00 9.234075132789141e+03 + 157400 1.015772543770686e+00 -5.999227493910452e+00 -5.998751406932449e+00 3.672347133385771e+00 4.675080898487686e+00 9.213197655499147e+03 + 157420 9.641884629082225e-01 -5.901067266356829e+00 -5.959531839648802e+00 4.236735552452531e+00 4.901022925246545e+00 9.093201611283204e+03 + 157440 1.043660013327860e+00 -5.992911390122451e+00 -5.951062171620124e+00 3.737972606031273e+00 4.978277294817271e+00 9.067395098640267e+03 + 157460 1.080946425449140e+00 -6.019129689234010e+00 -6.003343981889150e+00 3.586051732349769e+00 4.676695706754275e+00 9.227313490413826e+03 + 157480 1.059580570669120e+00 -5.962573665041109e+00 -6.009518433795272e+00 3.884656352882016e+00 4.615092226016130e+00 9.246289929634040e+03 + 157500 1.073895919835061e+00 -5.965259108893285e+00 -5.988595082300522e+00 3.841443506353528e+00 4.707444735818962e+00 9.182057263372242e+03 + 157520 1.087095053756703e+00 -5.968328290356059e+00 -5.977469044991816e+00 3.879557852510749e+00 4.827070224865023e+00 9.148005575274461e+03 + 157540 1.046790518674720e+00 -5.899398356682418e+00 -6.023693505008726e+00 4.219877654449749e+00 4.506155678148043e+00 9.289868774807712e+03 + 157560 9.858667654243174e-01 -5.806736446224214e+00 -6.051392685082196e+00 4.673292311813251e+00 4.268438327860115e+00 9.375438258802145e+03 + 157580 1.014169505772033e+00 -5.849674274562933e+00 -6.041268313736410e+00 4.490780234777486e+00 4.390617612761640e+00 9.344155731429628e+03 + 157600 1.073579895392337e+00 -5.948411847254055e+00 -6.031069790684841e+00 3.993135125270185e+00 4.518500422815203e+00 9.312660407838483e+03 + 157620 1.060948921897720e+00 -5.957738740207255e+00 -6.015871045644660e+00 3.894432896759985e+00 4.560628202993212e+00 9.265849596706144e+03 + 157640 1.018651875212477e+00 -5.940475884283983e+00 -6.035871716338974e+00 4.029635524696809e+00 4.481857894579750e+00 9.327499059654652e+03 + 157660 1.023956115205057e+00 -6.009112570955598e+00 -5.990857469993908e+00 3.657233957042197e+00 4.762057571731969e+00 9.189033214915740e+03 + 157680 9.782283330662809e-01 -5.996392640005429e+00 -5.975330285400696e+00 3.771299830009306e+00 4.892243129538520e+00 9.141452511621786e+03 + 157700 9.939484311924264e-01 -6.058966906573394e+00 -5.980862014497862e+00 3.391460253657961e+00 4.839950630648655e+00 9.158395900710702e+03 + 157720 9.756425815958355e-01 -6.058841117112107e+00 -6.009186634022923e+00 3.342149142517113e+00 4.627272868421632e+00 9.245287967890446e+03 + 157740 9.646589861040111e-01 -6.059712509620677e+00 -5.993620358889970e+00 3.436472401788079e+00 4.815983759011072e+00 9.197469804168268e+03 + 157760 9.613737819772491e-01 -6.063125334986598e+00 -5.988268235161698e+00 3.320922153074384e+00 4.750763204367719e+00 9.181082802705461e+03 + 157780 9.625500320501665e-01 -6.066815997706712e+00 -5.990562865126814e+00 3.325962737128431e+00 4.763820024536335e+00 9.188100963701669e+03 + 157800 1.022087329745438e+00 -6.153884731326552e+00 -5.942189012114458e+00 2.857369112609981e+00 5.072958692132499e+00 9.040447524138366e+03 + 157820 9.978150040337113e-01 -6.111529153150520e+00 -5.947888774436050e+00 3.088894297865399e+00 5.028542675710651e+00 9.057773441798623e+03 + 157840 9.407446312539284e-01 -6.015528327942970e+00 -5.952729876741563e+00 3.643472157293244e+00 5.004070582120645e+00 9.072482056962537e+03 + 157860 9.350562956983784e-01 -5.989508458687986e+00 -5.960701331769544e+00 3.821825595734427e+00 4.987240576388604e+00 9.096763013474938e+03 + 157880 9.550630295046345e-01 -5.992371069393723e+00 -5.990153699102807e+00 3.777817724310727e+00 4.790550207658109e+00 9.186828678357941e+03 + 157900 9.755250067435878e-01 -5.991959042102112e+00 -6.013474078158187e+00 3.739912097623486e+00 4.616369431148437e+00 9.258454284395735e+03 + 157920 1.024941017091621e+00 -6.035556728790546e+00 -5.994157061413688e+00 3.521672488838974e+00 4.759395785494716e+00 9.199123681315332e+03 + 157940 9.454635831627758e-01 -5.891170429540308e+00 -6.014663494851695e+00 4.268405609881385e+00 4.559289318373303e+00 9.262089778772828e+03 + 157960 9.957779863941147e-01 -5.941597585078336e+00 -6.024278996086787e+00 4.002900694119536e+00 4.528131237202006e+00 9.291731613424263e+03 + 157980 1.050495329301911e+00 -6.002257385002910e+00 -6.025301513883567e+00 3.666018030769961e+00 4.533695076669806e+00 9.294855478650623e+03 + 158000 9.698185724622979e-01 -5.869176786915680e+00 -6.017472669924018e+00 4.376136550976426e+00 4.524598642028819e+00 9.270737902847235e+03 + 158020 1.032633288821288e+00 -5.950669958080143e+00 -5.994446726052686e+00 3.941764849501035e+00 4.690391873369741e+00 9.200009749124796e+03 + 158040 1.085090562188813e+00 -6.023712472208288e+00 -5.953465824692144e+00 3.575160450331492e+00 4.978527571002761e+00 9.074740954529479e+03 + 158060 1.039398072442566e+00 -5.955771632537167e+00 -5.952403081663143e+00 3.916547869641785e+00 4.935890610041992e+00 9.071470558075376e+03 + 158080 1.020344296430323e+00 -5.929683977951738e+00 -5.973634010680438e+00 4.050953615819965e+00 4.798585726646187e+00 9.136245722753114e+03 + 158100 1.067627277999520e+00 -6.004010661859183e+00 -5.957357615035038e+00 3.652847703928093e+00 4.920736718327997e+00 9.086596888298684e+03 + 158120 1.042881421161178e+00 -5.972462623051247e+00 -6.001229601875482e+00 3.808570653913294e+00 4.643386209828949e+00 9.220821322064876e+03 + 158140 1.072667243458804e+00 -6.027703539520227e+00 -5.974441970125278e+00 3.573126807869461e+00 4.878962981536479e+00 9.138760292479083e+03 + 158160 1.048168839899823e+00 -6.005713444124058e+00 -6.008588401400798e+00 3.678853515766183e+00 4.662345066184936e+00 9.243422356220099e+03 + 158180 1.060366561411537e+00 -6.043937768609987e+00 -6.010964443056160e+00 3.452111023799575e+00 4.641448961735285e+00 9.250749211328673e+03 + 158200 9.776658767950973e-01 -5.946275128586545e+00 -6.016941603289514e+00 3.964826016180015e+00 4.559048182833948e+00 9.269150190978158e+03 + 158220 1.020086316005639e+00 -6.040907800079610e+00 -6.003933599130631e+00 3.451126891732048e+00 4.663438475320190e+00 9.229133284875383e+03 + 158240 1.021325134759740e+00 -6.079672339620037e+00 -5.974486900869338e+00 3.320844984225048e+00 4.924836050925604e+00 9.138900320806220e+03 + 158260 9.161689065857410e-01 -5.968827483032936e+00 -6.012396526623854e+00 3.850452050867154e+00 4.600271860280403e+00 9.255131694898164e+03 + 158280 9.426781278613302e-01 -6.054562862578303e+00 -5.964708033150391e+00 3.428870340549007e+00 4.944830676113991e+00 9.109006829536500e+03 + 158300 9.790282043227638e-01 -6.150694730819888e+00 -5.958508512859213e+00 2.875746586960437e+00 4.979309591211742e+00 9.090125796181685e+03 + 158320 8.980618658862692e-01 -6.065861929724618e+00 -5.994323240427315e+00 3.363357041507202e+00 4.774143266028704e+00 9.199638762810440e+03 + 158340 8.949410516783209e-01 -6.083477048113374e+00 -5.968932891367418e+00 3.227466862076468e+00 4.885197135762718e+00 9.121938773333924e+03 + 158360 8.531442364011002e-01 -6.028693901857788e+00 -5.997213428183141e+00 3.578751132784344e+00 4.759516884211727e+00 9.208498037958292e+03 + 158380 9.241902415858100e-01 -6.130309695472032e+00 -5.961924006310128e+00 3.017155425236606e+00 4.984052110005443e+00 9.100547865954792e+03 + 158400 9.095897398262726e-01 -6.099708613894931e+00 -5.963978659142244e+00 3.205322223059933e+00 4.984704627392478e+00 9.106805862778992e+03 + 158420 9.065996692855635e-01 -6.082180295015280e+00 -6.000835312572480e+00 3.232637406543037e+00 4.699732883824946e+00 9.219622693090068e+03 + 158440 9.294654550530256e-01 -6.099991924158820e+00 -6.002313179401304e+00 3.149974714866301e+00 4.710861183000858e+00 9.224173475072310e+03 + 158460 9.240822581442983e-01 -6.072126577793190e+00 -6.036657482961953e+00 3.291887749826989e+00 4.495556781172642e+00 9.329924481496093e+03 + 158480 9.468913179119914e-01 -6.084488987246747e+00 -5.978316316802198e+00 3.281656096775646e+00 4.891316000635898e+00 9.150620534826561e+03 + 158500 9.839264305867028e-01 -6.114237078041051e+00 -5.972119704242506e+00 3.070480955598124e+00 4.886540908541887e+00 9.131670398010121e+03 + 158520 1.010979775314062e+00 -6.125263916798614e+00 -5.991283179086526e+00 3.044787362668500e+00 4.814125492063464e+00 9.190321363440762e+03 + 158540 9.909010778225573e-01 -6.063811131265357e+00 -6.016122076839816e+00 3.346642761813308e+00 4.620480692182084e+00 9.266600931273646e+03 + 158560 9.571952874803844e-01 -5.985301152924057e+00 -5.979481582211760e+00 3.771525315825901e+00 4.804942191431566e+00 9.154174364629211e+03 + 158580 9.920684074527284e-01 -6.008712052400680e+00 -5.968203758110633e+00 3.632963100724110e+00 4.865567995175843e+00 9.119699281018815e+03 + 158600 9.989102527852459e-01 -5.991708309621817e+00 -5.955680767336299e+00 3.707039443044082e+00 4.913915166091678e+00 9.081494116017602e+03 + 158620 1.005162862822301e+00 -5.973762160664369e+00 -6.014949402934308e+00 3.844388802048698e+00 4.607885283229568e+00 9.262982760303898e+03 + 158640 1.027875873140508e+00 -5.982673711345784e+00 -6.052555561051894e+00 3.771019404431059e+00 4.369747009237286e+00 9.379083534990732e+03 + 158660 1.006954342488638e+00 -5.935395511469149e+00 -6.007357057332980e+00 4.050875722791834e+00 4.637661390428487e+00 9.239647944973871e+03 + 158680 1.031770710038963e+00 -5.957832436595398e+00 -6.021689334912185e+00 3.909770625854558e+00 4.543094433896485e+00 9.283743383240924e+03 + 158700 1.020328030889193e+00 -5.932970435236313e+00 -6.007872490048541e+00 4.041990063276682e+00 4.611890873489346e+00 9.241230613592103e+03 + 158720 1.035463099820945e+00 -5.953096438086517e+00 -5.952570477438250e+00 3.937944883621341e+00 4.940965031055839e+00 9.072020805996906e+03 + 158740 1.100983881691858e+00 -6.048415803114295e+00 -5.959993574025052e+00 3.425164540635564e+00 4.932898663361731e+00 9.094628464352367e+03 + 158760 1.018089901529338e+00 -5.924844136717158e+00 -6.033699119425405e+00 4.073398543418013e+00 4.448336387453126e+00 9.320794991134151e+03 + 158780 1.070094255683429e+00 -6.009791942715301e+00 -6.051597774702209e+00 3.594276678779418e+00 4.354221122079004e+00 9.376117729893031e+03 + 158800 1.005281925885868e+00 -5.929447453481468e+00 -6.012629751863898e+00 4.070988178858575e+00 4.593342549127589e+00 9.255855874346180e+03 + 158820 9.844486790304082e-01 -5.920190225694405e+00 -6.020447967814114e+00 4.108428498242470e+00 4.532733028155648e+00 9.279896487268943e+03 + 158840 9.947874331775804e-01 -5.962872634193308e+00 -5.992007322819468e+00 3.925205044087492e+00 4.757909153417587e+00 9.192510573524043e+03 + 158860 9.536421822604666e-01 -5.935118249111079e+00 -5.991344291944224e+00 4.009110593162378e+00 4.686251954262455e+00 9.190469448891381e+03 + 158880 1.001697364435717e+00 -6.042267105089044e+00 -5.990121739043472e+00 3.484094970948362e+00 4.783521732251350e+00 9.186723689807653e+03 + 158900 9.821260124535123e-01 -6.052076029873674e+00 -5.976294209351318e+00 3.385840081654259e+00 4.820991022292454e+00 9.144418008954171e+03 + 158920 9.800563033996513e-01 -6.083679542532979e+00 -5.931704657018589e+00 3.234123315384951e+00 5.106786626046103e+00 9.008572994314689e+03 + 158940 9.453378554396978e-01 -6.055517786947956e+00 -5.951523075087072e+00 3.367073661486960e+00 4.964227390121801e+00 9.068816259929932e+03 + 158960 9.183194234918602e-01 -6.030274066284863e+00 -5.963388720268366e+00 3.505405111967062e+00 4.889471119267633e+00 9.105006479886822e+03 + 158980 9.126891152927652e-01 -6.025952434668577e+00 -6.015804977111930e+00 3.564433225702099e+00 4.622701497306345e+00 9.265627871321640e+03 + 159000 9.574023039379355e-01 -6.090968685459745e+00 -5.986059658243648e+00 3.186990415435055e+00 4.789394284329378e+00 9.174327513660752e+03 + 159020 9.338634701600146e-01 -6.049487700583299e+00 -6.025074514639975e+00 3.406561045978134e+00 4.546745337593014e+00 9.294200606572480e+03 + 159040 9.497499552541671e-01 -6.062356375862340e+00 -5.967912789255150e+00 3.364845249591674e+00 4.907154938987953e+00 9.118829538016544e+03 + 159060 9.291331683151399e-01 -6.018346994214162e+00 -5.971687335072648e+00 3.672896301806937e+00 4.940823285156423e+00 9.130332301470755e+03 + 159080 9.327323548618007e-01 -6.005346218796013e+00 -6.001468995519174e+00 3.621687516848646e+00 4.643951132902616e+00 9.221579900993625e+03 + 159100 9.658529261993256e-01 -6.036228716760505e+00 -5.981581770198186e+00 3.459461455758329e+00 4.773252679506811e+00 9.160599188258953e+03 + 159120 9.930394104017475e-01 -6.058229466871088e+00 -5.990166246926133e+00 3.338472742601765e+00 4.729302284274946e+00 9.186894165598032e+03 + 159140 9.687481329010974e-01 -6.007264968623776e+00 -5.992069636039571e+00 3.648510832326164e+00 4.735764783494787e+00 9.192726842436599e+03 + 159160 9.393100468971451e-01 -5.951719583285605e+00 -5.990789246063790e+00 3.927488978869504e+00 4.703144929186392e+00 9.188808127944205e+03 + 159180 1.008148806105042e+00 -6.043776954201796e+00 -5.987327606801935e+00 3.486657469521689e+00 4.810798357799967e+00 9.178197147528897e+03 + 159200 1.043895727716148e+00 -6.088607786360543e+00 -6.001600833485251e+00 3.207884693706381e+00 4.707492081398751e+00 9.221976831795466e+03 + 159220 1.027531575574081e+00 -6.058056338133317e+00 -5.995398302403984e+00 3.381509605141324e+00 4.741301742598846e+00 9.202946216369197e+03 + 159240 9.670711286624439e-01 -5.963916353923217e+00 -6.014529141706108e+00 3.893071908086724e+00 4.602445448333771e+00 9.261708371145958e+03 + 159260 1.022381810423875e+00 -6.041431179755431e+00 -5.991409475790287e+00 3.510677774090294e+00 4.797910139091821e+00 9.190683546397486e+03 + 159280 9.538689555042004e-01 -5.935029051290416e+00 -6.000224938954323e+00 4.061118798841687e+00 4.686753922844527e+00 9.217727800950513e+03 + 159300 1.063401750480270e+00 -6.091578373326209e+00 -5.990921590545755e+00 3.247495820929431e+00 4.825482644241597e+00 9.189202276873406e+03 + 159320 1.051631545493499e+00 -6.068501240727747e+00 -5.962053964874337e+00 3.440409464319489e+00 5.051646194932469e+00 9.100918783270406e+03 + 159340 1.000910531331261e+00 -5.988587805239485e+00 -5.980584139514930e+00 3.772755206433410e+00 4.818713493587076e+00 9.157510804807414e+03 + 159360 9.276062800403968e-01 -5.873564395741175e+00 -5.980142675667549e+00 4.370427949176535e+00 4.758438972903780e+00 9.156168686584733e+03 + 159380 1.062201382367013e+00 -6.064281415510985e+00 -5.997127493649803e+00 3.384681756099790e+00 4.770289967462524e+00 9.208250764233722e+03 + 159400 1.038971017768886e+00 -6.022563540251824e+00 -6.016250514167800e+00 3.568286733837204e+00 4.604537106549294e+00 9.266996222634793e+03 + 159420 9.745996276905634e-01 -5.920809750920212e+00 -5.992494666315149e+00 4.136071602099553e+00 4.724445724697019e+00 9.193997368614011e+03 + 159440 9.613447103771818e-01 -5.893569825920785e+00 -6.014976022176231e+00 4.228930716564085e+00 4.531797550117163e+00 9.263034225329211e+03 + 159460 1.010892513962043e+00 -5.957306837663056e+00 -6.001824092913458e+00 3.959663822128458e+00 4.704038853457664e+00 9.222654003809221e+03 + 159480 1.064000134859606e+00 -6.023128623084922e+00 -6.025400498569198e+00 3.599708031191319e+00 4.586662570589015e+00 9.295193800481640e+03 + 159500 1.023653290739963e+00 -5.952984821435278e+00 -6.026750666996509e+00 3.896827077914089e+00 4.473252177473794e+00 9.299367149065953e+03 + 159520 1.077727945413640e+00 -6.026183895727552e+00 -5.969153564394150e+00 3.639525070552029e+00 4.967002058483674e+00 9.122584894472646e+03 + 159540 1.022149245490557e+00 -5.936596285475908e+00 -5.975825546811525e+00 4.085428225979533e+00 4.860167736681842e+00 9.142971009948527e+03 + 159560 9.548649937218950e-01 -5.832012094490262e+00 -5.969697946339539e+00 4.630876095790996e+00 4.840262627655737e+00 9.124224710860404e+03 + 159580 1.017324377014077e+00 -5.919492096502819e+00 -5.986173380288712e+00 4.112187248420714e+00 4.729292998026802e+00 9.174603009088736e+03 + 159600 9.972050533204111e-01 -5.887084119261441e+00 -6.025905238909279e+00 4.331632249396554e+00 4.534499897879836e+00 9.296701012265892e+03 + 159620 1.056463019567889e+00 -5.976273522614386e+00 -5.989412494728974e+00 3.855194918797115e+00 4.779748907665790e+00 9.184563180244366e+03 + 159640 1.039988914097818e+00 -5.956396710662003e+00 -6.024147688285371e+00 3.869268251296258e+00 4.480231653352977e+00 9.291347759398524e+03 + 159660 9.990985558041287e-01 -5.906098175636922e+00 -6.038094933699151e+00 4.228839982954566e+00 4.470894171728957e+00 9.334355441528402e+03 + 159680 1.070810920018540e+00 -6.031887753356043e+00 -6.009084002243419e+00 3.514381899471780e+00 4.645324567229546e+00 9.244941302366133e+03 + 159700 1.013664331595894e+00 -5.973047570121448e+00 -5.999151885718473e+00 3.865761031476089e+00 4.715866011688188e+00 9.214423110061796e+03 + 159720 1.050428051773329e+00 -6.059159425274064e+00 -5.973407644129782e+00 3.371121668321620e+00 4.863521665697336e+00 9.135587118528250e+03 + 159740 9.420157403576664e-01 -5.929782663791087e+00 -6.041043727355316e+00 4.075586640379653e+00 4.436708395799916e+00 9.343452573242312e+03 + 159760 9.965734877245368e-01 -6.039326866822048e+00 -5.994747595599556e+00 3.510248619240187e+00 4.766229693219664e+00 9.200919158888595e+03 + 159780 9.574404155866684e-01 -6.006558207472702e+00 -6.029806051851946e+00 3.678271507007243e+00 4.544778786989334e+00 9.308775540567196e+03 + 159800 9.452665991817946e-01 -6.011948649831208e+00 -6.053274421738664e+00 3.593589063570510e+00 4.356290086135365e+00 9.381322278933862e+03 + 159820 9.091029020000138e-01 -5.975808471078857e+00 -6.027570455182249e+00 3.840434064369721e+00 4.543208741506888e+00 9.301849317929635e+03 + 159840 9.971198159711572e-01 -6.119354546773181e+00 -5.992108139009541e+00 3.072085735306334e+00 4.802754300003119e+00 9.192853132830116e+03 + 159860 9.804063308342029e-01 -6.103343053013414e+00 -6.006949287693869e+00 3.144688053238382e+00 4.698195970590178e+00 9.238404822877916e+03 + 159880 9.446173079473499e-01 -6.053101553558562e+00 -5.996845182817244e+00 3.400413689815231e+00 4.723446476257116e+00 9.207363258792982e+03 + 159900 9.510357417197004e-01 -6.060683611881169e+00 -5.969738366836815e+00 3.411552378737357e+00 4.933774049513227e+00 9.124392891491303e+03 + 159920 1.004361373099638e+00 -6.131972324548982e+00 -5.945974572216656e+00 2.979194320136722e+00 5.047222197088090e+00 9.051934613123145e+03 + 159940 9.800600845119262e-01 -6.080648984605929e+00 -5.955888857139600e+00 3.282550087754632e+00 4.998942046233624e+00 9.082133205843687e+03 + 159960 9.499070351325912e-01 -6.011240856017125e+00 -5.974883352000113e+00 3.622166056485997e+00 4.830936470857243e+00 9.140115658337303e+03 + 159980 1.025320917373206e+00 -6.086917500840879e+00 -5.973464779074217e+00 3.257558909381542e+00 4.909021994517669e+00 9.135762131581945e+03 + 160000 9.399726349497040e-01 -5.910740771447418e+00 -6.035194781093599e+00 4.155913175762048e+00 4.441278993177932e+00 9.325404989728439e+03 + 160020 9.808920085636095e-01 -5.923903630536819e+00 -6.013507269238785e+00 4.079274055618663e+00 4.564756096073703e+00 9.258568049523979e+03 + 160040 1.065148542957790e+00 -6.003394834333378e+00 -6.014647621517323e+00 3.697861319765574e+00 4.633246074392169e+00 9.262078721675405e+03 + 160060 1.036509315605115e+00 -5.930734556587509e+00 -6.068474424248012e+00 4.025698345647426e+00 4.234774710365184e+00 9.428467977067377e+03 + 160080 9.986574143694632e-01 -5.860132375430748e+00 -6.095727228994482e+00 4.435737279348197e+00 4.082915171999475e+00 9.513252239280928e+03 + 160100 1.057493993860023e+00 -5.944650045686870e+00 -6.053291503628516e+00 3.978804372125293e+00 4.354968308413073e+00 9.381371065593459e+03 + 160120 1.052212184098265e+00 -5.941857759545673e+00 -6.028639366116957e+00 4.053962638335351e+00 4.555649223992820e+00 9.305180000221208e+03 + 160140 1.017491853209114e+00 -5.901617512446663e+00 -6.003675549404427e+00 4.278426631121257e+00 4.692393589479599e+00 9.228285586306805e+03 + 160160 9.791654557562276e-01 -5.855609235464485e+00 -5.973325718023437e+00 4.536092429398531e+00 4.860146169978225e+00 9.135264649153161e+03 + 160180 1.095994711489422e+00 -6.037513118562012e+00 -5.960767352412127e+00 3.481593433887382e+00 4.922279499488957e+00 9.096994428698439e+03 + 160200 1.053799120668693e+00 -5.987936220346573e+00 -6.047982774660277e+00 3.708529214351842e+00 4.363732607308308e+00 9.364933927499453e+03 + 160220 1.047072173451426e+00 -5.997601215741199e+00 -6.002957818730445e+00 3.709241942998267e+00 4.678483499702381e+00 9.226128524552238e+03 + 160240 1.007853289775680e+00 -5.961014124217182e+00 -6.033149370916704e+00 3.856195382193625e+00 4.441983632751616e+00 9.319123918226442e+03 + 160260 1.044218442731836e+00 -6.040386458405478e+00 -5.993579754171064e+00 3.488178732192756e+00 4.756950071220832e+00 9.197353155516843e+03 + 160280 9.561921292371524e-01 -5.934954516875090e+00 -5.977752599378698e+00 4.014986200241479e+00 4.769232987523892e+00 9.148892748376975e+03 + 160300 9.650283231047512e-01 -5.967732005004477e+00 -5.987432743890053e+00 3.835277321086950e+00 4.722152629726483e+00 9.178512168747106e+03 + 160320 1.041443695491874e+00 -6.096653630432838e+00 -5.964776719247878e+00 3.197489199747568e+00 4.954746831657663e+00 9.109235828863255e+03 + 160340 9.595100222858196e-01 -5.990386753872547e+00 -6.000379344409385e+00 3.737981361209295e+00 4.680602359998387e+00 9.218206210027241e+03 + 160360 9.966715658915174e-01 -6.057632720004217e+00 -5.971681098620000e+00 3.352322298545487e+00 4.845869809504086e+00 9.130310835549568e+03 + 160380 9.698672318965091e-01 -6.025950170767810e+00 -5.996191706043236e+00 3.583284759457562e+00 4.754162469013600e+00 9.205347882400329e+03 + 160400 9.750661845594895e-01 -6.038076024889579e+00 -5.949183696649925e+00 3.567781410237071e+00 5.078214915032502e+00 9.061714911713314e+03 + 160420 9.504862556509137e-01 -6.000361372350707e+00 -6.031722968009812e+00 3.677507659512000e+00 4.497424524046173e+00 9.314706480592376e+03 + 160440 9.971736506237416e-01 -6.067113054819553e+00 -6.012780722434808e+00 3.348230036217724e+00 4.660214696672194e+00 9.256341101273021e+03 + 160460 1.001479739154472e+00 -6.069819799750714e+00 -5.994696750068682e+00 3.339191165034122e+00 4.770559341562715e+00 9.200779702808306e+03 + 160480 9.564938174999156e-01 -5.994312774362599e+00 -5.988638164242287e+00 3.766604937791448e+00 4.799189427245357e+00 9.182207656800912e+03 + 160500 9.934674670159975e-01 -6.031413888062776e+00 -5.962698018766941e+00 3.572768729850547e+00 4.967345885093634e+00 9.102875221400574e+03 + 160520 9.579322317094875e-01 -5.947641901992867e+00 -5.980913849176217e+00 4.008267249217449e+00 4.817214579673471e+00 9.158520943450236e+03 + 160540 1.001411437362417e+00 -5.962620033507650e+00 -6.029181027881346e+00 3.883005665693516e+00 4.500802135719164e+00 9.306777406061126e+03 + 160560 1.072154562169849e+00 -6.007601534537461e+00 -6.031837288462196e+00 3.606404889638196e+00 4.467239440131570e+00 9.315050419287367e+03 + 160580 1.065367513281493e+00 -5.950269846249613e+00 -6.025662146306662e+00 3.913073823884455e+00 4.480159570036149e+00 9.295996615153270e+03 + 160600 1.023156314797608e+00 -5.853436719747481e+00 -6.056259558562024e+00 4.511096110820650e+00 4.346455983614677e+00 9.390541371979407e+03 + 160620 1.108521218243921e+00 -5.960403549679981e+00 -6.011061236342114e+00 3.900431023395397e+00 4.609546747329754e+00 9.251037212159106e+03 + 160640 1.041664426070571e+00 -5.854826465500003e+00 -6.023640094876265e+00 4.419901255771438e+00 4.450547272068221e+00 9.289734251419204e+03 + 160660 1.101880677810955e+00 -5.946492223116513e+00 -5.993345317246210e+00 4.007792713548893e+00 4.738754996563288e+00 9.196626130011464e+03 + 160680 1.076894909434662e+00 -5.920475471324465e+00 -6.028586424941093e+00 4.121331298468577e+00 4.500541472685897e+00 9.305013863627040e+03 + 160700 1.039924343699047e+00 -5.885838855470521e+00 -6.033771446075315e+00 4.345586602243795e+00 4.496134774496659e+00 9.321017230226955e+03 + 160720 1.033109188213106e+00 -5.901688568146314e+00 -6.027632987598209e+00 4.149746621513352e+00 4.426554275184649e+00 9.302081175740801e+03 + 160740 1.055795991988790e+00 -5.968754017575486e+00 -6.008396885310666e+00 3.881201764204100e+00 4.653566282954738e+00 9.242850910236340e+03 + 160760 1.005657058590011e+00 -5.930945630554363e+00 -5.991396744807606e+00 4.110108913563457e+00 4.762989260741637e+00 9.190642611609095e+03 + 160780 1.047128139263350e+00 -6.024881822075962e+00 -5.986025082602841e+00 3.642220686665044e+00 4.865342097780706e+00 9.174176803123368e+03 + 160800 1.038033506410136e+00 -6.037933130582186e+00 -6.003687842944122e+00 3.523335465563875e+00 4.719977206622772e+00 9.228375266649809e+03 + 160820 1.026438968370604e+00 -6.045312037897373e+00 -5.985528204346414e+00 3.483584265867951e+00 4.826872289635902e+00 9.172686698052670e+03 + 160840 9.819314297618624e-01 -5.997757320524366e+00 -6.009319229046188e+00 3.706066603577276e+00 4.639676335645417e+00 9.245684817886509e+03 + 160860 9.865099471253355e-01 -6.019217011164370e+00 -6.002126942729442e+00 3.608106866782074e+00 4.706240684414976e+00 9.223568952985232e+03 + 160880 1.003490227940993e+00 -6.052252346477676e+00 -6.001000178956694e+00 3.473617481615153e+00 4.767915358767921e+00 9.220099861589757e+03 + 160900 1.033831578292342e+00 -6.102674140787588e+00 -5.986236340333356e+00 3.192548712220606e+00 4.861152581120193e+00 9.174852205339032e+03 + 160920 9.877879709790602e-01 -6.039577545036948e+00 -6.021829451924027e+00 3.462233215760839e+00 4.564145512923762e+00 9.284190916455666e+03 + 160940 1.003202730067998e+00 -6.064640309068633e+00 -6.016864567180445e+00 3.394063939451140e+00 4.668399642645277e+00 9.268892874852019e+03 + 160960 9.394893143762911e-01 -5.971590657858687e+00 -5.988223327177643e+00 3.827300425481030e+00 4.731793064354324e+00 9.180940710155710e+03 + 160980 9.409703868796269e-01 -5.971003163812262e+00 -6.036246774011047e+00 3.830486941631595e+00 4.455848035454123e+00 9.328639830906464e+03 + 161000 9.708156717767303e-01 -6.009126362490987e+00 -6.023133701080456e+00 3.616296527028270e+00 4.535864221218900e+00 9.288207111996324e+03 + 161020 9.803835337611397e-01 -6.016142088238199e+00 -5.982685656006312e+00 3.615912330522665e+00 4.808024341764314e+00 9.163972493795498e+03 + 161040 9.912036111736192e-01 -6.020111742100628e+00 -6.023137924535320e+00 3.580833254371037e+00 4.563456446530819e+00 9.288214468707169e+03 + 161060 1.007247788663592e+00 -6.031522988784685e+00 -5.984037426045887e+00 3.515081277932560e+00 4.787750727545820e+00 9.168111851972055e+03 + 161080 9.941703140772706e-01 -5.996897824409364e+00 -5.955783707200983e+00 3.738043551690800e+00 4.974127175090395e+00 9.081814054131844e+03 + 161100 1.041144155839224e+00 -6.042665605408391e+00 -5.987789750795847e+00 3.463199004378587e+00 4.778304653574872e+00 9.179619799429467e+03 + 161120 1.003228008124460e+00 -5.955664536248199e+00 -5.979833367790728e+00 4.013706182354063e+00 4.874925011522271e+00 9.155225522564757e+03 + 161140 1.053873104186462e+00 -5.990723308399001e+00 -5.970237127546789e+00 3.751522224389894e+00 4.869157045069532e+00 9.125914120683730e+03 + 161160 9.711971601396562e-01 -5.815006118209706e+00 -6.059764845129257e+00 4.652992557679636e+00 4.247550071416997e+00 9.401428075491054e+03 + 161180 1.076232786561651e+00 -5.919729725969598e+00 -6.052277810770425e+00 4.141339580785396e+00 4.380227966109214e+00 9.378219414113324e+03 + 161200 1.102478600776878e+00 -5.918939173091913e+00 -6.062966916165484e+00 4.098653823415916e+00 4.271624234466265e+00 9.411349492884570e+03 + 161220 1.087251821297010e+00 -5.872943969150382e+00 -6.052002709838185e+00 4.339039174720669e+00 4.310856176440743e+00 9.377364946321166e+03 + 161240 1.010038870370776e+00 -5.751883298449872e+00 -6.052651816946000e+00 4.992777834656559e+00 4.265718457673985e+00 9.379376127483230e+03 + 161260 1.092599400223713e+00 -5.878835482960334e+00 -6.047670588932738e+00 4.335873326989935e+00 4.366396021348177e+00 9.363976786162893e+03 + 161280 1.084309675459875e+00 -5.881574324362872e+00 -6.048779934330901e+00 4.331803912420803e+00 4.371683424999864e+00 9.367393763993594e+03 + 161300 1.083054630717559e+00 -5.904025840408231e+00 -5.981216079485799e+00 4.168912162836286e+00 4.725673864901995e+00 9.159481642676992e+03 + 161320 1.089238637785522e+00 -5.938940085155091e+00 -6.025843863736573e+00 4.003922411401782e+00 4.504907466470638e+00 9.296556731791641e+03 + 161340 1.094741144549793e+00 -5.977280323077478e+00 -5.989027667307621e+00 3.888883368785610e+00 4.821428300320486e+00 9.183389539732872e+03 + 161360 1.002433399857184e+00 -5.866408797689527e+00 -6.020463333224148e+00 4.515605193060317e+00 4.631000210158193e+00 9.279957809169156e+03 + 161380 1.069717626176580e+00 -5.989761164545700e+00 -5.991813440212421e+00 3.779622457217072e+00 4.767837972750129e+00 9.191906529255770e+03 + 161400 1.036607959465053e+00 -5.961685189584067e+00 -5.973940221693836e+00 3.910205465669518e+00 4.839835174835138e+00 9.137216994004928e+03 + 161420 1.036008049049247e+00 -5.978567918804394e+00 -5.957337190186822e+00 3.806524805115132e+00 4.928434934281873e+00 9.086509463076527e+03 + 161440 9.233165003702806e-01 -5.825415582903469e+00 -5.977681983932461e+00 4.590717028059786e+00 4.716379790201908e+00 9.148628344724959e+03 + 161460 1.039073858469874e+00 -6.007136585109272e+00 -5.993217609563757e+00 3.587403591307345e+00 4.667328502844198e+00 9.196238231714016e+03 + 161480 1.017204898915156e+00 -5.985206545687710e+00 -5.972777629751076e+00 3.756896376605481e+00 4.828265135282159e+00 9.133677866926437e+03 + 161500 1.011045809337130e+00 -5.987127517334615e+00 -5.997052415887040e+00 3.745331922755134e+00 4.688341619394020e+00 9.208006793062505e+03 + 161520 1.075955436738055e+00 -6.094939250460896e+00 -5.994855152878284e+00 3.201717703082086e+00 4.776416079365493e+00 9.201262470830143e+03 + 161540 9.804809611294001e-01 -5.969904269843672e+00 -5.989713940893435e+00 3.803458656122169e+00 4.689708459417744e+00 9.185515332449426e+03 + 161560 9.542997730278802e-01 -5.945333924503183e+00 -5.978979729920486e+00 4.003636229772132e+00 4.810436808394418e+00 9.152627566044854e+03 + 161580 9.954382265371100e-01 -6.016620446548646e+00 -6.017369959915347e+00 3.609289019640756e+00 4.604985197902337e+00 9.270445037385824e+03 + 161600 1.023052618253661e+00 -6.070537376854359e+00 -5.971149206409000e+00 3.335147646904189e+00 4.905849901871113e+00 9.128709230426122e+03 + 161620 9.559154289258309e-01 -5.984327243815384e+00 -6.006284460924181e+00 3.753234911970152e+00 4.627153173463073e+00 9.236355363501631e+03 + 161640 9.301064820608891e-01 -5.956916214580928e+00 -6.005798635502968e+00 3.929836143746811e+00 4.649145718282265e+00 9.234850720143731e+03 + 161660 9.544315365814562e-01 -6.004722230707030e+00 -6.000822251623513e+00 3.653195954069851e+00 4.675590237487221e+00 9.219577069506189e+03 + 161680 9.750722119711537e-01 -6.043415077828495e+00 -5.996494157860504e+00 3.492293358496461e+00 4.761720541941571e+00 9.206278370435914e+03 + 161700 9.592481487377785e-01 -6.027084765412924e+00 -5.970724854277306e+00 3.578356362547953e+00 4.901983693956735e+00 9.127399684698054e+03 + 161720 9.002501508128924e-01 -5.944684248776280e+00 -5.991249021568359e+00 4.034861511527800e+00 4.767479380280383e+00 9.190168318791628e+03 + 161740 1.001883629854006e+00 -6.094110312873083e+00 -5.996470533764364e+00 3.166244760042566e+00 4.726907481391816e+00 9.206223504308293e+03 + 161760 9.975313097936616e-01 -6.081090060810471e+00 -6.007397432976460e+00 3.241698165261540e+00 4.664852638181733e+00 9.239778184048339e+03 + 161780 9.901650455971855e-01 -6.060824341825948e+00 -5.931792038258775e+00 3.429390834077759e+00 5.170314288844907e+00 9.008847735059595e+03 + 161800 9.342815008725615e-01 -5.959479322963702e+00 -5.963645823978852e+00 3.958276672375436e+00 4.934351978782499e+00 9.105772301568250e+03 + 161820 1.003337790695439e+00 -6.031461911781351e+00 -6.009896406658520e+00 3.490326660264591e+00 4.614159127931023e+00 9.247469021326797e+03 + 161840 9.429672754115861e-01 -5.905467627887485e+00 -6.094812719473669e+00 4.137373231936531e+00 4.050124414990434e+00 9.510410937374623e+03 + 161860 1.008867675163742e+00 -5.967990708076190e+00 -6.036551124913268e+00 3.871667467270503e+00 4.477982944101785e+00 9.329601031816937e+03 + 161880 1.033564994462538e+00 -5.975229430855498e+00 -5.989492420306222e+00 3.841818782805249e+00 4.759918490188708e+00 9.184797495883629e+03 + 161900 1.012463535767002e+00 -5.917264121085976e+00 -6.012237759203172e+00 4.151879144351999e+00 4.606525817160057e+00 9.254624147964782e+03 + 161920 1.035793713795176e+00 -5.927309368062039e+00 -6.021068230881504e+00 4.085098149310301e+00 4.546720249863802e+00 9.281819132235256e+03 + 161940 1.014886284306586e+00 -5.878313629094414e+00 -6.039625489921086e+00 4.394507747408183e+00 4.468230079611650e+00 9.339073050093089e+03 + 161960 1.123320963045888e+00 -6.030759050811043e+00 -5.953032198667207e+00 3.535861294502571e+00 4.982180907703976e+00 9.073424121250044e+03 + 161980 9.712971382020206e-01 -5.801294388589707e+00 -6.006142349174405e+00 4.799197804467099e+00 4.622929114670304e+00 9.235874048058628e+03 + 162000 1.007187872745212e+00 -5.854830436464284e+00 -6.062711950370902e+00 4.423821683232126e+00 4.230133860820012e+00 9.410524392657537e+03 + 162020 1.043729535736961e+00 -5.916487663651502e+00 -6.062048453354465e+00 4.128027198831600e+00 4.292194618897777e+00 9.408492423717807e+03 + 162040 1.030181452747277e+00 -5.911299444782066e+00 -6.065102217139168e+00 4.128956829845008e+00 4.245797510068424e+00 9.417974524707075e+03 + 162060 1.051243718307378e+00 -5.970609469780458e+00 -6.015886573114088e+00 3.866381796140712e+00 4.606393662189912e+00 9.265889226221949e+03 + 162080 1.010595824561274e+00 -5.946106826207853e+00 -6.049166334506747e+00 3.971186256439839e+00 4.379402611380222e+00 9.368588262875059e+03 + 162100 1.091320185823295e+00 -6.109419579965328e+00 -5.987112702523140e+00 3.105926312692027e+00 4.808231329893188e+00 9.177527352951554e+03 + 162120 9.650218503099308e-01 -5.965718561470987e+00 -6.018597216614165e+00 3.867625765566373e+00 4.563988344788804e+00 9.274212820527171e+03 + 162140 9.382335992437946e-01 -5.962217237872146e+00 -6.021462994470992e+00 3.919332706275117e+00 4.579134403633340e+00 9.283040067927392e+03 + 162160 9.015658370091538e-01 -5.931817713342571e+00 -6.034152972722895e+00 4.074571726123598e+00 4.486946830431573e+00 9.322179538115653e+03 + 162180 9.870960004589449e-01 -6.073547684052460e+00 -5.985446769899948e+00 3.244163274806891e+00 4.750052357443015e+00 9.172460878150367e+03 + 162200 9.806954074150837e-01 -6.070659784019922e+00 -6.019900101503564e+00 3.257848213705265e+00 4.549318165749670e+00 9.278259956232831e+03 + 162220 9.415940802769128e-01 -6.015741467183267e+00 -6.015657183116738e+00 3.620427132522930e+00 4.620911104675853e+00 9.265178082287170e+03 + 162240 9.749002984887419e-01 -6.065077502915942e+00 -5.965775573238829e+00 3.397652395716909e+00 4.967859442846850e+00 9.112281635094740e+03 + 162260 9.889995182611527e-01 -6.081689653391416e+00 -5.976828389816245e+00 3.223283733187179e+00 4.825413335863905e+00 9.146066123104461e+03 + 162280 9.344341437202388e-01 -5.992352692059560e+00 -5.987020613918317e+00 3.710118717084685e+00 4.740736334908128e+00 9.177231419058156e+03 + 162300 9.748656193246829e-01 -6.039307216165382e+00 -5.962005535830837e+00 3.483346037034853e+00 4.927224247912178e+00 9.100782666108676e+03 + 162320 1.000511510262489e+00 -6.060706311073877e+00 -5.990930068892450e+00 3.346330598700934e+00 4.746996579145275e+00 9.189224630975214e+03 + 162340 9.906717483345594e-01 -6.027900119262839e+00 -6.032071275693019e+00 3.505914000390729e+00 4.481962574684265e+00 9.315762758155262e+03 + 162360 9.727389429867523e-01 -5.983967006256304e+00 -5.989064642592261e+00 3.801439040447745e+00 4.772167623750006e+00 9.183528046182884e+03 + 162380 9.370000143472786e-01 -5.913474909046638e+00 -6.035654044730349e+00 4.109943677610943e+00 4.408372173354930e+00 9.326823156736391e+03 + 162400 9.607207698266811e-01 -5.930186910741354e+00 -6.066258682470469e+00 3.990067896322882e+00 4.208722726015680e+00 9.421559271683584e+03 + 162420 1.000904807420621e+00 -5.971153518175170e+00 -6.057198375997512e+00 3.812306540882992e+00 4.318223651868392e+00 9.393471207788283e+03 + 162440 1.063074931926065e+00 -6.048736308084578e+00 -5.991308515390546e+00 3.430154329686826e+00 4.759913602258157e+00 9.190407123757783e+03 + 162460 9.783235345045167e-01 -5.911536007488039e+00 -5.982771402991423e+00 4.197940171006210e+00 4.788895506383949e+00 9.164226324964749e+03 + 162480 1.011798587374074e+00 -5.949626275063929e+00 -6.025236910598455e+00 3.981421250705631e+00 4.547253280758354e+00 9.294657758259456e+03 + 162500 1.016236411617874e+00 -5.947600424656504e+00 -5.999474315669458e+00 3.963100354754034e+00 4.665232445098963e+00 9.215409672207938e+03 + 162520 1.014916187515347e+00 -5.938687135030134e+00 -5.962578543382540e+00 4.078835293853333e+00 4.941647129910330e+00 9.102468206135665e+03 + 162540 1.008018019160987e+00 -5.918492239783259e+00 -5.987581061233589e+00 4.111699167341499e+00 4.714980463113134e+00 9.178958902441862e+03 + 162560 1.075500680822997e+00 -6.008890143605986e+00 -5.999530025082767e+00 3.679337182058734e+00 4.733084431092717e+00 9.215602650410605e+03 + 162580 1.046367660064607e+00 -5.956329045255175e+00 -5.997003458955055e+00 3.923805538148841e+00 4.690246760338953e+00 9.207877056072901e+03 + 162600 1.087556120179716e+00 -6.007516013950550e+00 -5.988984877335006e+00 3.637780239090524e+00 4.744188893221100e+00 9.183284567118908e+03 + 162620 1.074638278292985e+00 -5.980528004659189e+00 -5.990371906421180e+00 3.803971028188393e+00 4.747445820932164e+00 9.187519502313087e+03 + 162640 1.043245900752999e+00 -5.929067782757871e+00 -6.038736157925413e+00 4.070866911396108e+00 4.441134130057871e+00 9.336366868949150e+03 + 162660 1.039160521047207e+00 -5.925900257140243e+00 -6.061902816142956e+00 4.077720034921594e+00 4.296772294800028e+00 9.408020127743672e+03 + 162680 9.843928189401719e-01 -5.855541284014834e+00 -6.047677127327080e+00 4.370688942718738e+00 4.267415197494159e+00 9.363972771180583e+03 + 162700 1.038018619339763e+00 -5.951056317868337e+00 -5.980928776035093e+00 3.958068627462837e+00 4.786536349921367e+00 9.158612889732603e+03 + 162720 1.049498226791958e+00 -5.990085082577055e+00 -5.966924115112179e+00 3.789037949087968e+00 4.922031808419417e+00 9.115780009034026e+03 + 162740 9.764649042420084e-01 -5.907579579280620e+00 -6.037014865277660e+00 4.171276711596098e+00 4.428039269355322e+00 9.331027849809743e+03 + 162760 1.002280575925416e+00 -5.974896049653909e+00 -6.047898239725459e+00 3.841069605753654e+00 4.421879733310411e+00 9.364679554737717e+03 + 162780 9.367232431622372e-01 -5.909315200303888e+00 -6.045374339919769e+00 4.127957742065977e+00 4.346685107307781e+00 9.356869139275375e+03 + 162800 1.023337490167012e+00 -6.065619190998289e+00 -6.009631096296134e+00 3.334828258651403e+00 4.656320562560828e+00 9.246637182675086e+03 + 162820 9.391641230340534e-01 -5.967936573542799e+00 -6.035175401876685e+00 3.871653509728072e+00 4.485557752259838e+00 9.325342649251603e+03 + 162840 9.982406249938827e-01 -6.079851641695286e+00 -5.982850326483566e+00 3.304433983555319e+00 4.861430546406030e+00 9.164484404631756e+03 + 162860 1.022149825200615e+00 -6.134635905823668e+00 -5.984323793753211e+00 2.989265996587172e+00 4.852381404819903e+00 9.168963871110949e+03 + 162880 9.028867144036470e-01 -5.972253582737718e+00 -5.990519603305319e+00 3.809507049772508e+00 4.704620733015791e+00 9.187978040069118e+03 + 162900 9.537243737902877e-01 -6.055545623705087e+00 -5.958638302897511e+00 3.417649402424467e+00 4.974106234860998e+00 9.090493009951697e+03 + 162920 9.009353873168511e-01 -5.977845546355162e+00 -6.030962599127580e+00 3.780049695205938e+00 4.475043358349366e+00 9.312317056532735e+03 + 162940 9.967274890825212e-01 -6.116238309874726e+00 -5.939075910105414e+00 3.079320189116680e+00 5.096614104384832e+00 9.030980376435722e+03 + 162960 9.551150106241686e-01 -6.043028906705282e+00 -6.022971725019599e+00 3.426091861007310e+00 4.541263302085335e+00 9.287708103959878e+03 + 162980 9.707844465767645e-01 -6.051298961933812e+00 -6.012937630540158e+00 3.429905733231805e+00 4.650182434491017e+00 9.256828261315619e+03 + 163000 9.504721624089499e-01 -6.000733888022360e+00 -6.024943153645596e+00 3.712058724167435e+00 4.573045374587065e+00 9.293786215797070e+03 + 163020 1.001942816810722e+00 -6.048358344867216e+00 -6.024779372655132e+00 3.415443266654861e+00 4.550837373930808e+00 9.293287172301116e+03 + 163040 9.726448810858962e-01 -5.971070356433644e+00 -6.031209885034774e+00 3.809993257082643e+00 4.464662777292978e+00 9.313111383930927e+03 + 163060 1.056822004940084e+00 -6.061268990986827e+00 -5.950807381318343e+00 3.394930007475542e+00 5.029217664070826e+00 9.066655622604640e+03 + 163080 1.035023577269626e+00 -5.990718993146752e+00 -6.009953136395916e+00 3.749205675072043e+00 4.638760248061291e+00 9.247619149178794e+03 + 163100 1.083404748665865e+00 -6.031484699168294e+00 -6.002797823024695e+00 3.472551910400550e+00 4.637276392496831e+00 9.225636273521766e+03 + 163120 1.029961737571383e+00 -5.930643402033360e+00 -5.994299745684120e+00 4.058275067483287e+00 4.692750491453282e+00 9.199456140779150e+03 + 163140 1.006500044492990e+00 -5.880168599127322e+00 -5.954088086758197e+00 4.374508783451136e+00 4.950051646470915e+00 9.076459707518168e+03 + 163160 1.021341420796735e+00 -5.889087167535349e+00 -5.952612909463833e+00 4.265637056045781e+00 4.900862415315632e+00 9.072118951004088e+03 + 163180 1.102174255070495e+00 -5.999582200395922e+00 -5.975082221480998e+00 3.687789116719556e+00 4.828471787008535e+00 9.140685184366535e+03 + 163200 1.074916227910037e+00 -5.958459344725615e+00 -6.007456019503113e+00 3.864988627576227e+00 4.583642138792912e+00 9.239929494730493e+03 + 163220 1.031999183212925e+00 -5.901256730511313e+00 -6.039509482859098e+00 4.173074084110078e+00 4.379205385584814e+00 9.338698303599080e+03 + 163240 9.908129333680146e-01 -5.849090945856749e+00 -6.043172879333421e+00 4.428039190756482e+00 4.313590694651291e+00 9.350069083270386e+03 + 163260 1.040035000549079e+00 -5.935327100027491e+00 -6.041383804940069e+00 3.991431255174567e+00 4.382437243344500e+00 9.344542838127043e+03 + 163280 1.012914866324482e+00 -5.909814323401996e+00 -6.056114883836060e+00 4.106170293320459e+00 4.266089835369502e+00 9.390097151539754e+03 + 163300 1.063950438858502e+00 -5.999699037718605e+00 -6.055104291589891e+00 3.635699495233416e+00 4.317553953569163e+00 9.386972210261274e+03 + 163320 1.020800939242729e+00 -5.951973579899263e+00 -5.999686509363075e+00 3.969407830436209e+00 4.695432805903026e+00 9.216079268812577e+03 + 163340 1.004198250813433e+00 -5.942349523135688e+00 -5.975567724521582e+00 4.000018613344225e+00 4.809274560486369e+00 9.142192276741494e+03 + 163360 9.604055335673590e-01 -5.888358760189602e+00 -6.038963129165378e+00 4.251672387025591e+00 4.386878794415906e+00 9.337035962611268e+03 + 163380 1.016118400904988e+00 -5.981573031122268e+00 -5.994832466311181e+00 3.781432786486708e+00 4.705295057741006e+00 9.201192776818678e+03 + 163400 1.069696318362005e+00 -6.070502946795155e+00 -5.977702371866958e+00 3.388543999708812e+00 4.921419261789080e+00 9.148717463480289e+03 + 163420 1.111639600391405e+00 -6.145131111428213e+00 -6.004611883163761e+00 2.889668092215974e+00 4.696551246190753e+00 9.231208042546805e+03 + 163440 9.410377197886891e-01 -5.905795474056436e+00 -6.014161036369930e+00 4.190751682706500e+00 4.568499854385847e+00 9.260571642272547e+03 + 163460 9.895054382125503e-01 -5.990045920506423e+00 -6.037143975034377e+00 3.706011206910298e+00 4.435566889410406e+00 9.331416250419768e+03 + 163480 1.012164183693893e+00 -6.035941493527857e+00 -5.997356744330350e+00 3.524375446480637e+00 4.745935047343364e+00 9.208938264206592e+03 + 163500 1.009824435500284e+00 -6.044733377523796e+00 -6.019256821638966e+00 3.476964849352322e+00 4.623255175727297e+00 9.276249603657676e+03 + 163520 9.743764793974828e-01 -6.005105155025115e+00 -5.982160951466256e+00 3.665357292354739e+00 4.797106459793731e+00 9.162372246012150e+03 + 163540 9.782538670304899e-01 -6.020339025114633e+00 -5.999060753610401e+00 3.514038853206116e+00 4.636221980985290e+00 9.214173151657869e+03 + 163560 9.637708838276348e-01 -6.006527977701047e+00 -5.999440828134971e+00 3.753456031126198e+00 4.794151540667455e+00 9.215318125149292e+03 + 163580 1.012948912259935e+00 -6.087057005986865e+00 -6.011785567369873e+00 3.238329190610547e+00 4.670549439366794e+00 9.253226830884154e+03 + 163600 9.380379958622476e-01 -5.982619258804082e+00 -5.991296877345834e+00 3.784789312703692e+00 4.734961084179819e+00 9.190315034937281e+03 + 163620 9.624239808206947e-01 -6.021986798087871e+00 -5.991574979313138e+00 3.602498921907172e+00 4.777128291525436e+00 9.191181330905007e+03 + 163640 9.915729883211112e-01 -6.065524940923495e+00 -6.005984682884772e+00 3.349817759623881e+00 4.691707135107386e+00 9.235430180974377e+03 + 163660 1.005791539039243e+00 -6.085055932118293e+00 -6.003594864534932e+00 3.221428110129323e+00 4.689190166252452e+00 9.228088257513855e+03 + 163680 9.738318964451762e-01 -6.031220400339741e+00 -5.972310972530724e+00 3.567312627226158e+00 4.905579677910029e+00 9.132249963818969e+03 + 163700 9.857612394836859e-01 -6.035898444142392e+00 -5.952929092829885e+00 3.532227757573354e+00 5.008650612275389e+00 9.073126169602065e+03 + 163720 9.899998083844502e-01 -6.019467234702422e+00 -6.000647515531145e+00 3.601929945657505e+00 4.709995685481106e+00 9.219030059041561e+03 + 163740 1.066477508583124e+00 -6.103649339581274e+00 -6.003910916709473e+00 3.164713055754777e+00 4.737426514355716e+00 9.229075151320347e+03 + 163760 9.984553751449995e-01 -5.973839283435900e+00 -6.065037219126345e+00 3.794368292184085e+00 4.270695632614611e+00 9.417753478146624e+03 + 163780 1.035742081107139e+00 -6.002217223004647e+00 -5.997819008268923e+00 3.706574422898288e+00 4.731829652532344e+00 9.210348058884816e+03 + 163800 1.046386270690945e+00 -5.991119700147747e+00 -5.995770362459373e+00 3.764985494557457e+00 4.738280671876437e+00 9.204076931247673e+03 + 163820 1.151657135190971e+00 -6.122836776228781e+00 -5.977467925448167e+00 3.067773491001744e+00 4.902503927940989e+00 9.148023866124824e+03 + 163840 1.053706559533024e+00 -5.961099759632146e+00 -6.033319466515727e+00 3.924052514855764e+00 4.509355781966719e+00 9.319617174997644e+03 + 163860 1.042518197407502e+00 -5.935913522725601e+00 -6.001547241426177e+00 4.060920516326876e+00 4.684041546763023e+00 9.221775979511598e+03 + 163880 9.474003437533657e-01 -5.788736288713352e+00 -6.031544196341009e+00 4.819735099313832e+00 4.425494519313554e+00 9.314097677476497e+03 + 163900 1.074305405256065e+00 -5.974523492726554e+00 -6.002309762607679e+00 3.846298831682461e+00 4.686745770113680e+00 9.224108107634556e+03 + 163920 1.007889602799791e+00 -5.879505993959864e+00 -6.016892886227452e+00 4.356405732296503e+00 4.567508936343146e+00 9.268957715356177e+03 + 163940 1.044677559747021e+00 -5.944481281121458e+00 -5.969636942903729e+00 4.021563067632306e+00 4.877115364852428e+00 9.124055508774458e+03 + 163960 1.027221349500734e+00 -5.933512550382947e+00 -6.039450931366778e+00 4.027148086532865e+00 4.418833509012229e+00 9.338538845344274e+03 + 163980 1.026723684419981e+00 -5.957187232066660e+00 -6.026554121701439e+00 3.924717028387941e+00 4.526401613613565e+00 9.298743483845719e+03 + 164000 1.001148612301440e+00 -5.952602981436852e+00 -5.995009058622275e+00 3.951127922985032e+00 4.707625665467098e+00 9.201737551174761e+03 + 164020 1.040598814036212e+00 -6.048149602228094e+00 -5.975575534250233e+00 3.445808164569852e+00 4.862539693699450e+00 9.142228015816350e+03 + 164040 1.010157865196069e+00 -6.042591860654753e+00 -6.000380442097256e+00 3.499593780260511e+00 4.741978277813566e+00 9.218223949433162e+03 + 164060 9.965545557205129e-01 -6.059411183244029e+00 -5.964776344971131e+00 3.383255836678075e+00 4.926663722734948e+00 9.109225091795615e+03 + 164080 9.205590259938137e-01 -5.975087765848401e+00 -6.013266413811673e+00 3.839013493531330e+00 4.619785788799541e+00 9.257828210865206e+03 + 164100 9.997428379265941e-01 -6.112717387232392e+00 -6.012282938153333e+00 3.149495914512092e+00 4.726206063304814e+00 9.254813795169808e+03 + 164120 9.391943001321162e-01 -6.037898976185831e+00 -6.013095508585970e+00 3.507864354232978e+00 4.650289703515588e+00 9.257307591381996e+03 + 164140 9.347531602786676e-01 -6.039330059431107e+00 -5.983529677842435e+00 3.497932409314997e+00 4.818346835478291e+00 9.166555652878609e+03 + 164160 9.077495228524818e-01 -5.998095474941739e+00 -6.024148291068508e+00 3.709718487983231e+00 4.560119186123057e+00 9.291326496648680e+03 + 164180 9.710037681415328e-01 -6.085741722473275e+00 -5.980047733764549e+00 3.232545829565282e+00 4.839457068822682e+00 9.155924905455342e+03 + 164200 9.634742117934106e-01 -6.066054884551777e+00 -5.952609868592730e+00 3.327433674254823e+00 4.978852511451155e+00 9.072155088132542e+03 + 164220 9.737657226828359e-01 -6.068103944819762e+00 -5.970419811463053e+00 3.361890691509720e+00 4.922808101814725e+00 9.126465421560255e+03 + 164240 1.025347507824341e+00 -6.128879148094189e+00 -5.983761560738776e+00 3.003276549986028e+00 4.836564193454880e+00 9.167272355147448e+03 + 164260 9.260151703808808e-01 -5.966032701227707e+00 -6.002290116897621e+00 3.880061557804798e+00 4.671865866211210e+00 9.224058387521420e+03 + 164280 9.088679675065678e-01 -5.924787733715312e+00 -6.000522737883025e+00 4.053639161160117e+00 4.618757047275091e+00 9.218631627012866e+03 + 164300 9.554343924527755e-01 -5.975371484028456e+00 -6.017784914026086e+00 3.750014138007297e+00 4.506469659503828e+00 9.271733924403037e+03 + 164320 1.014999190760925e+00 -6.046400218696409e+00 -5.991700840111424e+00 3.471863304258410e+00 4.785955600794876e+00 9.191590606560843e+03 + 164340 9.794605932056099e-01 -5.980502060234826e+00 -6.024036767281658e+00 3.789713980745391e+00 4.539730955908339e+00 9.290988044515761e+03 + 164360 9.912905336467982e-01 -5.986967607936889e+00 -5.984658931851858e+00 3.796646585534019e+00 4.809903360880736e+00 9.170028376931246e+03 + 164380 1.006306591423076e+00 -6.001104509033086e+00 -6.014904668087472e+00 3.679786444106994e+00 4.600543795248997e+00 9.262877483234090e+03 + 164400 1.023377649365099e+00 -6.020564607445333e+00 -6.011410892923048e+00 3.550192290467698e+00 4.602754335787404e+00 9.252107682440335e+03 + 164420 9.328673012246472e-01 -5.882695046251074e+00 -6.014718068248436e+00 4.259696954859773e+00 4.501600332054296e+00 9.262299805309734e+03 + 164440 1.016827232579926e+00 -6.002194922242476e+00 -6.034617342442528e+00 3.656985956588251e+00 4.470811402446243e+00 9.323616686241223e+03 + 164460 1.036338013709010e+00 -6.029480616399830e+00 -5.999909087190472e+00 3.503187913894854e+00 4.672992210794343e+00 9.216784916911967e+03 + 164480 9.610438520059726e-01 -5.919402168658439e+00 -6.019990138650178e+00 4.090134813549580e+00 4.512543123918968e+00 9.278522845314883e+03 + 164500 1.042346296799027e+00 -6.041818960537751e+00 -5.989303552405087e+00 3.465550893079034e+00 4.767102493309937e+00 9.184224768918019e+03 + 164520 9.762053677456177e-01 -5.944723295874420e+00 -6.025092125807031e+00 3.999874366942788e+00 4.538384108433495e+00 9.294241550477514e+03 + 164540 1.037437641964744e+00 -6.037301361740465e+00 -5.987910667368582e+00 3.509147787793486e+00 4.792756798062086e+00 9.179982193796408e+03 + 164560 1.060507657566253e+00 -6.074512083154907e+00 -5.981489187004776e+00 3.287400022563187e+00 4.821551887503898e+00 9.160326733794582e+03 + 164580 1.009953483709239e+00 -6.003884889041220e+00 -6.013491818410135e+00 3.693848692357249e+00 4.638684217253424e+00 9.258526161231974e+03 + 164600 9.703800688783961e-01 -5.952020150220163e+00 -6.021571695190870e+00 3.927894452199904e+00 4.528518717911304e+00 9.283393265132390e+03 + 164620 9.951182734581367e-01 -5.997277524847433e+00 -5.996937044888913e+00 3.686348807113879e+00 4.688303895724805e+00 9.207645375072056e+03 + 164640 1.029900498279307e+00 -6.057829276102006e+00 -5.952125688131627e+00 3.381679036543445e+00 4.988645396246739e+00 9.070667870623885e+03 + 164660 9.339333962974141e-01 -5.925518548549439e+00 -6.014936134552197e+00 4.085988492614581e+00 4.572538876460029e+00 9.262940150209461e+03 + 164680 9.928042499109493e-01 -6.025634291130154e+00 -6.012632213811476e+00 3.523739563686708e+00 4.598399503715518e+00 9.255880830550444e+03 + 164700 1.022314980096026e+00 -6.090985547840610e+00 -5.984038935122218e+00 3.191665881802741e+00 4.805769881966578e+00 9.168151685712606e+03 + 164720 9.493251713294495e-01 -6.015061655732826e+00 -5.984521171268804e+00 3.581558311207185e+00 4.756926499124303e+00 9.169599027051994e+03 + 164740 9.250030631040805e-01 -6.014946754057609e+00 -5.968548873147141e+00 3.618237799755583e+00 4.884661611992358e+00 9.120745128924173e+03 + 164760 8.957604227974576e-01 -6.004346797579313e+00 -6.010089347757078e+00 3.618362590556935e+00 4.585387978779440e+00 9.248045875397547e+03 + 164780 9.401081050610942e-01 -6.097435501725895e+00 -5.949538169053088e+00 3.188825300592019e+00 5.038074671837544e+00 9.062791390288863e+03 + 164800 8.849313242926307e-01 -6.030885700530975e+00 -6.015866383026191e+00 3.513869384682043e+00 4.600112630026387e+00 9.265812984024480e+03 + 164820 9.475376462877442e-01 -6.131912072496372e+00 -6.013788327782378e+00 2.978734588237069e+00 4.657019409975243e+00 9.259441202083273e+03 + 164840 9.288246417134460e-01 -6.107607674129375e+00 -5.968807078753969e+00 3.126700918370944e+00 4.923715416339245e+00 9.121543472544719e+03 + 164860 8.765253427884372e-01 -6.024618913805066e+00 -5.967463707459770e+00 3.596783259771603e+00 4.924977299345887e+00 9.117402470339419e+03 + 164880 9.202121176437905e-01 -6.073162655874746e+00 -5.961746781654242e+00 3.294948835127963e+00 4.934716026452906e+00 9.099971335902635e+03 + 164900 9.225935698921532e-01 -6.047898331563763e+00 -5.964556484191908e+00 3.432668908872099e+00 4.911230693590493e+00 9.108568582994296e+03 + 164920 9.433908401047710e-01 -6.040104701714657e+00 -5.997534226405241e+00 3.498194863076288e+00 4.742641120062720e+00 9.209466001798819e+03 + 164940 1.003673116050245e+00 -6.088890538275883e+00 -5.990985992603713e+00 3.227549940054497e+00 4.789732991983572e+00 9.189398745604778e+03 + 164960 9.730000155384259e-01 -6.006727427412576e+00 -6.017739379305995e+00 3.636382543039278e+00 4.573150211173221e+00 9.271600044158855e+03 + 164980 1.040226228389026e+00 -6.075652661830345e+00 -6.016192965888443e+00 3.249952193294599e+00 4.591378968751208e+00 9.266818130837146e+03 + 165000 9.485760128758511e-01 -5.916739880682917e+00 -6.038211848633807e+00 4.164629848290448e+00 4.467119010590152e+00 9.334698910870449e+03 + 165020 1.004338661138920e+00 -5.982342819411682e+00 -5.975416570285288e+00 3.803168766846267e+00 4.842940361163604e+00 9.141716379336685e+03 + 165040 1.025798720264593e+00 -5.998951243390087e+00 -5.974936944294774e+00 3.688833833790155e+00 4.826727655396210e+00 9.140272108101739e+03 + 165060 1.003435804799144e+00 -5.953229585891919e+00 -6.019721463272913e+00 3.939700335542775e+00 4.557893686036337e+00 9.277688599837869e+03 + 165080 1.023505971491609e+00 -5.975407418081673e+00 -6.007931373477128e+00 3.833526532175669e+00 4.646768947229137e+00 9.241432874286229e+03 + 165100 1.049064042629113e+00 -6.007848012516179e+00 -6.053515481276627e+00 3.656771876136098e+00 4.394542203495659e+00 9.382071146334752e+03 + 165120 1.019383119958062e+00 -5.965030087726134e+00 -6.020341984081133e+00 3.858953390254117e+00 4.541343921895418e+00 9.279629926039319e+03 + 165140 1.001690158256775e+00 -5.944295090482152e+00 -6.015005865600621e+00 3.976859745164647e+00 4.570827531977312e+00 9.263186794054638e+03 + 165160 1.049738465969482e+00 -6.023729097383256e+00 -5.983651347700286e+00 3.590806562212399e+00 4.820939202903736e+00 9.166898929423471e+03 + 165180 9.636501491588934e-01 -5.904744065965029e+00 -5.992244146206106e+00 4.242949301047306e+00 4.740510299709388e+00 9.193212975310804e+03 + 165200 1.025258224193686e+00 -6.005928149157295e+00 -6.005127683896401e+00 3.671514549545745e+00 4.676110944945404e+00 9.232777493005377e+03 + 165220 1.026234815562151e+00 -6.019981500497336e+00 -5.994403415447916e+00 3.594339374152157e+00 4.741212696701792e+00 9.199879284976867e+03 + 165240 1.010692402426985e+00 -6.015280687912606e+00 -6.008938028854272e+00 3.579800376329372e+00 4.616220906165644e+00 9.244489875345780e+03 + 165260 9.958459826280568e-01 -6.015420466235421e+00 -5.971628744385946e+00 3.620178211255779e+00 4.871637054862516e+00 9.130148866101130e+03 + 165280 9.733309830510544e-01 -6.008105975359985e+00 -6.027081888650535e+00 3.600676876682349e+00 4.491714246054918e+00 9.300375430227881e+03 + 165300 1.009737757280632e+00 -6.096129980779802e+00 -6.004700124643508e+00 3.193487373427120e+00 4.718491756086231e+00 9.231496998792160e+03 + 165320 9.843741141344144e-01 -6.098210700652363e+00 -5.983104493293110e+00 3.183509056415958e+00 4.844466711700806e+00 9.165263948996804e+03 + 165340 9.243284270515657e-01 -6.048056412374070e+00 -5.956390524854450e+00 3.484450559373542e+00 5.010810270761450e+00 9.083659881976448e+03 + 165360 8.907231733043808e-01 -6.027316084208714e+00 -5.946632306464855e+00 3.564474273568815e+00 5.027773011148309e+00 9.053936257339396e+03 + 165380 9.621516755979446e-01 -6.152900710350401e+00 -5.951159655485034e+00 2.893534183699023e+00 5.051962540063306e+00 9.067717135272927e+03 + 165400 8.786023297483069e-01 -6.039175390218580e+00 -5.991528408780200e+00 3.462821029995646e+00 4.736417370761376e+00 9.191044603199283e+03 + 165420 9.030535142006715e-01 -6.076824625405761e+00 -5.978259638960235e+00 3.278941126633664e+00 4.844916531686232e+00 9.150417225317613e+03 + 165440 9.384210810024903e-01 -6.121828135819438e+00 -5.957243171617885e+00 3.050192133929255e+00 4.995264467815471e+00 9.086251331064666e+03 + 165460 8.897762294335501e-01 -6.030886984251786e+00 -5.994055922660507e+00 3.523830702489797e+00 4.735320357735280e+00 9.198799518438182e+03 + 165480 9.994282040887725e-01 -6.162191113867421e+00 -5.958386898306436e+00 2.861773097965289e+00 5.032048442316897e+00 9.089761991079800e+03 + 165500 9.971206320466740e-01 -6.117940729250219e+00 -5.980881733164880e+00 3.040590299405847e+00 4.827604264738960e+00 9.158465804244204e+03 + 165520 9.761711005018174e-01 -6.043970069606521e+00 -5.990739964630398e+00 3.475112546174070e+00 4.780768046279094e+00 9.188647761458376e+03 + 165540 1.035273136539422e+00 -6.096296131011345e+00 -5.963290698379604e+00 3.177971886619802e+00 4.941709663315441e+00 9.104703643051987e+03 + 165560 9.758216236204874e-01 -5.981089681071365e+00 -5.979377071309673e+00 3.804930472451016e+00 4.814764542728158e+00 9.153819705760734e+03 + 165580 1.010461771277313e+00 -6.015165521565926e+00 -5.988342935810744e+00 3.636819254900908e+00 4.790838693088898e+00 9.181291453791784e+03 + 165600 9.691019331948778e-01 -5.942450293628315e+00 -6.024751028018762e+00 3.999089459184135e+00 4.526505906316706e+00 9.293183347706548e+03 + 165620 9.923186158230185e-01 -5.971314126292355e+00 -5.983936831730908e+00 3.855936055244825e+00 4.783454527259301e+00 9.167791615474473e+03 + 165640 1.078302801599700e+00 -6.095078609793026e+00 -5.955873158699093e+00 3.177685714815525e+00 4.977024956970819e+00 9.082071313609280e+03 + 165660 9.311821229559124e-01 -5.872082565210619e+00 -6.010247587926930e+00 4.401036049932481e+00 4.607671108527259e+00 9.248523414495688e+03 + 165680 1.062579220576476e+00 -6.062358379254521e+00 -6.005014808535655e+00 3.330944881450582e+00 4.660220538407195e+00 9.232457077471350e+03 + 165700 1.056556873137881e+00 -6.051107923708167e+00 -6.022292625386584e+00 3.406200374179809e+00 4.571662276295347e+00 9.285641918822525e+03 + 165720 1.017147101764566e+00 -5.995754872314279e+00 -5.986917525336507e+00 3.734607246423048e+00 4.785352660344440e+00 9.176915713326454e+03 + 165740 9.154976146008741e-01 -5.849176589367297e+00 -5.992772070926649e+00 4.456924663485013e+00 4.632377187042262e+00 9.194835858946353e+03 + 165760 9.994773796181111e-01 -5.975322884928745e+00 -5.954680514831860e+00 3.802068202129567e+00 4.920599885622325e+00 9.078437063705951e+03 + 165780 1.025981430479790e+00 -6.014688574115288e+00 -5.986742110563571e+00 3.581903365967659e+00 4.742376284382876e+00 9.176373960366840e+03 + 165800 1.040793690792459e+00 -6.037164619001456e+00 -5.997674810553200e+00 3.465291107940094e+00 4.692047699078093e+00 9.209909844156758e+03 + 165820 1.028193796465471e+00 -6.021265251375336e+00 -6.002239333211423e+00 3.582886274775400e+00 4.692136041123907e+00 9.223905635943906e+03 + 165840 9.671673989090588e-01 -5.936378308552662e+00 -5.990152221977931e+00 4.033979973435962e+00 4.725201841061856e+00 9.186836173859780e+03 + 165860 1.016879579298759e+00 -6.015934692656344e+00 -5.979798755952325e+00 3.609186145655891e+00 4.816684286228492e+00 9.155129209536721e+03 + 165880 1.045847695708238e+00 -6.064474956963316e+00 -5.986080002468832e+00 3.387261563671946e+00 4.837417523959281e+00 9.174363202115013e+03 + 165900 9.840096485733572e-01 -5.980526574397962e+00 -6.012525239080682e+00 3.817919011668978e+00 4.634177727283443e+00 9.255534862722076e+03 + 165920 9.836662868989957e-01 -5.993755372664696e+00 -5.969842218126887e+00 3.724982345242907e+00 4.862295379147708e+00 9.124678526388039e+03 + 165940 9.376646757167715e-01 -5.938448252698278e+00 -5.930985424463248e+00 4.021063405800198e+00 5.063916120394680e+00 9.006367349024009e+03 + 165960 1.003719267699708e+00 -6.045209768493768e+00 -5.939359758519990e+00 3.439377934603434e+00 5.047185072108976e+00 9.031819383049238e+03 + 165980 9.676595887333380e-01 -5.996591003719549e+00 -6.001336576957520e+00 3.723151808293415e+00 4.695901992385897e+00 9.221154791038958e+03 + 166000 1.021366316972018e+00 -6.082467577148750e+00 -6.003992326809521e+00 3.229732615779352e+00 4.680349647232950e+00 9.229308378019481e+03 + 166020 9.440426354839239e-01 -5.977383035533467e+00 -6.019238950417140e+00 3.790183026642150e+00 4.549839886198208e+00 9.276200143157472e+03 + 166040 9.751121998279721e-01 -6.031536130121589e+00 -5.991020218366491e+00 3.533733545618579e+00 4.766382180733433e+00 9.189493859998036e+03 + 166060 9.649609600857295e-01 -6.019596152418438e+00 -5.993805589669060e+00 3.627872069775775e+00 4.775965472159387e+00 9.198049828115123e+03 + 166080 9.350322020480325e-01 -5.976007141489054e+00 -6.067549605675595e+00 3.814129630663037e+00 4.288478635153376e+00 9.425590718367283e+03 + 166100 9.912352340088673e-01 -6.059413109288780e+00 -6.037082652096245e+00 3.342639164059880e+00 4.470864104886497e+00 9.331270677846542e+03 + 166120 9.507049665548862e-01 -5.999048629952195e+00 -6.041236210851309e+00 3.689741999403311e+00 4.447494381373552e+00 9.344080585791826e+03 + 166140 9.819722596252993e-01 -6.043576922555983e+00 -6.004579298161347e+00 3.480617597250158e+00 4.704547991387032e+00 9.231114877500484e+03 + 166160 9.557712411997997e-01 -5.999369111723094e+00 -5.973979568266683e+00 3.706688377090788e+00 4.852479064636650e+00 9.137339074114507e+03 + 166180 1.003077320573980e+00 -6.057801007173517e+00 -5.964311998649931e+00 3.436887417319133e+00 4.973715771638879e+00 9.107813309499033e+03 + 166200 9.152244053688136e-01 -5.908978929244306e+00 -6.017054069704354e+00 4.122658528053699e+00 4.502074346958165e+00 9.269448511866913e+03 + 166220 9.714002374921845e-01 -5.967641067178317e+00 -6.001563904275963e+00 3.861004831247579e+00 4.666214651090817e+00 9.221831840107876e+03 + 166240 9.971245341694073e-01 -5.974991837373670e+00 -6.016655496592596e+00 3.841406129410745e+00 4.602166950745240e+00 9.268244341449330e+03 + 166260 1.051456546306953e+00 -6.026465305352705e+00 -5.968869464768817e+00 3.566897372991253e+00 4.897621602551460e+00 9.121744803038897e+03 + 166280 1.004488020071721e+00 -5.925882122745504e+00 -6.083361639638611e+00 4.094150598519088e+00 4.189878842642391e+00 9.474728525577404e+03 + 166300 9.842792119752980e-01 -5.871339428089427e+00 -6.069480596534211e+00 4.376974357391578e+00 4.239217105934907e+00 9.431564871169452e+03 + 166320 1.030207135606775e+00 -5.922576725769554e+00 -5.989827256061607e+00 4.114561309872214e+00 4.728398357949320e+00 9.185793698699012e+03 + 166340 1.063656322893622e+00 -5.958060562323180e+00 -5.942610165168730e+00 3.974204318523167e+00 5.062922889925245e+00 9.041646359999131e+03 + 166360 1.071397678600928e+00 -5.958258573659499e+00 -5.986942524807199e+00 3.863721868287424e+00 4.699014181970236e+00 9.176972899437131e+03 + 166380 1.097541656331303e+00 -5.989807609216938e+00 -5.992178885235467e+00 3.742659406972492e+00 4.729043173120321e+00 9.193050677276737e+03 + 166400 1.121987518250165e+00 -6.026945032909869e+00 -5.970920856527115e+00 3.556489521463527e+00 4.878189011966573e+00 9.127998598703743e+03 + 166420 1.038093856137929e+00 -5.912192707342580e+00 -6.002538626660161e+00 4.161345894572353e+00 4.642565644864971e+00 9.224840489406277e+03 + 166440 1.043058568671170e+00 -5.936622088711750e+00 -6.017635117648088e+00 4.010469484408535e+00 4.545280135530371e+00 9.271276504949272e+03 + 166460 1.042397914242696e+00 -5.965482401389670e+00 -6.050521041420506e+00 3.877607491651559e+00 4.389302460907484e+00 9.372788220511211e+03 + 166480 1.026712458978544e+00 -5.986581902237359e+00 -6.016849614825443e+00 3.741897054845425e+00 4.568095165251261e+00 9.268845068668041e+03 + 166500 1.030073489694778e+00 -6.044981602779193e+00 -5.996304298543407e+00 3.460624364526777e+00 4.740136978237145e+00 9.205716339442963e+03 + 166520 1.002267262515550e+00 -6.055665248128250e+00 -6.011079803452339e+00 3.351035604290656e+00 4.607052127195001e+00 9.251100767203128e+03 + 166540 9.592375394269405e-01 -6.033233902651163e+00 -5.950490857213076e+00 3.497809037074869e+00 4.972932408425262e+00 9.065707169327261e+03 + 166560 9.472764038207523e-01 -6.038211383848202e+00 -5.958668491001109e+00 3.526911076595662e+00 4.983658676546556e+00 9.090605348840838e+03 + 166580 9.270077687206861e-01 -6.019051814326366e+00 -5.950050050054109e+00 3.603569626881888e+00 4.999788435321699e+00 9.064331488556565e+03 + 166600 9.228004999978331e-01 -6.013671360073827e+00 -5.977781850685394e+00 3.564564131077238e+00 4.770647247869245e+00 9.148956876736127e+03 + 166620 9.685289094344968e-01 -6.074926482056385e+00 -5.971458416785779e+00 3.265825589064309e+00 4.859955231479478e+00 9.129638468680505e+03 + 166640 9.762603787504949e-01 -6.076111251644694e+00 -5.979794794979989e+00 3.255178013768556e+00 4.808242012860784e+00 9.155144633554966e+03 + 166660 1.019411900711306e+00 -6.127186351758633e+00 -5.916042015315389e+00 3.057790550030562e+00 5.270214004368135e+00 8.961096202900406e+03 + 166680 9.692385627129526e-01 -6.036882221095866e+00 -5.944396484792606e+00 3.499580141075626e+00 5.030647551050384e+00 9.047153373532828e+03 + 166700 9.141862075137208e-01 -5.935025342098744e+00 -6.034331232236426e+00 3.967617875059701e+00 4.397388086352304e+00 9.322700541313099e+03 + 166720 9.955375652140142e-01 -6.031958649147912e+00 -5.980999679462830e+00 3.511817739817498e+00 4.804432029624312e+00 9.158805744051988e+03 + 166740 9.974304841977606e-01 -6.008119636069985e+00 -6.010248397196195e+00 3.692433476967455e+00 4.680209801156035e+00 9.248524825898457e+03 + 166760 1.014849478741141e+00 -6.010245509209287e+00 -6.061228281768240e+00 3.584302821255048e+00 4.291551851662985e+00 9.405970151684685e+03 + 166780 1.116486067605308e+00 -6.142537936685952e+00 -6.008389928090300e+00 2.920718904131308e+00 4.691017528824783e+00 9.242844523710173e+03 + 166800 9.726967910680372e-01 -5.914687152553438e+00 -6.072939760129119e+00 4.171232737603592e+00 4.262521775392160e+00 9.442322836636364e+03 + 166820 1.021159149251269e+00 -5.977277267235523e+00 -6.031061574467302e+00 3.816795440882591e+00 4.507957625663070e+00 9.312648860731306e+03 + 166840 1.032641269512210e+00 -5.988898225387757e+00 -6.003084020282319e+00 3.762444657011272e+00 4.680987627482033e+00 9.226522254052457e+03 + 166860 1.035296046602321e+00 -5.990472795353280e+00 -5.972710721262479e+00 3.733542399200416e+00 4.835534977301874e+00 9.133455359394957e+03 + 166880 1.010769852092382e+00 -5.952499687129150e+00 -5.989172944022894e+00 3.964594425943198e+00 4.754010909691152e+00 9.183815733280160e+03 + 166900 1.025041371477794e+00 -5.975494767215718e+00 -5.951337652547778e+00 3.904908425522170e+00 5.043622316246894e+00 9.068231702300574e+03 + 166920 9.982603960559440e-01 -5.937353199110719e+00 -6.047248092926822e+00 3.944199734460505e+00 4.313166247988589e+00 9.362655713611073e+03 + 166940 1.038186110608346e+00 -6.000671641367780e+00 -6.011229584403312e+00 3.676776295503718e+00 4.616150952757289e+00 9.251574028540548e+03 + 166960 1.053805846686334e+00 -6.034809236768497e+00 -6.003875027399162e+00 3.499874733533840e+00 4.677503750785995e+00 9.228934532508389e+03 + 166980 1.021046552157900e+00 -6.007452666074796e+00 -5.958075905203686e+00 3.702218895373908e+00 4.985747897324869e+00 9.088780451363531e+03 + 167000 1.058406708839200e+00 -6.096007104866924e+00 -5.936283977704912e+00 3.213383007150781e+00 5.130537920389100e+00 9.022493762529441e+03 + 167020 9.631677268727427e-01 -5.994995669486617e+00 -6.012774544480179e+00 3.682705195888725e+00 4.580616144403674e+00 9.256319593386395e+03 + 167040 1.025524366499356e+00 -6.133849350657677e+00 -6.014520316725015e+00 2.947590070846558e+00 4.632795849796224e+00 9.261700125021669e+03 + 167060 9.516034436000417e-01 -6.067584461345720e+00 -6.031384134722598e+00 3.294033303253995e+00 4.501901180706399e+00 9.313655522175761e+03 + 167080 9.369818092597044e-01 -6.079162554677797e+00 -5.965355963107049e+00 3.335535843350514e+00 4.989030903662877e+00 9.111013686531536e+03 + 167100 9.387693991862996e-01 -6.102566939777946e+00 -5.993747292175476e+00 3.136142104779732e+00 4.761001361099158e+00 9.197852729205526e+03 + 167120 9.762403772719263e-01 -6.169835888702647e+00 -5.953476235616520e+00 2.819866626558796e+00 5.062237236127438e+00 9.074790791055389e+03 + 167140 9.574426153331849e-01 -6.144455533093416e+00 -5.959471085236828e+00 2.942496597572488e+00 5.004705923415806e+00 9.093057633339347e+03 + 167160 8.452208070026784e-01 -5.971302993692965e+00 -6.029120632117292e+00 3.836383768446855e+00 4.504385941363742e+00 9.306655335361873e+03 + 167180 9.535842207485695e-01 -6.117304545157376e+00 -5.965657711521173e+00 3.065158750668746e+00 4.935938336679490e+00 9.111940371713146e+03 + 167200 9.585362162398349e-01 -6.102063705455821e+00 -5.975129860558967e+00 3.130370999535465e+00 4.859244779882214e+00 9.140870279055116e+03 + 167220 9.402637813005357e-01 -6.045862280474664e+00 -5.990854421503414e+00 3.445122223785953e+00 4.760985862437529e+00 9.189004042558718e+03 + 167240 8.999909555870045e-01 -5.952940066288223e+00 -6.017175143322012e+00 3.963132074831851e+00 4.594284322157789e+00 9.269837289146264e+03 + 167260 1.013687076921721e+00 -6.087656353722195e+00 -5.954547218874366e+00 3.244767600092489e+00 5.009100850960769e+00 9.078032959650005e+03 + 167280 9.998027532802858e-01 -6.035106525257122e+00 -5.969369665105679e+00 3.547843176442008e+00 4.925314400177822e+00 9.123244960390515e+03 + 167300 1.007914329766234e+00 -6.018987260135010e+00 -5.999330177143257e+00 3.617849083151666e+00 4.730723095614070e+00 9.215010904356996e+03 + 167320 1.011417681646572e+00 -6.004726918262120e+00 -6.025997927082499e+00 3.608721374586011e+00 4.486579950261421e+00 9.297046788001833e+03 + 167340 1.003446829367902e+00 -5.980070465071472e+00 -6.011936653972316e+00 3.809171141926820e+00 4.626190553981383e+00 9.253712767476109e+03 + 167360 9.903574759227143e-01 -5.950768614455566e+00 -6.052274018039512e+00 3.904944832716994e+00 4.322085097427538e+00 9.378197493337326e+03 + 167380 1.010566060085903e+00 -5.973195831889321e+00 -6.017103920727397e+00 3.801283325499440e+00 4.549156284636419e+00 9.269618602832132e+03 + 167400 9.774959730960828e-01 -5.921148474866386e+00 -6.002474510068009e+00 4.128252878710813e+00 4.661266199419825e+00 9.224636344063545e+03 + 167420 1.048433102258171e+00 -6.024653560956384e+00 -5.972886282625062e+00 3.592090975599926e+00 4.889346698738814e+00 9.133970276666967e+03 + 167440 1.056492335413519e+00 -6.034803065721652e+00 -5.996897033842286e+00 3.532379288666400e+00 4.750041589657197e+00 9.207504246120096e+03 + 167460 9.526873521994242e-01 -5.882505268868856e+00 -6.046656464811663e+00 4.317864062436735e+00 4.375282493017663e+00 9.360784036133218e+03 + 167480 9.505860375494879e-01 -5.881276836129248e+00 -5.993896826470424e+00 4.352946850190014e+00 4.706265437763800e+00 9.198313576162969e+03 + 167500 1.007152896698728e+00 -5.966713902806125e+00 -6.010089472973124e+00 3.884763490087220e+00 4.635694253840521e+00 9.248060470260079e+03 + 167520 1.057109516430551e+00 -6.044631923699367e+00 -6.029809928152686e+00 3.444728922808973e+00 4.529839114934411e+00 9.308803046954694e+03 + 167540 1.015474586731282e+00 -5.993295151067107e+00 -6.056419809972598e+00 3.741122389383079e+00 4.378650829438352e+00 9.391061344039941e+03 + 167560 1.103267502638440e+00 -6.138543478410689e+00 -5.968111758702340e+00 2.983487948368567e+00 4.962133257157295e+00 9.119428193562093e+03 + 167580 1.011987943917144e+00 -6.024388011722388e+00 -6.006618311686128e+00 3.593598372312561e+00 4.695634739772963e+00 9.237382299443971e+03 + 167600 1.020786890643810e+00 -6.068583823415978e+00 -5.996521771877996e+00 3.346971566202682e+00 4.760763017700211e+00 9.206379033979807e+03 + 167620 8.999776465660398e-01 -5.927674270559208e+00 -5.999975762190043e+00 4.097070472115647e+00 4.681904118551723e+00 9.216960410620663e+03 + 167640 9.786029393546344e-01 -6.083334419564388e+00 -5.983659550959781e+00 3.212855431234266e+00 4.785203951397988e+00 9.166949701106143e+03 + 167660 9.488041937863054e-01 -6.077434899922848e+00 -5.980856045509015e+00 3.262791056525370e+00 4.817361784099014e+00 9.158348848080563e+03 + 167680 8.871397692184833e-01 -6.014336746801713e+00 -5.959679735002371e+00 3.627789458318813e+00 4.941638478215874e+00 9.093675271537535e+03 + 167700 9.141447462819622e-01 -6.071520657001473e+00 -5.976921396863204e+00 3.319198288999456e+00 4.862401879901592e+00 9.146343176722963e+03 + 167720 9.671712224205127e-01 -6.158148273061348e+00 -5.988713835169087e+00 2.804674118247454e+00 4.777592880519349e+00 9.182475964308078e+03 + 167740 9.130737767028931e-01 -6.078627818928707e+00 -6.020615104540776e+00 3.287285658987119e+00 4.620403642441155e+00 9.280455902872303e+03 + 167760 9.320927445643246e-01 -6.102086887639029e+00 -5.974653966135145e+00 3.155649319668052e+00 4.887388875124222e+00 9.139420861768966e+03 + 167780 9.664646798899579e-01 -6.140207428405105e+00 -5.954241852029272e+00 2.938077136890087e+00 5.005920254520065e+00 9.077115456775997e+03 + 167800 8.905025489346398e-01 -6.004700266883127e+00 -6.006646736190191e+00 3.662914725014806e+00 4.651737797038487e+00 9.237477529598349e+03 + 167820 9.671711076156827e-01 -6.086194227380280e+00 -5.963895725388481e+00 3.249074669388143e+00 4.951331593457073e+00 9.106557671901859e+03 + 167840 9.558555888222361e-01 -6.031571023274830e+00 -5.984322812136201e+00 3.548695828035738e+00 4.820002368030786e+00 9.168996103421545e+03 + 167860 9.941312425570010e-01 -6.047917239170769e+00 -6.029744249511456e+00 3.453411552599492e+00 4.557763671484326e+00 9.308580789661381e+03 + 167880 1.047614694329666e+00 -6.097049477962578e+00 -6.018168012326317e+00 3.158363218168950e+00 4.611312800719716e+00 9.272914644139581e+03 + 167900 9.595174620958807e-01 -5.948446997521113e+00 -6.028974482131387e+00 4.037311392084650e+00 4.574910113864489e+00 9.306211059498162e+03 + 167920 1.038409102290184e+00 -6.053425900963605e+00 -6.016100138807943e+00 3.441980861536831e+00 4.656311163977666e+00 9.266559779257997e+03 + 167940 9.962512785341822e-01 -5.985124061638791e+00 -6.033148323377055e+00 3.784261858671432e+00 4.508499116039836e+00 9.319109479660707e+03 + 167960 1.018469306023284e+00 -6.015143995841250e+00 -6.027995037155034e+00 3.616134726292700e+00 4.542342058376736e+00 9.303157278189256e+03 + 167980 1.049402970640187e+00 -6.060302199423786e+00 -5.992139241841528e+00 3.436971627707801e+00 4.828373878328723e+00 9.192947828240067e+03 + 168000 9.810102854473706e-01 -5.959454075944157e+00 -6.001272661122109e+00 3.971674009441736e+00 4.731545221944793e+00 9.220964176139823e+03 + 168020 1.027339122616754e+00 -6.028270509025845e+00 -6.010649510898904e+00 3.508332426604620e+00 4.609514924690163e+00 9.249773796119012e+03 + 168040 1.034033703170494e+00 -6.040498727702604e+00 -6.009356623121044e+00 3.467739382983012e+00 4.646562166715440e+00 9.245791153997341e+03 + 168060 9.520555741662647e-01 -5.923569241307943e+00 -5.988082677962063e+00 4.107520246933445e+00 4.737074110243433e+00 9.180511942955938e+03 + 168080 1.016959251833817e+00 -6.023453010255251e+00 -6.015697184080325e+00 3.580621352052153e+00 4.625156506158796e+00 9.265283188786789e+03 + 168100 9.984689731714895e-01 -5.998755417719217e+00 -6.055864365979149e+00 3.623059074325277e+00 4.295130655835569e+00 9.389328111051282e+03 + 168120 9.757081330891263e-01 -5.970650392196534e+00 -6.008033443939251e+00 3.861285452328307e+00 4.646626184213067e+00 9.241711358461636e+03 + 168140 9.861241669275939e-01 -5.991287377986544e+00 -6.007568997474019e+00 3.671226416002647e+00 4.577734837333092e+00 9.240297505670715e+03 + 168160 9.778128663578285e-01 -5.983571235197211e+00 -6.003639025888869e+00 3.784273120176002e+00 4.669040760543927e+00 9.228210706856087e+03 + 168180 1.044519331894726e+00 -6.088520745503303e+00 -5.956292894847333e+00 3.259283094860483e+00 5.018555875520824e+00 9.083350055795743e+03 + 168200 9.377800452558145e-01 -5.935408606860237e+00 -6.003015630216781e+00 4.077871895754400e+00 4.689661905488074e+00 9.226293974903292e+03 + 168220 1.072530314689263e+00 -6.138867244651243e+00 -5.953603597436825e+00 2.954670599197508e+00 5.018483130959449e+00 9.075174345837298e+03 + 168240 9.808247169928299e-01 -6.006585189957734e+00 -6.001640716948886e+00 3.660879879451366e+00 4.689271808622896e+00 9.222079349980893e+03 + 168260 1.000376286024474e+00 -6.037847122274918e+00 -6.010104851547267e+00 3.520947280061504e+00 4.680247691682200e+00 9.248092504845697e+03 + 168280 1.010439001539138e+00 -6.055742097090139e+00 -6.009041819850434e+00 3.398951912358957e+00 4.667112131113891e+00 9.244812776782532e+03 + 168300 1.042353503862047e+00 -6.104719885806098e+00 -5.997880846171707e+00 3.109765936572489e+00 4.723252235441109e+00 9.210564947470917e+03 + 168320 9.935891748776303e-01 -6.035610177520040e+00 -5.990057732488337e+00 3.498544185900603e+00 4.760113374490726e+00 9.186561152285543e+03 + 168340 9.611495047384812e-01 -5.988846742589476e+00 -5.983136582137884e+00 3.735327609300682e+00 4.768116234258200e+00 9.165348258366777e+03 + 168360 9.707427382250238e-01 -5.999500290035220e+00 -6.006961493859886e+00 3.676198481923273e+00 4.633355094944481e+00 9.238438804099200e+03 + 168380 1.042075067849303e+00 -6.098648417545730e+00 -5.991809276489709e+00 3.142750414753324e+00 4.756237296000641e+00 9.191949974342535e+03 + 168400 9.802296402726708e-01 -5.999549474264470e+00 -6.035658282494889e+00 3.670165180356594e+00 4.462822815677519e+00 9.326851174692405e+03 + 168420 1.007137935107914e+00 -6.029918607969732e+00 -6.058748470091388e+00 3.506850541790652e+00 4.341305012081363e+00 9.398280787341233e+03 + 168440 9.789750800120962e-01 -5.978419048411698e+00 -6.040901308924353e+00 3.805216908241625e+00 4.446434099279401e+00 9.343057002513098e+03 + 168460 9.631040551368775e-01 -5.944281233465803e+00 -6.028174838415723e+00 3.989436173143411e+00 4.507706111027568e+00 9.303734860161732e+03 + 168480 9.970167376710625e-01 -5.980929738077193e+00 -6.006000165177396e+00 3.795835380595850e+00 4.651877108550428e+00 9.235481093744935e+03 + 168500 1.004185904761261e+00 -5.974531590324310e+00 -6.080890709891098e+00 3.782247089743209e+00 4.171516566170155e+00 9.467023569189076e+03 + 168520 1.013827236428084e+00 -5.973049311141013e+00 -6.012419485385690e+00 3.840984825903659e+00 4.614915192875946e+00 9.255221235073066e+03 + 168540 1.076859101202937e+00 -6.053186792390386e+00 -5.995586413061469e+00 3.418400539656923e+00 4.749150831393460e+00 9.203507131764953e+03 + 168560 1.043881651533439e+00 -5.992707235612097e+00 -5.996168097459625e+00 3.726689913047351e+00 4.706817108752205e+00 9.205279692437851e+03 + 168580 9.737186113369496e-01 -5.876932466512167e+00 -5.991104755771518e+00 4.338427004733473e+00 4.682832051701614e+00 9.189740656006938e+03 + 168600 1.094596503803888e+00 -6.042894973784376e+00 -5.970877966879069e+00 3.427454269791486e+00 4.840987068037563e+00 9.127860232527708e+03 + 168620 1.033729774112933e+00 -5.941687711327800e+00 -5.974789717065383e+00 4.019444731563217e+00 4.829367892099186e+00 9.139822181709802e+03 + 168640 1.050341511893878e+00 -5.960504392549590e+00 -6.003942140054882e+00 3.839880874428225e+00 4.590454606283140e+00 9.229131651380329e+03 + 168660 1.007979209796018e+00 -5.896037139427145e+00 -5.973113176423912e+00 4.250819036897588e+00 4.808236504983981e+00 9.134662441056038e+03 + 168680 1.055534606159882e+00 -5.965412039415228e+00 -5.991132780259292e+00 3.833686406117894e+00 4.685993931919493e+00 9.189846381055224e+03 + 168700 1.017491393242823e+00 -5.914795220899256e+00 -5.983688675467978e+00 4.135292024947770e+00 4.739695147586528e+00 9.167016774283409e+03 + 168720 9.929851922165435e-01 -5.888202690553465e+00 -6.029376041529388e+00 4.256356292265606e+00 4.445717064456397e+00 9.307439504389782e+03 + 168740 1.041436389252518e+00 -5.976004549909236e+00 -6.020341615956690e+00 3.776569617870068e+00 4.521979323486788e+00 9.279594800672634e+03 + 168760 1.057589580365572e+00 -6.026361774466510e+00 -6.006984956455374e+00 3.546126247343759e+00 4.657390934916603e+00 9.238515712228700e+03 + 168780 9.315622772572537e-01 -5.875895303441302e+00 -6.037901775604793e+00 4.382418388768011e+00 4.452152155184701e+00 9.333740528929004e+03 + 168800 1.022258214850825e+00 -6.048001483303411e+00 -5.983452342384318e+00 3.395455104104973e+00 4.766106260209681e+00 9.166319157999251e+03 + 168820 1.011169067048232e+00 -6.067326144909360e+00 -5.959810764013612e+00 3.339739661489530e+00 4.957109616544337e+00 9.094099565584142e+03 + 168840 1.025020236976436e+00 -6.117665487057854e+00 -5.973190723675447e+00 3.121478401817856e+00 4.951074850557013e+00 9.134927349190359e+03 + 168860 9.463644152986400e-01 -6.025476332915616e+00 -6.008009633252114e+00 3.518262851117608e+00 4.618559343548475e+00 9.241654430254257e+03 + 168880 9.334698927256949e-01 -6.023383396928434e+00 -5.985452456730509e+00 3.566078145444812e+00 4.783883473855324e+00 9.172436467963322e+03 + 168900 9.510709456428174e-01 -6.060016525786116e+00 -5.997483369874761e+00 3.361660532797660e+00 4.720735591015265e+00 9.209320555277578e+03 + 168920 9.730250911305984e-01 -6.097095521270990e+00 -5.977041073949358e+00 3.158828303504729e+00 4.848199518391223e+00 9.146695280216542e+03 + 168940 9.558141948268647e-01 -6.070433359706711e+00 -5.924860591364033e+00 3.365261151523176e+00 5.201162514659930e+00 8.987807619985155e+03 + 168960 9.258467656357104e-01 -6.016408193529506e+00 -5.966268312549667e+00 3.620941408309057e+00 4.908852364016791e+00 9.113779585905784e+03 + 168980 9.841433380522656e-01 -6.085575134652720e+00 -5.988611291840447e+00 3.297175115354938e+00 4.853956505889187e+00 9.182116048274267e+03 + 169000 8.978617716414307e-01 -5.936027897521306e+00 -6.034526833937395e+00 4.020281557852432e+00 4.454685422290102e+00 9.323360812508037e+03 + 169020 9.772038054029044e-01 -6.027909326832266e+00 -5.977939674347870e+00 3.567197332494232e+00 4.854130809838366e+00 9.149454308838647e+03 + 169040 1.021951532861171e+00 -6.064897671267945e+00 -5.978235666492353e+00 3.358109575201783e+00 4.855736217525131e+00 9.150343781253187e+03 + 169060 1.027576518727818e+00 -6.039430666740722e+00 -6.038217903364465e+00 3.466189915985461e+00 4.473153790966458e+00 9.334751237827581e+03 + 169080 9.936332127660447e-01 -5.960300019132356e+00 -6.007500849921213e+00 3.888822860662688e+00 4.617788385968119e+00 9.240081895516532e+03 + 169100 1.008692332085153e+00 -5.958893362928133e+00 -5.972862347851516e+00 3.958697756062315e+00 4.878485682938816e+00 9.133933559378087e+03 + 169120 1.065751004338330e+00 -6.026793979216103e+00 -5.992995966686865e+00 3.548386346339673e+00 4.742459764508095e+00 9.195553317278525e+03 + 169140 9.637628816064123e-01 -5.865746658181116e+00 -6.016361843763390e+00 4.409256881206532e+00 4.544401177968477e+00 9.267298699769202e+03 + 169160 1.027750194272457e+00 -5.954994367432889e+00 -5.976955404581854e+00 3.902922321199174e+00 4.776818647430296e+00 9.146435278467725e+03 + 169180 1.128221251554644e+00 -6.101370439026750e+00 -5.965054609424826e+00 3.140868604709728e+00 4.923615193090438e+00 9.110101371640070e+03 + 169200 1.037485058988604e+00 -5.970499850173887e+00 -5.994522205262080e+00 3.847419957191451e+00 4.709479876827610e+00 9.200239128053541e+03 + 169220 1.026562875976002e+00 -5.959905423906728e+00 -5.984367609292732e+00 3.939443560982471e+00 4.798977906985083e+00 9.169113652909171e+03 + 169240 1.022930598386316e+00 -5.961382394625726e+00 -6.014960333826480e+00 3.916507386401036e+00 4.608854568351015e+00 9.263028590828702e+03 + 169260 1.042237202648395e+00 -5.999814228241953e+00 -6.008424093610194e+00 3.704738004342276e+00 4.655298825025476e+00 9.242919865925160e+03 + 169280 1.005654422619085e+00 -5.957692906086175e+00 -5.976610996054559e+00 3.930174927904944e+00 4.821544327741522e+00 9.145374825744408e+03 + 169300 9.979623960856984e-01 -5.957912585152604e+00 -5.969106859230363e+00 3.998932413969210e+00 4.934653159906402e+00 9.122417324779897e+03 + 169320 9.838781255130404e-01 -5.944658283632568e+00 -6.012119863251195e+00 3.982506766202607e+00 4.595131936386737e+00 9.254252914936042e+03 + 169340 1.069551239447834e+00 -6.079052070554599e+00 -6.003008584182153e+00 3.232291238937528e+00 4.668944705379598e+00 9.226297176781885e+03 + 169360 1.019714566427577e+00 -6.017843870035239e+00 -5.988410119814670e+00 3.697530376212716e+00 4.866543524837349e+00 9.181503408217062e+03 + 169380 1.077089134624681e+00 -6.119744161902767e+00 -5.973935150311946e+00 3.057553216642677e+00 4.894811125068795e+00 9.137221788073928e+03 + 169400 9.577590763724352e-01 -5.959558895049918e+00 -6.005931164278123e+00 3.870048780070473e+00 4.603772034076651e+00 9.235263983211778e+03 + 169420 9.546099549913467e-01 -5.972970617552560e+00 -5.989378003475453e+00 3.843704376425677e+00 4.749490627421661e+00 9.184445871356631e+03 + 169440 9.672922474783208e-01 -6.005900824195700e+00 -5.971360899209590e+00 3.633824356255846e+00 4.832157950562207e+00 9.129318504588613e+03 + 169460 9.354970541407890e-01 -5.970578711854884e+00 -6.000636329624539e+00 3.812118517886766e+00 4.639523025252087e+00 9.218981922734605e+03 + 169480 9.953037596837457e-01 -6.070517429784870e+00 -5.976620285869886e+00 3.303890140160079e+00 4.843062071055979e+00 9.145421165819649e+03 + 169500 9.564261778725953e-01 -6.022296634215536e+00 -6.031265855771065e+00 3.599158273446532e+00 4.547655615292133e+00 9.313299574930305e+03 + 169520 9.533002482044989e-01 -6.030344533034954e+00 -6.026914756366521e+00 3.546636195897941e+00 4.566330504284306e+00 9.299856867630253e+03 + 169540 9.218347217271218e-01 -5.998368876769133e+00 -6.025615504681825e+00 3.668216240239366e+00 4.511761886362640e+00 9.295853291617765e+03 + 169560 9.970559879286637e-01 -6.125110979886927e+00 -5.943626387791891e+00 3.067991154854963e+00 5.110103767314515e+00 9.044798171844053e+03 + 169580 9.550985687257757e-01 -6.073919422849407e+00 -5.984582365077939e+00 3.243198781281949e+00 4.756185991870728e+00 9.169784803673725e+03 + 169600 9.311614749439289e-01 -6.047510906199292e+00 -6.021211109473283e+00 3.457211866767605e+00 4.608229369448740e+00 9.282278198268095e+03 + 169620 9.019674994514773e-01 -6.009569091682552e+00 -6.017872915283037e+00 3.629534565919198e+00 4.581852725792661e+00 9.271998904310905e+03 + 169640 9.522675028193525e-01 -6.085120252150315e+00 -6.004010619599317e+00 3.259685877287144e+00 4.725429939070047e+00 9.229370620903808e+03 + 169660 9.264916004470432e-01 -6.040990000734582e+00 -6.037216595039303e+00 3.474287987107039e+00 4.495955466541976e+00 9.331662576823261e+03 + 169680 9.785989703150859e-01 -6.105472746408179e+00 -6.021695295434523e+00 3.186747334445674e+00 4.667810422455044e+00 9.283782332778919e+03 + 169700 9.870105024731289e-01 -6.098338022542421e+00 -6.002827259316935e+00 3.213789575474086e+00 4.762227158157670e+00 9.225746824955111e+03 + 169720 9.182129516544071e-01 -5.969224699657318e+00 -6.057334169015666e+00 3.835441249474334e+00 4.329503041522386e+00 9.393895922368396e+03 + 169740 9.974687210385852e-01 -6.055082459020586e+00 -6.020458804828923e+00 3.431463891969735e+00 4.630278272331433e+00 9.279961816751680e+03 + 169760 1.021385387971490e+00 -6.056482306478014e+00 -6.006646682111493e+00 3.401112389342596e+00 4.687276256493101e+00 9.237479916116761e+03 + 169780 1.005925873913511e+00 -6.000150629030334e+00 -6.039839651959369e+00 3.692585628624745e+00 4.464685117109781e+00 9.339754958972273e+03 + 169800 1.002885685681158e+00 -5.966996381172388e+00 -6.016671378939895e+00 3.832653335258377e+00 4.547411810896292e+00 9.268309010774403e+03 + 169820 1.039585889759940e+00 -5.997117770090741e+00 -5.978297105817553e+00 3.788923728624128e+00 4.896994895369154e+00 9.150511463674646e+03 + 169840 1.017496821679604e+00 -5.943228357664990e+00 -6.010509730835819e+00 4.020314623350593e+00 4.633974566844847e+00 9.249331137594687e+03 + 169860 1.025020312609788e+00 -5.939911742171553e+00 -5.999544790537533e+00 4.038334767737267e+00 4.695912575835396e+00 9.215648442947095e+03 + 169880 1.011619743944109e+00 -5.909615454877444e+00 -6.045946159889828e+00 4.140251660776395e+00 4.357419655486868e+00 9.358641939391624e+03 + 169900 1.067311876306702e+00 -5.987281956574188e+00 -6.022711241456910e+00 3.765956892797317e+00 4.562516456336613e+00 9.286894571414674e+03 + 169920 1.071050380397811e+00 -5.993606732514963e+00 -5.988683256433588e+00 3.737303577495812e+00 4.765574939060531e+00 9.182334570723609e+03 + 169940 1.018181681648257e+00 -5.919219557523519e+00 -6.028111609099024e+00 4.112787327412216e+00 4.487512316275146e+00 9.303567603645566e+03 + 169960 1.013170091625445e+00 -5.924718278791855e+00 -6.022180148726331e+00 4.124126533580051e+00 4.564485394240660e+00 9.285263092257750e+03 + 169980 1.024407579775419e+00 -5.958604125805228e+00 -6.021702508177075e+00 3.915670025512649e+00 4.553349349490384e+00 9.283781335469925e+03 + 170000 1.018221192148465e+00 -5.974353792418123e+00 -5.992193393705416e+00 3.875008256311948e+00 4.772570505050933e+00 9.193095161753770e+03 + 170020 1.042351238870336e+00 -6.040995409880978e+00 -5.967316672444354e+00 3.539749464400567e+00 4.962824176509429e+00 9.116976629634582e+03 + 170040 9.914209667031570e-01 -6.000229857265493e+00 -6.015963302892558e+00 3.763617544290198e+00 4.673273664756747e+00 9.266097844712569e+03 + 170060 1.034733042854603e+00 -6.108384503132043e+00 -5.992481709315068e+00 3.121527774890239e+00 4.787059552886689e+00 9.193993903196844e+03 + 170080 9.397373283605081e-01 -6.008796477040999e+00 -6.008299563487647e+00 3.670538985807122e+00 4.673392340327594e+00 9.242554854003269e+03 + 170100 9.352200444151164e-01 -6.038648732118046e+00 -6.020744318654856e+00 3.484430594380992e+00 4.587240507185653e+00 9.280833482084103e+03 + 170120 9.726439827333372e-01 -6.119245213331881e+00 -5.979838494630489e+00 3.043759069244617e+00 4.844254021148005e+00 9.155249791550972e+03 + 170140 9.365000991102005e-01 -6.077795023780181e+00 -5.953330799722764e+00 3.286489709675720e+00 5.001182544989835e+00 9.074341722270015e+03 + 170160 9.212522219931480e-01 -6.055304792727600e+00 -6.004308962263983e+00 3.394383719948365e+00 4.687209670049709e+00 9.230267798148687e+03 + 170180 9.505445827871878e-01 -6.094214281864375e+00 -5.989592201276027e+00 3.204766873049646e+00 4.805523050002586e+00 9.185130020262563e+03 + 170200 9.475438158188727e-01 -6.082536845979496e+00 -5.978685669002435e+00 3.255276816197649e+00 4.851606345317627e+00 9.151715745272320e+03 + 170220 9.365147047407512e-01 -6.054555728385830e+00 -5.972135302775057e+00 3.386753793811953e+00 4.860024632188656e+00 9.131707405131336e+03 + 170240 8.520528527270319e-01 -5.912648696059914e+00 -6.036098843721047e+00 4.138482661585984e+00 4.429612809867154e+00 9.328167936163900e+03 + 170260 9.655707814947831e-01 -6.063383800585354e+00 -5.973893656488170e+00 3.308452200066950e+00 4.822318456028022e+00 9.137059108571249e+03 + 170280 9.658195758693514e-01 -6.042798930721443e+00 -5.996895059592011e+00 3.459088733852861e+00 4.722675865479163e+00 9.207521676412576e+03 + 170300 9.655323730554030e-01 -6.022222176450374e+00 -5.992159985702391e+00 3.617594932778368e+00 4.790216684162269e+00 9.192993655791328e+03 + 170320 9.969409238888579e-01 -6.047682970368264e+00 -6.026712116822573e+00 3.407681285848283e+00 4.528099172136741e+00 9.299238123761106e+03 + 170340 1.056188440360386e+00 -6.115237168691078e+00 -6.024364968501036e+00 3.001026442965414e+00 4.522828678884165e+00 9.292035398565024e+03 + 170360 9.417937044665678e-01 -5.930126822977082e+00 -6.037268202716104e+00 4.086599967621773e+00 4.471377585085380e+00 9.331800989362053e+03 + 170380 1.051925507588887e+00 -6.079820776615825e+00 -5.984995621274686e+00 3.202561953040747e+00 4.747062669154930e+00 9.171054398337639e+03 + 170400 9.652766409689445e-01 -5.936211614938637e+00 -6.003397019223716e+00 4.008972473514619e+00 4.623183485201980e+00 9.227466927209005e+03 + 170420 1.001022974229388e+00 -5.975566925739768e+00 -5.969215429048081e+00 3.832364615754913e+00 4.868835892649520e+00 9.122764755413333e+03 + 170440 1.044591770065379e+00 -6.025616577307121e+00 -5.980008715900333e+00 3.584136800093449e+00 4.846024198084964e+00 9.155758362128547e+03 + 170460 1.039327592966997e+00 -6.004824447409662e+00 -6.027695085848128e+00 3.641528299341432e+00 4.510201554207904e+00 9.302222086343778e+03 + 170480 1.083905516160292e+00 -6.059933331954823e+00 -5.986993198291197e+00 3.352879390417891e+00 4.771712925363636e+00 9.177179313635452e+03 + 170500 1.040192586591136e+00 -5.989210795734403e+00 -6.003708880742542e+00 3.726949239355794e+00 4.643698991667658e+00 9.228430037821292e+03 + 170520 1.009668855808574e+00 -5.941197257203990e+00 -5.991555922496095e+00 4.078132853750395e+00 4.788965604664853e+00 9.191114581704445e+03 + 170540 9.794286743542329e-01 -5.893361148285857e+00 -6.028724292342002e+00 4.220531656966072e+00 4.443255536416843e+00 9.305427561850074e+03 + 170560 9.683814571543250e-01 -5.876273132851452e+00 -5.956318728816906e+00 4.328514568905150e+00 4.868880369855570e+00 9.083458697188480e+03 + 170580 1.041584915052905e+00 -5.986711679326891e+00 -5.994869938065093e+00 3.803110961162459e+00 4.756264977001248e+00 9.201265125865752e+03 + 170600 1.000801476284196e+00 -5.930760088746859e+00 -6.033649264170018e+00 4.060299604464596e+00 4.469494037136382e+00 9.320627320544390e+03 + 170620 1.034878622800377e+00 -5.993368645355741e+00 -5.998714396326448e+00 3.702534832039707e+00 4.671838702713617e+00 9.213082586816368e+03 + 170640 1.018440253400480e+00 -5.988772905030628e+00 -5.997579079468695e+00 3.735111911505739e+00 4.684545495131271e+00 9.209601416923637e+03 + 170660 1.003222454235318e+00 -5.993249722684387e+00 -5.992579331378779e+00 3.726248424739012e+00 4.730097915358535e+00 9.194272502888114e+03 + 170680 9.961471764107238e-01 -6.014585870520928e+00 -5.976859986420358e+00 3.620276912922983e+00 4.836904777490152e+00 9.146143205257018e+03 + 170700 9.927600260838007e-01 -6.042574584515392e+00 -5.973265898090660e+00 3.456337300682211e+00 4.854318503617582e+00 9.135182543616163e+03 + 170720 9.652652722411914e-01 -6.032711425074404e+00 -5.985171522998706e+00 3.524352331372965e+00 4.797333805867694e+00 9.171596569254334e+03 + 170740 9.260347572933402e-01 -5.999983936473900e+00 -5.984081319808709e+00 3.690953964378742e+00 4.782269250192242e+00 9.168234199792883e+03 + 170760 9.385566099388128e-01 -6.038227980073770e+00 -5.997435810930737e+00 3.453983154860438e+00 4.688218102647502e+00 9.209182772539596e+03 + 170780 1.008800387357944e+00 -6.155627896394275e+00 -5.978586685943808e+00 2.878235196751189e+00 4.894833224196544e+00 9.151445606785259e+03 + 170800 9.339674148239079e-01 -6.052114016151570e+00 -6.022707390301278e+00 3.432626475263452e+00 4.601483871556477e+00 9.286887343452872e+03 + 170820 9.026841480509497e-01 -6.008609767442591e+00 -6.016128722704627e+00 3.615436672391678e+00 4.572261667722504e+00 9.266636552998798e+03 + 170840 9.614351384338152e-01 -6.093136964397873e+00 -5.956578103927869e+00 3.211300276043321e+00 4.995442385277443e+00 9.084248488319894e+03 + 170860 9.494609892774311e-01 -6.064744278935260e+00 -5.989757627916260e+00 3.332614604343507e+00 4.763199558641342e+00 9.185644572006644e+03 + 170880 9.758723107783824e-01 -6.086596242950184e+00 -5.963794901251054e+00 3.181849094124565e+00 4.886993401607175e+00 9.106245891304350e+03 + 170900 9.443564440876259e-01 -6.013023523779257e+00 -5.991066015571589e+00 3.595247305250703e+00 4.721330715292543e+00 9.189636401065081e+03 + 170920 9.979735738741532e-01 -6.057433059651650e+00 -5.998401222332658e+00 3.359855507634828e+00 4.698825452667784e+00 9.212152075969656e+03 + 170940 1.021561085619873e+00 -6.052757243599248e+00 -6.034398194398078e+00 3.406388056103865e+00 4.511808557670667e+00 9.322956882158285e+03 + 170960 9.910188057034205e-01 -5.970757000806626e+00 -6.028199268858287e+00 3.814860649949634e+00 4.485018257634742e+00 9.303807957927480e+03 + 170980 1.014363910710538e+00 -5.977264986747066e+00 -5.978052909270562e+00 3.859526915253322e+00 4.855002542192791e+00 9.149782643402903e+03 + 171000 1.084497722298993e+00 -6.058373537128502e+00 -5.968757823358532e+00 3.395168191396990e+00 4.909755487851051e+00 9.121380774248420e+03 + 171020 9.276966639107868e-01 -5.810107943743019e+00 -6.012651724672794e+00 4.652525348393491e+00 4.489487614745926e+00 9.255870450664617e+03 + 171040 1.045145576062407e+00 -5.971755310255063e+00 -5.975066130884569e+00 3.863180548851889e+00 4.844169304449434e+00 9.140636691907986e+03 + 171060 1.029475837236159e+00 -5.939465731492257e+00 -6.008012805490893e+00 3.995523271580218e+00 4.601915365054635e+00 9.241665426773423e+03 + 171080 1.072865108081996e+00 -6.000119805814780e+00 -6.016181997813996e+00 3.660709544658617e+00 4.568477952582938e+00 9.266809198092127e+03 + 171100 1.034307016829046e+00 -5.947771556199718e+00 -6.043228510943781e+00 3.990405546480476e+00 4.442276940424062e+00 9.350232372443277e+03 + 171120 9.909806713831958e-01 -5.893630259803997e+00 -6.004482228143315e+00 4.268158226041095e+00 4.631629069550068e+00 9.230814562618483e+03 + 171140 1.095352219066863e+00 -6.058963998309231e+00 -6.034920213769887e+00 3.354800989796277e+00 4.492864121384822e+00 9.324546417283334e+03 + 171160 9.361818597836059e-01 -5.837702006150529e+00 -6.074215658044883e+00 4.543063798914179e+00 4.184965809367458e+00 9.446259669591762e+03 + 171180 1.063586238159527e+00 -6.041074751836959e+00 -5.993216660738875e+00 3.475828806547899e+00 4.750637371648756e+00 9.196230146157655e+03 + 171200 9.223231871640362e-01 -5.845355329042358e+00 -6.038626205803416e+00 4.454368731478369e+00 4.344577448544857e+00 9.336025105847053e+03 + 171220 1.001657265629783e+00 -5.977460492764368e+00 -6.037023127197168e+00 3.810550129172141e+00 4.468532264971110e+00 9.331074181307609e+03 + 171240 1.005827042537463e+00 -5.999050556772287e+00 -6.021340289169739e+00 3.687283384524524e+00 4.559292291773414e+00 9.282681492792377e+03 + 171260 1.001987463006701e+00 -6.007314462474951e+00 -6.000273816219245e+00 3.656292073567790e+00 4.696720553904538e+00 9.217883179848644e+03 + 171280 9.391827089957673e-01 -5.925549663450369e+00 -6.027063977593748e+00 4.073394302550900e+00 4.490483401450274e+00 9.300322702355819e+03 + 171300 1.019392492956403e+00 -6.053581334082163e+00 -6.001521994477442e+00 3.365681927440092e+00 4.664614711607167e+00 9.221744281017252e+03 + 171320 1.043979530262219e+00 -6.097425445007454e+00 -6.000371943071759e+00 3.206867108916930e+00 4.764163336012579e+00 9.218200644254624e+03 + 171340 9.669808066950646e-01 -5.989453513208580e+00 -6.011425453621453e+00 3.738455560082376e+00 4.612289278084866e+00 9.252138444819684e+03 + 171360 9.489642931133299e-01 -5.966098076171398e+00 -6.034651487722937e+00 3.841932536420052e+00 4.448288238684961e+00 9.323725841115664e+03 + 171380 9.937773520064063e-01 -6.034596647015252e+00 -5.987116854457822e+00 3.513693630166775e+00 4.786329946505689e+00 9.177552623595084e+03 + 171400 9.693534057665260e-01 -5.999670653650709e+00 -5.941421223222612e+00 3.736992166098672e+00 5.071469409687032e+00 9.038096113695467e+03 + 171420 9.554796697473289e-01 -5.974817086276644e+00 -5.984861273439644e+00 3.811510434577100e+00 4.753835157554215e+00 9.170617582354420e+03 + 171440 1.006728585824680e+00 -6.044963394225207e+00 -5.956203933333204e+00 3.458599687376750e+00 4.968270247300817e+00 9.083086999592480e+03 + 171460 9.952638910946333e-01 -6.022079869660653e+00 -5.993659030556267e+00 3.572420916997035e+00 4.735617773245061e+00 9.197578902818570e+03 + 171480 1.000897589531404e+00 -6.025654491205266e+00 -5.964523484370750e+00 3.529465204783151e+00 4.880488906019679e+00 9.108460581256915e+03 + 171500 8.851589681811243e-01 -5.847968305863181e+00 -6.038696579494841e+00 4.471370755269139e+00 4.376179492971192e+00 9.336175048552645e+03 + 171520 9.747771986418258e-01 -5.973323182732736e+00 -5.986960188578504e+00 3.820354647736007e+00 4.742048849849779e+00 9.177045450884305e+03 + 171540 1.024118150039167e+00 -6.039158840368815e+00 -5.987859842372965e+00 3.495607699408173e+00 4.790174484394631e+00 9.179826495095242e+03 + 171560 1.054708707629149e+00 -6.079628563944896e+00 -5.994265628718345e+00 3.319600567337748e+00 4.809767751280133e+00 9.199437620177328e+03 + 171580 9.654746301756072e-01 -5.944464419688822e+00 -6.015722557509570e+00 3.975020445735633e+00 4.565845191207707e+00 9.265375345004941e+03 + 171600 9.934451304520083e-01 -5.983428454092348e+00 -6.039299735468349e+00 3.763111637289891e+00 4.442290093576043e+00 9.338091574357446e+03 + 171620 1.017559659825727e+00 -6.017085151594062e+00 -5.992653914417639e+00 3.626361415854595e+00 4.766649360443346e+00 9.194515109745516e+03 + 171640 9.709030598019428e-01 -5.946862077441454e+00 -6.011799143925126e+00 3.975992419417954e+00 4.603113734690144e+00 9.253298900456324e+03 + 171660 1.025282394828877e+00 -6.026472431076947e+00 -6.003703376045156e+00 3.610320431112913e+00 4.741063868605333e+00 9.228398495997293e+03 + 171680 9.797543814871998e-01 -5.959089858204219e+00 -5.980995277290864e+00 3.957445529865331e+00 4.831661223617166e+00 9.158790095591123e+03 + 171700 9.879801297184002e-01 -5.969363242232961e+00 -5.976911486548956e+00 3.938516059477347e+00 4.895172872527871e+00 9.146281707245815e+03 + 171720 1.001725550943119e+00 -5.987246185676660e+00 -6.043439976764630e+00 3.656076930229333e+00 4.333403485841139e+00 9.350856420682028e+03 + 171740 1.007051566544903e+00 -5.994115571265025e+00 -5.971141406770496e+00 3.754958249862434e+00 4.886879457630489e+00 9.128675402733710e+03 + 171760 1.018446533448224e+00 -6.008468265866791e+00 -5.978347989306979e+00 3.690532377804710e+00 4.863487666908890e+00 9.150695006217993e+03 + 171780 1.002158495960799e+00 -5.978755835794822e+00 -6.039174383172543e+00 3.755089604884001e+00 4.408156956101141e+00 9.337707619621324e+03 + 171800 1.009484596766189e+00 -5.986760190431491e+00 -5.992087566815591e+00 3.816200457989901e+00 4.785609838383573e+00 9.192796906804604e+03 + 171820 1.041604118544639e+00 -6.032403206145791e+00 -6.002896833464178e+00 3.521867967333264e+00 4.691298125367497e+00 9.225953927108612e+03 + 171840 9.665822786040212e-01 -5.920381871429842e+00 -6.043708844495072e+00 4.088432370134125e+00 4.380269806006170e+00 9.351693299077364e+03 + 171860 1.074678360988256e+00 -6.080659785731807e+00 -5.981246488845114e+00 3.249144402998712e+00 4.819990937880080e+00 9.159573559695207e+03 + 171880 1.021758790337151e+00 -6.002998917291436e+00 -6.038845177180287e+00 3.664133224065047e+00 4.458298452592475e+00 9.336675552161771e+03 + 171900 9.773372821515389e-01 -5.943025881703281e+00 -6.001987395753183e+00 4.010165381458823e+00 4.671599243519475e+00 9.223153033009939e+03 + 171920 1.031542957852331e+00 -6.028838780742541e+00 -6.004602094285159e+00 3.521817174616015e+00 4.660987978869406e+00 9.231195388797376e+03 + 171940 9.931641978527259e-01 -5.981737343578180e+00 -6.025112956408787e+00 3.760827828149687e+00 4.511758346921954e+00 9.294312047528045e+03 + 171960 9.942910999199028e-01 -5.995904350195556e+00 -5.999471829507865e+00 3.752050717800490e+00 4.731565699523570e+00 9.215432487080032e+03 + 171980 9.763760373089337e-01 -5.982684865313786e+00 -6.024086023079970e+00 3.737813051981539e+00 4.500081197279654e+00 9.291146887632491e+03 + 172000 9.890078617169029e-01 -6.014780413382620e+00 -5.970289022350176e+00 3.656029403532166e+00 4.911505855860971e+00 9.126064556626347e+03 + 172020 1.030418325087919e+00 -6.089505935786843e+00 -6.008572171970718e+00 3.196709946469086e+00 4.661444142760746e+00 9.243373255725261e+03 + 172040 9.113729681880006e-01 -5.926264147339674e+00 -6.045669303285655e+00 4.059907602402332e+00 4.374264719072340e+00 9.357753761197173e+03 + 172060 1.037731908280993e+00 -6.127639944662689e+00 -5.943297243257048e+00 2.998114652903837e+00 5.056638971315880e+00 9.043819576115819e+03 + 172080 9.664889632182478e-01 -6.031891814831638e+00 -5.956363317556741e+00 3.505287301688137e+00 4.938983621037777e+00 9.083559367768732e+03 + 172100 9.675846243518632e-01 -6.039486628621668e+00 -5.981788502176136e+00 3.488376645873756e+00 4.819688216680213e+00 9.161235017877274e+03 + 172120 9.427911565687183e-01 -6.002596525330778e+00 -6.065851509203759e+00 3.635868782999956e+00 4.272648876924187e+00 9.420302608302583e+03 + 172140 1.025710259579387e+00 -6.124028208938828e+00 -5.995221513746751e+00 3.033499318125382e+00 4.773127294689953e+00 9.202414933250018e+03 + 172160 1.022930234879329e+00 -6.117667476990171e+00 -6.005436978973149e+00 3.064685001424672e+00 4.709129888651852e+00 9.233765814712531e+03 + 172180 9.528841140287684e-01 -6.010462711715466e+00 -6.008392079401310e+00 3.599722870796881e+00 4.611612761974078e+00 9.242849098932280e+03 + 172200 9.769086256639007e-01 -6.037469267969271e+00 -5.993920472892267e+00 3.540402981661931e+00 4.790466902148351e+00 9.198372194122510e+03 + 172220 1.001685117511323e+00 -6.057814855343692e+00 -6.007727948729677e+00 3.373897329674729e+00 4.661504098376156e+00 9.240784063165436e+03 + 172240 1.000293486810821e+00 -6.033765832241881e+00 -5.985063958971355e+00 3.541511843009716e+00 4.821165535919611e+00 9.171247080303594e+03 + 172260 1.029843233002278e+00 -6.050375412886610e+00 -5.931952273062092e+00 3.475083819945331e+00 5.155087814739376e+00 9.009317550731905e+03 + 172280 9.979083500795413e-01 -5.968938097493893e+00 -5.996681256075377e+00 3.900376482313927e+00 4.741070972499131e+00 9.206856415300068e+03 + 172300 9.910953191488213e-01 -5.920612380312593e+00 -6.039534535713416e+00 4.146052007954139e+00 4.463182588498543e+00 9.338811746995858e+03 + 172320 1.059253938255195e+00 -5.987092018009369e+00 -6.003790633122820e+00 3.793123860490346e+00 4.697237828406570e+00 9.228688296592190e+03 + 172340 1.048394965046214e+00 -5.943226468609465e+00 -6.037081333647786e+00 4.010430358619571e+00 4.471501199576102e+00 9.331212543504442e+03 + 172360 1.048798603325881e+00 -5.923953548004551e+00 -6.019785239773594e+00 4.132316830279241e+00 4.582036426235025e+00 9.277880432263342e+03 + 172380 1.054822752980198e+00 -5.921160533112129e+00 -6.040287114743693e+00 4.201034368739275e+00 4.516991102231910e+00 9.341122409992860e+03 + 172400 1.070624697258100e+00 -5.943701495588893e+00 -6.006700808958228e+00 4.022619710845968e+00 4.660867904367014e+00 9.237616575151951e+03 + 172420 1.087665722417053e+00 -5.973309647536586e+00 -5.990742047255759e+00 3.855704375234299e+00 4.755604838391663e+00 9.188625658294219e+03 + 172440 1.082671555508895e+00 -5.975098137206616e+00 -6.032851852051314e+00 3.835652335015956e+00 4.504021567019214e+00 9.318158082155564e+03 + 172460 1.075880443809336e+00 -5.984550528514778e+00 -6.016158023779798e+00 3.787897836809965e+00 4.606402707754134e+00 9.266728491515081e+03 + 172480 1.030377831704585e+00 -5.946548995702058e+00 -6.011534811357571e+00 4.005989054705988e+00 4.632830444689559e+00 9.252487485879567e+03 + 172500 1.009986612423348e+00 -5.949526728630444e+00 -6.017141988862014e+00 3.995566411707327e+00 4.607309124029947e+00 9.269747940604722e+03 + 172520 1.032006171283480e+00 -6.017425392705233e+00 -6.013504647391644e+00 3.628234371708197e+00 4.650747898032203e+00 9.258578016736792e+03 + 172540 1.045127023049643e+00 -6.075682116403290e+00 -6.004701169464201e+00 3.353530151080817e+00 4.761113732671108e+00 9.231503742012002e+03 + 172560 9.328167180436451e-01 -5.942895991482249e+00 -6.040270540398437e+00 3.993177521342875e+00 4.434037792803384e+00 9.341109408519034e+03 + 172580 9.569570424580628e-01 -6.001283495106502e+00 -6.029771398867808e+00 3.650117188354000e+00 4.486535236467725e+00 9.308641086014748e+03 + 172600 9.711383143553693e-01 -6.034969535257957e+00 -6.002105787817385e+00 3.525292281998686e+00 4.714001005450935e+00 9.223513315950806e+03 + 172620 9.695345062701345e-01 -6.037660094581866e+00 -5.981064015227295e+00 3.557403469660122e+00 4.882386915529040e+00 9.159005824058595e+03 + 172640 9.262001757590222e-01 -5.973060304432867e+00 -5.997804083077527e+00 3.883306133553282e+00 4.741223527488275e+00 9.210291180478478e+03 + 172660 9.807106669965060e-01 -6.049597162517309e+00 -5.981247828085527e+00 3.469973749691794e+00 4.862446205024409e+00 9.159565589861624e+03 + 172680 9.514318914662905e-01 -5.999393397720797e+00 -6.036095332866749e+00 3.733845237342295e+00 4.523097046128131e+00 9.328189204685377e+03 + 172700 9.539407440784161e-01 -5.995231582357144e+00 -6.022609409682798e+00 3.737461398108739e+00 4.580253676899749e+00 9.286606942001843e+03 + 172720 9.801825496110435e-01 -6.026928550237892e+00 -5.997009518303758e+00 3.577571027635955e+00 4.749370738956975e+00 9.207857850063427e+03 + 172740 9.858211385633077e-01 -6.024066985329942e+00 -5.997241331361455e+00 3.567562514191609e+00 4.721599570535195e+00 9.208577849712383e+03 + 172760 1.027614273873148e+00 -6.070526706382096e+00 -6.000133456637364e+00 3.331638996131673e+00 4.735847929486113e+00 9.217463963702086e+03 + 172780 9.924021303201925e-01 -6.003649369653463e+00 -6.017113068579690e+00 3.727382623388439e+00 4.650071980653369e+00 9.269652267904345e+03 + 172800 9.822262316195856e-01 -5.973445616491210e+00 -6.047312994501391e+00 3.866678748033224e+00 4.442520832558955e+00 9.362873375793612e+03 + 172820 1.045701315700432e+00 -6.051834337745269e+00 -6.010285318213351e+00 3.423894521653975e+00 4.662475421496242e+00 9.248659991004879e+03 + 172840 9.932735794916475e-01 -5.960201368732760e+00 -6.005699352140431e+00 3.975203653402160e+00 4.713947191885136e+00 9.234537887363775e+03 + 172860 9.767187191188476e-01 -5.921345331474637e+00 -6.019146440161713e+00 4.128508824574022e+00 4.566919723820175e+00 9.275910407278221e+03 + 172880 1.037488936465995e+00 -5.994567586924026e+00 -5.987900519717890e+00 3.830838451594528e+00 4.869121783217475e+00 9.179943528156775e+03 + 172900 1.034260541130848e+00 -5.972910243693983e+00 -6.038777378763229e+00 3.793055317253698e+00 4.414836034779875e+00 9.336484724653827e+03 + 172920 1.037315623599830e+00 -5.963630706909944e+00 -6.018265155122256e+00 3.893719876292875e+00 4.580000420004242e+00 9.273218014629445e+03 + 172940 1.055160987536114e+00 -5.978988893475173e+00 -5.987824119486614e+00 3.801986179482366e+00 4.751252944477866e+00 9.179687414965316e+03 + 172960 9.702833095912661e-01 -5.840991960859178e+00 -6.031057769142107e+00 4.524497354666903e+00 4.433110070917548e+00 9.312626508725054e+03 + 172980 1.095999026118134e+00 -6.015260597932206e+00 -6.019661736591093e+00 3.592142107342071e+00 4.566870088088737e+00 9.277510732199004e+03 + 173000 1.059105901226753e+00 -5.954643219047735e+00 -6.037985020293568e+00 3.945239107761918e+00 4.466677587906290e+00 9.334008061221604e+03 + 173020 1.040382771581557e+00 -5.925256495979632e+00 -6.065720095080787e+00 4.027556589492034e+00 4.220992866781489e+00 9.419890129539695e+03 + 173040 1.065033415603978e+00 -5.966439556451606e+00 -6.041543398258449e+00 3.894009558650715e+00 4.462751676713863e+00 9.344996423570939e+03 + 173060 9.828180189809057e-01 -5.860201626399448e+00 -6.064714023509033e+00 4.372721395332970e+00 4.198379562938558e+00 9.416790512609132e+03 + 173080 1.085337289523845e+00 -6.038428248566185e+00 -6.005454351652530e+00 3.534491882486018e+00 4.723833101258279e+00 9.233790642084487e+03 + 173100 9.990484560066603e-01 -5.945884859694917e+00 -6.056270077558128e+00 4.015952910086753e+00 4.382103907058945e+00 9.390601555318568e+03 + 173120 1.015634147231315e+00 -6.011858284024379e+00 -6.023865377686884e+00 3.622815174183521e+00 4.553868584281678e+00 9.290458094768865e+03 + 173140 9.552580740726015e-01 -5.961412638041280e+00 -5.971241894836776e+00 3.908114150496128e+00 4.851673036903812e+00 9.128981571337610e+03 + 173160 9.305778856185259e-01 -5.954230577838489e+00 -6.011161779187345e+00 3.958894878622979e+00 4.631987110402910e+00 9.251346829643579e+03 + 173180 1.004265136632929e+00 -6.090516674166908e+00 -6.012856916614709e+00 3.194386654755098e+00 4.640321000428470e+00 9.256550708127948e+03 + 173200 8.990016148434702e-01 -5.955769491476167e+00 -6.038204461943130e+00 3.858051786474328e+00 4.384697429282569e+00 9.334686274128735e+03 + 173220 9.791377970712588e-01 -6.086829828988833e+00 -5.985064166714954e+00 3.186556580349054e+00 4.770910761311004e+00 9.171271558508854e+03 + 173240 9.178561836157619e-01 -6.000873112545937e+00 -6.019295793190077e+00 3.673941804461277e+00 4.568155921302013e+00 9.276399978438039e+03 + 173260 1.024461387080682e+00 -6.161088725650881e+00 -5.955357648241751e+00 2.825248896394360e+00 5.006588579658922e+00 9.080528074449341e+03 + 173280 9.401720232504444e-01 -6.034173748647902e+00 -5.978445835631708e+00 3.519538817437126e+00 4.839537117842782e+00 9.150998687050354e+03 + 173300 9.470540276866289e-01 -6.037068525726442e+00 -5.972023956749140e+00 3.501390940657594e+00 4.874886921339779e+00 9.131367269831122e+03 + 173320 9.108501766157171e-01 -5.968946882093755e+00 -6.015118299458585e+00 3.816558113533273e+00 4.551434690020675e+00 9.263511983231312e+03 + 173340 1.029235403157530e+00 -6.122762203149047e+00 -5.954753905417141e+00 3.027174268288450e+00 4.991903913065103e+00 9.078686758177966e+03 + 173360 9.818262960992878e-01 -6.023412690631263e+00 -6.015999275447353e+00 3.564654286904957e+00 4.607223264113264e+00 9.266200376867040e+03 + 173380 1.001159147502946e+00 -6.016922699347793e+00 -6.013974089907674e+00 3.635101728305686e+00 4.652033100006684e+00 9.260001572950863e+03 + 173400 1.027042410060890e+00 -6.018981695469641e+00 -6.025554783804002e+00 3.635558655327230e+00 4.597814964929199e+00 9.295677307233909e+03 + 173420 1.004062108728824e+00 -5.953600053463845e+00 -6.055777283455601e+00 3.977742863076556e+00 4.391025396588654e+00 9.389066569268389e+03 + 173440 1.003151985130466e+00 -5.928628000133264e+00 -6.056167081024177e+00 4.097540783854696e+00 4.365191644770091e+00 9.390260647780548e+03 + 173460 1.052210238382461e+00 -5.984234005807235e+00 -6.004828848866408e+00 3.743388821908794e+00 4.625130046021358e+00 9.231869410027091e+03 + 173480 9.871523806603745e-01 -5.877989579162440e+00 -6.033214628513395e+00 4.314775876070700e+00 4.423449621698764e+00 9.319235962218390e+03 + 173500 1.031525440889237e+00 -5.937048709049370e+00 -5.996162679946292e+00 4.059574712262241e+00 4.720133143514684e+00 9.205260683628650e+03 + 173520 1.006552588570192e+00 -5.898841603488368e+00 -6.034626629368055e+00 4.191335493886501e+00 4.411636862620495e+00 9.323635224091404e+03 + 173540 1.038771599441801e+00 -5.949209941983998e+00 -5.988878061605327e+00 4.037638616402416e+00 4.809858134915078e+00 9.182896220146396e+03 + 173560 1.061288698208912e+00 -5.985945902691494e+00 -6.016114399520863e+00 3.768115648683763e+00 4.594883471329727e+00 9.266583752364602e+03 + 173580 1.103606726850638e+00 -6.058110321408405e+00 -6.034439221645863e+00 3.356107795104212e+00 4.492030913031579e+00 9.323087448367194e+03 + 173600 9.889032319626195e-01 -5.901157331932627e+00 -6.073112700582467e+00 4.141101452704678e+00 4.153707115909998e+00 9.442863274692640e+03 + 173620 1.053724298458657e+00 -6.011179843180615e+00 -6.022403942206569e+00 3.655945020991484e+00 4.591494507460746e+00 9.285963464590632e+03 + 173640 1.052470906114627e+00 -6.023753451526209e+00 -5.973077801713588e+00 3.597244847251640e+00 4.888232270507174e+00 9.134582364346446e+03 + 173660 9.999558623766148e-01 -5.958130706256950e+00 -5.970517611813904e+00 3.936885342070613e+00 4.865757813495144e+00 9.126757577108681e+03 + 173680 9.741656194470899e-01 -5.929609314306802e+00 -5.963471490823021e+00 4.115023158883413e+00 4.920581301172404e+00 9.105219226846948e+03 + 173700 1.001649616539517e+00 -5.976186939960305e+00 -5.985031663926883e+00 3.816147745517227e+00 4.765359971784532e+00 9.171139630054591e+03 + 173720 9.928822207895293e-01 -5.967897433565623e+00 -6.016209217170697e+00 3.842270758697348e+00 4.564857021012658e+00 9.266860247535784e+03 + 173740 1.000305238398981e+00 -5.984764448073079e+00 -5.981043178806662e+00 3.775660073722656e+00 4.797028177714984e+00 9.158943933196617e+03 + 173760 1.030708470277271e+00 -6.035614638130282e+00 -5.994197637306218e+00 3.481364037871348e+00 4.719186865863287e+00 9.199246769754171e+03 + 173780 1.024563620353439e+00 -6.035096106001772e+00 -5.975507566403075e+00 3.496529323497055e+00 4.838695939169474e+00 9.141988281766386e+03 + 173800 9.577741359538310e-01 -5.943629092969581e+00 -5.979990568174130e+00 3.943286083773390e+00 4.734492866228766e+00 9.155685231236090e+03 + 173820 9.530738206765744e-01 -5.939991473691727e+00 -5.974018787309910e+00 4.000676412601569e+00 4.805286312096201e+00 9.137454207099527e+03 + 173840 9.799106825999193e-01 -5.981760307817236e+00 -6.005063955990226e+00 3.807349945732891e+00 4.673536791695682e+00 9.232600264701590e+03 + 173860 9.883661500418113e-01 -5.995776082610538e+00 -6.024574548531402e+00 3.706975394264605e+00 4.541610146398807e+00 9.292622184133701e+03 + 173880 9.750428267315292e-01 -5.978233142818242e+00 -6.026572478828854e+00 3.792798227115356e+00 4.515226279254351e+00 9.298775776116358e+03 + 173900 1.008640543466448e+00 -6.031628694671824e+00 -5.961455403589120e+00 3.521709321975823e+00 4.924655218654406e+00 9.099091088598856e+03 + 173920 9.847806395747991e-01 -5.999545610604539e+00 -5.999357727614077e+00 3.714825439528858e+00 4.715904292734889e+00 9.215079945701889e+03 + 173940 1.011804177466070e+00 -6.042197219856634e+00 -5.979821766380606e+00 3.513723847601102e+00 4.871893354030680e+00 9.155222915216162e+03 + 173960 9.527390450684928e-01 -5.956866396877421e+00 -5.998209698267011e+00 3.939743157503088e+00 4.702343523068853e+00 9.211540220545190e+03 + 173980 9.611787608566198e-01 -5.969444628549403e+00 -6.014124102973319e+00 3.833460308970261e+00 4.576903852701816e+00 9.260452304897100e+03 + 174000 1.051438175025631e+00 -6.101382917722644e+00 -6.003234890590925e+00 3.125614704336761e+00 4.689195864485206e+00 9.226992653992756e+03 + 174020 1.016491565054876e+00 -6.048832191926746e+00 -5.973604720634263e+00 3.429651843891688e+00 4.861619625466684e+00 9.136208237788278e+03 + 174040 1.000615219460889e+00 -6.022916712535356e+00 -6.018932770809801e+00 3.552661413143449e+00 4.575537823044573e+00 9.275264680312906e+03 + 174060 9.683843814119234e-01 -5.971381302071002e+00 -6.053135284238339e+00 3.846189532850520e+00 4.376745515857817e+00 9.380898409580950e+03 + 174080 9.440087991074108e-01 -5.932881217537550e+00 -6.010467723524440e+00 4.043986458314921e+00 4.598472734465202e+00 9.249210889651768e+03 + 174100 1.010613704460070e+00 -6.025771438071368e+00 -5.987825841603489e+00 3.555497855165043e+00 4.773387342145679e+00 9.179729078363245e+03 + 174120 1.044133563438923e+00 -6.066505358172167e+00 -6.022882286755126e+00 3.347819597293139e+00 4.598310024018271e+00 9.287433117890796e+03 + 174140 9.781586743719261e-01 -5.962621385295517e+00 -6.012283321628204e+00 3.897399002924013e+00 4.612232479341911e+00 9.254789936498002e+03 + 174160 9.746014350685996e-01 -5.951307679885520e+00 -5.996050783033438e+00 4.043306056995272e+00 4.786384234747093e+00 9.204905530435886e+03 + 174180 9.954889584992697e-01 -5.972316759932900e+00 -5.991811845423159e+00 3.871242491866175e+00 4.759298694126375e+00 9.191928984663662e+03 + 174200 1.050772740077655e+00 -6.043639672419418e+00 -6.008547542641598e+00 3.428222748864688e+00 4.629727188538461e+00 9.243315068976488e+03 + 174220 1.023765236847365e+00 -5.992055408819955e+00 -6.044657515823374e+00 3.675631547964270e+00 4.373582109400885e+00 9.354640277300208e+03 + 174240 1.046392339188033e+00 -6.018924473130356e+00 -5.989769492875867e+00 3.586276002306303e+00 4.753688410646192e+00 9.185683497784485e+03 + 174260 1.015108843710412e+00 -5.966860520289887e+00 -5.960978674007062e+00 3.946954180268471e+00 4.980728651837222e+00 9.097635091524840e+03 + 174280 9.791716693996031e-01 -5.908854050837242e+00 -6.011248726672193e+00 4.165476439013407e+00 4.577510364844246e+00 9.251571178905018e+03 + 174300 1.038695613666949e+00 -5.990839533370369e+00 -5.967136105700257e+00 3.800935307660985e+00 4.937044057436346e+00 9.116373765497350e+03 + 174320 9.965467827563848e-01 -5.923973165205544e+00 -5.990357262825743e+00 4.094499312234920e+00 4.713311550793828e+00 9.187446228327795e+03 + 174340 1.004870379091036e+00 -5.931437159618277e+00 -6.030649982531689e+00 4.080061508381705e+00 4.510366126078165e+00 9.311346253472977e+03 + 174360 1.039917780731387e+00 -5.981886101720000e+00 -6.015883526583417e+00 3.729054536575616e+00 4.533836061925374e+00 9.265885258379683e+03 + 174380 9.864902931081017e-01 -5.904987221705570e+00 -5.995007862683268e+00 4.204464325481234e+00 4.687551874338120e+00 9.201712856755988e+03 + 174400 1.036104906486244e+00 -5.983643905546630e+00 -5.990473119218975e+00 3.842928683472250e+00 4.803714281748247e+00 9.187813735658379e+03 + 174420 1.003709915709491e+00 -5.944024347502874e+00 -6.064263319361854e+00 3.949481236278648e+00 4.259050452943626e+00 9.415375589778439e+03 + 174440 1.035179221244382e+00 -6.007218921436386e+00 -5.987037150584401e+00 3.643566192744809e+00 4.759453044095853e+00 9.177292378937995e+03 + 174460 1.032568640147012e+00 -6.025253982723124e+00 -5.959459799333843e+00 3.613638531334762e+00 4.991438913972989e+00 9.093013390533764e+03 + 174480 1.034758135363307e+00 -6.056483161167654e+00 -5.956797817264913e+00 3.367561156090326e+00 4.939969827036978e+00 9.084863152663405e+03 + 174500 9.196981530775679e-01 -5.911737234803506e+00 -6.005054952600645e+00 4.143747774606792e+00 4.607902998145462e+00 9.232559543681442e+03 + 174520 9.186762584221807e-01 -5.934538794441067e+00 -6.017212927833728e+00 3.983370363519943e+00 4.508642695798492e+00 9.269946957236350e+03 + 174540 1.054070701226391e+00 -6.159082686582558e+00 -5.948702974845154e+00 2.846051611761915e+00 5.054084472713264e+00 9.060248691763456e+03 + 174560 9.653389608377355e-01 -6.047864038211833e+00 -5.998909702758517e+00 3.383337965918037e+00 4.664441335749903e+00 9.213709426951667e+03 + 174580 9.609617113016398e-01 -6.060096881273115e+00 -5.999233143679163e+00 3.371268706760870e+00 4.720757706658293e+00 9.214699745737607e+03 + 174600 9.640280626724278e-01 -6.079687569308292e+00 -5.965564758009998e+00 3.305317521218256e+00 4.960628364141036e+00 9.111628775419680e+03 + 174620 8.648201632019097e-01 -5.942520591153901e+00 -6.015367135856446e+00 3.958944951082072e+00 4.540648818433698e+00 9.264260838278611e+03 + 174640 9.966821325964648e-01 -6.141581028176240e+00 -5.940414868496555e+00 2.915045098074807e+00 5.070172317318164e+00 9.035034622079773e+03 + 174660 9.375379632826779e-01 -6.050012130192616e+00 -5.959288314281568e+00 3.437096688120009e+00 4.958046878546384e+00 9.092442633435885e+03 + 174680 9.402071521268851e-01 -6.039928341001955e+00 -5.963789853082072e+00 3.458500257663897e+00 4.895699237692793e+00 9.106223561114526e+03 + 174700 9.848713248346646e-01 -6.080797328449105e+00 -5.963189804564539e+00 3.278305398508512e+00 4.953626000359188e+00 9.104389550779115e+03 + 174720 9.134862840435471e-01 -5.938020371764987e+00 -6.018670984795548e+00 4.038019027102622e+00 4.574910726439102e+00 9.274437411386276e+03 + 174740 9.918059173549123e-01 -6.003528785476028e+00 -6.027559199170959e+00 3.633407768602843e+00 4.495421414472050e+00 9.301853169693930e+03 + 174760 1.046236361776978e+00 -6.033584970788386e+00 -6.002572232957873e+00 3.505975897682127e+00 4.684055837510599e+00 9.224929913832821e+03 + 174780 1.026536954946409e+00 -5.964337774800743e+00 -5.996648400491042e+00 3.882036033494087e+00 4.696503420727224e+00 9.206735205194431e+03 + 174800 1.084339524756345e+00 -6.022329183800460e+00 -5.946243816464033e+00 3.627730291026798e+00 5.064624244445101e+00 9.052741459188614e+03 + 174820 9.705829365599744e-01 -5.835133533409908e+00 -6.002905084077506e+00 4.579543052273783e+00 4.616172845776875e+00 9.225917121868259e+03 + 174840 1.003618385241124e+00 -5.872887151328572e+00 -6.020347355932135e+00 4.347036130216428e+00 4.500296815989860e+00 9.279596161391304e+03 + 174860 1.124632892657651e+00 -6.047845871847927e+00 -6.001254562064416e+00 3.437623482441562e+00 4.705157993200368e+00 9.220912164663565e+03 + 174880 1.122434057187399e+00 -6.049354473347607e+00 -5.975891564693987e+00 3.409980578362641e+00 4.831815968200102e+00 9.143204342338193e+03 + 174900 9.801290169801421e-01 -5.849277232551999e+00 -6.029348891493987e+00 4.514139284328269e+00 4.480139952684211e+00 9.307344192485067e+03 + 174920 1.032719377264109e+00 -5.940230774000820e+00 -5.989712455552693e+00 4.063940079187157e+00 4.779808606450834e+00 9.185480392842705e+03 + 174940 1.036620814058223e+00 -5.961077583644971e+00 -6.021414603589954e+00 3.917361549819090e+00 4.570897044171337e+00 9.282897857713866e+03 + 174960 1.046173343168461e+00 -5.994651099924696e+00 -5.977765948548530e+00 3.788646984347273e+00 4.885604136517953e+00 9.148905303487192e+03 + 174980 1.066887151945785e+00 -6.046693930554738e+00 -5.976806756855856e+00 3.464881400249225e+00 4.866184366633382e+00 9.145973718675545e+03 + 175000 1.000710526864937e+00 -5.970307709516566e+00 -5.989446526025936e+00 3.894959334436430e+00 4.785061288317347e+00 9.184671606008205e+03 + 175020 9.775454083726365e-01 -5.958385814941584e+00 -6.004343035156874e+00 3.884475759038880e+00 4.620582288705840e+00 9.230388023585576e+03 + 175040 9.830730462118193e-01 -5.987286225679458e+00 -5.975990249816544e+00 3.774741637620947e+00 4.839604879072418e+00 9.143480689260336e+03 + 175060 9.770876779713118e-01 -5.995262846676658e+00 -5.974285484680803e+00 3.667110575280606e+00 4.787565834097081e+00 9.138280230687616e+03 + 175080 1.008433059375599e+00 -6.054041858716727e+00 -5.984187716979234e+00 3.431176829447673e+00 4.832290121197854e+00 9.168557627911840e+03 + 175100 1.012544572260639e+00 -6.070806627686350e+00 -5.960550001377166e+00 3.387002748465409e+00 5.020113358890521e+00 9.096328707431903e+03 + 175120 9.457104303326398e-01 -5.981896725781137e+00 -5.990034511386096e+00 3.812743803782181e+00 4.766015379520256e+00 9.186455998206689e+03 + 175140 9.901723248783303e-01 -6.053372113003624e+00 -5.970401680727641e+00 3.427390519694038e+00 4.903819581455630e+00 9.126376517540111e+03 + 175160 9.105977381562370e-01 -5.937229540437806e+00 -6.041491990471892e+00 3.989999477549876e+00 4.391308354892160e+00 9.344828725476253e+03 + 175180 9.346449595561432e-01 -5.970543129578758e+00 -6.012433855370110e+00 3.884182477457053e+00 4.643639447394243e+00 9.255234843052860e+03 + 175200 9.619354393067603e-01 -6.003731864892144e+00 -6.015603559588437e+00 3.629736310019110e+00 4.561567201934178e+00 9.265004999719466e+03 + 175220 1.031730129615966e+00 -6.092073548663091e+00 -5.981688868927734e+00 3.247071611270102e+00 4.880917524284503e+00 9.160918358558509e+03 + 175240 9.457385376413708e-01 -5.937483004834699e+00 -6.034841563558111e+00 4.013534442346124e+00 4.454486531968022e+00 9.324314622484324e+03 + 175260 1.012972497910468e+00 -5.994558380105588e+00 -6.009786930500825e+00 3.711645215171383e+00 4.624200522191371e+00 9.247131831875433e+03 + 175280 1.003584735572427e+00 -5.921112349079406e+00 -6.081134247764435e+00 4.062600621226110e+00 4.143730115667882e+00 9.467781070915198e+03 + 175300 1.001031001508667e+00 -5.861733416348391e+00 -6.031672343984603e+00 4.454540800532521e+00 4.478725180081338e+00 9.314496723622646e+03 + 175320 1.056642167777405e+00 -5.899986891600236e+00 -6.004215103270684e+00 4.216724305335988e+00 4.618229784660646e+00 9.229971515848923e+03 + 175340 1.091861734789924e+00 -5.923828467016058e+00 -5.975814622623737e+00 4.119329665720839e+00 4.820817115389967e+00 9.142915281666857e+03 + 175360 1.066226409453938e+00 -5.869065064436087e+00 -5.978308551463122e+00 4.443489954410609e+00 4.816196946526393e+00 9.150515809697854e+03 + 175380 1.144911718039423e+00 -5.979671441717842e+00 -6.026195100798812e+00 3.804716255831831e+00 4.537570205875923e+00 9.297610076281011e+03 + 175400 1.033354659246867e+00 -5.822725272432550e+00 -6.042786533036471e+00 4.656808118801401e+00 4.393182306043671e+00 9.348839203743337e+03 + 175420 1.109544362252024e+00 -5.951296098484495e+00 -6.033321436471180e+00 3.910276971212790e+00 4.439274787113215e+00 9.319617883291057e+03 + 175440 1.062850555364077e+00 -5.907162775872243e+00 -6.041347555090574e+00 4.157358564480340e+00 4.386848797181212e+00 9.344415303713013e+03 + 175460 1.075002272985246e+00 -5.960393817222204e+00 -6.009637022726769e+00 3.934101823188168e+00 4.651339716819525e+00 9.246629526333079e+03 + 175480 1.021938543006268e+00 -5.921093195689862e+00 -5.988745078032901e+00 4.062814465657575e+00 4.674346888148887e+00 9.182513953795018e+03 + 175500 9.987453139703080e-01 -5.922379602060656e+00 -5.986081945471948e+00 4.125142750548127e+00 4.759354036774703e+00 9.174330922403329e+03 + 175520 1.020453678554516e+00 -5.983061328708857e+00 -5.968122554244326e+00 3.841198042199659e+00 4.926978796942874e+00 9.119425134199761e+03 + 175540 1.025513757223260e+00 -6.015797202584976e+00 -5.997697370047124e+00 3.591707465398155e+00 4.695639504770533e+00 9.209997574847857e+03 + 175560 1.018133941626763e+00 -6.024306924599324e+00 -6.029329235264163e+00 3.546374429573762e+00 4.517535544536194e+00 9.307318223390999e+03 + 175580 9.586621654685762e-01 -5.954183021503569e+00 -6.031661103540634e+00 3.963072989877570e+00 4.518181853126295e+00 9.314496373553340e+03 + 175600 9.800920068637435e-01 -6.001319793732035e+00 -6.026396171640499e+00 3.697645212429957e+00 4.553652769922615e+00 9.298260736428507e+03 + 175620 1.029637790698154e+00 -6.086308613894776e+00 -6.009066787202578e+00 3.228830682581238e+00 4.672365204581885e+00 9.244896601364308e+03 + 175640 9.460856754323483e-01 -5.971146168053560e+00 -6.007965581383676e+00 3.872803776223288e+00 4.661381007095963e+00 9.241513036849856e+03 + 175660 9.997255227824924e-01 -6.057172672975602e+00 -6.006545521433639e+00 3.377394644511017e+00 4.668103583191350e+00 9.237155894386980e+03 + 175680 8.881222878087094e-01 -5.896644933169255e+00 -6.010190353652395e+00 4.243896774127259e+00 4.591901398616035e+00 9.248368530499807e+03 + 175700 1.016139285236189e+00 -6.086475322073271e+00 -5.967858223507587e+00 3.224705360119309e+00 4.905823096020146e+00 9.118645974995596e+03 + 175720 9.943715633449440e-01 -6.050491674057533e+00 -5.990869989750486e+00 3.414166946570640e+00 4.756523884287532e+00 9.189028426020182e+03 + 175740 9.480831658741777e-01 -5.977383845204230e+00 -6.003339017836144e+00 3.793076244676183e+00 4.644037626873747e+00 9.227294540942050e+03 + 175760 9.970700890635151e-01 -6.041754131880070e+00 -5.981340974978751e+00 3.510561003255094e+00 4.857462699088286e+00 9.159857290699631e+03 + 175780 9.790998228482189e-01 -6.001181957410349e+00 -6.019864608270336e+00 3.686404009208094e+00 4.579125336839176e+00 9.278136806449240e+03 + 175800 9.677190489862882e-01 -5.965389307404235e+00 -5.990184518348505e+00 3.878820303891608e+00 4.736442365603116e+00 9.186949330478750e+03 + 175820 1.044705951696796e+00 -6.053403556383961e+00 -5.979683117312389e+00 3.484712117504333e+00 4.908026286854376e+00 9.154781708963681e+03 + 175840 1.046097542900421e+00 -6.018640834513687e+00 -5.966626313496580e+00 3.604308665550589e+00 4.902984094451928e+00 9.114878091651126e+03 + 175860 1.000242432396510e+00 -5.906264228308455e+00 -6.010406804582970e+00 4.181953776284132e+00 4.583950987304275e+00 9.249000359784266e+03 + 175880 1.054316828390019e+00 -5.936402992096022e+00 -6.015761754548665e+00 4.028854131628155e+00 4.573163836896279e+00 9.265473418437932e+03 + 175900 1.088605765230973e+00 -5.943114097928319e+00 -6.004792210642015e+00 4.019314978523613e+00 4.665149710664475e+00 9.231758686099753e+03 + 175920 1.086609816987527e+00 -5.907812103631249e+00 -6.026342603817763e+00 4.114872996985561e+00 4.434252522378981e+00 9.298090660710135e+03 + 175940 1.074783091139512e+00 -5.874169416303852e+00 -6.021550897748083e+00 4.356994936820788e+00 4.510707663157466e+00 9.283305550768608e+03 + 175960 1.092242401119250e+00 -5.895716158204312e+00 -6.101785680884506e+00 4.158701970801515e+00 3.975418882416272e+00 9.532056761467878e+03 + 175980 1.116263327577770e+00 -5.940814747651736e+00 -6.015184684509078e+00 3.996220318235415e+00 4.569176632090020e+00 9.263730319385841e+03 + 176000 1.109632120473638e+00 -5.950042204112828e+00 -6.004534405858630e+00 3.992186064095210e+00 4.679283409029845e+00 9.230964814967951e+03 + 176020 1.078421036665945e+00 -5.929606917918194e+00 -6.023226265874472e+00 3.995224357861306e+00 4.457647574349087e+00 9.288475337227044e+03 + 176040 1.089183685495825e+00 -5.972300284285479e+00 -6.038626412495281e+00 3.843434743682260e+00 4.462579851566411e+00 9.335989096482193e+03 + 176060 1.028621714309083e+00 -5.911061017809054e+00 -6.025826702272282e+00 4.126329997226906e+00 4.467327677106783e+00 9.296512425232298e+03 + 176080 1.032484923622059e+00 -5.941999586291912e+00 -6.030737965588086e+00 3.967788058282404e+00 4.458238552143957e+00 9.311634476454554e+03 + 176100 1.000346346053875e+00 -5.917385736397415e+00 -6.022379067836454e+00 4.141023870018723e+00 4.538135913230236e+00 9.285877076878300e+03 + 176120 9.907863038399976e-01 -5.920858200637586e+00 -6.027186737683641e+00 4.108262621518233e+00 4.497707707511856e+00 9.300703326128982e+03 + 176140 1.030127425217976e+00 -5.995320820277602e+00 -6.010240704737175e+00 3.762558043271528e+00 4.676885757860003e+00 9.248530117809683e+03 + 176160 1.001469631235880e+00 -5.968358162170704e+00 -6.020893456238717e+00 3.867311525270922e+00 4.565645736921910e+00 9.281298381999868e+03 + 176180 9.861023187916214e-01 -5.959891103579418e+00 -6.007170983730911e+00 3.901818371226619e+00 4.630329982858936e+00 9.239073630909852e+03 + 176200 9.676868595179293e-01 -5.944009392864858e+00 -6.022903273239253e+00 3.974225570758102e+00 4.521204700859796e+00 9.287485077511168e+03 + 176220 9.961086074878160e-01 -5.997022086628611e+00 -6.032849961525577e+00 3.688708529109916e+00 4.482979327105816e+00 9.318184406272921e+03 + 176240 1.003521119184531e+00 -6.020374307953215e+00 -6.035752397114171e+00 3.543669494974224e+00 4.455366127260410e+00 9.327135617608368e+03 + 176260 1.049445826905085e+00 -6.100331440871149e+00 -6.001687709666906e+00 3.178646439268678e+00 4.745074008911510e+00 9.222247831171415e+03 + 176280 9.304152442435101e-01 -5.936853336784266e+00 -6.035222111993854e+00 4.022335427589333e+00 4.457486697817111e+00 9.325502537390321e+03 + 176300 9.919521147608475e-01 -6.039292925507530e+00 -5.980012731203749e+00 3.490974673891608e+00 4.831370723164338e+00 9.155804749826439e+03 + 176320 9.889326945046298e-01 -6.042719643211468e+00 -5.990087657258148e+00 3.495091046344956e+00 4.797312054462420e+00 9.186650645564809e+03 + 176340 1.012797120684468e+00 -6.085172225638020e+00 -5.986788016657047e+00 3.270011846732740e+00 4.834949199608625e+00 9.176522149947785e+03 + 176360 9.339033703110842e-01 -5.972993437124924e+00 -6.032256277936183e+00 3.837640000092903e+00 4.497343597259674e+00 9.316325549267805e+03 + 176380 9.846652605715701e-01 -6.054059306436207e+00 -5.958659787445218e+00 3.448735536685144e+00 4.996534337759251e+00 9.090578849482810e+03 + 176400 9.898238632856670e-01 -6.063255214420408e+00 -5.987903837003699e+00 3.350592743061065e+00 4.783272012775784e+00 9.179952107726216e+03 + 176420 9.752420409159185e-01 -6.038513925687624e+00 -6.002139437781365e+00 3.495712837578977e+00 4.704580776070534e+00 9.223617258692728e+03 + 176440 9.623368452274625e-01 -6.012076370197827e+00 -5.993416249482086e+00 3.637705549017666e+00 4.744854849811802e+00 9.196845794188621e+03 + 176460 9.829739726867087e-01 -6.029124383339026e+00 -5.970076906039211e+00 3.548897139321295e+00 4.887956891544410e+00 9.125415844777861e+03 + 176480 9.434184563697375e-01 -5.948326693832302e+00 -6.003672148520301e+00 4.000118877203260e+00 4.682316711703336e+00 9.228324025556083e+03 + 176500 1.020903602935919e+00 -6.030570855847295e+00 -6.012838222869147e+00 3.531277554939288e+00 4.633101077615895e+00 9.256492617676869e+03 + 176520 1.041157740788483e+00 -6.024462006861803e+00 -6.000023802202747e+00 3.518125088874237e+00 4.658453041826485e+00 9.217121919067016e+03 + 176540 9.885446321914746e-01 -5.912488136321778e+00 -5.998059024564729e+00 4.176267031684067e+00 4.684905749340886e+00 9.211056058985025e+03 + 176560 1.019211598928082e+00 -5.923168346125426e+00 -5.975467176051110e+00 4.094090942725782e+00 4.793782968074728e+00 9.141861813032156e+03 + 176580 1.046262050848526e+00 -5.932111273781900e+00 -5.998576865808968e+00 4.054873943383560e+00 4.673218228447018e+00 9.212660283321111e+03 + 176600 1.094198817674762e+00 -5.980592932138750e+00 -5.982265230489157e+00 3.789368601939811e+00 4.779766006024443e+00 9.162681433676655e+03 + 176620 1.144036926844769e+00 -6.039499449329122e+00 -6.041077094657560e+00 3.448166253911479e+00 4.439107170295763e+00 9.343582179703148e+03 + 176640 1.015826449234961e+00 -5.845995524822099e+00 -6.080071605721557e+00 4.539104969559908e+00 4.195003889878768e+00 9.464485260019594e+03 + 176660 1.068903655369921e+00 -5.933398317612209e+00 -6.026524129849493e+00 4.064913612758023e+00 4.530170787718666e+00 9.298655357001109e+03 + 176680 1.042335464583136e+00 -5.909138833097207e+00 -6.008001050059379e+00 4.213451726743071e+00 4.645769578067648e+00 9.241585458936632e+03 + 176700 1.054838247228415e+00 -5.947566625699009e+00 -6.015614469966804e+00 3.956035996362650e+00 4.565294744207099e+00 9.265039340065476e+03 + 176720 1.010585820093854e+00 -5.909291001078947e+00 -6.036197143903490e+00 4.223009109780649e+00 4.494294399019990e+00 9.328496685001453e+03 + 176740 1.024935890387010e+00 -5.964553993998748e+00 -6.046978085499459e+00 3.812202251898193e+00 4.338910363414167e+00 9.361844099192565e+03 + 176760 1.032955855329152e+00 -6.013630558067927e+00 -5.992743868922451e+00 3.664167446867828e+00 4.784102048145847e+00 9.194793731877868e+03 + 176780 1.015702155291322e+00 -6.023582254176080e+00 -5.988060437293352e+00 3.568790454196646e+00 4.772762223720670e+00 9.180450950871207e+03 + 176800 9.587992457634591e-01 -5.967923337852767e+00 -6.050356877200164e+00 3.831061966600240e+00 4.357715827118497e+00 9.372267789593247e+03 + 176820 9.057334169722548e-01 -5.911152453380048e+00 -6.021327960792380e+00 4.113804789551304e+00 4.481159976385020e+00 9.282619203786388e+03 + 176840 9.253725696381762e-01 -5.951228405233462e+00 -5.975896332577704e+00 3.954259784589748e+00 4.812612728429695e+00 9.143198735919039e+03 + 176860 9.958595942756007e-01 -6.060661339434910e+00 -5.979854510759387e+00 3.398385578652649e+00 4.862390893723823e+00 9.155314261816042e+03 + 176880 9.951409545049615e-01 -6.060962384969407e+00 -5.979132465929501e+00 3.387431193729884e+00 4.857311251996065e+00 9.153094063287826e+03 + 176900 9.604499276401842e-01 -6.009151490382777e+00 -5.984545398335742e+00 3.641704250916129e+00 4.782996239230640e+00 9.169648239551898e+03 + 176920 9.932908889533425e-01 -6.053472347547421e+00 -5.954090715217832e+00 3.402284798574061e+00 4.972949510668457e+00 9.076655038186400e+03 + 176940 1.003959483201050e+00 -6.060411794872726e+00 -5.996195360801592e+00 3.369629164576939e+00 4.738369866474446e+00 9.205374443881312e+03 + 176960 8.879174592637858e-01 -5.880378407857701e+00 -6.018077533846760e+00 4.366143355231262e+00 4.575453664931200e+00 9.272602072860253e+03 + 176980 9.569869173001665e-01 -5.972653037483554e+00 -5.948757935673378e+00 3.864029074762670e+00 5.001238447111757e+00 9.060410588216237e+03 + 177000 1.025009921400114e+00 -6.058869601562160e+00 -5.971779043241307e+00 3.417710025648805e+00 4.917797488747487e+00 9.130595134542145e+03 + 177020 9.770813333579562e-01 -5.972324209956359e+00 -5.998364475588362e+00 3.852326693956853e+00 4.702799458979809e+00 9.212005759796386e+03 + 177040 1.033041421879915e+00 -6.038905980303069e+00 -5.999000514180917e+00 3.473329607938361e+00 4.702472969762679e+00 9.213959620118105e+03 + 177060 9.358887080073058e-01 -5.879440202138515e+00 -6.016089211764699e+00 4.293435743110912e+00 4.508775983471466e+00 9.266486696279606e+03 + 177080 1.022610411925349e+00 -5.990866024105470e+00 -5.959726207114985e+00 3.732076395855455e+00 4.910886043885927e+00 9.093832555554698e+03 + 177100 1.018316063280657e+00 -5.968168347240160e+00 -6.020305346999251e+00 3.885013064574077e+00 4.585634343782734e+00 9.279479099246808e+03 + 177120 1.060334019644992e+00 -6.017921702327977e+00 -6.016307792011372e+00 3.591169070464986e+00 4.600436393254742e+00 9.267178831706275e+03 + 177140 1.054710743130254e+00 -6.001142282717915e+00 -5.965714095548419e+00 3.685721270697461e+00 4.889155403918955e+00 9.112080287406094e+03 + 177160 9.902798929068691e-01 -5.895154121377912e+00 -5.979802282916824e+00 4.247611118536998e+00 4.761548275719900e+00 9.155132633282670e+03 + 177180 1.046634933802410e+00 -5.964525053478533e+00 -6.027610807971170e+00 3.960939507633245e+00 4.598691342847565e+00 9.301978974383754e+03 + 177200 1.090327003457063e+00 -6.016843589101904e+00 -5.952534782686925e+00 3.656960370487808e+00 5.026231488678246e+00 9.071910343298921e+03 + 177220 1.084027245568444e+00 -5.994815749818553e+00 -5.953292807972153e+00 3.805708285148143e+00 5.044139442884658e+00 9.074188515101399e+03 + 177240 1.103031039301715e+00 -6.010048904830867e+00 -5.937531330529599e+00 3.656319475013450e+00 5.072726608709687e+00 9.026256216822110e+03 + 177260 9.881482659632953e-01 -5.825115442706624e+00 -5.967880875616761e+00 4.628722179143905e+00 4.808940970494555e+00 9.118680963545545e+03 + 177280 1.016450235729778e+00 -5.852312487233776e+00 -5.976867513190966e+00 4.379287234597777e+00 4.664073000723621e+00 9.146167039301348e+03 + 177300 1.080457456213344e+00 -5.930038048700706e+00 -6.021269063125199e+00 4.066440519930861e+00 4.542577917151563e+00 9.282432909878635e+03 + 177320 1.032146904119835e+00 -5.847702839189421e+00 -6.059461591587430e+00 4.508238525452911e+00 4.292286999622518e+00 9.400481958068412e+03 + 177340 1.022983394585840e+00 -5.835168440933270e+00 -6.036955747083208e+00 4.609936268180052e+00 4.451242329782398e+00 9.330828331742805e+03 + 177360 1.061481071179172e+00 -5.902012186680889e+00 -6.046083182413493e+00 4.222838701523507e+00 4.395560749112365e+00 9.359051361055010e+03 + 177380 1.078061668237210e+00 -5.945693215916322e+00 -6.051708281002705e+00 3.963592467604568e+00 4.354837558100249e+00 9.376441564235211e+03 + 177400 1.053302126279887e+00 -5.939355203345316e+00 -6.048328443610584e+00 3.990667566743017e+00 4.364926357585411e+00 9.366010571919971e+03 + 177420 1.038594496708761e+00 -5.956840189659104e+00 -6.006354053055609e+00 3.938017671683525e+00 4.653701405815197e+00 9.236561302523593e+03 + 177440 1.057505893323009e+00 -6.025660750493481e+00 -5.980326373660249e+00 3.585032790757059e+00 4.845349798005616e+00 9.156744067816739e+03 + 177460 9.798993824035245e-01 -5.948052592141694e+00 -6.019007701042168e+00 3.969040104618309e+00 4.561604889044177e+00 9.275493316331642e+03 + 177480 1.007900865813226e+00 -6.020866779681768e+00 -6.002652765595409e+00 3.623550694843643e+00 4.728138382337091e+00 9.225205416851000e+03 + 177500 9.827410028235338e-01 -6.011552832826689e+00 -5.990913395954755e+00 3.646367325042319e+00 4.764882165503501e+00 9.189170144136448e+03 + 177520 9.745882306055479e-01 -6.020663894292174e+00 -5.968532377183299e+00 3.581281620159346e+00 4.880628858724706e+00 9.120667928880510e+03 + 177540 9.617101252266793e-01 -6.015401286785862e+00 -5.963016447525351e+00 3.646522457772365e+00 4.947324311333899e+00 9.103854653632645e+03 + 177560 9.875521959621576e-01 -6.060754785144141e+00 -6.009534739115063e+00 3.365353186925578e+00 4.659466617501054e+00 9.246342174373014e+03 + 177580 9.585731607667553e-01 -6.022231416145212e+00 -6.033618684370011e+00 3.605405451644674e+00 4.540017995323816e+00 9.320552204449381e+03 + 177600 9.882730993536900e-01 -6.070486759216120e+00 -6.003981598929437e+00 3.336267997116926e+00 4.718150919123354e+00 9.229301735724761e+03 + 177620 9.495987695028141e-01 -6.014530968173483e+00 -6.004223250417935e+00 3.702739830560975e+00 4.761928341027501e+00 9.230002749515586e+03 + 177640 1.019682660515718e+00 -6.114165521585603e+00 -5.979122165174360e+00 3.115754050745100e+00 4.891193901150324e+00 9.153080738540582e+03 + 177660 9.130751625668337e-01 -5.947369198254375e+00 -6.049527200572304e+00 3.987106863032013e+00 4.400499804822696e+00 9.369716425601639e+03 + 177680 1.010432072999256e+00 -6.080670459888448e+00 -5.992256167333132e+00 3.265163968135851e+00 4.772852518056032e+00 9.193290909892527e+03 + 177700 9.690236044088988e-01 -6.002950836043820e+00 -6.015287614585615e+00 3.648979430566451e+00 4.578139739069158e+00 9.264033589939781e+03 + 177720 9.862075045301948e-01 -6.008358717766985e+00 -5.954820700285494e+00 3.729559108552533e+00 5.036982689912681e+00 9.078815612412331e+03 + 177740 9.792000461456802e-01 -5.968763978649007e+00 -5.952058907481518e+00 3.841710418891771e+00 4.937633522636903e+00 9.070423244955695e+03 + 177760 1.020061046420733e+00 -5.988931226244473e+00 -5.969067553318995e+00 3.752942403269245e+00 4.867002687100790e+00 9.122312864469493e+03 + 177780 1.013311688687711e+00 -5.931657799006251e+00 -5.994612189606086e+00 4.048896008644920e+00 4.687402155660204e+00 9.200511696261054e+03 + 177800 1.013301033402241e+00 -5.889609282854146e+00 -6.021042068806055e+00 4.320203219902625e+00 4.565495823808870e+00 9.281761131401325e+03 + 177820 1.106136498388638e+00 -5.997910789973972e+00 -6.011933961278374e+00 3.723701137241830e+00 4.643177917533206e+00 9.253717584491502e+03 + 177840 1.056492996152001e+00 -5.906204467294977e+00 -6.012284225770157e+00 4.153139846505487e+00 4.544013457551432e+00 9.254787524293697e+03 + 177860 1.035313283682176e+00 -5.867726694668173e+00 -5.959240961702406e+00 4.414596928065888e+00 4.889107844968268e+00 9.092327472356461e+03 + 177880 1.050119961312785e+00 -5.885394818547150e+00 -5.988633025832117e+00 4.357475770672719e+00 4.764666008381490e+00 9.182171941056080e+03 + 177900 1.113317530100131e+00 -5.982303536242167e+00 -5.990825655052387e+00 3.749697563530506e+00 4.700762238528605e+00 9.188901536926813e+03 + 177920 1.131103180235899e+00 -6.021336895453932e+00 -6.032318709090001e+00 3.589199165750570e+00 4.526139892422092e+00 9.316531014804159e+03 + 177940 1.039296219489151e+00 -5.907997350392710e+00 -6.040929046484202e+00 4.250964467968370e+00 4.487650097897543e+00 9.343090536807427e+03 + 177960 1.016752457239048e+00 -5.895266113901704e+00 -5.978103470687304e+00 4.278011214006379e+00 4.802346292303927e+00 9.149917493664763e+03 + 177980 1.076325480205031e+00 -6.002470930504447e+00 -6.010928617646244e+00 3.645485435017899e+00 4.596920086626849e+00 9.250648565883175e+03 + 178000 1.049912998115743e+00 -5.985146315398543e+00 -6.012210272729718e+00 3.807455115033521e+00 4.652049683904059e+00 9.254547597775098e+03 + 178020 1.020664112264212e+00 -5.962819665328294e+00 -5.965913946075620e+00 3.889065540257290e+00 4.871297701367750e+00 9.112701885328697e+03 + 178040 9.866252508687497e-01 -5.927940405766451e+00 -6.005816059847609e+00 4.094029983257268e+00 4.646855926304739e+00 9.234892066796041e+03 + 178060 1.017538023763460e+00 -5.986518078459097e+00 -6.020304484519027e+00 3.780401967783485e+00 4.586395195757927e+00 9.279486181846476e+03 + 178080 9.914996228478319e-01 -5.960699413383012e+00 -6.002160369826623e+00 3.918929311807851e+00 4.680854083846361e+00 9.223671973404065e+03 + 178100 1.023077510959729e+00 -6.018079559694416e+00 -5.990833849176520e+00 3.598830438147247e+00 4.755279524201089e+00 9.188912235268097e+03 + 178120 9.739313324187965e-01 -5.954455430513685e+00 -5.983525386285719e+00 3.941006994707139e+00 4.774082810103003e+00 9.166545825636676e+03 + 178140 1.039030751253139e+00 -6.057993247153625e+00 -5.967173197065491e+00 3.437639895496197e+00 4.959142677459594e+00 9.116560619394751e+03 + 178160 1.024271712008636e+00 -6.044007664614893e+00 -5.984727746972809e+00 3.429545770471989e+00 4.769940231110443e+00 9.170228152779446e+03 + 178180 1.038225068698104e+00 -6.072393376001667e+00 -5.957680663106505e+00 3.307112454238144e+00 4.965810603417115e+00 9.087579896938811e+03 + 178200 9.876023595098380e-01 -6.003155146069703e+00 -5.989286176991743e+00 3.701745143414262e+00 4.781382910075942e+00 9.184171768824084e+03 + 178220 1.025309394593949e+00 -6.062053287081526e+00 -5.972066170026809e+00 3.343456549566668e+00 4.860176501156219e+00 9.131496360839108e+03 + 178240 1.008415938885669e+00 -6.038491462437518e+00 -5.972393454322969e+00 3.505633754208940e+00 4.885178745436377e+00 9.132482764760189e+03 + 178260 9.810733857967525e-01 -5.997250640816810e+00 -6.007794333024505e+00 3.709508440633500e+00 4.648964928345817e+00 9.240991140741015e+03 + 178280 1.029430127637681e+00 -6.068294424510865e+00 -5.988540619196494e+00 3.299921547416364e+00 4.757880239392975e+00 9.181922499519484e+03 + 178300 9.795956104556666e-01 -5.992222493516088e+00 -6.005270538060213e+00 3.741055067736794e+00 4.666131176786061e+00 9.233228164287322e+03 + 178320 9.761041251076085e-01 -5.984890928112428e+00 -5.996650369351490e+00 3.766182588390559e+00 4.698658057028218e+00 9.206743637201160e+03 + 178340 1.007560883082137e+00 -6.026189148128525e+00 -5.986284192401719e+00 3.534246507370133e+00 4.763386938425393e+00 9.174986631651833e+03 + 178360 9.661643222374150e-01 -5.951196534330817e+00 -6.073781202962037e+00 3.867189625840211e+00 4.163289488643582e+00 9.444937990699609e+03 + 178380 1.036588790853904e+00 -6.038682155347941e+00 -6.030591728293103e+00 3.481939657473787e+00 4.528396141612204e+00 9.311204075383161e+03 + 178400 9.811053256602159e-01 -5.936825954768733e+00 -6.006574457379378e+00 4.053703798018720e+00 4.653197102482499e+00 9.237241349341162e+03 + 178420 1.014230630914596e+00 -5.963308186994956e+00 -5.976489479690434e+00 3.923031739294143e+00 4.847342716838255e+00 9.145013825967719e+03 + 178440 1.014891518514339e+00 -5.938243148997521e+00 -6.045235037090563e+00 4.039909979610042e+00 4.425546001238620e+00 9.356402450227621e+03 + 178460 1.025205128362773e+00 -5.930727592861884e+00 -5.999553240217312e+00 4.091827949924691e+00 4.696620432075316e+00 9.215653733060099e+03 + 178480 1.031304785829340e+00 -5.919381296402983e+00 -5.938413326626785e+00 4.127019982066699e+00 5.017735119324477e+00 9.028927111561710e+03 + 178500 1.002026526561253e+00 -5.854412742000912e+00 -5.964723374542423e+00 4.524903996272007e+00 4.891483273703437e+00 9.109020815274826e+03 + 178520 1.051121192789698e+00 -5.907075578058452e+00 -6.031214054178282e+00 4.158710488521642e+00 4.445888148274483e+00 9.313075315239599e+03 + 178540 1.033296495232992e+00 -5.867595673519162e+00 -6.021215763569765e+00 4.393659483725644e+00 4.511549154022981e+00 9.282274525149747e+03 + 178560 1.053584616793111e+00 -5.893024602178700e+00 -6.065211011266779e+00 4.232776329563904e+00 4.244055322819461e+00 9.418279501916308e+03 + 178580 1.120250113067785e+00 -5.998180702951038e+00 -5.988690801858783e+00 3.687073950663053e+00 4.741566431292232e+00 9.182354724242168e+03 + 178600 1.009390129991587e+00 -5.848038822714061e+00 -6.031044570371574e+00 4.513521076829045e+00 4.462673753731688e+00 9.312571196669442e+03 + 178620 1.018901890639166e+00 -5.885124155639941e+00 -5.989451538270686e+00 4.333224568703253e+00 4.734160593027233e+00 9.184668290300149e+03 + 178640 1.061454289004453e+00 -5.977464918813215e+00 -5.988253776177325e+00 3.769888303502095e+00 4.707937014947094e+00 9.181017685620633e+03 + 178660 9.963541925685615e-01 -5.914436344333303e+00 -6.021457466300760e+00 4.139996450521616e+00 4.525464606719383e+00 9.283029996831667e+03 + 178680 1.085717262167000e+00 -6.088901634842970e+00 -5.998204532105190e+00 3.228613063664555e+00 4.749409862916175e+00 9.211559129958203e+03 + 178700 9.790254375194649e-01 -5.975114500142242e+00 -6.008262610980734e+00 3.809056280535124e+00 4.618714698446929e+00 9.242448539905065e+03 + 178720 9.682338145768683e-01 -5.992616889360279e+00 -6.006162222551238e+00 3.691598859522338e+00 4.613819460206313e+00 9.235974691955236e+03 + 178740 9.666742776875273e-01 -6.012858823233547e+00 -5.977324017044870e+00 3.655844523785202e+00 4.859890879914071e+00 9.147586832780678e+03 + 178760 9.627152974033564e-01 -6.022546907993776e+00 -6.003023094192944e+00 3.608810220138910e+00 4.720918980283709e+00 9.226328965985926e+03 + 178780 9.655701205818503e-01 -6.034855459368957e+00 -5.994283150866871e+00 3.514038553717074e+00 4.747011027680502e+00 9.199501238284882e+03 + 178800 9.416645786675479e-01 -6.002637842850691e+00 -5.994889434521459e+00 3.656344061440584e+00 4.700836621129342e+00 9.201360418317568e+03 + 178820 9.588913304688526e-01 -6.026798382561734e+00 -5.992574659355109e+00 3.503130260629898e+00 4.699648175386389e+00 9.194283247053703e+03 + 178840 9.479200886603818e-01 -6.005791731186609e+00 -5.996943620055413e+00 3.634678558777769e+00 4.685485782133870e+00 9.207668499774536e+03 + 178860 9.485461644605615e-01 -5.997774830205608e+00 -6.008109689371725e+00 3.667434549614244e+00 4.608090188968113e+00 9.241954077193468e+03 + 178880 9.827662878359871e-01 -6.036433729504010e+00 -6.015910432531350e+00 3.481666114173510e+00 4.599514061360464e+00 9.265959590761777e+03 + 178900 9.935916504865916e-01 -6.041543001828783e+00 -6.010359719469600e+00 3.507629966499176e+00 4.686689199402958e+00 9.248874215666485e+03 + 178920 9.466490159337945e-01 -5.959535279680732e+00 -6.011378564188592e+00 3.914864425089416e+00 4.617172262722930e+00 9.251971942333561e+03 + 178940 9.896121235014427e-01 -6.006846766313679e+00 -6.010968826415185e+00 3.604596959235963e+00 4.580927452246375e+00 9.250749588808776e+03 + 178960 9.939686666479026e-01 -5.994896758983690e+00 -5.989534609625403e+00 3.729853267536776e+00 4.760643558941987e+00 9.184923661083600e+03 + 178980 9.548563913133278e-01 -5.917162620373237e+00 -6.012012072403470e+00 4.129352549254127e+00 4.584712317791269e+00 9.253931566940682e+03 + 179000 9.774606757168747e-01 -5.927382066564416e+00 -6.053995020383422e+00 4.078579470954653e+00 4.351548296834644e+00 9.383532790250505e+03 + 179020 1.046952091355962e+00 -6.008757444002383e+00 -6.018686516494840e+00 3.639906115832221e+00 4.582891845061532e+00 9.274504500645327e+03 + 179040 1.036609430692788e+00 -5.973254558448725e+00 -5.992141629145463e+00 3.863082422401268e+00 4.754629939695857e+00 9.192911664572319e+03 + 179060 1.048765002866066e+00 -5.974059236403223e+00 -5.968602903436663e+00 3.792558794723447e+00 4.823889902982233e+00 9.120871580184334e+03 + 179080 1.008118343371213e+00 -5.894381220275415e+00 -5.962682958894735e+00 4.291121631611891e+00 4.898922478799862e+00 9.102815373024136e+03 + 179100 9.845124210627896e-01 -5.833970389845003e+00 -6.011786987451313e+00 4.513995487648748e+00 4.492945067163769e+00 9.253238010766636e+03 + 179120 1.072437769755122e+00 -5.931199693407397e+00 -5.995218721846892e+00 4.104570232884326e+00 4.736963064672111e+00 9.202349724725153e+03 + 179140 1.087599942076391e+00 -5.911302616185481e+00 -6.037730371950281e+00 4.082037605165597e+00 4.356069866932144e+00 9.333207043313270e+03 + 179160 1.159924825293056e+00 -5.973178625032077e+00 -5.979538598384348e+00 3.844262777381127e+00 4.807742826189688e+00 9.154320380111898e+03 + 179180 1.079864959925007e+00 -5.811342270592492e+00 -5.991227210104730e+00 4.674675665519170e+00 4.641748505735476e+00 9.190094655457411e+03 + 179200 1.094663459872127e+00 -5.799174096416000e+00 -5.965781600797892e+00 4.778738181193113e+00 4.822052108604312e+00 9.112197436082915e+03 + 179220 1.126776355936258e+00 -5.822365844157098e+00 -5.975574398333231e+00 4.639224179293446e+00 4.759476952266953e+00 9.142126718327112e+03 + 179240 1.108733868113785e+00 -5.784329381030785e+00 -5.981835139084190e+00 4.841839071545041e+00 4.707730444885112e+00 9.161301772065679e+03 + 179260 1.157252343974405e+00 -5.860423604095528e+00 -5.981557347358155e+00 4.474619147027831e+00 4.779050447827639e+00 9.160492423520394e+03 + 179280 1.050759677168004e+00 -5.725083400195427e+00 -6.030463589043251e+00 5.108584302833474e+00 4.355044001037776e+00 9.310804999435015e+03 + 179300 1.153099017755405e+00 -5.917281624519756e+00 -6.037427122771275e+00 4.144906584518203e+00 4.455012541102215e+00 9.332258387281250e+03 + 179320 1.066281899149278e+00 -5.852393396124542e+00 -6.039406855123252e+00 4.477501357795260e+00 4.403641135985422e+00 9.338414358479926e+03 + 179340 1.055117509048732e+00 -5.895101540476739e+00 -6.029988675915589e+00 4.196186873142757e+00 4.421644067736137e+00 9.309335999159755e+03 + 179360 1.088628877604191e+00 -5.992859793628127e+00 -5.991680388486882e+00 3.762991400237708e+00 4.769763727071091e+00 9.191524924205680e+03 + 179380 1.006057422025108e+00 -5.902516707851793e+00 -6.042189643344285e+00 4.224186164882139e+00 4.422162554967344e+00 9.347007224092378e+03 + 179400 1.067073471864699e+00 -6.017593386754417e+00 -5.968831456357947e+00 3.654690582391890e+00 4.934689132612762e+00 9.121615772709421e+03 + 179420 9.493469236958167e-01 -5.863158978390316e+00 -5.998355935410769e+00 4.493491455020175e+00 4.717169606147252e+00 9.211989755451956e+03 + 179440 1.024690346442564e+00 -5.991189180023664e+00 -6.012499892494338e+00 3.736200917484644e+00 4.613831508655938e+00 9.255444942789482e+03 + 179460 9.905185285712660e-01 -5.958052786732432e+00 -6.050145850787127e+00 3.902420488171484e+00 4.373607863013828e+00 9.371607982112311e+03 + 179480 1.012203309279417e+00 -6.009620545167718e+00 -6.001013786568098e+00 3.599234047747770e+00 4.648655387518377e+00 9.220135003691834e+03 + 179500 9.756329817127348e-01 -5.972854496973094e+00 -5.998357695805740e+00 3.864152014737036e+00 4.717708700432719e+00 9.211969405689615e+03 + 179520 1.063906395039762e+00 -6.119163207934124e+00 -5.970129535078084e+00 3.072165763851364e+00 4.927940176277087e+00 9.125588011098829e+03 + 179540 9.405744271454427e-01 -5.953925041191678e+00 -6.000955331397253e+00 3.958556565781662e+00 4.688501361507360e+00 9.219977193239692e+03 + 179560 9.849918780386494e-01 -6.033790864231099e+00 -5.973498460515798e+00 3.541092306195253e+00 4.887300618547831e+00 9.135886662054645e+03 + 179580 9.766016973973498e-01 -6.032001375606143e+00 -6.000941688112572e+00 3.528842145271762e+00 4.707191677330949e+00 9.219938326157522e+03 + 179600 9.562399358420326e-01 -6.010195896672728e+00 -5.997453217565448e+00 3.697014515803902e+00 4.770184951161127e+00 9.209240453682105e+03 + 179620 9.960619207915347e-01 -6.075289030892755e+00 -5.981247386562478e+00 3.253358468996880e+00 4.793360143638755e+00 9.159591783229735e+03 + 179640 9.716103013073514e-01 -6.042232182611457e+00 -6.026227255174946e+00 3.442828609664788e+00 4.534731379759752e+00 9.297734506423863e+03 + 179660 9.552420684467672e-01 -6.019866844546089e+00 -6.013878302465820e+00 3.611844376103451e+00 4.646231511452244e+00 9.259710082880933e+03 + 179680 9.266938994253918e-01 -5.975106750472463e+00 -5.997410301576512e+00 3.847217937193010e+00 4.719147495290188e+00 9.209119052820750e+03 + 179700 9.438634623097828e-01 -5.993285815372074e+00 -6.020584974776908e+00 3.686683256369400e+00 4.529927258535582e+00 9.280348006930735e+03 + 179720 1.013962611103239e+00 -6.083485666507359e+00 -6.020305982913003e+00 3.230143604732655e+00 4.592931124955888e+00 9.279507794570471e+03 + 179740 9.960948714186612e-01 -6.039042695708099e+00 -6.011399618238673e+00 3.508025351148733e+00 4.666756179730594e+00 9.252093022876128e+03 + 179760 9.777158998479560e-01 -5.991301067610372e+00 -6.004030443417117e+00 3.756724766710816e+00 4.683630720963947e+00 9.229430659112102e+03 + 179780 9.987071503097394e-01 -5.995807221375340e+00 -5.999022852931034e+00 3.704311004565095e+00 4.685846350554923e+00 9.214049534507742e+03 + 179800 1.015541225126704e+00 -5.987711881670568e+00 -6.028896461834986e+00 3.757709283605004e+00 4.521221051007732e+00 9.305969300247589e+03 + 179820 1.028860904465860e+00 -5.971150371284462e+00 -6.049700792316487e+00 3.804833857091046e+00 4.353785183886794e+00 9.370269859923446e+03 + 179840 1.000550535697526e+00 -5.896608786478920e+00 -6.061727664921485e+00 4.248849244782436e+00 4.300711092701366e+00 9.407507613248490e+03 + 179860 1.056696099303076e+00 -5.953794645637642e+00 -6.008726151023369e+00 3.980390862933721e+00 4.664965658385894e+00 9.243856354602514e+03 + 179880 1.057240979065718e+00 -5.935570772799001e+00 -6.021250393418533e+00 4.015752913671358e+00 4.523767273195567e+00 9.282412600299058e+03 + 179900 1.120549265292441e+00 -6.016716129814172e+00 -6.037219057522423e+00 3.536374825471076e+00 4.418643841752495e+00 9.331639481452701e+03 + 179920 1.019449897934293e+00 -5.864620969248749e+00 -6.027432864496088e+00 4.426358685091675e+00 4.491467587522092e+00 9.301417253097643e+03 + 179940 1.063034029699103e+00 -5.934078810947814e+00 -5.960638495884524e+00 4.052504515142052e+00 4.899994694137503e+00 9.096592949531385e+03 + 179960 1.039740719005494e+00 -5.909306513036979e+00 -6.023456819279144e+00 4.230111827237595e+00 4.574643104092284e+00 9.289184221885396e+03 + 179980 1.076107557885185e+00 -5.981579552764204e+00 -6.013247463443655e+00 3.771960594497863e+00 4.590118550783118e+00 9.257755134303496e+03 + 180000 1.125421404175584e+00 -6.085968025914815e+00 -5.993606785513094e+00 3.223085671505041e+00 4.753438206747486e+00 9.197421878711461e+03 + 180020 9.913221772149444e-01 -5.932501751885166e+00 -6.008979852863348e+00 4.118210015318938e+00 4.679060924554343e+00 9.244633695269851e+03 + 180040 9.653988223105963e-01 -5.948516840407977e+00 -6.031587231318644e+00 3.984058623317844e+00 4.507055583607344e+00 9.314239828369922e+03 + 180060 9.986620192815925e-01 -6.047377353568788e+00 -5.999813741405408e+00 3.411792750496912e+00 4.684910371984237e+00 9.216485518753385e+03 + 180080 9.448802166799275e-01 -6.005760266482371e+00 -6.014363156470528e+00 3.643047108458528e+00 4.593647982853600e+00 9.261186589794068e+03 + 180100 1.001341353680793e+00 -6.110810269308422e+00 -5.949083770314513e+00 3.090503695395500e+00 5.019162279713354e+00 9.061404095381333e+03 + 180120 9.299581804089481e-01 -6.013988834245307e+00 -5.962317047744852e+00 3.635105198618713e+00 4.931812592887443e+00 9.101745247127130e+03 + 180140 9.638827220680215e-01 -6.065461973945254e+00 -5.965576643573652e+00 3.360499190895905e+00 4.934056215094563e+00 9.111667412037092e+03 + 180160 9.782190348152016e-01 -6.082095963041246e+00 -5.953448674714096e+00 3.260113302422796e+00 4.998825940100817e+00 9.074702574970917e+03 + 180180 9.233719232405143e-01 -5.991614092881761e+00 -5.962665681788380e+00 3.738755722331895e+00 4.904981978582231e+00 9.102792258098307e+03 + 180200 9.340234955887675e-01 -5.994663038346721e+00 -5.995551730692926e+00 3.696295159558013e+00 4.691192150581402e+00 9.203403657845156e+03 + 180220 9.998598897263635e-01 -6.076309704171266e+00 -6.019594603152853e+00 3.274489030246864e+00 4.600155916928115e+00 9.277313333831849e+03 + 180240 1.004637648004705e+00 -6.065358548623474e+00 -6.018882220206416e+00 3.317249463327768e+00 4.584123733287092e+00 9.275119190255426e+03 + 180260 9.140358557284201e-01 -5.913743166992745e+00 -6.050507478014527e+00 4.115038039785730e+00 4.329716201689925e+00 9.372735275506027e+03 + 180280 9.504128454372901e-01 -5.946921224160363e+00 -6.019924946092878e+00 4.014906948323338e+00 4.595708279697375e+00 9.278289147806650e+03 + 180300 9.955057992839643e-01 -5.991191950976859e+00 -6.031813146029588e+00 3.775132985903218e+00 4.541879797800828e+00 9.314970387136289e+03 + 180320 1.038086217098168e+00 -6.032738523484217e+00 -6.031843260940660e+00 3.541326183624400e+00 4.546466919690935e+00 9.315071414834885e+03 + 180340 9.814040669012805e-01 -5.930386226000901e+00 -6.042050315964517e+00 4.049195524198636e+00 4.408003039665475e+00 9.346601217574911e+03 + 180360 1.047879431956461e+00 -6.013010299762059e+00 -6.043940529203699e+00 3.594948528078496e+00 4.417342364187065e+00 9.352436173879929e+03 + 180380 1.027204192272059e+00 -5.970956026261110e+00 -6.010311474391696e+00 3.864662232589248e+00 4.638677159187505e+00 9.248715701734483e+03 + 180400 9.865789025789117e-01 -5.901172920863145e+00 -6.022101230227761e+00 4.165503004116772e+00 4.471113938149751e+00 9.284986017861145e+03 + 180420 1.015911017697820e+00 -5.936081645743652e+00 -6.052055803979870e+00 3.995830472190482e+00 4.329888908655136e+00 9.377499928077836e+03 + 180440 1.025610344802659e+00 -5.943830544495004e+00 -5.968647004380312e+00 4.046964197987646e+00 4.904464244991452e+00 9.121041661909290e+03 + 180460 1.091639965437210e+00 -6.037476042009661e+00 -6.020683791906936e+00 3.525609162083694e+00 4.622032860765850e+00 9.280644127461339e+03 + 180480 1.004995671747160e+00 -5.910121904438055e+00 -6.034021232946737e+00 4.155591211680798e+00 4.444142094024826e+00 9.321800643674747e+03 + 180500 1.037650957236568e+00 -5.966103607909934e+00 -6.043241321583285e+00 3.863551050522339e+00 4.420614361587351e+00 9.350274424950541e+03 + 180520 1.050038963324319e+00 -6.003953765909282e+00 -6.039391287993084e+00 3.662328622192842e+00 4.458840886448829e+00 9.338383615130062e+03 + 180540 9.915689712192942e-01 -5.950127446817041e+00 -5.991119688023770e+00 3.969049991971632e+00 4.733666199433772e+00 9.189816930724404e+03 + 180560 9.968365549273531e-01 -5.996951601235232e+00 -6.005202592116648e+00 3.737937451221171e+00 4.690558984743369e+00 9.233029473009072e+03 + 180580 1.022850048243853e+00 -6.081493030290620e+00 -6.019854983715596e+00 3.273939425566257e+00 4.627874627456928e+00 9.278110643972086e+03 + 180600 9.673253678583703e-01 -6.043222685009202e+00 -6.006990898047782e+00 3.487984697026506e+00 4.696033224609891e+00 9.238535507917653e+03 + 180620 9.130043827356075e-01 -5.996538830222480e+00 -6.052268587011494e+00 3.686164608785946e+00 4.366155721151436e+00 9.378187555666180e+03 + 180640 9.443766292908865e-01 -6.068685046904566e+00 -5.982508910144664e+00 3.300461091922872e+00 4.795297804912294e+00 9.163446624817416e+03 + 180660 8.701562468933893e-01 -5.972241463864579e+00 -5.967321019397588e+00 3.843693780889991e+00 4.871947734455777e+00 9.117011773639222e+03 + 180680 9.514773545243300e-01 -6.096613534870450e+00 -5.981227844278083e+00 3.211338752091921e+00 4.873901243351202e+00 9.159510830644731e+03 + 180700 9.058303090571815e-01 -6.024313798326060e+00 -6.001161544673757e+00 3.607811346197257e+00 4.740755169468456e+00 9.220620680508207e+03 + 180720 9.290727136485980e-01 -6.049150166104898e+00 -5.975689433510163e+00 3.403279214462404e+00 4.825102109033002e+00 9.142583706787240e+03 + 180740 9.324953553023744e-01 -6.037878139155898e+00 -5.963261386182763e+00 3.503737107125956e+00 4.932198049602897e+00 9.104626628440999e+03 + 180760 9.343066694848940e-01 -6.017516299990763e+00 -5.999546246205599e+00 3.611596700090432e+00 4.714783529781680e+00 9.215642372700175e+03 + 180780 9.639711637325877e-01 -6.032249107436899e+00 -5.996627373481408e+00 3.480356127134967e+00 4.684901635952908e+00 9.206707951471177e+03 + 180800 9.614517521289969e-01 -5.995363885380623e+00 -6.001052380607915e+00 3.758697549686905e+00 4.726033329800001e+00 9.220261531279049e+03 + 180820 1.026855300177598e+00 -6.061057180173231e+00 -5.981450471276252e+00 3.395749156205141e+00 4.852863197789981e+00 9.160191346300924e+03 + 180840 1.016742308594960e+00 -6.017777740616434e+00 -6.017843521608612e+00 3.614784570555419e+00 4.614406845918755e+00 9.271903497567455e+03 + 180860 9.598269151110441e-01 -5.911964366635502e+00 -6.022243237137112e+00 4.186222851143889e+00 4.552984511123583e+00 9.285455372202970e+03 + 180880 1.002722684794844e+00 -5.961716793005307e+00 -6.019558922476595e+00 3.865187806356758e+00 4.533049347892014e+00 9.277180178931494e+03 + 180900 1.046379800253978e+00 -6.015224534558715e+00 -6.006456132163017e+00 3.592023894417100e+00 4.642373417879085e+00 9.236869396908458e+03 + 180920 9.970554810146385e-01 -5.935102661524946e+00 -6.023218496272721e+00 4.028023722187161e+00 4.522048963184077e+00 9.288445026950883e+03 + 180940 1.011203324394180e+00 -5.953842743406380e+00 -6.035022009806198e+00 3.935708705127477e+00 4.469564795008845e+00 9.324871255177608e+03 + 180960 1.066170903186995e+00 -6.037285389211596e+00 -6.011338872604016e+00 3.513267075448850e+00 4.662255989020046e+00 9.251848390542702e+03 + 180980 1.022694318436432e+00 -5.977692528751573e+00 -6.009175393001126e+00 3.830827380005613e+00 4.650047901527188e+00 9.245231439748079e+03 + 181000 1.034961924456969e+00 -6.001779995912164e+00 -6.010284718278571e+00 3.689523617872284e+00 4.640688185942842e+00 9.248647610236281e+03 + 181020 1.026810033396168e+00 -5.997263531486535e+00 -6.004291827620186e+00 3.723401964280419e+00 4.683044400255682e+00 9.230241780176573e+03 + 181040 9.804031346278518e-01 -5.937073717236286e+00 -6.034438702078535e+00 4.067700415001844e+00 4.508615604854936e+00 9.323068168013077e+03 + 181060 1.039851783436849e+00 -6.035979728872313e+00 -6.004116623480322e+00 3.514686471501187e+00 4.697649353461620e+00 9.229703798412140e+03 + 181080 1.033040025606348e+00 -6.038778997979981e+00 -6.001434796116058e+00 3.475648797779997e+00 4.690084983879205e+00 9.221448835374671e+03 + 181100 1.033507833197241e+00 -6.053159380093524e+00 -5.985074307750543e+00 3.407894125392784e+00 4.798849146917072e+00 9.171288838114617e+03 + 181120 9.969357198094637e-01 -6.012982435253976e+00 -6.009382161123741e+00 3.593225227786296e+00 4.613898558982725e+00 9.245876091373377e+03 + 181140 9.982846919832451e-01 -6.030380113627192e+00 -5.974680103092503e+00 3.554222551509219e+00 4.874060631548177e+00 9.139490971491072e+03 + 181160 9.421994365518558e-01 -5.961705253898592e+00 -6.016957260464529e+00 3.879061280752804e+00 4.561795708830813e+00 9.269159035816336e+03 + 181180 9.774436339880400e-01 -6.028891534586135e+00 -6.018560788954730e+00 3.473155861176168e+00 4.532476601269416e+00 9.274125502040955e+03 + 181200 9.927633887557642e-01 -6.069571935294340e+00 -5.974638821217621e+00 3.371996019863215e+00 4.917116651743664e+00 9.139363015209634e+03 + 181220 9.726828831700212e-01 -6.064099161709088e+00 -5.984873484400010e+00 3.317905002741819e+00 4.772831101984485e+00 9.170693903605745e+03 + 181240 9.437891248539668e-01 -6.053950855937367e+00 -6.004152569766916e+00 3.435713003311629e+00 4.721662468762235e+00 9.229792756376513e+03 + 181260 9.608334786304651e-01 -6.119763141484224e+00 -6.015103620339307e+00 3.066593407992396e+00 4.667564574415064e+00 9.263481524973848e+03 + 181280 9.019207094144750e-01 -6.077102424171327e+00 -6.013285396171963e+00 3.259574067958527e+00 4.626021318384048e+00 9.257886567491509e+03 + 181300 8.936973742317200e-01 -6.100053003912221e+00 -5.996814674143701e+00 3.144766412054914e+00 4.737576877665652e+00 9.207289289537144e+03 + 181320 9.100568746739061e-01 -6.149481302277849e+00 -5.994642580200656e+00 2.879717827210444e+00 4.768825730592487e+00 9.200635124114659e+03 + 181340 8.800653825952511e-01 -6.118979960054954e+00 -5.994741207337619e+00 3.022288895558907e+00 4.735687039546693e+00 9.200939050143530e+03 + 181360 8.351205731705921e-01 -6.053320931461045e+00 -6.013307295879164e+00 3.390418836210975e+00 4.620183323812224e+00 9.257967641631794e+03 + 181380 8.896019121328670e-01 -6.123720865255657e+00 -6.014197575234633e+00 3.011383500560150e+00 4.640283180535226e+00 9.260687987328974e+03 + 181400 9.140412800009025e-01 -6.139902444982267e+00 -5.971674415745955e+00 2.947432952075728e+00 4.913424329154024e+00 9.130324250536150e+03 + 181420 8.628342615565623e-01 -6.033889438192309e+00 -5.973026226407151e+00 3.502942118204216e+00 4.852428098826179e+00 9.134430826065634e+03 + 181440 9.256285000643992e-01 -6.088529603232922e+00 -5.945158927853521e+00 3.295458907263929e+00 5.118715511832757e+00 9.049457855344832e+03 + 181460 9.415491294923307e-01 -6.068621345371437e+00 -5.996079238005941e+00 3.343030296026801e+00 4.759578302374318e+00 9.205020170948526e+03 + 181480 9.911251649508644e-01 -6.104881485605352e+00 -5.959889012494896e+00 3.158686417927005e+00 4.991255636039944e+00 9.094310103409998e+03 + 181500 9.386703973013569e-01 -5.999669278295515e+00 -5.992197154079760e+00 3.701122455180400e+00 4.744028548734752e+00 9.193118363798327e+03 + 181520 9.709752550783157e-01 -6.024223410957008e+00 -6.035802155111824e+00 3.548545125139667e+00 4.482058184397848e+00 9.327293231385385e+03 + 181540 9.641803582799450e-01 -5.996942640876028e+00 -6.014787214455438e+00 3.740699188836333e+00 4.638232885904519e+00 9.262505834364767e+03 + 181560 9.759908150220242e-01 -5.999752521652729e+00 -6.011224667211032e+00 3.684332047474408e+00 4.618457212369844e+00 9.251540289516433e+03 + 181580 9.730523394290131e-01 -5.980340678994457e+00 -5.994630445882089e+00 3.797988431670070e+00 4.715934378867008e+00 9.200566221276064e+03 + 181600 9.922259010250978e-01 -5.992307729420636e+00 -5.994807275657577e+00 3.788666581122309e+00 4.774313799826270e+00 9.201088159728963e+03 + 181620 1.024734629795362e+00 -6.023836930280693e+00 -6.005070978818349e+00 3.537965090685463e+00 4.645722088003846e+00 9.232621243018730e+03 + 181640 9.476716807509727e-01 -5.893287536047615e+00 -6.028809688865383e+00 4.289063305741166e+00 4.510874132276170e+00 9.305712211848717e+03 + 181660 1.007705689979440e+00 -5.967292709368282e+00 -6.027315623568732e+00 3.896843639264795e+00 4.552182777409853e+00 9.301100273893862e+03 + 181680 9.948290999588609e-01 -5.935225817735478e+00 -6.048499166884421e+00 4.063475261790677e+00 4.413042161983324e+00 9.366535231242346e+03 + 181700 1.057762420597955e+00 -6.019425899228712e+00 -6.033145446176822e+00 3.604505064602411e+00 4.525725302933335e+00 9.319080586248412e+03 + 181720 1.065828124030555e+00 -6.025897715005232e+00 -6.001589154902350e+00 3.561013087282940e+00 4.700596601131213e+00 9.221940570660796e+03 + 181740 9.670976860416579e-01 -5.879209048945593e+00 -6.022321361815548e+00 4.366850275500990e+00 4.545077228442870e+00 9.285687598831506e+03 + 181760 1.014831224613179e+00 -5.949645957338634e+00 -6.024826293346750e+00 3.864529488974774e+00 4.432832365496771e+00 9.293414259146552e+03 + 181780 1.033522577357795e+00 -5.980750346560871e+00 -5.999495271666475e+00 3.787685903271255e+00 4.680049642547096e+00 9.215502539762370e+03 + 181800 9.760676000770202e-01 -5.903055509685956e+00 -6.007945443344893e+00 4.224935303616530e+00 4.622641072882137e+00 9.241457358804264e+03 + 181820 9.628423259909821e-01 -5.895559375821137e+00 -6.028200632522810e+00 4.227904734093922e+00 4.466258111944780e+00 9.303797019279371e+03 + 181840 1.004632299599707e+00 -5.977182932813477e+00 -5.983487567904758e+00 3.846378811904008e+00 4.810176621570744e+00 9.166396868966467e+03 + 181860 1.000637274111631e+00 -5.992729982203437e+00 -5.972519341505672e+00 3.770203876096978e+00 4.886256502570091e+00 9.132865625951643e+03 + 181880 1.000968757102357e+00 -6.019676131962095e+00 -5.971099905394277e+00 3.595931910844122e+00 4.874864120943302e+00 9.128532571267064e+03 + 181900 9.943822118448582e-01 -6.042329420760476e+00 -5.950118841222725e+00 3.492641264733741e+00 5.022128681980573e+00 9.064547890073829e+03 + 181920 9.509009486225022e-01 -6.009284036946914e+00 -6.001010045070011e+00 3.595621610694612e+00 4.643132152447895e+00 9.220124150339174e+03 + 181940 9.640261589274948e-01 -6.057726239945605e+00 -5.942244232324349e+00 3.429837357705744e+00 5.092952916249926e+00 9.040582476612153e+03 + 181960 9.556198166713632e-01 -6.068523922199570e+00 -5.972846780969221e+00 3.328443946284227e+00 4.877836897218652e+00 9.133902591650038e+03 + 181980 9.205975274375046e-01 -6.035687790830488e+00 -6.018216507122204e+00 3.457267094312269e+00 4.557589909037647e+00 9.273069088132621e+03 + 182000 9.092847204146728e-01 -6.033061985401256e+00 -5.967132899963322e+00 3.526192316645555e+00 4.904767327723169e+00 9.116426496260070e+03 + 182020 9.451764137513948e-01 -6.090705591156501e+00 -5.958829882959080e+00 3.273493194957166e+00 5.030743919126650e+00 9.091075975346628e+03 + 182040 8.527114361738871e-01 -5.948658044663998e+00 -6.089683480935885e+00 3.963260159238467e+00 4.153470280549560e+00 9.494390287868422e+03 + 182060 9.396643653636382e-01 -6.068486733793518e+00 -6.031157935789227e+00 3.340147394319639e+00 4.554495129073097e+00 9.312941185847112e+03 + 182080 9.575131070140854e-01 -6.077625724672888e+00 -6.009996609000997e+00 3.272910111979643e+00 4.661246959739467e+00 9.247767864699133e+03 + 182100 9.208155532903834e-01 -5.995175869056211e+00 -6.021359315727283e+00 3.732314283393104e+00 4.581964880732528e+00 9.282719461112672e+03 + 182120 1.003986353811705e+00 -6.075659119257620e+00 -6.024067327676457e+00 3.226029051833506e+00 4.522277102896487e+00 9.291055757864491e+03 + 182140 9.596345583736023e-01 -5.958865454126673e+00 -6.021609424102346e+00 3.935689045748638e+00 4.575403460550351e+00 9.283499207195933e+03 + 182160 1.038161002125665e+00 -6.022287893741444e+00 -6.008877960936134e+00 3.630745518646675e+00 4.707747427995160e+00 9.244327378943810e+03 + 182180 1.038766359938085e+00 -5.982080068189855e+00 -6.032124945224610e+00 3.795283981242434e+00 4.507918552889180e+00 9.315924433733193e+03 + 182200 1.097354821803763e+00 -6.047100933383801e+00 -6.007640724794521e+00 3.423950426663027e+00 4.650537050830216e+00 9.240526136137129e+03 + 182220 1.037630195085614e+00 -5.948404359040689e+00 -6.037398857422440e+00 3.930745581669599e+00 4.419725400107470e+00 9.332208242367906e+03 + 182240 9.980981943497592e-01 -5.887581941566524e+00 -5.997086264481874e+00 4.266753195340176e+00 4.637962427421036e+00 9.208073557800413e+03 + 182260 1.015156081367137e+00 -5.911922238064271e+00 -5.960855052407324e+00 4.226026120474256e+00 4.945046328187900e+00 9.097235328356561e+03 + 182280 1.085619397997308e+00 -6.017531383885437e+00 -5.978495392569972e+00 3.612630568118046e+00 4.836781271051581e+00 9.151144825762951e+03 + 182300 1.041657901787031e+00 -5.959996567619565e+00 -6.016244510140841e+00 3.888494455072252e+00 4.565510064774112e+00 9.266987443649163e+03 + 182320 1.065477873461993e+00 -6.008850312936737e+00 -5.999875733966373e+00 3.620792468928576e+00 4.672325890188010e+00 9.216652494203507e+03 + 182340 1.038130279452357e+00 -5.984766817780004e+00 -5.947172652557769e+00 3.801532616012624e+00 5.017404130396965e+00 9.055573047543021e+03 + 182360 9.927442724458968e-01 -5.934054925695696e+00 -5.936661410547272e+00 4.090282078728653e+00 5.075315239358678e+00 9.023623477054431e+03 + 182380 9.885691098897834e-01 -5.943539026770265e+00 -5.962090975748258e+00 3.974204234348758e+00 4.867676072412299e+00 9.101034071285543e+03 + 182400 1.010170362051772e+00 -5.990898180052040e+00 -6.011395017024995e+00 3.702858965442329e+00 4.585162955668352e+00 9.252047436767594e+03 + 182420 9.628682229100015e-01 -5.939113311982030e+00 -6.046757477562593e+00 4.028047253273160e+00 4.409937796628779e+00 9.361127099358822e+03 + 182440 1.037001329506324e+00 -6.069564591617658e+00 -5.964943167607914e+00 3.343723575721161e+00 4.944475982498152e+00 9.109759226191385e+03 + 182460 9.600789418251379e-01 -5.975903137652145e+00 -6.023302846267487e+00 3.855991458634700e+00 4.583814996684197e+00 9.288704180610326e+03 + 182480 9.778646620103488e-01 -6.024079995783051e+00 -6.005296386751924e+00 3.540055005205066e+00 4.647913395015901e+00 9.233324857474610e+03 + 182500 9.957557160515575e-01 -6.071591666086233e+00 -5.974154681995539e+00 3.370210400637615e+00 4.929708641610941e+00 9.137882616331639e+03 + 182520 1.013325417394368e+00 -6.118047820343834e+00 -5.975339156813394e+00 3.078019194855379e+00 4.897474424941468e+00 9.141508124314574e+03 + 182540 9.613240598370664e-01 -6.061677844223954e+00 -6.009592888465038e+00 3.376534819403375e+00 4.675614695491929e+00 9.246504140606903e+03 + 182560 9.617654015954540e-01 -6.081063719797248e+00 -5.982361662175835e+00 3.277796105263663e+00 4.844558594219871e+00 9.162983298053527e+03 + 182580 9.594098643635102e-01 -6.093744497442604e+00 -5.990320539733304e+00 3.177423600274917e+00 4.771299970247446e+00 9.187383874962499e+03 + 182600 9.497451495577089e-01 -6.095427173149379e+00 -5.996070252507400e+00 3.204007521222534e+00 4.774530334982556e+00 9.205012574430339e+03 + 182620 9.573688775996365e-01 -6.123038709052206e+00 -6.001865206875396e+00 3.049202062236197e+00 4.744999063274300e+00 9.222808399023968e+03 + 182640 8.664541792424135e-01 -6.005982223020002e+00 -6.049353358631251e+00 3.734610787240868e+00 4.485567014899529e+00 9.369171635410001e+03 + 182660 9.375517716114481e-01 -6.127673878863621e+00 -5.986889371149994e+00 3.020911417051582e+00 4.829317846675385e+00 9.176856986943652e+03 + 182680 9.542033162293304e-01 -6.163652850380975e+00 -5.989981148480254e+00 2.827329966624821e+00 4.824579754547773e+00 9.186345057329394e+03 + 182700 8.907672037867657e-01 -6.075169465346674e+00 -6.015855579770943e+00 3.286519169470169e+00 4.627108679240144e+00 9.265792099413395e+03 + 182720 9.522489418475915e-01 -6.164499173195958e+00 -5.974007236244782e+00 2.821288621963502e+00 4.915122802469128e+00 9.137453950196372e+03 + 182740 9.171069863368213e-01 -6.099004952098431e+00 -5.994686665292605e+00 3.194626120653698e+00 4.793637866695464e+00 9.200752811985540e+03 + 182760 1.009850135217530e+00 -6.210106083450473e+00 -5.975706558111641e+00 2.553277377512090e+00 4.899235725216977e+00 9.142665386615898e+03 + 182780 9.033878153086177e-01 -6.018592788233847e+00 -6.034564683207395e+00 3.556617139290597e+00 4.464904046709727e+00 9.323433001476336e+03 + 182800 9.333965571682911e-01 -6.024413175908081e+00 -5.998025762073112e+00 3.525744998976313e+00 4.677265612655801e+00 9.210993073101467e+03 + 182820 9.867772757962188e-01 -6.059120723071954e+00 -5.993772073276403e+00 3.383007862082665e+00 4.758249921879597e+00 9.197944292885690e+03 + 182840 1.003767031592404e+00 -6.045447409391301e+00 -5.971886935895461e+00 3.419944180460007e+00 4.842339802719602e+00 9.130949863239864e+03 + 182860 1.011828891863232e+00 -6.025200376837055e+00 -6.002443913195602e+00 3.548344742068656e+00 4.679015877849244e+00 9.224544093170924e+03 + 182880 9.871520108714894e-01 -5.961223240183211e+00 -6.026562622126217e+00 3.891081131039785e+00 4.515892288686365e+00 9.298767393333714e+03 + 182900 1.005301953050382e+00 -5.967290282470310e+00 -6.045786421458040e+00 3.814054396272449e+00 4.363317418966654e+00 9.358152078470661e+03 + 182920 1.015613564543907e+00 -5.968050868607349e+00 -6.060904531574825e+00 3.826824915361818e+00 4.293644813544667e+00 9.404949274246454e+03 + 182940 9.969716708539996e-01 -5.931123384339414e+00 -6.014241296501447e+00 4.075206707600547e+00 4.597930793510819e+00 9.260819731382779e+03 + 182960 1.060537865677831e+00 -6.019367173577299e+00 -5.977793615209092e+00 3.587407651604850e+00 4.826129457242462e+00 9.148989400562497e+03 + 182980 1.022625105231310e+00 -5.957877138585613e+00 -6.016767132936128e+00 3.974366214218911e+00 4.636210753461081e+00 9.268586020405126e+03 + 183000 9.684773287633293e-01 -5.876876887352115e+00 -6.054699949295212e+00 4.353707550284700e+00 4.332620010577529e+00 9.385732056240946e+03 + 183020 1.020727142661099e+00 -5.958063270001578e+00 -6.020554289981227e+00 3.928433995752505e+00 4.569600888575266e+00 9.280264834202590e+03 + 183040 9.880035495949384e-01 -5.916004221742985e+00 -6.103653582651074e+00 4.092692618517393e+00 4.015180949538397e+00 9.537974668507883e+03 + 183060 1.022242628823166e+00 -5.980092836724189e+00 -6.006519187213458e+00 3.831760600373085e+00 4.680016406399178e+00 9.237082033021474e+03 + 183080 1.039545886716792e+00 -6.023733054906250e+00 -6.029721835420217e+00 3.583538027710625e+00 4.549149523238642e+00 9.308532809260447e+03 + 183100 1.024180695182789e+00 -6.025497882006650e+00 -6.004890319711416e+00 3.578946135833577e+00 4.697277947542775e+00 9.232075672394185e+03 + 183120 1.001278174104750e+00 -6.021736612040046e+00 -5.999684612436123e+00 3.591359579268254e+00 4.717985573529890e+00 9.216079003670620e+03 + 183140 9.874100598659102e-01 -6.034737467594228e+00 -5.988819981406456e+00 3.512523950341049e+00 4.776189261739258e+00 9.182770713788766e+03 + 183160 1.003855482111840e+00 -6.090995565314183e+00 -5.965986545609766e+00 3.207348821615689e+00 4.925169957841730e+00 9.112938000938619e+03 + 183180 9.126786489754910e-01 -5.985258903960299e+00 -6.002868345603831e+00 3.793088291915336e+00 4.691972152945887e+00 9.225858751670539e+03 + 183200 9.476196599666125e-01 -6.061428688049135e+00 -5.986781706509492e+00 3.354329282525161e+00 4.782963802108851e+00 9.176512968531300e+03 + 183220 9.276450905201146e-01 -6.047813059089366e+00 -5.987852265994707e+00 3.460258387845239e+00 4.804562540697511e+00 9.179791576862553e+03 + 183240 9.974596717293623e-01 -6.160287482512414e+00 -5.979503677967003e+00 2.881390773358254e+00 4.919479355261344e+00 9.154252378065508e+03 + 183260 9.024733952084930e-01 -6.022562244245775e+00 -6.014707626239056e+00 3.601092192538271e+00 4.646194624631065e+00 9.262269785166551e+03 + 183280 9.354355866101309e-01 -6.067988331930275e+00 -6.037457162152712e+00 3.306313799609485e+00 4.481628501155508e+00 9.332402819647072e+03 + 183300 9.912144764911170e-01 -6.140766837073901e+00 -6.026079484419021e+00 2.880689388980709e+00 4.539241915735498e+00 9.297292946517144e+03 + 183320 9.573525510056339e-01 -6.076441766210662e+00 -6.000451067900589e+00 3.258711100386248e+00 4.695061449605246e+00 9.218433566758509e+03 + 183340 9.794943047673691e-01 -6.083421368270191e+00 -5.974187773070541e+00 3.237160892247332e+00 4.864397099727950e+00 9.138006155026749e+03 + 183360 9.374945370235039e-01 -5.975324776641306e+00 -5.977263931856917e+00 3.876990851325654e+00 4.865855921994314e+00 9.147378801722516e+03 + 183380 1.033576184941678e+00 -6.052115913652509e+00 -6.010657803713789e+00 3.428947865434389e+00 4.667006748324300e+00 9.249799307607205e+03 + 183400 1.050309019596442e+00 -6.011844847878848e+00 -6.035040490469532e+00 3.607044458772885e+00 4.473851489503090e+00 9.324938532836812e+03 + 183420 1.058184751047710e+00 -5.982364982797669e+00 -6.000145833086636e+00 3.840937241827181e+00 4.738836847890239e+00 9.217494883170712e+03 + 183440 1.022510178995043e+00 -5.907744355534378e+00 -6.046476844947712e+00 4.177877572785197e+00 4.381254149790482e+00 9.360241055560129e+03 + 183460 1.005756208910567e+00 -5.872344383362115e+00 -6.029155866048146e+00 4.336195564640567e+00 4.435759764558855e+00 9.306746104273585e+03 + 183480 1.098128936456117e+00 -6.006494259882746e+00 -5.992820343235844e+00 3.691013146415995e+00 4.769530891834271e+00 9.195007047584664e+03 + 183500 1.109547364595911e+00 -6.027351801680505e+00 -5.977702490108150e+00 3.592268746077262e+00 4.877362776331857e+00 9.148728692541106e+03 + 183520 1.040899474111211e+00 -5.936046909980776e+00 -6.056858040651310e+00 4.001067257951492e+00 4.307351050179240e+00 9.392383460341536e+03 + 183540 1.016404860640310e+00 -5.916789564396753e+00 -6.002957616567284e+00 4.115201500142506e+00 4.620411210116340e+00 9.226105412144669e+03 + 183560 9.964895139143400e-01 -5.904767782410787e+00 -6.015469089938182e+00 4.199076185642051e+00 4.563412146847776e+00 9.264588304500072e+03 + 183580 1.026024237613868e+00 -5.969904100590394e+00 -6.019342353079809e+00 3.836522004443575e+00 4.552639908104508e+00 9.276514908208346e+03 + 183600 9.929863832337298e-01 -5.945018137316734e+00 -6.020135456266216e+00 4.040664090568213e+00 4.609328820792752e+00 9.278937209780821e+03 + 183620 1.009605475727610e+00 -5.994809859954065e+00 -6.015070670984768e+00 3.749209434340291e+00 4.632868722051627e+00 9.263361547595365e+03 + 183640 1.016991316532674e+00 -6.031522013883414e+00 -6.019121750592094e+00 3.509567074543125e+00 4.580771305296426e+00 9.275854911539114e+03 + 183660 1.024970281485106e+00 -6.069571913364922e+00 -5.949147297140289e+00 3.372577490470559e+00 5.064074272481536e+00 9.061602150983947e+03 + 183680 9.559523738005318e-01 -5.989262682868043e+00 -6.025532581653927e+00 3.769603565832827e+00 4.561336194255585e+00 9.295582465247586e+03 + 183700 1.001171884324846e+00 -6.076427704436652e+00 -5.986707354749227e+00 3.280415293477588e+00 4.795603425562023e+00 9.176291942424505e+03 + 183720 9.338436823009627e-01 -5.990915870870106e+00 -6.017387957385110e+00 3.794089510342202e+00 4.642082693030899e+00 9.270509615304130e+03 + 183740 9.808999832662227e-01 -6.070804908010293e+00 -5.999573647115786e+00 3.338184544323380e+00 4.747205467381642e+00 9.215726502040370e+03 + 183760 9.878853033790093e-01 -6.087115585656086e+00 -5.988500133135667e+00 3.230313118596940e+00 4.796578307661146e+00 9.181795846634226e+03 + 183780 1.001340792909470e+00 -6.110109487642375e+00 -5.976282559712478e+00 3.150483278003567e+00 4.918938207827197e+00 9.144373783845755e+03 + 183800 9.630575831544059e-01 -6.050893490699070e+00 -6.046150251815641e+00 3.399706865363983e+00 4.426943277046474e+00 9.359279691317544e+03 + 183820 9.716988953583182e-01 -6.059234507583635e+00 -6.026871326297243e+00 3.355836834305882e+00 4.541671229438458e+00 9.299752638170059e+03 + 183840 9.677341744770432e-01 -6.044961835207429e+00 -6.010863063751893e+00 3.466204454295096e+00 4.662004876760617e+00 9.250417008032908e+03 + 183860 9.505173415080799e-01 -6.004550261477382e+00 -6.014292159809347e+00 3.679686700749218e+00 4.623747212973175e+00 9.260959693419783e+03 + 183880 9.709762195571179e-01 -6.005940097291234e+00 -6.040195931063629e+00 3.655143550610627e+00 4.458441252016392e+00 9.340857365227454e+03 + 183900 1.046195560098781e+00 -6.074134774482527e+00 -5.969052686330778e+00 3.336096493197444e+00 4.939494104765375e+00 9.122316611304615e+03 + 183920 1.010900233183605e+00 -5.968147151589728e+00 -6.024823274136601e+00 3.888544948699880e+00 4.563101882434117e+00 9.293399598891627e+03 + 183940 9.838686943026379e-01 -5.873701632503632e+00 -6.065610282697635e+00 4.367544241598011e+00 4.265575074416405e+00 9.419557749610267e+03 + 183960 1.053601058613419e+00 -5.934416635874749e+00 -6.015361332600828e+00 4.085531834369297e+00 4.620734859616814e+00 9.264244314409852e+03 + 183980 1.011713937995149e+00 -5.845058757127666e+00 -6.026299590386820e+00 4.545111459469327e+00 4.504398547966959e+00 9.297965546287960e+03 + 184000 1.110118649392717e+00 -5.977154801176939e+00 -6.016064671568905e+00 3.822194408857061e+00 4.598767911783404e+00 9.266414810016317e+03 + 184020 1.051991651443827e+00 -5.887919308189043e+00 -5.969747358485749e+00 4.336434634397450e+00 4.866565306743907e+00 9.124398638239798e+03 + 184040 1.098882870242725e+00 -5.961505800250821e+00 -5.994440542809387e+00 3.927392050169627e+00 4.738275661763404e+00 9.199950091105951e+03 + 184060 1.035466889658421e+00 -5.877081148298771e+00 -6.008914917518497e+00 4.327248302342611e+00 4.570238398273092e+00 9.244436230156527e+03 + 184080 1.078515627536226e+00 -5.957127649137883e+00 -6.027585810914584e+00 3.906109584918595e+00 4.501527916631483e+00 9.301912791213688e+03 + 184100 1.038223650467996e+00 -5.922731292643221e+00 -6.016237441399646e+00 4.078836444662191e+00 4.541909668473037e+00 9.266945569870393e+03 + 184120 1.045827628646379e+00 -5.960567978324763e+00 -5.994701987418697e+00 3.901278722376712e+00 4.705275959938502e+00 9.200792113875821e+03 + 184140 9.781605051897939e-01 -5.890310313094882e+00 -6.061824887689260e+00 4.286155935048116e+00 4.301292705932555e+00 9.407790869116872e+03 + 184160 1.056042822797573e+00 -6.036098395732020e+00 -5.997356861890220e+00 3.482171159039827e+00 4.704631041592435e+00 9.208951458281343e+03 + 184180 1.010173470243720e+00 -5.993577471525382e+00 -5.979013488970035e+00 3.767665540684176e+00 4.851294182285996e+00 9.152737805472940e+03 + 184200 1.052497175969134e+00 -6.077715936045644e+00 -5.993202739870577e+00 3.258547978767605e+00 4.743835829579681e+00 9.196208432942707e+03 + 184220 9.528297002243094e-01 -5.947130735282414e+00 -6.054568476559050e+00 3.973568236234311e+00 4.356644099887139e+00 9.385330635655017e+03 + 184240 9.871815263813776e-01 -6.013568698915368e+00 -5.976166471482038e+00 3.617475615620102e+00 4.832244993518279e+00 9.144036756662159e+03 + 184260 9.156574686081256e-01 -5.916953406055957e+00 -5.976295841734558e+00 4.189211475938760e+00 4.848458027059992e+00 9.144421104854828e+03 + 184280 1.016007496502646e+00 -6.069215417145420e+00 -5.976527635665899e+00 3.361635366090836e+00 4.893862950734074e+00 9.145123706294808e+03 + 184300 9.587601734473629e-01 -5.984931827692202e+00 -6.028795732127411e+00 3.799501875034164e+00 4.547628547849924e+00 9.305642792755758e+03 + 184320 9.779364809249865e-01 -6.012838660069846e+00 -5.993899466867044e+00 3.621211936441520e+00 4.729963714642690e+00 9.198315642655483e+03 + 184340 9.838778107739444e-01 -6.019186284178160e+00 -5.987568351101640e+00 3.618496039141967e+00 4.800051103726674e+00 9.178923062461423e+03 + 184360 1.007402964405228e+00 -6.050066346971223e+00 -5.979259145830998e+00 3.458541357484671e+00 4.865127263810805e+00 9.153483656530809e+03 + 184380 9.725585467029291e-01 -5.992889577430406e+00 -6.011237588541381e+00 3.723886529336675e+00 4.618529410191910e+00 9.251563542096173e+03 + 184400 1.021473705158710e+00 -6.057491639632749e+00 -5.993936964538010e+00 3.403705209743035e+00 4.768645989191213e+00 9.198466726327053e+03 + 184420 1.031311436481565e+00 -6.063377039869460e+00 -5.984060694662572e+00 3.355107476477176e+00 4.810554204819880e+00 9.168197121373743e+03 + 184440 1.004252072994218e+00 -6.015217316621763e+00 -6.005317682447428e+00 3.621679639035548e+00 4.678524870428019e+00 9.233379560720236e+03 + 184460 1.061588354928094e+00 -6.091589738317410e+00 -5.992360688078429e+00 3.252827474314339e+00 4.822616036432461e+00 9.193600706931946e+03 + 184480 1.030105727896354e+00 -6.037179347538536e+00 -6.012622642106184e+00 3.526688944047745e+00 4.667697346778196e+00 9.255855248811540e+03 + 184500 1.033458043315452e+00 -6.031617222320730e+00 -6.010430519006556e+00 3.557499510714897e+00 4.679156839776622e+00 9.249111225743338e+03 + 184520 9.515787209968618e-01 -5.898384525323422e+00 -6.041580344699914e+00 4.263032265388995e+00 4.440779711047750e+00 9.345128493099972e+03 + 184540 1.043170403146162e+00 -6.016641265845783e+00 -6.001275422443378e+00 3.611001612074698e+00 4.699234662747891e+00 9.220962024485900e+03 + 184560 1.061498061712716e+00 -6.017157297070371e+00 -5.988500025645300e+00 3.634983681002874e+00 4.799538168224052e+00 9.181787301083905e+03 + 184580 1.029236570540878e+00 -5.935119534523276e+00 -6.009329218064535e+00 4.071734706055832e+00 4.645611219250510e+00 9.245693139762319e+03 + 184600 1.031029692956090e+00 -5.898842704358213e+00 -6.052419752307454e+00 4.240394899101300e+00 4.358531723805397e+00 9.378631798380102e+03 + 184620 1.027657499595159e+00 -5.856948109936418e+00 -6.035054848421307e+00 4.465709329421095e+00 4.442992875112158e+00 9.324977177317289e+03 + 184640 1.104726445797538e+00 -5.939627487930865e+00 -6.022776481123362e+00 4.030826570073442e+00 4.553372183897015e+00 9.287096981394527e+03 + 184660 1.141292422252629e+00 -5.973499914847106e+00 -6.070501804633727e+00 3.785968828479118e+00 4.228968966330410e+00 9.434749428820847e+03 + 184680 1.063035697725606e+00 -5.852230676329455e+00 -6.096132746732304e+00 4.440706608270899e+00 4.040183176294328e+00 9.514523448591759e+03 + 184700 1.090900584087680e+00 -5.902678074258304e+00 -6.032605910353370e+00 4.164460582410079e+00 4.418394841284562e+00 9.317411845991241e+03 + 184720 1.019292156284217e+00 -5.816645029941313e+00 -6.047532460795942e+00 4.690344496563575e+00 4.364553138881845e+00 9.363499143213323e+03 + 184740 1.109292941476850e+00 -5.978299616272839e+00 -6.016480121935713e+00 3.768633158980165e+00 4.549394787049787e+00 9.267688742788072e+03 + 184760 1.045214074605613e+00 -5.922398334334043e+00 -6.048715268296599e+00 4.070183196182008e+00 4.344851813886655e+00 9.367219773828210e+03 + 184780 1.043895848461791e+00 -5.966536341474749e+00 -6.026614929669050e+00 3.855342169246426e+00 4.510361618703282e+00 9.298921883190262e+03 + 184800 9.742464213411808e-01 -5.903780444945077e+00 -6.030961090535593e+00 4.216161437121597e+00 4.485870488999557e+00 9.312326457237796e+03 + 184820 1.038251467987524e+00 -6.031569277917167e+00 -6.003827057036464e+00 3.539413738191214e+00 4.698713863583020e+00 9.228801977052244e+03 + 184840 1.025315054422569e+00 -6.037849753889736e+00 -5.979074358714123e+00 3.494896697030291e+00 4.832394111591670e+00 9.152941723144519e+03 + 184860 9.341307659176772e-01 -5.922828443192557e+00 -5.987095997602385e+00 4.140913908536599e+00 4.771879665743467e+00 9.177450819495547e+03 + 184880 9.695440296921758e-01 -5.986407863705953e+00 -5.997480225262516e+00 3.777991843041167e+00 4.714412629540968e+00 9.209296196999187e+03 + 184900 9.884508013782041e-01 -6.020796918118061e+00 -6.035543564959017e+00 3.568378334528847e+00 4.483700806331854e+00 9.326466286159031e+03 + 184920 9.671258445295973e-01 -5.996011725792417e+00 -5.989397384119241e+00 3.700816978502375e+00 4.738797551955822e+00 9.184532495014910e+03 + 184940 9.456525612851926e-01 -5.968067622676734e+00 -5.971647299665113e+00 3.885257606414527e+00 4.864702547194026e+00 9.130208380158592e+03 + 184960 9.975889583994834e-01 -6.045253738329905e+00 -5.979336686852395e+00 3.472394740796420e+00 4.850900651011025e+00 9.153713012575279e+03 + 184980 9.401807168448983e-01 -5.956360517021791e+00 -5.997952494561053e+00 3.863198791041339e+00 4.624371219673171e+00 9.210767712803021e+03 + 185000 9.041176593845776e-01 -5.895822743639059e+00 -6.008804947158706e+00 4.218115625420680e+00 4.569354328871377e+00 9.244071266898658e+03 + 185020 1.003982056674882e+00 -6.032854501747692e+00 -6.004398498254497e+00 3.544184918044214e+00 4.707583693654446e+00 9.230550271948190e+03 + 185040 1.015873229456205e+00 -6.037025625825211e+00 -5.974225259522392e+00 3.493664839272701e+00 4.854274260908768e+00 9.138095551201633e+03 + 185060 1.018531373676182e+00 -6.024412355959226e+00 -5.988387250088391e+00 3.568948564546045e+00 4.775810297323496e+00 9.181445040174409e+03 + 185080 1.000638322041537e+00 -5.978595249195068e+00 -6.040616498056051e+00 3.797551554879471e+00 4.441415946162461e+00 9.342164233010717e+03 + 185100 1.007416828273757e+00 -5.967512268864924e+00 -6.053616431320521e+00 3.852188372707908e+00 4.357764947311796e+00 9.382396936508509e+03 + 185120 1.040261656798839e+00 -5.991255045036958e+00 -5.994535944198516e+00 3.785803989730864e+00 4.766964559027697e+00 9.200303043320489e+03 + 185140 1.034779990962368e+00 -5.958288055460671e+00 -6.012842933140750e+00 3.910864682753278e+00 4.597602132774230e+00 9.256516819275228e+03 + 185160 1.072888847478848e+00 -5.986526973507564e+00 -5.977014087272437e+00 3.800746391910415e+00 4.855370856786902e+00 9.146613249233180e+03 + 185180 1.028143229372419e+00 -5.890594843565127e+00 -5.988741535359881e+00 4.303938080730618e+00 4.740364588293672e+00 9.182486527331233e+03 + 185200 1.000750417767579e+00 -5.821220060443945e+00 -5.983535419842143e+00 4.568208379458863e+00 4.636168467573721e+00 9.166528635904477e+03 + 185220 1.022982967666760e+00 -5.822740110476578e+00 -5.974354369427646e+00 4.622437906291779e+00 4.751845369163998e+00 9.138433790810614e+03 + 185240 1.053789858100241e+00 -5.836152899512858e+00 -5.988415972527819e+00 4.516509250429876e+00 4.642191122543573e+00 9.181457927189302e+03 + 185260 1.130107318262074e+00 -5.918863091151801e+00 -5.982952227795077e+00 4.123051272351912e+00 4.755041531984378e+00 9.164776936622173e+03 + 185280 1.070744715427829e+00 -5.806406913895175e+00 -6.070323258488806e+00 4.734436683426211e+00 4.218988191847255e+00 9.434178835866833e+03 + 185300 1.168209572999858e+00 -5.941979528439012e+00 -6.062736506652255e+00 3.947251534304493e+00 4.253846278322064e+00 9.410641547132447e+03 + 185320 1.099026889565406e+00 -5.850946837601781e+00 -6.028927267886548e+00 4.518498482513463e+00 4.496507309435760e+00 9.306021171600576e+03 + 185340 1.078446184938955e+00 -5.848849364766389e+00 -5.984254412912240e+00 4.484777819444444e+00 4.707261079127487e+00 9.168796988452532e+03 + 185360 1.098162745942777e+00 -5.923413104758728e+00 -6.068116143809597e+00 4.045182239274698e+00 4.214274996321687e+00 9.427345234071579e+03 + 185380 1.041846598400082e+00 -5.904470806242720e+00 -6.032424401698130e+00 4.226536872901185e+00 4.491807527041325e+00 9.316839491183591e+03 + 185400 1.029157943363053e+00 -5.945659304819125e+00 -5.982114275524933e+00 4.059448261405571e+00 4.850118178224335e+00 9.162194318624717e+03 + 185420 1.029198263354715e+00 -5.988325874183715e+00 -5.981877729898676e+00 3.846169754868704e+00 4.883195997200506e+00 9.161486081196907e+03 + 185440 9.670405769970989e-01 -5.921791465862795e+00 -6.049304036762996e+00 4.048772467720456e+00 4.316575553104935e+00 9.369024029145459e+03 + 185460 9.327855768417140e-01 -5.889773341735926e+00 -6.006260876193060e+00 4.298963866996800e+00 4.630074417756240e+00 9.236229542721157e+03 + 185480 9.912101864343976e-01 -5.987857365711900e+00 -5.992209700174170e+00 3.772482401691135e+00 4.747490623687196e+00 9.193094191915112e+03 + 185500 1.018496577791338e+00 -6.035888373877107e+00 -5.984603237468292e+00 3.506599036628273e+00 4.801086226236901e+00 9.169819971660090e+03 + 185520 1.010354190864812e+00 -6.028653006326449e+00 -5.995390241266351e+00 3.531565069621988e+00 4.722565013993326e+00 9.202883881822210e+03 + 185540 9.268431003901618e-01 -5.911049793676989e+00 -6.015786024946857e+00 4.166534701587460e+00 4.565123053756472e+00 9.265549522080117e+03 + 185560 1.009421387056205e+00 -6.038274071522450e+00 -5.974534145513069e+00 3.503476254250542e+00 4.869480773118075e+00 9.139060326328748e+03 + 185580 9.910767747663354e-01 -6.015412782515984e+00 -6.018407008991261e+00 3.581877779443277e+00 4.564684467667185e+00 9.273659730457890e+03 + 185600 9.701700294042073e-01 -5.988307953147064e+00 -5.970354505120878e+00 3.792071089952945e+00 4.895162566806411e+00 9.126267097639053e+03 + 185620 9.797124562966963e-01 -6.003213575426982e+00 -5.989526756585840e+00 3.659115322264248e+00 4.737707154078457e+00 9.184898236746123e+03 + 185640 9.433616013586430e-01 -5.946724690532390e+00 -6.027814334433953e+00 3.997952106999838e+00 4.532322823135225e+00 9.302622538765001e+03 + 185660 9.186120817489071e-01 -5.906681229967679e+00 -6.065914302091246e+00 4.107180902055314e+00 4.192839960683520e+00 9.420521097689680e+03 + 185680 1.004781046611605e+00 -6.031202407178282e+00 -5.986819370738830e+00 3.528549773148095e+00 4.783404036636121e+00 9.176624405371240e+03 + 185700 9.161781652028301e-01 -5.893488313492351e+00 -5.982474174392390e+00 4.269815156882800e+00 4.758844573077307e+00 9.163308985528527e+03 + 185720 9.761427585098773e-01 -5.971626011338190e+00 -5.984362860624346e+00 3.857539105206446e+00 4.784402145584286e+00 9.169073344821705e+03 + 185740 9.760210997188503e-01 -5.953566634546820e+00 -6.013306135800674e+00 3.903336871952940e+00 4.560303411095371e+00 9.257938590479915e+03 + 185760 1.033266980782642e+00 -6.018849238562722e+00 -5.991556208511069e+00 3.581361099108338e+00 4.738081901247680e+00 9.191149563849791e+03 + 185780 1.041965821483321e+00 -6.010554278638002e+00 -5.992890280043696e+00 3.670929579544791e+00 4.772358992968242e+00 9.195238011845764e+03 + 185800 1.047665326713946e+00 -5.995777238739688e+00 -6.022434798821588e+00 3.702348612928393e+00 4.549276777694033e+00 9.286031544330706e+03 + 185820 1.048720421351691e+00 -5.977319830451124e+00 -5.965030601448968e+00 3.847682997050328e+00 4.918249651732756e+00 9.109992410159126e+03 + 185840 9.457119008522243e-01 -5.803715945821020e+00 -6.022723056158099e+00 4.714445817000475e+00 4.456873098204176e+00 9.286896316487671e+03 + 185860 1.047437938874544e+00 -5.933787310753452e+00 -6.007476483903579e+00 4.032893084386848e+00 4.609758448796127e+00 9.240014990662936e+03 + 185880 1.095977677254185e+00 -5.987514796487254e+00 -5.968431589422411e+00 3.816966238653442e+00 4.926544966736518e+00 9.120376476236226e+03 + 185900 9.976802104975052e-01 -5.827678569556628e+00 -6.029626937520445e+00 4.580691989469514e+00 4.421073209212337e+00 9.308196257288848e+03 + 185920 1.076624926092300e+00 -5.934216923147818e+00 -6.032216618917353e+00 4.026218337021944e+00 4.463488918509369e+00 9.316203843990366e+03 + 185940 1.088192628649703e+00 -5.947148549720774e+00 -6.034207840880567e+00 3.978059212325609e+00 4.478151290104314e+00 9.322372291511872e+03 + 185960 1.045301471878106e+00 -5.889827428930012e+00 -6.078533214689987e+00 4.225569670483142e+00 4.141991846523399e+00 9.459690106103961e+03 + 185980 1.072575044503015e+00 -5.952481211335395e+00 -6.029228960794081e+00 3.886679022106483e+00 4.445981568038864e+00 9.306997377709622e+03 + 186000 1.042779047565370e+00 -5.944028417302754e+00 -6.014041746713178e+00 3.966204674364099e+00 4.564177302361729e+00 9.260195752954429e+03 + 186020 1.031020652703580e+00 -5.974417312331937e+00 -5.990690049983575e+00 3.807461751410843e+00 4.714021173617125e+00 9.188466415885779e+03 + 186040 1.022527084902250e+00 -6.013150204376615e+00 -5.962777455998066e+00 3.627059022196265e+00 4.916307138543512e+00 9.103135954684012e+03 + 186060 1.002518746327171e+00 -6.027686768331249e+00 -5.983424407849368e+00 3.516118787117454e+00 4.770280110582561e+00 9.166228960518303e+03 + 186080 1.001107748930780e+00 -6.057269439067742e+00 -5.985613465670408e+00 3.411915473960787e+00 4.823375161934327e+00 9.172952352347271e+03 + 186100 9.346612492110948e-01 -5.982096172669222e+00 -6.030515383905172e+00 3.737526460955635e+00 4.459495857190087e+00 9.310975497276515e+03 + 186120 9.252253017078199e-01 -5.982263087367459e+00 -5.986927864716431e+00 3.762735403171366e+00 4.735949529761609e+00 9.176992200764860e+03 + 186140 1.009328479376835e+00 -6.115518354520454e+00 -5.939788039712223e+00 3.078518742065147e+00 5.087589403872339e+00 9.033141018430973e+03 + 186160 9.071215853102388e-01 -5.965393607522716e+00 -5.964911900846257e+00 3.944492196482396e+00 4.947258230762493e+00 9.109646249371166e+03 + 186180 9.753669573614483e-01 -6.061725818932347e+00 -5.984841540199401e+00 3.410516749212121e+00 4.851998175500375e+00 9.170566250487909e+03 + 186200 1.013581517416732e+00 -6.108692787018881e+00 -5.996613509175106e+00 3.124645091349650e+00 4.768221648940797e+00 9.206654649200524e+03 + 186220 9.427096023164401e-01 -5.990842832261961e+00 -6.033101983846658e+00 3.721637613737844e+00 4.478979025755941e+00 9.318935205612370e+03 + 186240 9.930794779060100e-01 -6.051693343526072e+00 -6.017173325663627e+00 3.398056915782077e+00 4.596276200303733e+00 9.269859204286917e+03 + 186260 9.928647918049680e-01 -6.034153996944970e+00 -6.009071309733171e+00 3.500445931818847e+00 4.644474603322299e+00 9.244917714191482e+03 + 186280 9.556215879350598e-01 -5.960056525916730e+00 -6.032447688295306e+00 3.929971326369039e+00 4.514290069495080e+00 9.316923411982598e+03 + 186300 1.050262832942374e+00 -6.079448687006836e+00 -6.015398448514189e+00 3.250322072543391e+00 4.618108453710546e+00 9.264384475450588e+03 + 186320 9.931332608766693e-01 -5.972826506600821e+00 -6.031386936056980e+00 3.785749302618346e+00 4.449486254483914e+00 9.313647664284130e+03 + 186340 1.027496507631874e+00 -6.002227440521472e+00 -5.998013908890345e+00 3.654407945194948e+00 4.678602695862788e+00 9.210949689678182e+03 + 186360 1.013260164462804e+00 -5.957849972041716e+00 -5.979991951979196e+00 3.915074528696894e+00 4.787931853435561e+00 9.155732514468869e+03 + 186380 9.818742084576281e-01 -5.887577047843616e+00 -6.012411302993200e+00 4.236963516594397e+00 4.520145905486936e+00 9.255171994958682e+03 + 186400 1.046742321383515e+00 -5.958332355320721e+00 -5.992220420003236e+00 3.885097777733995e+00 4.690507266165930e+00 9.193168901795190e+03 + 186420 1.001371579335905e+00 -5.865235488279005e+00 -6.059275830058220e+00 4.347374642559789e+00 4.233164972417692e+00 9.399880628048390e+03 + 186440 1.070587606439025e+00 -5.942004385211278e+00 -6.040736197193956e+00 4.018045897569773e+00 4.451112554466707e+00 9.342487507183301e+03 + 186460 1.102999821052950e+00 -5.965442257190348e+00 -5.983039891920763e+00 3.880276782152912e+00 4.779228440305693e+00 9.165052461013862e+03 + 186480 1.082521851725404e+00 -5.912743740355033e+00 -5.957050216337508e+00 4.159568628372348e+00 4.905153986875981e+00 9.085658321487705e+03 + 186500 1.110756833269781e+00 -5.929799395166510e+00 -6.000045746160557e+00 4.044663502556188e+00 4.641298084560688e+00 9.217179066404942e+03 + 186520 1.112104601301257e+00 -5.906943589715880e+00 -6.025641801041936e+00 4.222681417298498e+00 4.541097919375447e+00 9.295908766682989e+03 + 186540 1.057704881332429e+00 -5.807941166093006e+00 -6.014377594241997e+00 4.765888252993046e+00 4.580498336627525e+00 9.261218401192284e+03 + 186560 1.122404897818578e+00 -5.887779795466338e+00 -6.038975292861270e+00 4.291511837853871e+00 4.423323894384568e+00 9.337047635681069e+03 + 186580 1.091702189816600e+00 -5.837290217142248e+00 -6.065536886983222e+00 4.592688366563687e+00 4.282060667278814e+00 9.419327910744425e+03 + 186600 1.144381761928308e+00 -5.927228735512145e+00 -6.037417959232600e+00 4.084296855095796e+00 4.451573280765682e+00 9.332275347104580e+03 + 186620 1.119825147553620e+00 -5.923845726061165e+00 -6.018903880057690e+00 4.138520117295672e+00 4.592681486845841e+00 9.275168900948436e+03 + 186640 1.024519136182959e+00 -5.829064457750234e+00 -6.029548911098603e+00 4.557460102667097e+00 4.406247346671873e+00 9.308011092586481e+03 + 186660 1.056929967585875e+00 -5.929810545718619e+00 -6.015497285489076e+00 4.088936383730128e+00 4.596909863988039e+00 9.264693661696401e+03 + 186680 1.024957747914378e+00 -5.933034660228435e+00 -6.018152434781978e+00 4.021810679580685e+00 4.533051246161197e+00 9.272843249775946e+03 + 186700 1.058833983117284e+00 -6.024860347020438e+00 -5.974027380096007e+00 3.585780379732756e+00 4.877671142189048e+00 9.137471656379115e+03 + 186720 1.062613261405321e+00 -6.064948477899399e+00 -5.982014174308262e+00 3.382623031455032e+00 4.858844636717349e+00 9.161921324331519e+03 + 186740 1.010385322587362e+00 -6.015130667549718e+00 -6.028413807328409e+00 3.528538839633257e+00 4.452264995464778e+00 9.304484539406343e+03 + 186760 9.743172766219365e-01 -5.984220005211003e+00 -6.039967586287172e+00 3.744931713411144e+00 4.424820475961488e+00 9.340125449283481e+03 + 186780 1.030423860279781e+00 -6.085737034418922e+00 -5.989832629873499e+00 3.253819205773300e+00 4.804517137831759e+00 9.185862261988475e+03 + 186800 1.010178131546324e+00 -6.069651997730382e+00 -5.992221382154328e+00 3.345933972758810e+00 4.790552549745546e+00 9.193171861844710e+03 + 186820 9.400084104397697e-01 -5.978509258022677e+00 -5.979219642872318e+00 3.798614300705335e+00 4.794535160966994e+00 9.153373183164837e+03 + 186840 9.801768515088850e-01 -6.047218961517502e+00 -5.988214291746822e+00 3.424307057771874e+00 4.763121002538258e+00 9.180891672866304e+03 + 186860 9.649202174065267e-01 -6.028921368292059e+00 -6.000581687277425e+00 3.578695585774806e+00 4.741426419712297e+00 9.218835587206304e+03 + 186880 9.883318567481777e-01 -6.065996271725696e+00 -5.989520194166037e+00 3.355989315853136e+00 4.795126787835459e+00 9.184917832502742e+03 + 186900 9.303828721863562e-01 -5.978827212756742e+00 -6.008154242868232e+00 3.792651613460669e+00 4.624251268217257e+00 9.242074076582929e+03 + 186920 9.987186763006329e-01 -6.075707344598140e+00 -5.956324462895100e+00 3.324555811374710e+00 5.010070792554799e+00 9.083451158194463e+03 + 186940 9.556223143675261e-01 -5.999897377397238e+00 -5.993212909649419e+00 3.632912452579089e+00 4.671295700805105e+00 9.196236280133311e+03 + 186960 9.661932948032397e-01 -5.999351705670685e+00 -5.997545054246227e+00 3.681383608994689e+00 4.691757681052334e+00 9.209511080259645e+03 + 186980 9.331371712050814e-01 -5.926986069516897e+00 -6.027834303892449e+00 4.131729260666040e+00 4.552643092667792e+00 9.302681307931265e+03 + 187000 9.991620043512178e-01 -5.995421436362049e+00 -6.038684044620863e+00 3.706944199539496e+00 4.458523608050390e+00 9.336185826117948e+03 + 187020 9.984252806061611e-01 -5.962374346262470e+00 -6.055518668438074e+00 3.920552748890816e+00 4.385703636921223e+00 9.388260284358616e+03 + 187040 1.045041356016762e+00 -6.002259238126165e+00 -6.021324109913393e+00 3.718074730318998e+00 4.608601286237363e+00 9.282612375518893e+03 + 187060 1.020335070437836e+00 -5.938226042769958e+00 -6.017822754234155e+00 4.053193662118691e+00 4.596137027339985e+00 9.271850576427871e+03 + 187080 1.057466697787437e+00 -5.966960619237297e+00 -6.036848378482438e+00 3.881776704133240e+00 4.480470375451851e+00 9.330516066549841e+03 + 187100 1.028835666131603e+00 -5.904610069214259e+00 -6.063731561469718e+00 4.202430842376371e+00 4.288730609874181e+00 9.413745958365696e+03 + 187120 1.036828196275169e+00 -5.904750651544834e+00 -6.057442399314407e+00 4.175345079610089e+00 4.298565434945599e+00 9.394253467310918e+03 + 187140 1.036712300123146e+00 -5.900042770636301e+00 -6.072285139640308e+00 4.230334886932079e+00 4.241292549690612e+00 9.440288501625588e+03 + 187160 1.054495050016417e+00 -5.931311794907593e+00 -6.033576356000159e+00 4.116609605077056e+00 4.529390669893862e+00 9.320409689866718e+03 + 187180 1.090704149942278e+00 -6.000023712358605e+00 -5.974105212716631e+00 3.708421623833032e+00 4.857249659652105e+00 9.137742305979056e+03 + 187200 1.045427661679310e+00 -5.956619937390156e+00 -5.986364725431453e+00 3.945211893776597e+00 4.774412717852401e+00 9.175212674283095e+03 + 187220 1.067513209096400e+00 -6.026568558345110e+00 -5.959852532799883e+00 3.567312062827479e+00 4.950405805779758e+00 9.094227370306920e+03 + 187240 1.022224273167519e+00 -6.012710704790606e+00 -6.024270150414243e+00 3.622242391123824e+00 4.555866265534467e+00 9.291701357125254e+03 + 187260 9.392689337615499e-01 -5.952363271049459e+00 -5.988648767811608e+00 3.939674022588872e+00 4.731317085018141e+00 9.182223427525465e+03 + 187280 9.356925570078081e-01 -5.996583260063040e+00 -5.952089575682574e+00 3.727798541192985e+00 4.983288162281021e+00 9.070547095173159e+03 + 187300 9.628790555559413e-01 -6.065952055700597e+00 -5.974760706671912e+00 3.324132808765250e+00 4.847767646703615e+00 9.139743742593135e+03 + 187320 9.403934061492137e-01 -6.048161510123434e+00 -5.975542472921589e+00 3.438357639969778e+00 4.855347389342456e+00 9.142107919759279e+03 + 187340 9.109138045319671e-01 -6.008700321065351e+00 -5.939195128625794e+00 3.629422236291495e+00 5.028531807173202e+00 9.031320918590029e+03 + 187360 9.807769712653686e-01 -6.107741700928441e+00 -5.984776332736314e+00 3.125663815397996e+00 4.831749988386422e+00 9.170365744815108e+03 + 187380 9.621917439100052e-01 -6.072075103730400e+00 -5.959665627458695e+00 3.320952435596486e+00 4.966425043658850e+00 9.093661982714981e+03 + 187400 9.557826198092048e-01 -6.050218742520419e+00 -6.011110642850433e+00 3.395144327491002e+00 4.619709087754932e+00 9.251197161312601e+03 + 187420 9.772799359262452e-01 -6.064640502213159e+00 -6.012882372667359e+00 3.335056001062638e+00 4.632259190459282e+00 9.256655208796059e+03 + 187440 9.799800524139662e-01 -6.050615542890261e+00 -5.986662165575053e+00 3.436293623008029e+00 4.803523812305105e+00 9.176161079788431e+03 + 187460 9.575846475440787e-01 -5.996023255264544e+00 -6.027843002498814e+00 3.674622561506429e+00 4.491908648797277e+00 9.302697803611158e+03 + 187480 9.853973628938401e-01 -6.012411389526036e+00 -6.021623021927882e+00 3.597663511163769e+00 4.544768892416867e+00 9.283567363091111e+03 + 187500 1.042031988659263e+00 -6.072998865980701e+00 -6.004134748391932e+00 3.312711572156664e+00 4.708139992039136e+00 9.229741007117545e+03 + 187520 9.459167420619240e-01 -5.908330927637697e+00 -6.038696637770089e+00 4.161061459462107e+00 4.412481377853467e+00 9.336218964881467e+03 + 187540 1.003123019467519e+00 -5.973195836020475e+00 -5.990695519065680e+00 3.854359602481891e+00 4.753873714369124e+00 9.188492478969363e+03 + 187560 9.443921395664403e-01 -5.867020938410749e+00 -6.034420338837155e+00 4.418001604017006e+00 4.456768341795092e+00 9.323005210359141e+03 + 187580 1.037085868160331e+00 -5.985826394509319e+00 -6.034608619555526e+00 3.799127742623312e+00 4.519012657383062e+00 9.323588661495318e+03 + 187600 9.864672952387298e-01 -5.897895957369727e+00 -6.041903878747088e+00 4.259828923477037e+00 4.432913153774417e+00 9.346077796199081e+03 + 187620 9.942385089514749e-01 -5.900011919640180e+00 -6.017663738886242e+00 4.117722223895990e+00 4.442147271224916e+00 9.271347905178993e+03 + 187640 1.058167750799638e+00 -5.987700109794499e+00 -5.992290798075151e+00 3.824739026526899e+00 4.798378584012676e+00 9.193389323620677e+03 + 187660 1.006612262481241e+00 -5.908386393495501e+00 -6.004811893663032e+00 4.197488635163195e+00 4.643798491403312e+00 9.231805151247338e+03 + 187680 1.005181018295197e+00 -5.906192200391622e+00 -6.040425995970099e+00 4.191677070786325e+00 4.420885843961980e+00 9.341565579499489e+03 + 187700 1.087735861352167e+00 -6.034980940595824e+00 -5.979125084925866e+00 3.508467966557406e+00 4.829200933480037e+00 9.153089901549889e+03 + 187720 1.008770670578979e+00 -5.932022176273186e+00 -6.051299577696961e+00 4.013758168474073e+00 4.328848871380544e+00 9.375175494248097e+03 + 187740 1.061813157611948e+00 -6.038553664861821e+00 -6.002791828115599e+00 3.478734042341010e+00 4.684084043064168e+00 9.225624918447626e+03 + 187760 9.520806639350479e-01 -5.918188281174189e+00 -6.022680771618656e+00 4.125454869150070e+00 4.525442818857303e+00 9.286806407540860e+03 + 187780 1.015521256191388e+00 -6.069463876343882e+00 -5.973765058889539e+00 3.349901168244129e+00 4.899418587411104e+00 9.136687806990671e+03 + 187800 9.742852545814802e-01 -6.063996999484311e+00 -5.968085470529485e+00 3.328708738627806e+00 4.879447580147554e+00 9.119371584052340e+03 + 187820 1.041995785607911e+00 -6.205699088085471e+00 -5.969308093862208e+00 2.581452016404254e+00 4.938845686622366e+00 9.123082730854941e+03 + 187840 8.873951637501517e-01 -6.003614124832986e+00 -6.002305278415308e+00 3.618488577710471e+00 4.626004176384100e+00 9.224136068400141e+03 + 187860 8.884534120266929e-01 -6.018066424377311e+00 -6.020389388739895e+00 3.546918274087910e+00 4.533579453240376e+00 9.279752057838505e+03 + 187880 9.499169670531472e-01 -6.112554303417117e+00 -5.974668006635110e+00 3.081906387804145e+00 4.873670841761898e+00 9.139458374755139e+03 + 187900 9.339703228851576e-01 -6.085246463337047e+00 -5.993225902299603e+00 3.222420443424719e+00 4.750816745037522e+00 9.196275372939022e+03 + 187920 9.733347136159928e-01 -6.133435766718804e+00 -5.962601212835068e+00 2.991868010727253e+00 4.972826455689443e+00 9.102628177527518e+03 + 187940 9.122608480012248e-01 -6.025798087472030e+00 -6.022037057166010e+00 3.523751337315139e+00 4.545347755349866e+00 9.284813710113087e+03 + 187960 1.012408855575704e+00 -6.151796177276626e+00 -6.007036952095621e+00 2.879996335314077e+00 4.711226207721109e+00 9.238673286279251e+03 + 187980 9.261735775762988e-01 -5.998518478473338e+00 -6.005898964863691e+00 3.733738602237448e+00 4.691358707257463e+00 9.235170666587412e+03 + 188000 1.006979360091281e+00 -6.090922781296095e+00 -5.973689148766391e+00 3.194824674238758e+00 4.867998334070318e+00 9.136448908195265e+03 + 188020 9.850216271568561e-01 -6.026511343500488e+00 -5.987485683698942e+00 3.547759818977604e+00 4.771851196759415e+00 9.178687479184577e+03 + 188040 9.728051688498196e-01 -5.978882442037638e+00 -6.040707707542766e+00 3.810819762324150e+00 4.455809520364792e+00 9.342432442740912e+03 + 188060 9.818992863502871e-01 -5.967360994249038e+00 -6.051806674529895e+00 3.843290445012227e+00 4.358390280912755e+00 9.376797487614462e+03 + 188080 1.052297393176537e+00 -6.053772281587420e+00 -6.007199865711026e+00 3.386847070553766e+00 4.654273089574086e+00 9.239178126587127e+03 + 188100 1.046893205829760e+00 -6.034000159693503e+00 -5.966020302881568e+00 3.533604878423872e+00 4.923955736086846e+00 9.113022679077165e+03 + 188120 9.521012300317291e-01 -5.883174474022115e+00 -5.987705278305032e+00 4.350685076781486e+00 4.750453022499295e+00 9.179328893989930e+03 + 188140 1.022710526411044e+00 -5.978865719726636e+00 -6.018254225589109e+00 3.804860003894003e+00 4.578685107880103e+00 9.273155646889229e+03 + 188160 9.908140413471827e-01 -5.926169113731577e+00 -6.049368239620392e+00 4.093709494059851e+00 4.386281048203156e+00 9.369209275864427e+03 + 188180 1.115620967231093e+00 -6.110405688709008e+00 -5.959117822728169e+00 3.132003116635469e+00 5.000721454819043e+00 9.091977548125928e+03 + 188200 1.082200491609300e+00 -6.064188800062556e+00 -5.958756100298021e+00 3.371521365732900e+00 4.976932243438421e+00 9.090856239748764e+03 + 188220 9.741879427639298e-01 -5.907428084409361e+00 -6.022549504373215e+00 4.239562623166187e+00 4.578517614751576e+00 9.286336194245199e+03 + 188240 1.014144461705364e+00 -5.971522520701200e+00 -5.997553752918042e+00 3.828389989412096e+00 4.678914625702819e+00 9.209507770334843e+03 + 188260 1.021338988104697e+00 -5.987889585626456e+00 -5.981397613978544e+00 3.805669882213746e+00 4.842947788045425e+00 9.160015725376503e+03 + 188280 1.026720541473632e+00 -6.005079485500787e+00 -5.978384006327485e+00 3.679133033869279e+00 4.832422606394426e+00 9.150788797659618e+03 + 188300 1.014412033138585e+00 -5.997365852915326e+00 -5.963878368850643e+00 3.764846020533017e+00 4.957136336203842e+00 9.106483348781998e+03 + 188320 9.784395763381555e-01 -5.954300729660013e+00 -5.993134424784777e+00 4.038073484019431e+00 4.815084397118141e+00 9.195963604363009e+03 + 188340 1.046884300723660e+00 -6.068811369413000e+00 -5.994509055645652e+00 3.295150546747851e+00 4.721805930645853e+00 9.200211726056830e+03 + 188360 9.976467994626792e-01 -6.015912325694622e+00 -5.986090056404239e+00 3.601546112545385e+00 4.772790197792022e+00 9.174406099815271e+03 + 188380 1.034389278159326e+00 -6.102251791847856e+00 -5.989023563813575e+00 3.113167676810151e+00 4.763341684194653e+00 9.183378704445320e+03 + 188400 9.396382743144147e-01 -6.006215729274780e+00 -5.976028709737490e+00 3.689885770597054e+00 4.863224308206355e+00 9.143599896504469e+03 + 188420 9.464512449870724e-01 -6.067976999622854e+00 -5.951635898185820e+00 3.339431004745360e+00 5.007479612924071e+00 9.069170099960118e+03 + 188440 9.298218150127306e-01 -6.087516289624699e+00 -5.967212275955053e+00 3.206369659095565e+00 4.897173922572624e+00 9.116671130502968e+03 + 188460 8.701587018530968e-01 -6.030988061985333e+00 -5.969525427764248e+00 3.553559681643653e+00 4.906487638653032e+00 9.123728501318221e+03 + 188480 8.766452640126813e-01 -6.056964537557363e+00 -5.974586877087320e+00 3.405205303600909e+00 4.878230577921657e+00 9.139187169577064e+03 + 188500 8.960078163215408e-01 -6.089416484674764e+00 -5.979990610410220e+00 3.238052749382567e+00 4.866393053008895e+00 9.155728255315398e+03 + 188520 9.306027439101184e-01 -6.134494392319277e+00 -5.978754843057485e+00 2.964037789169440e+00 4.858318381648010e+00 9.151956878685591e+03 + 188540 9.436375558771526e-01 -6.139554150388649e+00 -5.981199987146118e+00 2.997044672804174e+00 4.906338783370350e+00 9.159447501549166e+03 + 188560 8.834341370979402e-01 -6.027968133594073e+00 -6.014434947159287e+00 3.592512273145231e+00 4.670221923907608e+00 9.261432312328208e+03 + 188580 8.937184198855749e-01 -6.016802754209667e+00 -6.013430688667203e+00 3.583773968921536e+00 4.603136891091825e+00 9.258340165252983e+03 + 188600 1.003816763307793e+00 -6.149257241343234e+00 -5.957461043026825e+00 2.945672140773023e+00 5.046995591871609e+00 9.086946213926249e+03 + 188620 9.562116229441519e-01 -6.047151557354937e+00 -5.992154585551321e+00 3.449721233955665e+00 4.765522356805910e+00 9.192998019771085e+03 + 188640 9.899498664766415e-01 -6.068459303385493e+00 -5.985412734797574e+00 3.353961154124639e+00 4.830827402371429e+00 9.172315105613288e+03 + 188660 9.787552271442698e-01 -6.028503310460732e+00 -5.977267202605601e+00 3.553114287688142e+00 4.847319947754375e+00 9.147395291825305e+03 + 188680 1.022405124125336e+00 -6.071788786205794e+00 -5.997427502682928e+00 3.318919375588851e+00 4.745913372948580e+00 9.209167843875031e+03 + 188700 1.064006225374504e+00 -6.119126466680164e+00 -5.973117034215775e+00 3.086448450718424e+00 4.924857206815597e+00 9.134734437014147e+03 + 188720 1.009110680520988e+00 -6.027308730120838e+00 -6.017482201120389e+00 3.529961690530194e+00 4.586387140701223e+00 9.270790668023363e+03 + 188740 1.071643289449887e+00 -6.110608267090898e+00 -6.005622157611207e+00 3.083998903288944e+00 4.686845390469270e+00 9.234278217899649e+03 + 188760 9.583151469612496e-01 -5.936198803751449e+00 -6.013821881436687e+00 4.062749187589644e+00 4.617025463388559e+00 9.259518547351023e+03 + 188780 9.913832932052363e-01 -5.980287477801335e+00 -5.997159858598338e+00 3.854179046913592e+00 4.757295225384711e+00 9.208315206831294e+03 + 188800 1.061076738529573e+00 -6.076447367077092e+00 -5.992202773386271e+00 3.260066014537661e+00 4.743811508319094e+00 9.193138669384725e+03 + 188820 1.036360863915443e+00 -6.034911410258912e+00 -5.987187428292120e+00 3.558217650377885e+00 4.832256140093549e+00 9.177745646450516e+03 + 188840 9.722392847661596e-01 -5.937434767549409e+00 -5.972852140893701e+00 4.010781022191562e+00 4.807408983627824e+00 9.133889693185651e+03 + 188860 9.607483040257760e-01 -5.916417446225780e+00 -5.987927840608629e+00 4.182235999489929e+00 4.771612248745845e+00 9.179984047886022e+03 + 188880 9.883076609964926e-01 -5.951248588845649e+00 -5.941900205048311e+00 4.006695437019889e+00 5.060375303441918e+00 9.039535618136077e+03 + 188900 1.018372190317341e+00 -5.987623644029500e+00 -5.960541276026077e+00 3.744886823524742e+00 4.900397971583304e+00 9.096313313161678e+03 + 188920 1.100553972580510e+00 -6.097644660181176e+00 -5.963821881582211e+00 3.147716264908218e+00 4.916147368631536e+00 9.106339628632293e+03 + 188940 9.902274701095951e-01 -5.924117814818277e+00 -6.013283666516328e+00 4.065103261090281e+00 4.553099142269114e+00 9.257884457731785e+03 + 188960 9.411914223002298e-01 -5.840695092197502e+00 -6.067910623911068e+00 4.523291840128907e+00 4.218585095539717e+00 9.426700568225895e+03 + 188980 1.074033243649517e+00 -6.026765245530889e+00 -6.017213316782637e+00 3.570478455406383e+00 4.625327108435043e+00 9.269967277965312e+03 + 189000 9.943814770298425e-01 -5.898227712660852e+00 -6.043772539425726e+00 4.200958725745769e+00 4.365217807472715e+00 9.351914176324981e+03 + 189020 1.031992176035345e+00 -5.945509537996477e+00 -6.031297661957254e+00 3.950222063156796e+00 4.457613379704737e+00 9.313354617392155e+03 + 189040 1.051128076048910e+00 -5.966388017320948e+00 -5.996339294577919e+00 3.872827051078233e+00 4.700842182123532e+00 9.205818158554583e+03 + 189060 1.025194257657443e+00 -5.924156932132849e+00 -6.046290877212893e+00 4.060481719844811e+00 4.359169707028278e+00 9.359666871542144e+03 + 189080 1.057419055574063e+00 -5.972582629087258e+00 -6.023392188354589e+00 3.788064344105802e+00 4.496307992038901e+00 9.288995163799284e+03 + 189100 1.067887001607686e+00 -5.995518367801735e+00 -5.996489382710737e+00 3.741441554565022e+00 4.735865836693458e+00 9.206282558084251e+03 + 189120 1.006135508930121e+00 -5.920009840260724e+00 -6.071852995649436e+00 4.051004899654705e+00 4.179098003760367e+00 9.438931170412965e+03 + 189140 1.013418007364389e+00 -5.954081704263778e+00 -5.996618057932095e+00 3.917396190724767e+00 4.673145865481835e+00 9.206657664677839e+03 + 189160 1.030261308382780e+00 -6.004832877822267e+00 -5.952469750169823e+00 3.721722824957815e+00 5.022400007105965e+00 9.071710097505869e+03 + 189180 1.057965090290120e+00 -6.074660738114238e+00 -5.988014627559363e+00 3.282486970767549e+00 4.780022346015913e+00 9.180298990476222e+03 + 189200 1.000321080109322e+00 -6.020162704957389e+00 -6.017638185805925e+00 3.576117350631824e+00 4.590613530267607e+00 9.271280559558556e+03 + 189220 9.847590299779856e-01 -6.027028187048012e+00 -5.998964654206068e+00 3.594339132467918e+00 4.755484280864037e+00 9.213891109347520e+03 + 189240 9.680689128081202e-01 -6.030684352006950e+00 -6.016252627887251e+00 3.524663582618138e+00 4.607532775815534e+00 9.267022433628861e+03 + 189260 9.761003562878930e-01 -6.064062505776025e+00 -5.982831135030002e+00 3.336332639677309e+00 4.802775741014973e+00 9.164419141395550e+03 + 189280 9.146454712944040e-01 -5.988624443545700e+00 -5.994995307460660e+00 3.774846030034733e+00 4.738263543547031e+00 9.201697968153207e+03 + 189300 9.501820695925323e-01 -6.051912944848105e+00 -5.981977139795550e+00 3.356631146984699e+00 4.758213362127329e+00 9.161813676565718e+03 + 189320 9.312356272849381e-01 -6.027720844664540e+00 -5.947588223211703e+00 3.531839519356581e+00 4.991973432221860e+00 9.056859778690961e+03 + 189340 9.101978295233698e-01 -5.992346255017211e+00 -5.979625244264387e+00 3.768388147133733e+00 4.841434159446500e+00 9.154576991753667e+03 + 189360 9.905585945666261e-01 -6.099922062543376e+00 -5.953172992670785e+00 3.199990008821130e+00 5.042645877374715e+00 9.073854256084205e+03 + 189380 9.585042504255242e-01 -6.034434721978760e+00 -5.999366071438541e+00 3.564536517548858e+00 4.765906135806930e+00 9.215102226993356e+03 + 189400 9.322769816458653e-01 -5.972424056415463e+00 -5.994177016051021e+00 3.838161753842111e+00 4.713252893355113e+00 9.199194861796863e+03 + 189420 1.049490170302159e+00 -6.115632587169573e+00 -5.950558300725380e+00 3.089758493468100e+00 5.037640591393926e+00 9.065891751330733e+03 + 189440 9.343541857223273e-01 -5.908579210249313e+00 -6.013167326631542e+00 4.167177795113078e+00 4.566616645887613e+00 9.257512087227096e+03 + 189460 1.002719940140937e+00 -5.969685474692711e+00 -6.004584381269646e+00 3.870552764365507e+00 4.670157842212404e+00 9.231123916940260e+03 + 189480 1.057761780523360e+00 -6.012852361765907e+00 -6.013405841490401e+00 3.619491000769727e+00 4.616312834540967e+00 9.258255913238345e+03 + 189500 1.041778794639399e+00 -5.961324480378417e+00 -6.024216839440154e+00 3.851517123636820e+00 4.490379465343221e+00 9.291530489606337e+03 + 189520 1.036911943284363e+00 -5.936438517233583e+00 -6.015536536743364e+00 3.997942396644425e+00 4.543749328240304e+00 9.264765600863233e+03 + 189540 1.028930475379204e+00 -5.915435313048166e+00 -5.994726758833279e+00 4.149515134368782e+00 4.694211382359084e+00 9.200848023007833e+03 + 189560 1.068218532432107e+00 -5.972228137232257e+00 -5.994492925871787e+00 3.821233754506534e+00 4.693385892673443e+00 9.200134149559795e+03 + 189580 1.006522990159559e+00 -5.883718796322963e+00 -6.003821591386337e+00 4.336083710603597e+00 4.646434875502236e+00 9.228783362242615e+03 + 189600 1.082672846832262e+00 -6.002607917794338e+00 -6.020522810224580e+00 3.720594819941682e+00 4.617724735286589e+00 9.280155923515680e+03 + 189620 1.080879886437811e+00 -6.011744950281750e+00 -6.017143200799799e+00 3.618551224848903e+00 4.587553634997703e+00 9.269752219065278e+03 + 189640 1.079511573881293e+00 -6.026770983784043e+00 -5.964475638032990e+00 3.584804249818746e+00 4.942513765294891e+00 9.108308268488605e+03 + 189660 1.044142798566378e+00 -5.988995006880343e+00 -5.970006648752939e+00 3.812669344591547e+00 4.921703435398022e+00 9.125168310306524e+03 + 189680 9.899892102576219e-01 -5.924035812524107e+00 -5.977254736587502e+00 4.086997295841779e+00 4.781405998267876e+00 9.147300856003560e+03 + 189700 1.018992331687494e+00 -5.981168465657881e+00 -5.998096220522529e+00 3.768718297113589e+00 4.671516509119181e+00 9.211106487300995e+03 + 189720 1.020056458858804e+00 -5.995873642520126e+00 -5.993213237084141e+00 3.710806919467923e+00 4.726083379177760e+00 9.196196146482074e+03 + 189740 1.027438244518289e+00 -6.021374641500143e+00 -5.998468954305802e+00 3.562325003931524e+00 4.693853004445063e+00 9.212347939070802e+03 + 189760 9.949674761309182e-01 -5.988752525351055e+00 -6.022254018021498e+00 3.746426312466988e+00 4.554055557214065e+00 9.285471742871214e+03 + 189780 1.019474519505277e+00 -6.041312727050937e+00 -6.015638130609037e+00 3.412540830999957e+00 4.559968336900310e+00 9.265114786018547e+03 + 189800 9.504746573455150e-01 -5.957345120714892e+00 -5.978476013660759e+00 3.956798054702154e+00 4.835461197411866e+00 9.151083623126733e+03 + 189820 9.537378945249358e-01 -5.975941375318472e+00 -5.982603447454518e+00 3.817721209126174e+00 4.779466559968668e+00 9.163730995963148e+03 + 189840 9.731760948265287e-01 -6.018266372853386e+00 -5.962214162678456e+00 3.627735556380583e+00 4.949596021256522e+00 9.101426543137281e+03 + 189860 9.485717365173745e-01 -5.991308683184388e+00 -5.975709376968419e+00 3.756911604174097e+00 4.846485234451030e+00 9.142628136542293e+03 + 189880 1.011838848235262e+00 -6.092973306417206e+00 -5.971463101564272e+00 3.185363305633629e+00 4.883093705542611e+00 9.129671470754154e+03 + 189900 9.734482929178860e-01 -6.040799683842081e+00 -6.003826693726562e+00 3.467108123108626e+00 4.679412753903664e+00 9.228793877775644e+03 + 189920 9.817624073819173e-01 -6.056576151906751e+00 -6.005202146169400e+00 3.394304388473848e+00 4.689301879519412e+00 9.233026931054286e+03 + 189940 1.019153497231239e+00 -6.116077443500625e+00 -5.973668870209851e+00 3.123135309853121e+00 4.940867375344242e+00 9.136377307141802e+03 + 189960 9.557104761987338e-01 -6.023775512057821e+00 -5.976125311319016e+00 3.588793522276139e+00 4.862408348763092e+00 9.143891840456228e+03 + 189980 9.474883145511540e-01 -6.006933884497309e+00 -5.989512642019218e+00 3.675819820116519e+00 4.775855290354279e+00 9.184885444714371e+03 + 190000 9.846720417817334e-01 -6.050301470110785e+00 -5.975314702564438e+00 3.417172116766587e+00 4.847757740182487e+00 9.141446124783106e+03 + 190020 9.949752975560008e-01 -6.045482330050792e+00 -6.002900165973160e+00 3.428515352514685e+00 4.673028728217043e+00 9.225964314945408e+03 + 190040 1.024360329578800e+00 -6.063963124092105e+00 -6.005563175415130e+00 3.386300728996978e+00 4.721642271663022e+00 9.234135540685989e+03 + 190060 1.010387477049022e+00 -6.016357712935315e+00 -5.979650906474884e+00 3.635384580377635e+00 4.846160743433375e+00 9.154697417349837e+03 + 190080 1.086582435539829e+00 -6.102234366783573e+00 -5.963536491475864e+00 3.215056872422376e+00 5.011481535866082e+00 9.105437338090511e+03 + 190100 9.465343762279351e-01 -5.866388975322349e+00 -6.023972073698847e+00 4.452815098768323e+00 4.547948561984813e+00 9.290730202284509e+03 + 190120 1.083134108924415e+00 -6.042796146897892e+00 -5.940753152172684e+00 3.427886347298133e+00 5.013833014112675e+00 9.036057761448605e+03 + 190140 1.029358103573011e+00 -5.936854318172314e+00 -5.982116465519741e+00 4.023065753078098e+00 4.763163498714502e+00 9.162215268199929e+03 + 190160 1.043321281223898e+00 -5.936468324004830e+00 -6.036941946479470e+00 3.983870142843698e+00 4.406935054351488e+00 9.330775234115357e+03 + 190180 1.055075198115035e+00 -5.939839706768147e+00 -5.976245545668881e+00 4.035966911451277e+00 4.826918950697900e+00 9.144275221365961e+03 + 190200 1.077472279539197e+00 -5.966295632524577e+00 -5.996724790845075e+00 3.861662252311047e+00 4.686933316337716e+00 9.206969332019411e+03 + 190220 9.868799315492813e-01 -5.831106285171232e+00 -6.037558105658665e+00 4.549260469528422e+00 4.363782167973615e+00 9.332676147168004e+03 + 190240 1.028396982630166e+00 -5.897081241129103e+00 -5.978877759605669e+00 4.238190849143288e+00 4.768502582080527e+00 9.152305172542490e+03 + 190260 1.021145386434750e+00 -5.895132296262881e+00 -5.985494190164780e+00 4.177119797999570e+00 4.658247819756977e+00 9.172554692081316e+03 + 190280 1.028958387057407e+00 -5.920964000412150e+00 -5.974634089389317e+00 4.142391984881504e+00 4.834210028555181e+00 9.139328140016218e+03 + 190300 9.912585629808726e-01 -5.885339054669712e+00 -6.052764110627546e+00 4.309606333989024e+00 4.348225753735460e+00 9.379720271758106e+03 + 190320 1.009018272924071e+00 -5.943255568524396e+00 -6.043016719335252e+00 3.980310625070251e+00 4.407466659126117e+00 9.349572065355533e+03 + 190340 1.094961812520404e+00 -6.111999095530543e+00 -5.966729782808567e+00 3.086087114944705e+00 4.920245988947780e+00 9.115221337031380e+03 + 190360 9.762047990396142e-01 -5.977107264267184e+00 -6.024591574407957e+00 3.799974962725482e+00 4.527312705723919e+00 9.292678780573500e+03 + 190380 9.317126570815166e-01 -5.950371814041162e+00 -6.051055702455971e+00 3.925522440378491e+00 4.347379972319286e+00 9.374458796282881e+03 + 190400 9.473602237034222e-01 -6.005378911630371e+00 -6.004513050001028e+00 3.685161613196456e+00 4.690133524663798e+00 9.230900995210492e+03 + 190420 9.781968535273151e-01 -6.072132264909230e+00 -5.999201868669262e+00 3.312741384639483e+00 4.731519005791720e+00 9.214611141094354e+03 + 190440 9.441649207118489e-01 -6.033979039341370e+00 -6.045088185676901e+00 3.508190838078944e+00 4.444400400685481e+00 9.355958320381342e+03 + 190460 9.524660567663235e-01 -6.051802217036185e+00 -6.009332057204258e+00 3.444521034354431e+00 4.688391264345349e+00 9.245710054636089e+03 + 190480 9.513755706677944e-01 -6.051413775392801e+00 -5.982890661057498e+00 3.419836529228136e+00 4.813306855659119e+00 9.164595671850255e+03 + 190500 9.543090111839104e-01 -6.051594696790855e+00 -5.981736152048502e+00 3.382928177150434e+00 4.784066751635888e+00 9.161059673826383e+03 + 190520 9.413576012815014e-01 -6.023524997989377e+00 -5.988055332073344e+00 3.529441869483070e+00 4.733114180085993e+00 9.180422214755910e+03 + 190540 9.388700663992661e-01 -6.006752232854194e+00 -5.993604856996873e+00 3.657585026975184e+00 4.733079293697763e+00 9.197414247533978e+03 + 190560 9.833050060597186e-01 -6.054339848346380e+00 -6.060301565089770e+00 3.346198197531904e+00 4.311965097418669e+00 9.403098967833046e+03 + 190580 1.005692502575849e+00 -6.071929883110822e+00 -6.013830055670981e+00 3.287775571312705e+00 4.621393771391508e+00 9.259556965682279e+03 + 190600 9.703335498884368e-01 -6.005077780759230e+00 -6.029857551388368e+00 3.604538900713528e+00 4.462249623103904e+00 9.308952939545008e+03 + 190620 9.678111936559554e-01 -5.985980859942302e+00 -6.010360039102984e+00 3.757457266935334e+00 4.617468247528911e+00 9.248896858976428e+03 + 190640 9.602124997306477e-01 -5.960438694599944e+00 -6.010838534484652e+00 3.874233240077438e+00 4.584829560109431e+00 9.250366780955077e+03 + 190660 9.781515288078385e-01 -5.972834731115540e+00 -5.994344722055382e+00 3.846896027065503e+00 4.723382330428589e+00 9.199691627984683e+03 + 190680 9.812861866268077e-01 -5.961589585443058e+00 -5.981313784987448e+00 3.912125875890140e+00 4.798866469796234e+00 9.159768498268373e+03 + 190700 1.053460122723251e+00 -6.054646890940683e+00 -5.945044731559412e+00 3.425890387909851e+00 5.055242947956458e+00 9.049121833324392e+03 + 190720 1.014988527304233e+00 -5.986046761327209e+00 -5.984949236409331e+00 3.784435964818002e+00 4.790738122737895e+00 9.170884350469783e+03 + 190740 9.970053852924304e-01 -5.948119817686064e+00 -6.017404088421558e+00 3.914484970211600e+00 4.516643965942148e+00 9.270574121106136e+03 + 190760 9.931020325878860e-01 -5.933080983394271e+00 -6.086494509606532e+00 4.037819073838922e+00 4.156894865661664e+00 9.484497137201859e+03 + 190780 1.027706326649170e+00 -5.983078523129707e+00 -6.027747375513186e+00 3.828549364294305e+00 4.572053901425806e+00 9.302426035049935e+03 + 190800 1.056749982485872e+00 -6.028888356915134e+00 -5.970368228985762e+00 3.564924259613832e+00 4.900955890144818e+00 9.126313367395036e+03 + 190820 9.947612903690880e-01 -5.939666453288919e+00 -6.045807688744712e+00 3.962267739245452e+00 4.352788339955186e+00 9.358232866617907e+03 + 190840 1.021669786096216e+00 -5.983925628455154e+00 -6.041251240793441e+00 3.828271520005099e+00 4.499098982848815e+00 9.344106748497423e+03 + 190860 9.926819393668991e-01 -5.947830111411902e+00 -6.031886526354843e+00 3.986515181455256e+00 4.503850239164711e+00 9.315191702831295e+03 + 190880 1.036624859750390e+00 -6.021582322484967e+00 -5.991646715902803e+00 3.560113633709377e+00 4.732008519224311e+00 9.191422114444018e+03 + 190900 1.062582640845421e+00 -6.066091719031804e+00 -5.990735088292674e+00 3.355857588459839e+00 4.788567023564846e+00 9.188633280217324e+03 + 190920 9.476821390329740e-01 -5.901174630272386e+00 -6.060367633872728e+00 4.219271524684616e+00 4.305160662973760e+00 9.403293984470971e+03 + 190940 1.037789526814926e+00 -6.040666707978343e+00 -5.972286716762053e+00 3.547684347607391e+00 4.940332838940777e+00 9.132175579506882e+03 + 190960 1.031640682226401e+00 -6.036937874377916e+00 -5.947690412014111e+00 3.487603216980834e+00 5.000075956873965e+00 9.057158015761654e+03 + 190980 8.988350048408269e-01 -5.842285094910398e+00 -6.022902648681460e+00 4.530615358534945e+00 4.493481414305394e+00 9.287381841332586e+03 + 191000 9.884930018384180e-01 -5.974062398617810e+00 -5.972332577936207e+00 3.857368187410119e+00 4.867301085452768e+00 9.132269451345092e+03 + 191020 1.012328382640624e+00 -6.005572348411107e+00 -6.022607845120326e+00 3.594965521523881e+00 4.497145063184950e+00 9.286582821675878e+03 + 191040 1.011165443602551e+00 -6.001606999708979e+00 -6.018583587933064e+00 3.665063362416446e+00 4.567581165715213e+00 9.274187382099622e+03 + 191060 1.025157191255118e+00 -6.023259548791088e+00 -6.001371371174829e+00 3.563641427852124e+00 4.689326730909222e+00 9.221257235727857e+03 + 191080 9.627880440192340e-01 -5.932606372037060e+00 -6.019269256438226e+00 4.018552956476225e+00 4.520921263206711e+00 9.276300736768346e+03 + 191100 9.883719641433746e-01 -5.971982654659463e+00 -6.003527499114668e+00 3.879208929223864e+00 4.698073550813175e+00 9.227870981404065e+03 + 191120 1.018700952240416e+00 -6.019825322089840e+00 -6.003408918747208e+00 3.542629036997646e+00 4.636894565421247e+00 9.227514021240246e+03 + 191140 9.775869559813583e-01 -5.962628010899882e+00 -5.974447023686439e+00 3.871172069789490e+00 4.803305469382765e+00 9.138761185188832e+03 + 191160 9.575842823635106e-01 -5.934964836854888e+00 -5.987004193625969e+00 4.020834913171735e+00 4.722016873527756e+00 9.177167241133671e+03 + 191180 9.766674588819099e-01 -5.962414980807438e+00 -5.999607322562332e+00 3.908443995387198e+00 4.694879813534312e+00 9.215848819731458e+03 + 191200 1.057033604397919e+00 -6.080198113998206e+00 -6.019494869063649e+00 3.235811214901568e+00 4.584378641112585e+00 9.276988515172734e+03 + 191220 1.028428858684864e+00 -6.038980502499752e+00 -5.977618349815493e+00 3.553106332824295e+00 4.905457309299747e+00 9.148462050239459e+03 + 191240 9.798349567249403e-01 -5.968777590733155e+00 -6.023368799232172e+00 3.858380752356253e+00 4.544909585192688e+00 9.288912428764299e+03 + 191260 1.021149951491767e+00 -6.033421583891826e+00 -5.988463171325856e+00 3.528462156510131e+00 4.786620318755793e+00 9.181660514927613e+03 + 191280 9.870583297370342e-01 -5.987444658927341e+00 -5.990938192053354e+00 3.744985675751993e+00 4.724925267919925e+00 9.189226037132848e+03 + 191300 9.972713961256987e-01 -6.007248874853379e+00 -5.939457038942326e+00 3.685660208658384e+00 5.074931421212352e+00 9.032117665459686e+03 + 191320 9.809334095747532e-01 -5.984858010767615e+00 -6.017482103610936e+00 3.807420840827554e+00 4.620088251159154e+00 9.270772153691061e+03 + 191340 9.929872228339379e-01 -6.004754123457651e+00 -5.968797238695299e+00 3.712746251666842e+00 4.919216248282208e+00 9.121511597798695e+03 + 191360 1.040257266141776e+00 -6.076277729437621e+00 -5.959862238985341e+00 3.319121711456789e+00 4.987597472872700e+00 9.094241215232747e+03 + 191380 9.500954749788099e-01 -5.942113778439211e+00 -6.027044362779476e+00 4.010181095497776e+00 4.522496537250526e+00 9.300246504542101e+03 + 191400 9.616819308656267e-01 -5.960042327020192e+00 -6.031252682067715e+00 3.897441435356034e+00 4.488540556906327e+00 9.313243729114085e+03 + 191420 1.039567635193720e+00 -6.076633865642119e+00 -5.985682219856422e+00 3.237330663056402e+00 4.759589087879574e+00 9.173157615085946e+03 + 191440 9.481730758090652e-01 -5.941752986127252e+00 -5.986492313602886e+00 4.031526695721395e+00 4.774626553967752e+00 9.175591078148997e+03 + 191460 9.330019644063953e-01 -5.916539628597675e+00 -5.989181022903091e+00 4.150051392848605e+00 4.732933265527469e+00 9.183850415680912e+03 + 191480 1.095981447134261e+00 -6.150769926526729e+00 -5.948358164052827e+00 2.924176716286909e+00 5.086456379531065e+00 9.059213880597868e+03 + 191500 1.040712975603094e+00 -6.061964103733344e+00 -5.948299518493112e+00 3.392780513694147e+00 5.045460151681278e+00 9.059028330636083e+03 + 191520 9.995539954568957e-01 -5.994123383829915e+00 -5.966119419747059e+00 3.739339607790896e+00 4.900142703154090e+00 9.113316960545917e+03 + 191540 9.576930749736212e-01 -5.922074264370151e+00 -5.981816397552222e+00 4.142519239335513e+00 4.799470665538832e+00 9.161301747456726e+03 + 191560 1.034456826556005e+00 -6.022097755787619e+00 -5.978529868747279e+00 3.563113531962679e+00 4.813287081457037e+00 9.151254477829640e+03 + 191580 1.042623788337842e+00 -6.019831724713553e+00 -5.967660591700179e+00 3.625785991692482e+00 4.925360710912021e+00 9.118019777521284e+03 + 191600 9.834600528847722e-01 -5.915700480421364e+00 -6.008601331784430e+00 4.132907970222582e+00 4.599456905335572e+00 9.243424657351015e+03 + 191620 1.043156628161256e+00 -5.986212045043613e+00 -5.992473425873283e+00 3.777509336323068e+00 4.741555518653555e+00 9.193919339302058e+03 + 191640 1.024603150584142e+00 -5.940115571304681e+00 -6.028990609278971e+00 4.001937268740464e+00 4.491603047324418e+00 9.306255409054536e+03 + 191660 1.045132770134011e+00 -5.954862955719603e+00 -6.052565601860306e+00 3.884039702993804e+00 4.323015989418264e+00 9.379134458001525e+03 + 191680 1.062706032646265e+00 -5.970264433607397e+00 -6.024114965791954e+00 3.823717071752321e+00 4.514498982605671e+00 9.291244870496274e+03 + 191700 1.091790389513301e+00 -6.007627948172823e+00 -6.033340401080626e+00 3.611937909924132e+00 4.464293026338298e+00 9.319691513987751e+03 + 191720 1.013126508194464e+00 -5.892267560777530e+00 -6.045973545193585e+00 4.237243999894996e+00 4.354640451453792e+00 9.358701837983730e+03 + 191740 1.046963494442749e+00 -5.952281442488442e+00 -6.005332484595868e+00 3.962311454456111e+00 4.657684161053028e+00 9.233421417500926e+03 + 191760 1.034115674025881e+00 -5.950247741282316e+00 -5.978880797097928e+00 3.963265613757211e+00 4.798850176312895e+00 9.152293194718994e+03 + 191780 1.034431433710293e+00 -5.974363468743800e+00 -5.949589660440886e+00 3.848632723529853e+00 4.990887764539629e+00 9.062934268868681e+03 + 191800 9.701842858589952e-01 -5.910233826516230e+00 -5.998253545182092e+00 4.117304273706056e+00 4.611881428119231e+00 9.211681276753099e+03 + 191820 9.586208864922741e-01 -5.928421324337817e+00 -5.984084562679448e+00 4.044034704473816e+00 4.724407776057875e+00 9.168245992319951e+03 + 191840 1.012041844234107e+00 -6.043960612574699e+00 -5.986991213228803e+00 3.407738448256561e+00 4.734865555286747e+00 9.177165062268308e+03 + 191860 9.825368466711656e-01 -6.036011463230507e+00 -6.002526058441384e+00 3.494845438264997e+00 4.687123814413786e+00 9.224823691606021e+03 + 191880 9.310965398909162e-01 -5.988219814448264e+00 -6.002042522130832e+00 3.695546123049714e+00 4.616173996479309e+00 9.223321041241479e+03 + 191900 1.030243972169419e+00 -6.157981324990889e+00 -5.972416696428040e+00 2.878298947889262e+00 4.943839761130606e+00 9.132571275260963e+03 + 191920 9.309270038733016e-01 -6.026307223722691e+00 -6.026043013416359e+00 3.543382206911540e+00 4.544899343376911e+00 9.297189243481806e+03 + 191940 9.152764003706629e-01 -6.013626720585474e+00 -5.992583553961000e+00 3.655282884344927e+00 4.776116003522171e+00 9.194311904720362e+03 + 191960 9.376932394741377e-01 -6.050332906183336e+00 -5.985472354385708e+00 3.460941887295690e+00 4.833381212855618e+00 9.172512593726580e+03 + 191980 9.508519382382915e-01 -6.066571595799283e+00 -6.017373253007710e+00 3.315914809031724e+00 4.598419306759880e+00 9.270467706138101e+03 + 192000 9.389485372737877e-01 -6.039675401839528e+00 -5.982298271439711e+00 3.522188342499056e+00 4.851656704337038e+00 9.162801044730391e+03 + 192020 9.818093914323293e-01 -6.089924755798545e+00 -5.970145457175034e+00 3.223106780935544e+00 4.910898049418300e+00 9.125644013963845e+03 + 192040 9.168542279300756e-01 -5.974647001016805e+00 -6.042617710774910e+00 3.826553515958745e+00 4.436255182094370e+00 9.348320250182165e+03 + 192060 9.717250709553036e-01 -6.033424363986803e+00 -5.986143161108158e+00 3.548407554351336e+00 4.819903538023019e+00 9.174588947741715e+03 + 192080 9.759669995982853e-01 -6.015157152491703e+00 -5.976083044010982e+00 3.634532418563625e+00 4.858901996158673e+00 9.143792090537003e+03 + 192100 1.003616313252345e+00 -6.031648483057495e+00 -5.982921259662253e+00 3.513218058978461e+00 4.793017316227393e+00 9.164703361860005e+03 + 192120 1.000847201995444e+00 -6.003322009582517e+00 -5.976047078110566e+00 3.677374793614643e+00 4.833991670908588e+00 9.143653088975183e+03 + 192140 1.000959771998380e+00 -5.983162100252622e+00 -5.977380801301535e+00 3.757195827642106e+00 4.790392940872367e+00 9.147695816873798e+03 + 192160 9.859669558136969e-01 -5.944433422948818e+00 -5.987211989478224e+00 4.036112762645367e+00 4.790471613671743e+00 9.177776983512254e+03 + 192180 9.914135656073626e-01 -5.940785642831456e+00 -5.958299008909179e+00 3.969262596048244e+00 4.868698137845312e+00 9.089458170399979e+03 + 192200 9.475413843000323e-01 -5.867621722984843e+00 -5.972234178001086e+00 4.425133967750314e+00 4.824433062321956e+00 9.131979735640494e+03 + 192220 1.083811598027993e+00 -6.064172428853622e+00 -5.949650956160473e+00 3.374101987258835e+00 5.031702005603524e+00 9.063116075671436e+03 + 192240 1.022055236101889e+00 -5.970775817545753e+00 -5.989628457426127e+00 3.894701777029565e+00 4.786447001399866e+00 9.185214975623114e+03 + 192260 1.045895902066314e+00 -6.006204206501221e+00 -6.016743033935006e+00 3.707493143267219e+00 4.646977565264153e+00 9.268485398693640e+03 + 192280 1.054836371214232e+00 -6.022556134608114e+00 -6.023178296913073e+00 3.579513620801186e+00 4.575941068566799e+00 9.288332071833243e+03 + 192300 9.927763122045824e-01 -5.937845634257643e+00 -5.992658345733844e+00 4.068969009554799e+00 4.754225938018766e+00 9.194534715822792e+03 + 192320 9.781585867857857e-01 -5.924909924266403e+00 -6.023820941389088e+00 4.070528334953129e+00 4.502565968204244e+00 9.290291342562205e+03 + 192340 1.083966655454519e+00 -6.091014697532911e+00 -5.928381193080078e+00 3.242989914612903e+00 5.176856664634544e+00 8.998502727036492e+03 + 192360 1.008689043402150e+00 -5.988547288297667e+00 -6.000845341402888e+00 3.726064855443985e+00 4.655447531396238e+00 9.219641010872132e+03 + 192380 1.069782772453677e+00 -6.090509204607018e+00 -5.992015630449935e+00 3.224500131762195e+00 4.790065476403507e+00 9.192572428216094e+03 + 192400 1.025133814676901e+00 -6.036941687299496e+00 -6.018394357721348e+00 3.490443276355584e+00 4.596944912983288e+00 9.273624103840179e+03 + 192420 9.769782857467225e-01 -5.983293950719691e+00 -6.062173522155101e+00 3.721071797798472e+00 4.268133092042120e+00 9.408903890714517e+03 + 192440 9.963226565744849e-01 -6.032682274703534e+00 -6.011923381589707e+00 3.497264127678369e+00 4.616464904366294e+00 9.253692947416048e+03 + 192460 1.024663660479524e+00 -6.096636259719998e+00 -5.977075953846779e+00 3.183663138326545e+00 4.870196916548110e+00 9.146821954365902e+03 + 192480 9.366637130777166e-01 -5.985330454634335e+00 -6.006639520520225e+00 3.754824984274383e+00 4.632465030390314e+00 9.237427022045109e+03 + 192500 9.768123893811393e-01 -6.063140244343406e+00 -5.999520265392407e+00 3.373052637276699e+00 4.738368401573258e+00 9.215571339665636e+03 + 192520 9.635944512611898e-01 -6.060673283521291e+00 -5.959575578209304e+00 3.341915663946347e+00 4.922434332667118e+00 9.093377192102544e+03 + 192540 9.267701358470029e-01 -6.020120811292458e+00 -5.957056891005687e+00 3.599177169134989e+00 4.961299958531761e+00 9.085680737439441e+03 + 192560 9.653463178301863e-01 -6.087038898686658e+00 -5.945860918956416e+00 3.236584398267775e+00 5.047250205100585e+00 9.051594059885720e+03 + 192580 9.481956209326085e-01 -6.067767636468620e+00 -5.932750228587468e+00 3.356430312933251e+00 5.131721162863165e+00 9.011749544438582e+03 + 192600 9.351148322164566e-01 -6.047587010192227e+00 -5.970851801110917e+00 3.482107669564038e+00 4.922733114844146e+00 9.127740065588563e+03 + 192620 9.203067811598058e-01 -6.015735757067413e+00 -5.993737392552530e+00 3.556989025552121e+00 4.683307038832490e+00 9.197821084898358e+03 + 192640 1.001820739322161e+00 -6.113284355239132e+00 -5.957424486753231e+00 3.120244274421906e+00 5.015215758504652e+00 9.086802383612598e+03 + 192660 1.000605974820876e+00 -6.072915516045265e+00 -5.996736725689759e+00 3.307168508860412e+00 4.744598911711437e+00 9.207030426201934e+03 + 192680 9.960507626230358e-01 -6.020167185454696e+00 -6.004881325119646e+00 3.570210368165276e+00 4.657984143688376e+00 9.232025033193786e+03 + 192700 9.869605595545982e-01 -5.960173318160621e+00 -5.994655991459757e+00 3.919008034332722e+00 4.721003188072638e+00 9.200633458124734e+03 + 192720 1.026235494372035e+00 -5.978041257801868e+00 -5.990275051387788e+00 3.811611421220853e+00 4.741363085277063e+00 9.187207642678673e+03 + 192740 1.016010243727373e+00 -5.931461126226676e+00 -5.999079298458342e+00 4.083872434464885e+00 4.695598425632324e+00 9.214205950806516e+03 + 192760 1.073681819574464e+00 -5.994283359989019e+00 -5.983978309892470e+00 3.720262085991307e+00 4.779435278347041e+00 9.167917546556781e+03 + 192780 1.088324604348222e+00 -6.001179152352902e+00 -5.976675162462174e+00 3.693653282822303e+00 4.834358984755049e+00 9.145575695338510e+03 + 192800 1.027296241753211e+00 -5.901602595771991e+00 -6.014184902526348e+00 4.268112477807249e+00 4.621647450368069e+00 9.260661363020394e+03 + 192820 1.175428552762458e+00 -6.120404337433065e+00 -5.948137031495119e+00 3.090142158362259e+00 5.079327687337390e+00 9.058543975424120e+03 + 192840 1.067879463556149e+00 -5.968715801549084e+00 -5.999312264795931e+00 3.847256574903378e+00 4.671566948152602e+00 9.214916079564540e+03 + 192860 1.073516817506845e+00 -5.990283447684786e+00 -5.973870669297250e+00 3.812570554869245e+00 4.906815268239723e+00 9.136985435138686e+03 + 192880 1.055318189549783e+00 -5.979838009271034e+00 -6.009257622091276e+00 3.805123251199382e+00 4.636191281715178e+00 9.245478286282796e+03 + 192900 9.512430962427483e-01 -5.847642793165337e+00 -6.014294869989222e+00 4.514795845477795e+00 4.557853831029505e+00 9.260970082118094e+03 + 192920 1.019882509866317e+00 -5.974545850987445e+00 -5.961543940253501e+00 3.820398034215432e+00 4.895057017688922e+00 9.099367201377108e+03 + 192940 1.012146726767145e+00 -5.987353586887378e+00 -6.039187202871180e+00 3.752787394040937e+00 4.455150749835795e+00 9.337735944461929e+03 + 192960 1.040733434481756e+00 -6.059493925271433e+00 -6.014464647638792e+00 3.408282702951414e+00 4.666847783376232e+00 9.261520285346744e+03 + 192980 1.009890209951157e+00 -6.044694795525725e+00 -6.007331064984587e+00 3.490853956146126e+00 4.705402278931955e+00 9.239540425208990e+03 + 193000 9.847664257027373e-01 -6.034630982015854e+00 -5.992438255912541e+00 3.510072847620491e+00 4.752350010208980e+00 9.193846810009927e+03 + 193020 9.670736180680626e-01 -6.028939807301863e+00 -5.981712836198326e+00 3.508336870740865e+00 4.779521447167534e+00 9.160994696274862e+03 + 193040 9.951203290611198e-01 -6.084787458629108e+00 -5.969026347300433e+00 3.215846715025275e+00 4.880564930248608e+00 9.122222713877833e+03 + 193060 9.710795297403851e-01 -6.059616009493953e+00 -5.989675452478533e+00 3.369138780750386e+00 4.770748282399149e+00 9.185393967192902e+03 + 193080 9.633297859658231e-01 -6.051108025805366e+00 -5.976418945802575e+00 3.485802961740643e+00 4.914679217214448e+00 9.144804729547250e+03 + 193100 9.069326834820626e-01 -5.965288295374611e+00 -6.020257034377908e+00 3.843414902208264e+00 4.527775896466461e+00 9.279346780882461e+03 + 193120 9.655687604003120e-01 -6.046030872309935e+00 -6.000016221514678e+00 3.476172875996896e+00 4.740396121607454e+00 9.217105376799296e+03 + 193140 1.041468295935831e+00 -6.151503068996021e+00 -5.958084670645651e+00 2.906865429368561e+00 5.017503804096801e+00 9.088836391474573e+03 + 193160 9.739417851935880e-01 -6.044145856610211e+00 -6.010616775426012e+00 3.472285477358446e+00 4.664814650126662e+00 9.249647469869769e+03 + 193180 9.805311240099015e-01 -6.045700473453684e+00 -5.970368600745099e+00 3.441174274705777e+00 4.873741545368101e+00 9.126300118737012e+03 + 193200 1.034190005916360e+00 -6.116005034850783e+00 -5.965822361181056e+00 3.064931445438292e+00 4.927303598343503e+00 9.112442330112377e+03 + 193220 9.229293713899127e-01 -5.941397223734327e+00 -6.019531842499442e+00 4.020398975232439e+00 4.571737902989977e+00 9.277082077490872e+03 + 193240 9.801672979593096e-01 -6.017431603758345e+00 -5.988444510377514e+00 3.567995736294159e+00 4.734444112225092e+00 9.181608438288944e+03 + 193260 9.696902763962316e-01 -5.991857035024513e+00 -5.971882261282204e+00 3.752192309030269e+00 4.866890550944854e+00 9.130917047932264e+03 + 193280 9.739389225255172e-01 -5.987186703938875e+00 -5.950103854706033e+00 3.735356851961163e+00 4.948292310808516e+00 9.064523098738657e+03 + 193300 9.951274654334480e-01 -6.005633275694256e+00 -5.984204543062594e+00 3.663195573498303e+00 4.786242672354966e+00 9.168629386534729e+03 + 193320 1.062969706179940e+00 -6.094077342739375e+00 -5.990054219013460e+00 3.193513928588174e+00 4.790830802548752e+00 9.186553050651204e+03 + 193340 1.018078076739977e+00 -6.017775999465841e+00 -6.006775243000654e+00 3.679234084786329e+00 4.742402130770994e+00 9.237851233191372e+03 + 193360 9.702942807283549e-01 -5.940973707779218e+00 -6.015155364414579e+00 4.070331429646984e+00 4.644368877672477e+00 9.263613389201146e+03 + 193380 9.688024220050900e-01 -5.930786377800341e+00 -5.998015458150506e+00 4.090335732175583e+00 4.704295949138374e+00 9.210940874136080e+03 + 193400 1.018987041986540e+00 -5.996561679828703e+00 -6.021539524073347e+00 3.704809062054102e+00 4.561382415092451e+00 9.283279761461372e+03 + 193420 1.024421939211916e+00 -5.997465736031920e+00 -6.011737870895336e+00 3.744663934548690e+00 4.662711127557220e+00 9.253108431798688e+03 + 193440 9.916123967194218e-01 -5.942288104018143e+00 -6.017306430906819e+00 4.085523825969414e+00 4.654756983926067e+00 9.270229878748065e+03 + 193460 1.047768937905980e+00 -6.019036991245959e+00 -6.024667664254764e+00 3.527014638467303e+00 4.494682442706914e+00 9.292943054506004e+03 + 193480 1.102224493869864e+00 -6.097174432307977e+00 -5.986195345461552e+00 3.149112133947550e+00 4.786371224577906e+00 9.174739749548935e+03 + 193500 9.441099925596823e-01 -5.864809562100755e+00 -6.031450130983070e+00 4.471778810945887e+00 4.514902876878945e+00 9.313843168830312e+03 + 193520 1.001004510901299e+00 -5.952637442167845e+00 -6.057225017188923e+00 3.957067798836481e+00 4.356509758190525e+00 9.393531701507793e+03 + 193540 9.967096223191209e-01 -5.954175004277252e+00 -6.033239149265947e+00 4.003455549764944e+00 4.549456994102959e+00 9.319368780396451e+03 + 193560 9.895606605384756e-01 -5.960361067716853e+00 -6.051108342799441e+00 3.956530332723719e+00 4.435445436104068e+00 9.374613425447937e+03 + 193580 1.008174423190615e+00 -6.013799765279986e+00 -6.007157590035466e+00 3.651042566063875e+00 4.689182964191202e+00 9.239051160248315e+03 + 193600 1.005804469754030e+00 -6.040475994396820e+00 -6.021688078533133e+00 3.497504687317217e+00 4.605387807627089e+00 9.283763586507899e+03 + 193620 9.338292537306065e-01 -5.968409865282092e+00 -6.029111078281796e+00 3.857366100777580e+00 4.508810342250929e+00 9.306639056840113e+03 + 193640 9.460520696367564e-01 -6.017762566395382e+00 -6.042829380416045e+00 3.563383617496416e+00 4.419446092312833e+00 9.349006412634988e+03 + 193660 9.247188775689976e-01 -6.015055394679367e+00 -6.006280148834854e+00 3.647490733694943e+00 4.697879553299037e+00 9.236343741680950e+03 + 193680 9.691338806822474e-01 -6.102782590250664e+00 -5.980455058589200e+00 3.142706926001011e+00 4.845130542925480e+00 9.157133834223834e+03 + 193700 9.334502494999822e-01 -6.063588072726394e+00 -5.994815267802950e+00 3.379269253781014e+00 4.774173342208591e+00 9.201136476267327e+03 + 193720 9.760225308593538e-01 -6.132924403798757e+00 -6.021309482332022e+00 2.950795557711021e+00 4.591705709126293e+00 9.282586296446256e+03 + 193740 9.550894328844052e-01 -6.104256013002096e+00 -6.003929926160472e+00 3.150036038549762e+00 4.726123954606124e+00 9.229124001749171e+03 + 193760 9.175103727070968e-01 -6.044943842263792e+00 -5.986090141853520e+00 3.491375886829171e+00 4.829322942165660e+00 9.174383923560408e+03 + 193780 9.064063177043670e-01 -6.017548024660794e+00 -5.965765406837912e+00 3.667775721189527e+00 4.965119526062727e+00 9.112248874824903e+03 + 193800 9.385623409533291e-01 -6.043065722801518e+00 -5.989397870953392e+00 3.485924054384034e+00 4.794093164769201e+00 9.184524065686453e+03 + 193820 9.631095101226297e-01 -6.047394184726395e+00 -5.982281008687661e+00 3.451720790790708e+00 4.825610723836546e+00 9.162728999343655e+03 + 193840 9.845035350353661e-01 -6.041204028813237e+00 -5.996077153668843e+00 3.465961897553339e+00 4.725087397993807e+00 9.205024314303053e+03 + 193860 1.011973270443129e+00 -6.042349423592677e+00 -6.005004096894947e+00 3.483845792839790e+00 4.698288437908790e+00 9.232428539595761e+03 + 193880 1.010923213516133e+00 -6.005597274863867e+00 -6.047685506803717e+00 3.650195474976687e+00 4.408518334045223e+00 9.364002009699345e+03 + 193900 9.693910680676351e-01 -5.918013099952008e+00 -6.000940631703157e+00 4.126259466920890e+00 4.650076746611725e+00 9.219945380064279e+03 + 193920 1.029913520202660e+00 -5.988634188513677e+00 -6.022580621019340e+00 3.737221973986219e+00 4.542296305345250e+00 9.286500713448257e+03 + 193940 1.035440909488751e+00 -5.983856720197705e+00 -6.007686566537043e+00 3.822077312852814e+00 4.685242647515539e+00 9.240646363420208e+03 + 193960 9.663082919322866e-01 -5.874232118021832e+00 -6.027095098673698e+00 4.366488650171195e+00 4.488725759798374e+00 9.300384571628669e+03 + 193980 1.010579274482758e+00 -5.936099622908695e+00 -6.002388135282966e+00 4.051237348387207e+00 4.670598452220007e+00 9.224372113593570e+03 + 194000 1.059892951378851e+00 -6.008146300558740e+00 -6.036021552278585e+00 3.644849669315108e+00 4.484785660258495e+00 9.327961486405839e+03 + 194020 1.082480710805421e+00 -6.047385779849199e+00 -6.014657164646417e+00 3.400333451548733e+00 4.588266224779942e+00 9.262110906997515e+03 + 194040 9.465953848906453e-01 -5.855224421594428e+00 -5.995284191478500e+00 4.538913520068137e+00 4.734668647214455e+00 9.202567186287308e+03 + 194060 1.066600137788129e+00 -6.042057693467514e+00 -5.940306605881932e+00 3.510648848787838e+00 5.094919339634169e+00 9.034679592430986e+03 + 194080 1.029392208077709e+00 -5.994699947750794e+00 -5.999072099115064e+00 3.720422322493965e+00 4.695316752772092e+00 9.214181199078401e+03 + 194100 1.066974052679534e+00 -6.061460120928082e+00 -5.987503320901893e+00 3.381733751397851e+00 4.806405141926043e+00 9.178703118604319e+03 + 194120 9.511859224585989e-01 -5.902806710083565e+00 -6.012384142438769e+00 4.261928114096671e+00 4.632717540460238e+00 9.255080432256773e+03 + 194140 1.067313346741453e+00 -6.089237135881248e+00 -5.973578303728884e+00 3.251428238742888e+00 4.915559151108200e+00 9.136110405083447e+03 + 194160 9.916534489520434e-01 -5.993312022777951e+00 -5.974984868581823e+00 3.773633593171438e+00 4.878870948683547e+00 9.140427077275726e+03 + 194180 9.452767302319490e-01 -5.942911024110805e+00 -6.052904545833299e+00 4.001207033056957e+00 4.369607209883915e+00 9.380150356301841e+03 + 194200 9.594575731048806e-01 -5.985245195156315e+00 -5.965446926887393e+00 3.827866652610850e+00 4.941551372783116e+00 9.111271795072211e+03 + 194220 9.593670788915641e-01 -6.005962029863641e+00 -5.974666702643014e+00 3.698771222077761e+00 4.878473833914834e+00 9.139422306056786e+03 + 194240 1.020191951319725e+00 -6.120120828163301e+00 -5.966511311361073e+00 3.055279172062803e+00 4.937328788537098e+00 9.114536173416174e+03 + 194260 9.293203137526880e-01 -6.011583876009109e+00 -5.994934615634531e+00 3.665891554866330e+00 4.761494184401871e+00 9.201496154107332e+03 + 194280 9.408498334863892e-01 -6.060434981494996e+00 -5.979410728660303e+00 3.408163232712918e+00 4.873417030952329e+00 9.153942901132928e+03 + 194300 1.030724566801042e+00 -6.230234531569777e+00 -5.939002529876364e+00 2.494997560425857e+00 5.167296782156047e+00 9.030762044014229e+03 + 194320 8.879221992919479e-01 -6.060515483825966e+00 -5.965679183424589e+00 3.458957460326440e+00 5.003522173101205e+00 9.111990611538225e+03 + 194340 8.982500752819944e-01 -6.107620268169081e+00 -5.941503492527950e+00 3.162345815748980e+00 5.116214047968308e+00 9.038355704551099e+03 + 194360 9.163018766293644e-01 -6.156205860470535e+00 -5.986648214702218e+00 2.850795719711229e+00 4.824421960673786e+00 9.176102549062796e+03 + 194380 9.268868833787858e-01 -6.183547977541322e+00 -5.946615531984415e+00 2.698304755967547e+00 5.058807523532757e+00 9.053913133158501e+03 + 194400 8.729208637002845e-01 -6.103384326425672e+00 -5.993225883450548e+00 3.151631873725397e+00 4.784178700252518e+00 9.196285115528615e+03 + 194420 8.807116564566821e-01 -6.103539376806909e+00 -5.973400579471401e+00 3.155695913680231e+00 4.902973026894518e+00 9.135593449869686e+03 + 194440 9.044048316665005e-01 -6.113872148077965e+00 -6.004590331243009e+00 3.072868768165352e+00 4.700381871738164e+00 9.231153851280073e+03 + 194460 9.066388221993771e-01 -6.078592071264975e+00 -6.005382425984306e+00 3.293171646915556e+00 4.713552759273151e+00 9.233585851963257e+03 + 194480 9.043279738532719e-01 -6.027578090662852e+00 -6.003865781485638e+00 3.571842957739974e+00 4.708002706503527e+00 9.228905842170883e+03 + 194500 9.782350369235168e-01 -6.088856131032823e+00 -5.973823433851000e+00 3.231991982771473e+00 4.892527531241857e+00 9.136866396390149e+03 + 194520 9.285596483987033e-01 -5.977291629764057e+00 -6.016578213794135e+00 3.798578249012166e+00 4.572988603932229e+00 9.268020273490109e+03 + 194540 9.852790861076621e-01 -6.036268211214412e+00 -6.011905877696110e+00 3.508898849744166e+00 4.648791138865183e+00 9.253642026274638e+03 + 194560 9.840058634816742e-01 -6.017803076723942e+00 -6.038537597003969e+00 3.556706298563768e+00 4.437645474459210e+00 9.335736231399074e+03 + 194580 1.033749536534455e+00 -6.079355350086628e+00 -6.009894167230584e+00 3.306916110476116e+00 4.705772971518826e+00 9.247457615765919e+03 + 194600 1.005240169449084e+00 -6.027680240681997e+00 -6.005433497271760e+00 3.536913299300653e+00 4.664657542634650e+00 9.233733972761152e+03 + 194620 1.035152405843537e+00 -6.061591457153781e+00 -5.991958025523378e+00 3.370282612105989e+00 4.770128552266486e+00 9.192373095736863e+03 + 194640 1.003667075214549e+00 -6.005443693729010e+00 -6.020128902108904e+00 3.652432466038257e+00 4.568107726992255e+00 9.278937907469022e+03 + 194660 9.398401490689932e-01 -5.903695781970285e+00 -6.021073040924228e+00 4.173180501472359e+00 4.499182116486699e+00 9.281857881983062e+03 + 194680 1.048405968331072e+00 -6.055276524056493e+00 -5.987089284410419e+00 3.381892104922618e+00 4.773433786911612e+00 9.177468668661939e+03 + 194700 1.041723682928530e+00 -6.035969627278400e+00 -5.986876259178812e+00 3.506348779425015e+00 4.788250496227013e+00 9.176814741592525e+03 + 194720 1.052905863466826e+00 -6.045473397828164e+00 -5.991278975726828e+00 3.419753347712193e+00 4.730946105977781e+00 9.190304626784149e+03 + 194740 1.037402052454290e+00 -6.017578345193533e+00 -5.997269478023051e+00 3.575879471739833e+00 4.692496129819779e+00 9.208658792140137e+03 + 194760 9.686789716528641e-01 -5.912895653225706e+00 -6.013520043399431e+00 4.125403859640525e+00 4.547603039688942e+00 9.258585217048649e+03 + 194780 9.727781292771562e-01 -5.914575734373909e+00 -5.985926277154307e+00 4.128839720571797e+00 4.719133862465945e+00 9.173876887526994e+03 + 194800 1.029683696005441e+00 -5.992637791770705e+00 -5.993103054223884e+00 3.775575080226703e+00 4.772903471221418e+00 9.195871794295146e+03 + 194820 1.015825897320712e+00 -5.967138043947833e+00 -6.020851538970549e+00 3.871396613894825e+00 4.562965413337904e+00 9.281172986958933e+03 + 194840 1.068765958031652e+00 -6.043444621146242e+00 -6.001747146178079e+00 3.484617430012412e+00 4.724050783942996e+00 9.222423536987635e+03 + 194860 1.006243143331842e+00 -5.954321011997324e+00 -6.025644525726769e+00 3.892839619279527e+00 4.483288966166973e+00 9.295936775458698e+03 + 194880 9.965546424677431e-01 -5.948456985442180e+00 -5.942917974595797e+00 3.916093003118806e+00 4.947898860557897e+00 9.042614977332827e+03 + 194900 1.039271436786827e+00 -6.019181392409170e+00 -5.944393824617972e+00 3.605568904328476e+00 5.035010691924247e+00 9.047106687109244e+03 + 194920 9.776110221237814e-01 -5.936691553426297e+00 -6.003163224742421e+00 3.979377415461346e+00 4.597686792306268e+00 9.226747981483268e+03 + 194940 9.388572813598552e-01 -5.893009644068782e+00 -5.992348529413742e+00 4.233190103697034e+00 4.662770851403446e+00 9.193549881575127e+03 + 194960 9.881943898300279e-01 -5.980554653697074e+00 -5.973998558868908e+00 3.782076542106890e+00 4.819722653162617e+00 9.137373025246476e+03 + 194980 1.011259948616075e+00 -6.030366414084140e+00 -5.974105217365748e+00 3.522688321425508e+00 4.845748819374570e+00 9.137715227699529e+03 + 195000 1.018714717687006e+00 -6.059977682665144e+00 -5.932580098851861e+00 3.417484548851176e+00 5.149021189819429e+00 9.011208785761766e+03 + 195020 9.512794813648384e-01 -5.978742006522158e+00 -5.961801309624342e+00 3.821089485383350e+00 4.918365588534986e+00 9.100118219538768e+03 + 195040 9.851222100688394e-01 -6.045341819586577e+00 -5.989886669191358e+00 3.438305110037144e+00 4.756737165263283e+00 9.186030501978252e+03 + 195060 9.932674088245751e-01 -6.074461497592939e+00 -5.994663630571507e+00 3.295266411859224e+00 4.753478112976294e+00 9.200671894523484e+03 + 195080 9.660641534990018e-01 -6.051020694101098e+00 -6.022363025091584e+00 3.402285659465789e+00 4.566842429678363e+00 9.285841483414810e+03 + 195100 9.158062118117237e-01 -5.990548797993362e+00 -6.004428025935203e+00 3.731602341046055e+00 4.651905666400422e+00 9.230675070357305e+03 + 195120 1.009719325337959e+00 -6.141730259594245e+00 -5.981203980068356e+00 2.953615354857956e+00 4.875382093257086e+00 9.159448458220540e+03 + 195140 1.006414339536299e+00 -6.147085406726273e+00 -5.952682770899914e+00 2.956974799076497e+00 5.073264817702116e+00 9.072357823386805e+03 + 195160 9.047596820629388e-01 -6.001893078909852e+00 -5.965888747056753e+00 3.681647414311814e+00 4.888389859464655e+00 9.112639672906691e+03 + 195180 8.879737058233469e-01 -5.975077362619087e+00 -6.007373240560547e+00 3.779503989681654e+00 4.594056060770831e+00 9.239665968144833e+03 + 195200 8.925979060735731e-01 -5.972303330574706e+00 -5.968663749732993e+00 3.867102004095574e+00 4.888001040511997e+00 9.121090788257578e+03 + 195220 9.552891373444073e-01 -6.043747504382768e+00 -5.988582313329820e+00 3.519471933109668e+00 4.836238996921426e+00 9.182026026858424e+03 + 195240 9.816457333766435e-01 -6.049077187373987e+00 -6.026634412554426e+00 3.424122099799739e+00 4.552991985821837e+00 9.299007430075013e+03 + 195260 1.006671621922202e+00 -6.045517089183083e+00 -6.015155290766355e+00 3.415649411902916e+00 4.589991556884892e+00 9.263635257913202e+03 + 195280 9.593444198299099e-01 -5.936042306773736e+00 -5.997859998262179e+00 4.059947710698895e+00 4.704980959915415e+00 9.210458162515473e+03 + 195300 1.021225493862118e+00 -5.987658662222856e+00 -5.982700930959740e+00 3.751123305936924e+00 4.779591366056170e+00 9.164020664192820e+03 + 195320 1.025503479272375e+00 -5.959017571020345e+00 -6.025009465692881e+00 3.863534488974814e+00 4.484598817552417e+00 9.293987621940221e+03 + 195340 1.066310121497640e+00 -5.994805685652834e+00 -6.031975319016746e+00 3.706048082081089e+00 4.492614295323332e+00 9.315464501331662e+03 + 195360 1.118920486392026e+00 -6.060098157997365e+00 -5.984737005212866e+00 3.376504482142605e+00 4.809239883531906e+00 9.170260193675802e+03 + 195380 1.022338272832912e+00 -5.911519994195669e+00 -6.034564425659916e+00 4.164334176910518e+00 4.457794010378580e+00 9.323458762469068e+03 + 195400 1.036458528702731e+00 -5.933115401198777e+00 -6.064120361114735e+00 4.012951207089098e+00 4.260700454299637e+00 9.414936180281651e+03 + 195420 1.048368839655583e+00 -5.957290737377544e+00 -6.071604317727990e+00 3.893565408751154e+00 4.237159140409508e+00 9.438186131882103e+03 + 195440 1.034194018145831e+00 -5.951018688672262e+00 -6.000163515377098e+00 3.926933516364589e+00 4.644736316288069e+00 9.217525763071664e+03 + 195460 1.000900478135794e+00 -5.917656042991911e+00 -5.970904085995430e+00 4.109511172947834e+00 4.803752669913600e+00 9.127937204156198e+03 + 195480 1.049007912653091e+00 -6.003051618631785e+00 -6.009753305675066e+00 3.641618765162330e+00 4.603136641077091e+00 9.247038734643462e+03 + 195500 9.781700088673190e-01 -5.916990357450334e+00 -6.060695902141767e+00 4.127752703990240e+00 4.302573228010865e+00 9.404321939147021e+03 + 195520 9.824617563285656e-01 -5.946445213257737e+00 -5.991294808957096e+00 4.010365152046462e+00 4.752831833088238e+00 9.190332577082683e+03 + 195540 9.780075826248805e-01 -5.961882331849758e+00 -5.983334489084895e+00 3.946371173065097e+00 4.823189566510333e+00 9.165942372734960e+03 + 195560 9.939654845631486e-01 -6.003692912290270e+00 -5.985168047720951e+00 3.690537587235346e+00 4.796910226305899e+00 9.171563218291187e+03 + 195580 1.062696435458494e+00 -6.120864198384767e+00 -5.987260749125742e+00 3.029457001069603e+00 4.796628681781884e+00 9.177995117132530e+03 + 195600 9.861607181793353e-01 -6.023738230710810e+00 -6.016106058038739e+00 3.554101671167539e+00 4.597926787725473e+00 9.266563996103199e+03 + 195620 1.003420159773009e+00 -6.064849375077141e+00 -5.974942868821337e+00 3.387040443745005e+00 4.903297515652705e+00 9.140271111922981e+03 + 195640 1.006936461832678e+00 -6.080822655141368e+00 -5.966757271939023e+00 3.285792775073184e+00 4.940773856982055e+00 9.115258390914672e+03 + 195660 9.055283186476669e-01 -5.935985132588241e+00 -6.003492176928086e+00 4.061120985599986e+00 4.673485090319246e+00 9.227766455227276e+03 + 195680 9.418391524037608e-01 -5.991624125180082e+00 -6.034495105450395e+00 3.730656448215139e+00 4.484484645240249e+00 9.323265979452004e+03 + 195700 1.009114335302445e+00 -6.091854968101154e+00 -5.999612277846599e+00 3.193186401915920e+00 4.722858203867760e+00 9.215879207332064e+03 + 195720 9.550614776911082e-01 -6.008376838403665e+00 -5.989771393524393e+00 3.733492282412256e+00 4.840327626092323e+00 9.185643854525842e+03 + 195740 9.499736512690375e-01 -5.992243537432164e+00 -6.022028763733781e+00 3.771175998260776e+00 4.600144619588016e+00 9.284793587155988e+03 + 195760 1.035379646450857e+00 -6.102297002642259e+00 -6.012232586129475e+00 3.160561050204074e+00 4.677724867243893e+00 9.254663756216836e+03 + 195780 1.054541696726983e+00 -6.097142930152711e+00 -6.033021562857563e+00 3.126767456276865e+00 4.494962270035124e+00 9.318710857629167e+03 + 195800 1.023161939910014e+00 -5.993604757360965e+00 -6.017504326097239e+00 3.768501438739963e+00 4.631266416609972e+00 9.270856923176152e+03 + 195820 1.007777868455822e+00 -5.900143476288800e+00 -6.008490523551906e+00 4.222410811186140e+00 4.600265299150010e+00 9.243126705526671e+03 + 195840 1.075914445505571e+00 -5.940726552696990e+00 -5.990791648176040e+00 4.012980719794831e+00 4.725499194005641e+00 9.188781769429612e+03 + 195860 1.109707951799272e+00 -5.951630850359702e+00 -5.963365575703811e+00 3.990174346962669e+00 4.922791738093915e+00 9.104871312495286e+03 + 195880 1.042097413065962e+00 -5.828142016804314e+00 -6.013838715646065e+00 4.529576428311453e+00 4.463277247090848e+00 9.259483609266021e+03 + 195900 1.094437296132860e+00 -5.890937286447214e+00 -5.957827356972853e+00 4.279260331895459e+00 4.895167195732276e+00 9.088010499073818e+03 + 195920 1.103912831286587e+00 -5.900381439605983e+00 -6.038607238243221e+00 4.222441459607938e+00 4.428727533459704e+00 9.335921935429313e+03 + 195940 1.145937512267781e+00 -5.973268057719872e+00 -5.997600008979067e+00 3.869505366872178e+00 4.729787537384594e+00 9.209694450526273e+03 + 195960 1.083835737289040e+00 -5.902348630843024e+00 -6.032298787569095e+00 4.236716007896007e+00 4.490522098253142e+00 9.316458793144357e+03 + 195980 1.076508382362731e+00 -5.925971630866234e+00 -5.996372000924755e+00 4.129120277546182e+00 4.724870458248104e+00 9.205891283607167e+03 + 196000 1.026643128341642e+00 -5.890791915489999e+00 -6.006039832807624e+00 4.277959255305097e+00 4.616187879509725e+00 9.235561494602738e+03 + 196020 1.021165541169524e+00 -5.921358168531308e+00 -5.966663831542059e+00 4.118281625297159e+00 4.858129497260732e+00 9.114975609956584e+03 + 196040 9.805787860140404e-01 -5.894410297802692e+00 -6.032738692237970e+00 4.297168608586884e+00 4.502865561489658e+00 9.317806951234435e+03 + 196060 1.057743567804275e+00 -6.040112724474444e+00 -6.000424538129063e+00 3.499723633759587e+00 4.727619341481752e+00 9.218358488231455e+03 + 196080 1.039124315171952e+00 -6.041664535904888e+00 -5.983959249252897e+00 3.470586104634517e+00 4.801938790454495e+00 9.167868977082349e+03 + 196100 9.656585972063157e-01 -5.957387507657709e+00 -5.991174177154353e+00 3.959632233578511e+00 4.765623948858569e+00 9.189944632902538e+03 + 196120 9.788456759473211e-01 -5.993718202860602e+00 -5.994057083352168e+00 3.724751647203340e+00 4.722805742979183e+00 9.198786716819519e+03 + 196140 1.014229989262649e+00 -6.060035580857191e+00 -5.974358940820917e+00 3.387667435761924e+00 4.879635961267407e+00 9.138502199170796e+03 + 196160 9.244999306360201e-01 -5.938945135223111e+00 -6.000396759315717e+00 4.030625132395195e+00 4.677760397247359e+00 9.218259604762336e+03 + 196180 9.868177074480585e-01 -6.038268894005399e+00 -5.961587475568934e+00 3.479797132231468e+00 4.920113703304802e+00 9.099516275543370e+03 + 196200 9.933425315740908e-01 -6.050725677078359e+00 -5.992560654038739e+00 3.452110809872873e+00 4.786103373174596e+00 9.194198941181050e+03 + 196220 1.004911089331962e+00 -6.067367084587982e+00 -5.968265149412284e+00 3.343307266144673e+00 4.912365913898437e+00 9.119888736378449e+03 + 196240 1.005543278080721e+00 -6.065444516948155e+00 -5.974765881850439e+00 3.360467190974586e+00 4.881157946179100e+00 9.139771916500067e+03 + 196260 9.986416031814210e-01 -6.050135652970084e+00 -6.052680107255915e+00 3.368385422110793e+00 4.353774771848528e+00 9.379490423971896e+03 + 196280 1.024424522627822e+00 -6.082830864128908e+00 -6.001457865745364e+00 3.210178396419209e+00 4.677434745568327e+00 9.221549738970525e+03 + 196300 9.845245004734411e-01 -6.017566414903256e+00 -6.003411901834026e+00 3.581198818446239e+00 4.662476222893576e+00 9.227521616055972e+03 + 196320 9.419419910562526e-01 -5.943289232912045e+00 -6.010092617804518e+00 3.940377739829699e+00 4.556782365986718e+00 9.248041645880890e+03 + 196340 9.693266084521186e-01 -5.963960763503920e+00 -6.016193722760271e+00 3.864571726338383e+00 4.564641991264095e+00 9.266824786194342e+03 + 196360 9.606812473762324e-01 -5.922893538047632e+00 -6.062008329699757e+00 4.041963737934314e+00 4.243145076323378e+00 9.408376901890899e+03 + 196380 1.058001926103443e+00 -6.030924096049105e+00 -5.985170376709587e+00 3.563222669350723e+00 4.825947606163423e+00 9.171595438288616e+03 + 196400 1.050676249627793e+00 -5.980924117432423e+00 -6.014467605588966e+00 3.767774675336474e+00 4.575162775503587e+00 9.261518330223718e+03 + 196420 1.112692136181506e+00 -6.032504438933397e+00 -6.018416909950121e+00 3.502850402924399e+00 4.583743174384440e+00 9.273678786133734e+03 + 196440 1.075161674933484e+00 -5.944563770643599e+00 -6.024130498883313e+00 4.018954891643374e+00 4.562070425179535e+00 9.291263528439176e+03 + 196460 1.070110749078919e+00 -5.914266194208278e+00 -6.020268675847526e+00 4.185092791429872e+00 4.576410138026292e+00 9.279357542598849e+03 + 196480 1.086836737933196e+00 -5.923002859069145e+00 -6.045392817581578e+00 4.040768461553920e+00 4.337986379990662e+00 9.356872293746232e+03 + 196500 1.063765350908134e+00 -5.882912419768585e+00 -5.983161787762685e+00 4.365079833717187e+00 4.789432449155508e+00 9.165402041204641e+03 + 196520 1.055538114352108e+00 -5.874210755132538e+00 -5.983662426551170e+00 4.423587562316857e+00 4.795099127439657e+00 9.166946516208840e+03 + 196540 1.051618388287416e+00 -5.878203699794543e+00 -6.041520903648044e+00 4.296602502451845e+00 4.358809844669429e+00 9.344953799231969e+03 + 196560 1.115458451193030e+00 -5.996223794423486e+00 -5.989011191161680e+00 3.777996710395426e+00 4.819412594471466e+00 9.183349292632141e+03 + 196580 1.033862579646109e+00 -5.911250858712670e+00 -6.002849023699818e+00 4.147106604326715e+00 4.621135766200292e+00 9.225783493539879e+03 + 196600 1.067482220023382e+00 -6.006591471699648e+00 -5.948921644939004e+00 3.654433663764506e+00 4.985582733400976e+00 9.060903279021102e+03 + 196620 1.001309001843889e+00 -5.955028622936048e+00 -5.957653316795782e+00 3.984713486112900e+00 4.969642087800246e+00 9.087478100995009e+03 + 196640 9.663553443466588e-01 -5.939861200482600e+00 -5.992409646777404e+00 3.977219210434471e+00 4.675477899963927e+00 9.193758298196515e+03 + 196660 9.864682861019943e-01 -5.996117088157417e+00 -6.054987010742149e+00 3.697356569391710e+00 4.359316363819106e+00 9.386615653675526e+03 + 196680 9.866292181510660e-01 -6.017747932982147e+00 -6.006458431243194e+00 3.587310822185471e+00 4.652136888215287e+00 9.236899618126414e+03 + 196700 9.213399181871296e-01 -5.931189223530975e+00 -6.023581192197405e+00 4.061771141723238e+00 4.531242160029653e+00 9.289583561160529e+03 + 196720 9.974994271830198e-01 -6.048974735629590e+00 -5.977870233069941e+00 3.414044046153945e+00 4.822337103237658e+00 9.149238909264219e+03 + 196740 9.372145310151810e-01 -5.962242814933930e+00 -5.996508413619376e+00 3.912539290452004e+00 4.715780920215910e+00 9.206285461247051e+03 + 196760 9.279056233827839e-01 -5.947310457490586e+00 -6.014020425483008e+00 3.917079907293330e+00 4.534020947746656e+00 9.260094949201211e+03 + 196780 9.324660087289492e-01 -5.949158082471452e+00 -5.967536018146450e+00 3.926250662843771e+00 4.820721712221579e+00 9.117608915262341e+03 + 196800 9.691260013237579e-01 -5.992676534797638e+00 -5.950140172002222e+00 3.759033450759277e+00 5.003283828411427e+00 9.064610913261837e+03 + 196820 9.814039503164497e-01 -5.996088637448807e+00 -5.978804770235698e+00 3.714757297326284e+00 4.814003937533767e+00 9.152076307009795e+03 + 196840 1.047677099316197e+00 -6.077860326504848e+00 -5.983679945132244e+00 3.276030639420648e+00 4.816828963629057e+00 9.166998701371262e+03 + 196860 1.047747520453599e+00 -6.060897543210794e+00 -5.960941082063933e+00 3.354142953296611e+00 4.928108421414262e+00 9.097563552986076e+03 + 196880 1.022289784596336e+00 -6.008818555388199e+00 -5.992845750577484e+00 3.668072158526428e+00 4.759790475533115e+00 9.195096139647250e+03 + 196900 9.229929960615717e-01 -5.845535916612546e+00 -6.053055999159617e+00 4.516265369474781e+00 4.324652941860511e+00 9.380628717252595e+03 + 196920 1.050814053606426e+00 -6.020025077855585e+00 -6.008298075024983e+00 3.560363964402784e+00 4.627702229403925e+00 9.242545375691092e+03 + 196940 1.043371499551677e+00 -5.995018458764038e+00 -5.994186687777280e+00 3.729568103645593e+00 4.734344261367706e+00 9.199218153115138e+03 + 196960 1.048351363890013e+00 -5.990053585157971e+00 -6.010484992014194e+00 3.763628544024202e+00 4.646308244105780e+00 9.249246344029703e+03 + 196980 9.874874113569309e-01 -5.889677050364088e+00 -6.015752577380118e+00 4.309534529835403e+00 4.585589343584605e+00 9.265469159504757e+03 + 197000 1.079820705247226e+00 -6.017711536696240e+00 -5.987676824663218e+00 3.595407730868390e+00 4.767871695218666e+00 9.179247337686120e+03 + 197020 1.090757564663666e+00 -6.028340538533708e+00 -5.992331734790272e+00 3.561482260634908e+00 4.768250384074089e+00 9.193497506001437e+03 + 197040 1.044083688192767e+00 -5.958009688892636e+00 -5.977395579254579e+00 3.922997560358719e+00 4.811680777943605e+00 9.147773766546354e+03 + 197060 9.997663137644403e-01 -5.894935660164928e+00 -5.980987943983190e+00 4.215571244391156e+00 4.721445714158814e+00 9.158781364357355e+03 + 197080 1.060108581377842e+00 -5.991120285374828e+00 -5.999004175473726e+00 3.688298000577622e+00 4.643027483601708e+00 9.213994365742568e+03 + 197100 9.901753463662631e-01 -5.902191960505883e+00 -6.045070935909322e+00 4.123896820896288e+00 4.303463633679758e+00 9.355920327360420e+03 + 197120 1.020236534807079e+00 -5.970346033454833e+00 -6.022694482894962e+00 3.863316378213017e+00 4.562723480631428e+00 9.286827361780481e+03 + 197140 1.009732137544667e+00 -5.988157177872170e+00 -5.976268229728614e+00 3.721569638007983e+00 4.789837818057059e+00 9.144348688628032e+03 + 197160 9.428450571295194e-01 -5.924106839203908e+00 -5.987727153605924e+00 4.103877355781600e+00 4.738559665273395e+00 9.179404108062769e+03 + 197180 1.034912779845546e+00 -6.093183141932883e+00 -5.971168276171854e+00 3.179195185530944e+00 4.879823426470225e+00 9.128775493968004e+03 + 197200 9.891640301591573e-01 -6.057241984591949e+00 -5.965478607667785e+00 3.431988387838275e+00 4.958907898473509e+00 9.111385903694772e+03 + 197220 9.657594340331794e-01 -6.049174093438138e+00 -5.990994541332087e+00 3.426225518656401e+00 4.760301510105938e+00 9.189399042494322e+03 + 197240 9.339765781687953e-01 -6.019574505798477e+00 -5.998711681669448e+00 3.596648430899665e+00 4.716445995560152e+00 9.213064642070907e+03 + 197260 9.499001586448454e-01 -6.055924515312791e+00 -5.975006439505787e+00 3.447242766104740e+00 4.911886879420318e+00 9.140498009125908e+03 + 197280 9.233242910642313e-01 -6.022291694654089e+00 -5.997722871003016e+00 3.569257369526794e+00 4.710335356944428e+00 9.210066566338732e+03 + 197300 9.496620660420270e-01 -6.060719739300927e+00 -5.956011979606190e+00 3.414897361594151e+00 5.016145521234776e+00 9.082502813236055e+03 + 197320 9.503593608971426e-01 -6.053897022556006e+00 -5.983249272544809e+00 3.377018887998311e+00 4.782689201266589e+00 9.165723319061768e+03 + 197340 9.761143031009127e-01 -6.079580949035935e+00 -5.999664423724060e+00 3.238381680830373e+00 4.697274736213486e+00 9.216022573866338e+03 + 197360 9.346768182604634e-01 -5.998864050798050e+00 -6.021522244778397e+00 3.692938936591987e+00 4.562832080412647e+00 9.283250344106660e+03 + 197380 9.892311127066558e-01 -6.055108835894766e+00 -5.988051731873103e+00 3.378270805893247e+00 4.763323074238945e+00 9.180409483806527e+03 + 197400 9.475529833573469e-01 -5.962392512223929e+00 -5.966188730150639e+00 3.956379215291700e+00 4.934580744493706e+00 9.113500433209887e+03 + 197420 1.048722579066726e+00 -6.073166421074767e+00 -5.994808603576469e+00 3.277150585884818e+00 4.727093299793116e+00 9.201111197472084e+03 + 197440 1.050748489717075e+00 -6.037126385663093e+00 -5.977217549250812e+00 3.543677792050950e+00 4.887683601592745e+00 9.147248592194484e+03 + 197460 9.929795263342298e-01 -5.917928166068546e+00 -6.020714679927558e+00 4.159107294884740e+00 4.568891226144683e+00 9.280748384039072e+03 + 197480 1.030528908472533e+00 -5.947325162502953e+00 -6.005013291818775e+00 4.035322309707878e+00 4.704068143967262e+00 9.232466427690417e+03 + 197500 1.018990311464264e+00 -5.913950968722451e+00 -6.023716022650490e+00 4.226974044454586e+00 4.596686118712583e+00 9.289999916578039e+03 + 197520 1.103125413171622e+00 -6.033279638205990e+00 -5.978291478629676e+00 3.535607080890546e+00 4.851357602567933e+00 9.150513181833465e+03 + 197540 9.918521868153060e-01 -5.868293880123144e+00 -5.991161214522059e+00 4.427615331684855e+00 4.722092083907736e+00 9.189891994335134e+03 + 197560 9.920547105603189e-01 -5.871139024917659e+00 -5.988882591829150e+00 4.369394543554237e+00 4.693292761590369e+00 9.182907631840086e+03 + 197580 9.916333633955182e-01 -5.873602307174070e+00 -5.962438222298370e+00 4.458756620337001e+00 4.948647048379838e+00 9.102039807494270e+03 + 197600 1.033756503283396e+00 -5.939230071460371e+00 -5.966914937219031e+00 3.990664908308536e+00 4.831694124903182e+00 9.115739359301433e+03 + 197620 1.059662956847667e+00 -5.982769069208641e+00 -5.970279183972358e+00 3.829682595239809e+00 4.901401449070038e+00 9.126026637196295e+03 + 197640 1.114696916422550e+00 -6.073508822964579e+00 -5.979698748915194e+00 3.280816907445384e+00 4.819488869698992e+00 9.154850834862209e+03 + 197660 1.088873444844288e+00 -6.052172062010866e+00 -5.967620489041542e+00 3.411659558110119e+00 4.897167774413612e+00 9.117875998016831e+03 + 197680 1.004463468014409e+00 -5.944086418256621e+00 -5.955867022008926e+00 4.052968875870480e+00 4.985322826082205e+00 9.082022820727194e+03 + 197700 9.924027605821176e-01 -5.942523495137124e+00 -5.977513215645520e+00 4.014896585745752e+00 4.813980195944791e+00 9.148116862085810e+03 + 197720 9.799905812762225e-01 -5.937816478924363e+00 -6.008176646201831e+00 4.015742844602350e+00 4.611723875894433e+00 9.242154496518999e+03 + 197740 1.016486507936503e+00 -6.004213476590676e+00 -5.994729787114927e+00 3.664658887791353e+00 4.719115700357310e+00 9.200851550314121e+03 + 197760 1.024897684334583e+00 -6.029821257369699e+00 -5.989162127020075e+00 3.535441262416423e+00 4.768912280864052e+00 9.183816371186842e+03 + 197780 1.003144833351176e+00 -6.011059235592398e+00 -6.007854735074519e+00 3.619858288449541e+00 4.638259026318064e+00 9.241160263625110e+03 + 197800 9.640184593975513e-01 -5.967205765768405e+00 -6.012486127546235e+00 3.843043114696291e+00 4.583036270254652e+00 9.255417607349127e+03 + 197820 9.292015964115172e-01 -5.927906894827223e+00 -6.020028691883120e+00 4.150029645670132e+00 4.621052031173153e+00 9.278627897050830e+03 + 197840 9.969278378842779e-01 -6.038425653113663e+00 -6.011707856469595e+00 3.510095815984067e+00 4.663513538879973e+00 9.253031215391044e+03 + 197860 1.015585866226082e+00 -6.076504741977311e+00 -6.005284742126257e+00 3.284231026357999e+00 4.693187286762107e+00 9.233283746251729e+03 + 197880 9.052103199325080e-01 -5.922557996618851e+00 -6.014025054425375e+00 4.139712794421844e+00 4.614494794015335e+00 9.260139171920477e+03 + 197900 9.628959031997373e-01 -6.017993688652330e+00 -5.999149875244477e+00 3.605347938433688e+00 4.713552031092286e+00 9.214407203227105e+03 + 197920 9.725503214780055e-01 -6.042019212709418e+00 -6.008848160509082e+00 3.464705105197180e+00 4.655178420135244e+00 9.244219486107251e+03 + 197940 9.121817583787587e-01 -5.964084199418634e+00 -6.018497328644591e+00 3.959588819703323e+00 4.647140211283348e+00 9.273916008360336e+03 + 197960 9.895157806835558e-01 -6.092606214624727e+00 -6.029570241624302e+00 3.148647053354223e+00 4.510609365107955e+00 9.308065768254402e+03 + 197980 9.623183552774741e-01 -6.071150850106349e+00 -6.010448068373572e+00 3.349414707395913e+00 4.697979473830632e+00 9.249166694650921e+03 + 198000 9.219195694901473e-01 -6.031484256687113e+00 -5.986864200294160e+00 3.587648495491559e+00 4.843863764231308e+00 9.176748429444106e+03 + 198020 9.257860901456828e-01 -6.053050138978177e+00 -5.951749350964880e+00 3.465985468642824e+00 5.047670269661461e+00 9.069510692116881e+03 + 198040 9.848695055666200e-01 -6.149821997887043e+00 -5.934663431495617e+00 2.934217712869647e+00 5.169691496769756e+00 9.017560926417731e+03 + 198060 9.169650715472569e-01 -6.050085663456841e+00 -5.986274144940001e+00 3.436901950142670e+00 4.803317564266942e+00 9.174938766155332e+03 + 198080 9.153428098125780e-01 -6.042263206337669e+00 -5.970546949950809e+00 3.476794663141194e+00 4.888600505369352e+00 9.126853343151282e+03 + 198100 9.230118481405387e-01 -6.039225976504595e+00 -5.993640798280924e+00 3.483491042564484e+00 4.745248190208333e+00 9.197527933027068e+03 + 198120 9.682070426132244e-01 -6.082865051581861e+00 -5.980530485847439e+00 3.269686567054606e+00 4.857307479724520e+00 9.157375745922451e+03 + 198140 9.409422958646241e-01 -6.010597346153409e+00 -6.032280158021898e+00 3.648815339345968e+00 4.524309278192808e+00 9.316415282154327e+03 + 198160 9.456238154776700e-01 -5.982956535289173e+00 -6.053715304992077e+00 3.798894863917342e+00 4.392587058399039e+00 9.382697071454260e+03 + 198180 9.665147909666656e-01 -5.980338429144319e+00 -6.060867613382381e+00 3.814328932551471e+00 4.351917894805529e+00 9.404844647263137e+03 + 198200 1.057238500661952e+00 -6.085993258131615e+00 -5.996690388231128e+00 3.275311781894115e+00 4.788102680437161e+00 9.206879051063168e+03 + 198220 1.059194223768562e+00 -6.060815167313036e+00 -5.984757246575466e+00 3.408128191045948e+00 4.844864541846269e+00 9.170324514281610e+03 + 198240 1.040616425457865e+00 -6.010643721523284e+00 -6.039488013227714e+00 3.662212994180430e+00 4.496584607573875e+00 9.338654532737906e+03 + 198260 9.964961706761160e-01 -5.927659542858954e+00 -6.072434550655013e+00 4.065352659079077e+00 4.234032160454057e+00 9.440754255724847e+03 + 198280 1.044771250090530e+00 -5.989202092641337e+00 -6.029920233501111e+00 3.770688515755895e+00 4.536878649827138e+00 9.309124202338453e+03 + 198300 1.000101533863586e+00 -5.918555361910573e+00 -6.012538288805040e+00 4.099020859279674e+00 4.559356349240717e+00 9.255585653583408e+03 + 198320 9.569636660291908e-01 -5.852225490752387e+00 -6.032021353279019e+00 4.454855000802558e+00 4.422439334854832e+00 9.315607862567498e+03 + 198340 1.033729659748865e+00 -5.966003819562791e+00 -5.984495017641134e+00 3.884930372651324e+00 4.778751051781821e+00 9.169498870793330e+03 + 198360 1.068080124808481e+00 -6.019844285740517e+00 -6.009428683482852e+00 3.554218769410459e+00 4.614026769383205e+00 9.246006620686147e+03 + 198380 1.010594530450490e+00 -5.942836551660555e+00 -6.003069626272305e+00 4.043787927642594e+00 4.697920292183754e+00 9.226450093924877e+03 + 198400 9.878438663853545e-01 -5.919837954159591e+00 -5.983498196700500e+00 4.186062466665661e+00 4.820515502605066e+00 9.166427411259196e+03 + 198420 1.051304780804985e+00 -6.028779342844048e+00 -5.985859707031013e+00 3.575458449668280e+00 4.821909640298908e+00 9.173675789506657e+03 + 198440 1.019058594488340e+00 -6.004700713912327e+00 -6.031860655810791e+00 3.651820173679865e+00 4.495863584311465e+00 9.315103264697376e+03 + 198460 9.531030557227899e-01 -5.940645356831086e+00 -6.033003233468676e+00 4.011957410800308e+00 4.481624190812045e+00 9.318644195207551e+03 + 198480 9.487234409343656e-01 -5.973289385600593e+00 -6.003489679641627e+00 3.848973946471299e+00 4.675559184607281e+00 9.227772611251210e+03 + 198500 9.843468817542180e-01 -6.066293690406648e+00 -5.998226313135965e+00 3.326052237292759e+00 4.716905650973612e+00 9.211611762490396e+03 + 198520 9.775699798239895e-01 -6.094595020573372e+00 -5.990478948830122e+00 3.190285550784541e+00 4.788136146644314e+00 9.187871525581708e+03 + 198540 9.112889798695463e-01 -6.026822520806770e+00 -6.016127457716182e+00 3.611664122111817e+00 4.673076829433636e+00 9.266640446164918e+03 + 198560 9.550065108479557e-01 -6.113754749086741e+00 -6.008105993155245e+00 3.110780983947523e+00 4.717432489598318e+00 9.241976991816964e+03 + 198580 9.264082384224174e-01 -6.085709525835588e+00 -5.989874208970129e+00 3.278842731173814e+00 4.829143951082639e+00 9.185993707810869e+03 + 198600 8.870629643941131e-01 -6.031288015012554e+00 -6.006949760966275e+00 3.554597117611087e+00 4.694351138677460e+00 9.238399757615698e+03 + 198620 9.150096591345106e-01 -6.066787973804774e+00 -6.006733791003851e+00 3.405251786925606e+00 4.750092197923266e+00 9.237717109580011e+03 + 198640 9.280325586211272e-01 -6.073554042613665e+00 -5.985484618563823e+00 3.306042879494788e+00 4.811751141088309e+00 9.172556617218221e+03 + 198660 9.522651880694178e-01 -6.091807730069959e+00 -6.014699391413894e+00 3.190950652009166e+00 4.633718665049139e+00 9.262259076684508e+03 + 198680 9.652397507033778e-01 -6.093139558566232e+00 -6.024828531319635e+00 3.194031574449522e+00 4.586284063996790e+00 9.293467210357674e+03 + 198700 9.647921822989407e-01 -6.074003634987103e+00 -5.991376330728748e+00 3.373667550685343e+00 4.848126318270825e+00 9.190619774149342e+03 + 198720 9.879549867396080e-01 -6.090124222628625e+00 -5.964910471563664e+00 3.308933221036422e+00 5.027929956416781e+00 9.109644855686305e+03 + 198740 9.757346745331257e-01 -6.053744552690764e+00 -5.981716298887574e+00 3.479293701097414e+00 4.892891080771586e+00 9.161007867643517e+03 + 198760 9.933434004245933e-01 -6.063786927234659e+00 -5.988374112056327e+00 3.392080129147922e+00 4.825112183997339e+00 9.181380286166717e+03 + 198780 9.319522628266075e-01 -5.959474962048544e+00 -5.977904617342761e+00 3.983492206281626e+00 4.877666273602292e+00 9.149319743440697e+03 + 198800 9.540679077867020e-01 -5.977660453623453e+00 -5.975741490210138e+00 3.832755117408694e+00 4.843774102286577e+00 9.142730790887630e+03 + 198820 1.020338983163744e+00 -6.060846574501731e+00 -6.014241206217880e+00 3.355466217165393e+00 4.623081454008698e+00 9.260813631538238e+03 + 198840 1.034631030546345e+00 -6.070454304471387e+00 -5.971458690348827e+00 3.343037524323275e+00 4.911485660136783e+00 9.129659960505542e+03 + 198860 1.032636637383578e+00 -6.056218686564323e+00 -6.022537165324044e+00 3.364999695059459e+00 4.558404202219707e+00 9.286395989618968e+03 + 198880 9.730282110190189e-01 -5.960223865564541e+00 -6.071147203603275e+00 3.861827799923712e+00 4.224888827574212e+00 9.436749984710703e+03 + 198900 9.752407914872872e-01 -5.958775039819126e+00 -6.006756315236792e+00 3.937984888997556e+00 4.662468980470942e+00 9.237817201131245e+03 + 198920 9.580346475055450e-01 -5.927583892409970e+00 -6.016722656839891e+00 4.111675018759516e+00 4.599826439223695e+00 9.268428807085011e+03 + 198940 1.039156479945273e+00 -6.041954699200446e+00 -5.995097587462315e+00 3.461280145737985e+00 4.730340932452939e+00 9.201989876472182e+03 + 198960 9.792529912016147e-01 -5.946938948175706e+00 -6.034209356209880e+00 4.015694870555442e+00 4.514574682571219e+00 9.322342127970962e+03 + 198980 1.045919909573658e+00 -6.040386704984024e+00 -6.022954659725977e+00 3.501467577194148e+00 4.601565078666139e+00 9.287644725282045e+03 + 199000 9.820201902341441e-01 -5.941451892055351e+00 -6.051366364819545e+00 3.973393706130194e+00 4.342247794308504e+00 9.375419298277386e+03 + 199020 1.045387792256588e+00 -6.033096695479033e+00 -6.020713550404889e+00 3.542643986984566e+00 4.613749922285808e+00 9.280746499517512e+03 + 199040 9.835455533475369e-01 -5.942988657796434e+00 -6.058960018596540e+00 3.998275130177628e+00 4.332349629953336e+00 9.398945493800546e+03 + 199060 1.011628037120533e+00 -5.988711021783498e+00 -6.032416896741021e+00 3.767548222569833e+00 4.516582325101449e+00 9.316832958156403e+03 + 199080 1.093986025966084e+00 -6.119036198193902e+00 -6.013918129561304e+00 3.030829310096706e+00 4.634433527153627e+00 9.259847263491227e+03 + 199100 1.016062516621175e+00 -6.019152041969119e+00 -6.018725951344059e+00 3.587655276078587e+00 4.590101954384988e+00 9.274637173343817e+03 + 199120 9.935871484432715e-01 -6.009786784904437e+00 -6.020780801189318e+00 3.650034209824271e+00 4.586904866997959e+00 9.280944768874708e+03 + 199140 9.396478523733792e-01 -5.959916074283486e+00 -6.033236303544082e+00 3.876194623132055e+00 4.455178520448902e+00 9.319367854752243e+03 + 199160 1.007877099675233e+00 -6.092348650485308e+00 -5.989478344398130e+00 3.227329507323285e+00 4.818026724004282e+00 9.184779604655178e+03 + 199180 9.461899773815526e-01 -6.032973235700828e+00 -6.002627685618304e+00 3.540355763785038e+00 4.714604608317587e+00 9.225128874167300e+03 + 199200 9.169446904375247e-01 -6.019126632617641e+00 -5.997209799086605e+00 3.576319367836887e+00 4.702169217591129e+00 9.208489636133518e+03 + 199220 9.655191552051936e-01 -6.113552120495919e+00 -5.926744209665422e+00 3.125824757962981e+00 5.198504690382469e+00 8.993547436383958e+03 + 199240 9.657417036500927e-01 -6.125677031988027e+00 -5.954581422156043e+00 3.056385820498082e+00 5.038843289113387e+00 9.078160732826180e+03 + 199260 9.877273315555719e-01 -6.163001810414066e+00 -5.990981509760339e+00 2.781671000552668e+00 4.769438186961859e+00 9.189401612365369e+03 + 199280 9.164016537739427e-01 -6.057427989294474e+00 -5.970006140233552e+00 3.394534142724440e+00 4.896523928519669e+00 9.125220781308743e+03 + 199300 9.474448171313214e-01 -6.095091760743020e+00 -5.982569132614822e+00 3.191877067034992e+00 4.837999410567528e+00 9.163618069188802e+03 + 199320 9.825702308519964e-01 -6.129777319180471e+00 -5.984787297986816e+00 2.983357250828027e+00 4.815912389655264e+00 9.170418953085722e+03 + 199340 9.233561907968878e-01 -6.017889690848733e+00 -5.983733303433910e+00 3.630539129044245e+00 4.826670391264030e+00 9.167180137520203e+03 + 199360 9.833446666705657e-01 -6.071562030718987e+00 -6.002138341950408e+00 3.277238656398008e+00 4.675880220588303e+00 9.223623351935497e+03 + 199380 9.904879622213187e-01 -6.041612705995380e+00 -5.977971123946595e+00 3.543101385561040e+00 4.908541198188153e+00 9.149553915048507e+03 + 199400 9.531451151255562e-01 -5.944451955308232e+00 -6.020145704520475e+00 4.020207021150083e+00 4.585561799603552e+00 9.278986391660319e+03 + 199420 9.302501168049160e-01 -5.876127504871770e+00 -6.031229636167053e+00 4.436552729181573e+00 4.545932289306807e+00 9.313163269864563e+03 + 199440 1.067356731062996e+00 -6.053025969964114e+00 -6.001881800622634e+00 3.418665160248135e+00 4.712342895141543e+00 9.222807297010597e+03 + 199460 1.049510899882768e+00 -6.009171098342096e+00 -5.962259422337160e+00 3.655704219850209e+00 4.925078323028947e+00 9.101565195316367e+03 + 199480 1.044519255577664e+00 -5.992229978207050e+00 -6.049878297079360e+00 3.710885987918348e+00 4.379860419905029e+00 9.370786156864542e+03 + 199500 9.847609446149433e-01 -5.900903108064672e+00 -6.017893280075429e+00 4.252555905378914e+00 4.580780233522542e+00 9.272040626800444e+03 + 199520 9.726026013727151e-01 -5.881495003585851e+00 -6.036443208744220e+00 4.348750297248522e+00 4.459013725071912e+00 9.329243017857832e+03 + 199540 1.010034818694413e+00 -5.940409035620492e+00 -6.038026222552443e+00 4.013419066226046e+00 4.452886072651932e+00 9.334132119631533e+03 + 199560 1.040614778341884e+00 -5.991255001091267e+00 -6.014165865584546e+00 3.761870949825876e+00 4.630313220460650e+00 9.260570532384259e+03 + 199580 9.876228168731374e-01 -5.920005727090434e+00 -5.986205024750682e+00 4.158082425501370e+00 4.777955814028018e+00 9.174758238441040e+03 + 199600 1.012865828224957e+00 -5.965936366697965e+00 -5.983591445494183e+00 3.864537565495610e+00 4.763159370933115e+00 9.166728018144922e+03 + 199620 9.781413945744000e-01 -5.923538991148838e+00 -5.969799366321246e+00 4.156505310912000e+00 4.890871077902111e+00 9.124570404367860e+03 + 199640 1.099765286334250e+00 -6.114689303161841e+00 -5.986635051507113e+00 3.117695888685802e+00 4.853003218018651e+00 9.176076291045239e+03 + 199660 9.733540898763735e-01 -5.943014965150123e+00 -6.026748203311058e+00 3.953333946392712e+00 4.472524735195893e+00 9.299371258522997e+03 + 199680 1.020419325781833e+00 -6.029875926956803e+00 -6.008154673470141e+00 3.556826355567539e+00 4.681553154441065e+00 9.242086748417116e+03 + 199700 9.810593732039271e-01 -5.990291462713761e+00 -5.967726450473815e+00 3.744230860893893e+00 4.873802653100023e+00 9.118263504756900e+03 + 199720 9.784782707049126e-01 -6.006654552718952e+00 -5.985793021212336e+00 3.668265940296609e+00 4.788056082519161e+00 9.173492287727226e+03 + 199740 9.418235269606751e-01 -5.974755483458068e+00 -6.013514831715964e+00 3.892227035818223e+00 4.669664860131629e+00 9.258555704354141e+03 + 199760 9.832394135578619e-01 -6.060661637263619e+00 -6.009626350201415e+00 3.325320325409244e+00 4.618372841405569e+00 9.246627143084354e+03 + 199780 9.498194638281705e-01 -6.035882868576457e+00 -6.000101480557392e+00 3.474210718137948e+00 4.679672985295322e+00 9.217356306124026e+03 + 199800 9.583864529664586e-01 -6.076119003394955e+00 -6.009708957467579e+00 3.242593120679117e+00 4.623929881315505e+00 9.246899990826470e+03 + 199820 9.904273190776074e-01 -6.154404000245639e+00 -5.941030166708029e+00 2.909664010944320e+00 5.134889582611303e+00 9.036909661193709e+03 + 199840 9.102207622852591e-01 -6.065663616522880e+00 -5.978347946184162e+00 3.372945213680421e+00 4.874325304821653e+00 9.150648183986643e+03 + 199860 8.494642503362303e-01 -6.001629984670598e+00 -6.000908287105964e+00 3.689399501675942e+00 4.693543600774409e+00 9.219824648728385e+03 + 199880 9.124194373292649e-01 -6.115327755301041e+00 -6.013664364930694e+00 3.022386552368757e+00 4.606153472234109e+00 9.259048264012663e+03 + 199900 9.012855081825699e-01 -6.115355873351151e+00 -5.968200087682216e+00 3.132786366069281e+00 4.977777659664543e+00 9.119696429693091e+03 + 199920 8.478880513404523e-01 -6.043267344699284e+00 -5.977625330208900e+00 3.500506679661614e+00 4.877433284934312e+00 9.148497479033846e+03 + 199940 8.660608083304254e-01 -6.064289496109857e+00 -6.010313559354831e+00 3.416172307521693e+00 4.726110489118270e+00 9.248739882428541e+03 + 199960 9.304301216794905e-01 -6.139891398497096e+00 -5.977879919520982e+00 3.023079698606037e+00 4.953374682082232e+00 9.149294637624478e+03 + 199980 9.633635787878904e-01 -6.153324116670857e+00 -5.981484082093043e+00 2.878934939218798e+00 4.865667009924017e+00 9.160317920496162e+03 + 200000 9.635163730977483e-01 -6.102203225911095e+00 -5.997212004084306e+00 3.191924486932165e+00 4.794800330000662e+00 9.208486378845661e+03 +Loop time of 56.3641 on 4 procs for 200000 steps with 256 atoms + +Performance: 1532891.800 tau/day, 3548.361 timesteps/s +98.3% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 25.291 | 28.255 | 31.464 | 44.1 | 50.13 +Neigh | 5.5169 | 5.6888 | 5.8734 | 6.9 | 10.09 +Comm | 11.506 | 14.839 | 17.828 | 63.0 | 26.33 +Output | 5.5139 | 5.5345 | 5.5859 | 1.3 | 9.82 +Modify | 1.4354 | 1.497 | 1.6066 | 5.6 | 2.66 +Other | | 0.5505 | | | 0.98 + +Nlocal: 64 ave 65 max 63 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Nghost: 1334.5 ave 1343 max 1328 min +Histogram: 1 0 0 1 1 0 0 0 0 1 +Neighs: 4748.25 ave 5438 max 4111 min +Histogram: 1 0 0 0 1 1 0 0 0 1 + +Total # of neighbors = 18993 +Ave neighs/atom = 74.1914 +Neighbor list builds = 19989 +Dangerous builds = 19885 +Total wall time: 0:01:01 -- GitLab From 02373c4c3b932db416869b07da68207d439ecc9b Mon Sep 17 00:00:00 2001 From: Andrew Schultz Date: Fri, 29 Mar 2019 15:22:44 -0400 Subject: [PATCH 009/627] Move HMA bits into USER-HMA package --- src/USER-HMA/Install.sh | 31 ++++++++++++++++++++++++++++++ src/{ => USER-HMA}/compute_hma.cpp | 0 src/{ => USER-HMA}/compute_hma.h | 0 3 files changed, 31 insertions(+) create mode 100644 src/USER-HMA/Install.sh rename src/{ => USER-HMA}/compute_hma.cpp (100%) rename src/{ => USER-HMA}/compute_hma.h (100%) diff --git a/src/USER-HMA/Install.sh b/src/USER-HMA/Install.sh new file mode 100644 index 0000000000..1f8f418ca2 --- /dev/null +++ b/src/USER-HMA/Install.sh @@ -0,0 +1,31 @@ +# Install/Uninstall package files in LAMMPS +# mode = 0/1/2 for uninstall/install/update + +mode=$1 + +# enforce using portable C locale +LC_ALL=C +export LC_ALL + +# arg1 = file, arg2 = file it depends on + +action () { + if (test $mode = 0) then + rm -f ../$1 + elif (! cmp -s $1 ../$1) then + if (test -z "$2" || test -e ../$2) then + cp $1 .. + if (test $mode = 2) then + echo " updating src/$1" + fi + fi + elif (test -n "$2") then + if (test ! -e ../$2) then + rm -f ../$1 + fi + fi +} + +# package files without dependencies +action compute_hma.h +action compute_hma.cpp diff --git a/src/compute_hma.cpp b/src/USER-HMA/compute_hma.cpp similarity index 100% rename from src/compute_hma.cpp rename to src/USER-HMA/compute_hma.cpp diff --git a/src/compute_hma.h b/src/USER-HMA/compute_hma.h similarity index 100% rename from src/compute_hma.h rename to src/USER-HMA/compute_hma.h -- GitLab From d000c6883b205b92425a61e3a86b23116a1f3795 Mon Sep 17 00:00:00 2001 From: Andrew Schultz Date: Fri, 29 Mar 2019 15:41:15 -0400 Subject: [PATCH 010/627] Mention need to build HMA as USER pacakge --- doc/src/compute_hma.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/src/compute_hma.txt b/doc/src/compute_hma.txt index f71ddc9e2e..c4ade07ad7 100644 --- a/doc/src/compute_hma.txt +++ b/doc/src/compute_hma.txt @@ -132,7 +132,13 @@ output"_Howto_output.html doc page for an overview of LAMMPS output options. The vector values calculated by this compute are "extensive". The scalar value will be in energy "units"_units.html. -[Restrictions:] Usage restricted to canonical (NVT) ensemble simulation only. +[Restrictions:] + +This compute is distributed as the USER-HMA package. It is only +enabled if LAMMPS was built with that package. See the "Build +package"_Build_package.html doc page for more info. + +Usage restricted to canonical (NVT) ensemble simulation only. [Related commands:] -- GitLab From 62bfd300f0a7ea8ee5efb2324f42affed303c481 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eugen=20Ro=C5=BEi=C4=87?= Date: Tue, 16 Apr 2019 13:43:02 +0200 Subject: [PATCH 011/627] Gitignore update --- src/.gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/.gitignore b/src/.gitignore index 9670d1ca20..00fff20131 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -760,6 +760,8 @@ /pair_comb3.h /pair_colloid.cpp /pair_colloid.h +/pair_cosine_squared.cpp +/pair_cosine_squared.h /pair_coul_diel.cpp /pair_coul_diel.h /pair_coul_long.cpp -- GitLab From 99430767dfa399dd1b8fd8a0ecf71fdef5544c5d Mon Sep 17 00:00:00 2001 From: "Ryan S. Elliott" Date: Tue, 30 Apr 2019 21:45:21 -0500 Subject: [PATCH 012/627] Start devel of native support for KIM simulator models * CMake change to use KIM-API SimulatorModels branch * Minimal changes to pair_kim to illustrate use of KIM API interface. Only c++ interface is implemented for development. * Added example input: in.kim.simulator-model --- cmake/CMakeLists.txt | 6 +++-- examples/kim/in.kim.simulator-model | 41 +++++++++++++++++++++++++++++ src/KIM/pair_kim.cpp | 21 ++++++++++++++- src/KIM/pair_kim.h | 2 ++ 4 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 examples/kim/in.kim.simulator-model diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index dbbbc7f7ac..6acc61576a 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -738,8 +738,10 @@ if(PKG_KIM) enable_language(Fortran) include(ExternalProject) ExternalProject_Add(kim_build - URL https://s3.openkim.org/kim-api/kim-api-2.0.2.txz - URL_MD5 537d9c0abd30f85b875ebb584f9143fa + GIT_REPOSITORY https://github.com/openkim/kim-api.git + GIT_TAG SimulatorModels + #URL https://s3.openkim.org/kim-api/kim-api-2.0.2.txz + #URL_MD5 537d9c0abd30f85b875ebb584f9143fa BINARY_DIR build CMAKE_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} diff --git a/examples/kim/in.kim.simulator-model b/examples/kim/in.kim.simulator-model new file mode 100644 index 0000000000..32baf9d78e --- /dev/null +++ b/examples/kim/in.kim.simulator-model @@ -0,0 +1,41 @@ +# 3d Lennard-Jones melt +# +# This example requires that the example models provided with +# the kim-api package are installed. see the ./lib/kim/README or +# ./lib/kim/Install.py files for details on how to install these +# example models. +# + +variable x index 1 +variable y index 1 +variable z index 1 + +variable xx equal 20*$x +variable yy equal 20*$y +variable zz equal 20*$z + +units metal +atom_style atomic +newton off + +lattice fcc 4.4300 +region box block 0 ${xx} 0 ${yy} 0 ${zz} +create_box 1 box +create_atoms 1 box + +#pair_style lj/cut 8.1500 +#pair_coeff 1 1 0.0104 3.4000 + +pair_style kim ex_sim_model_Si_mod_tersoff +pair_coeff * * Ar + +mass 1 39.95 +velocity all create 200.0 232345 loop geom + +neighbor 0.3 bin +neigh_modify delay 0 every 1 check yes + +fix 1 all nve +#fix 1 all npt temp 1.0 1.0 1.0 iso 1.0 1.0 3.0 + +run 100 diff --git a/src/KIM/pair_kim.cpp b/src/KIM/pair_kim.cpp index a1c13ae81f..01b435194e 100644 --- a/src/KIM/pair_kim.cpp +++ b/src/KIM/pair_kim.cpp @@ -87,6 +87,7 @@ PairKIM::PairKIM(LAMMPS *lmp) : chargeUnit(KIM_CHARGE_UNIT_unused), temperatureUnit(KIM_TEMPERATURE_UNIT_unused), timeUnit(KIM_TIME_UNIT_unused), + simulatorModel(NULL), pkim(NULL), pargs(NULL), kim_model_support_for_energy(KIM_SUPPORT_STATUS_notSupported), @@ -396,8 +397,10 @@ void PairKIM::coeff(int narg, char **arg) // Assume all species arguments are valid // errors will be detected by below + std::string atom_type_sym_list; lmps_num_unique_elements = 0; for (i = 2; i < narg; i++) { + atom_type_sym_list += std::string(" ") + arg[i]; for (j = 0; j < lmps_num_unique_elements; j++) if (strcmp(arg[i],lmps_unique_elements[j]) == 0) break; lmps_map_species_to_unique[i-1] = j; @@ -422,6 +425,15 @@ void PairKIM::coeff(int narg, char **arg) if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); + if (simulatorModel) + { + simulatorModel->AddTemplateMap("atom-type-sym-list", atom_type_sym_list); + simulatorModel->CloseTemplateMap(); + + error->all(FLERR,(simulatorModel->ToString()).c_str()); + } + else + { // setup mapping between LAMMPS unique elements and KIM species codes if (kim_particle_codes_ok) { @@ -449,6 +461,7 @@ void PairKIM::coeff(int narg, char **arg) error->all(FLERR, msg.str().c_str()); } } + } return; } @@ -770,7 +783,13 @@ void PairKIM::kim_init() &requestedUnitsAccepted, &pkim); if (kimerror) - error->all(FLERR,"KIM ModelCreate failed"); + { + kimerror = KIM::SimulatorModel::Create(kim_modelname,&simulatorModel); + if (kimerror) + error->all(FLERR,"KIM ModelCreate failed"); + else + return; + } else { if (!requestedUnitsAccepted) { error->all(FLERR,"KIM Model did not accept the requested unit system"); diff --git a/src/KIM/pair_kim.h b/src/KIM/pair_kim.h index 27bab6c687..dcfb4a8af0 100644 --- a/src/KIM/pair_kim.h +++ b/src/KIM/pair_kim.h @@ -68,6 +68,7 @@ class KIM_API_model; extern "C" { #include "KIM_SimulatorHeaders.h" } +#include "KIM_SimulatorModel.hpp" #include @@ -121,6 +122,7 @@ namespace LAMMPS_NS { KIM_TemperatureUnit temperatureUnit; KIM_TimeUnit timeUnit; + KIM::SimulatorModel * simulatorModel; KIM_Model * pkim; KIM_ComputeArguments * pargs; -- GitLab From 11407a165b1b3d26e09e9f6f3a7c0ac96a6080af Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 7 May 2019 18:21:58 -0400 Subject: [PATCH 013/627] reformat pair style kim to LAMMPS style and add some existing simiulator model code (non-functional) --- src/KIM/pair_kim.cpp | 1465 ++++++++++++++++++++---------------------- src/KIM/pair_kim.h | 201 +++--- 2 files changed, 792 insertions(+), 874 deletions(-) diff --git a/src/KIM/pair_kim.cpp b/src/KIM/pair_kim.cpp index 01b435194e..d75d960355 100644 --- a/src/KIM/pair_kim.cpp +++ b/src/KIM/pair_kim.cpp @@ -55,6 +55,7 @@ #include #include +#include // includes from LAMMPS #include "pair_kim.h" @@ -74,201 +75,187 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ PairKIM::PairKIM(LAMMPS *lmp) : - Pair(lmp), - settings_call_count(0), - init_style_call_count(0), - kim_modelname(NULL), - lmps_map_species_to_unique(NULL), - lmps_unique_elements(NULL), - lmps_num_unique_elements(0), - lmps_units(METAL), - lengthUnit(KIM_LENGTH_UNIT_unused), - energyUnit(KIM_ENERGY_UNIT_unused), - chargeUnit(KIM_CHARGE_UNIT_unused), - temperatureUnit(KIM_TEMPERATURE_UNIT_unused), - timeUnit(KIM_TIME_UNIT_unused), - simulatorModel(NULL), - pkim(NULL), - pargs(NULL), - kim_model_support_for_energy(KIM_SUPPORT_STATUS_notSupported), - kim_model_support_for_forces(KIM_SUPPORT_STATUS_notSupported), - kim_model_support_for_particleEnergy(KIM_SUPPORT_STATUS_notSupported), - kim_model_support_for_particleVirial(KIM_SUPPORT_STATUS_notSupported), - lmps_local_tot_num_atoms(0), - kim_global_influence_distance(0.0), - kim_number_of_neighbor_lists(0), - kim_cutoff_values(NULL), - modelWillNotRequestNeighborsOfNoncontributingParticles(NULL), - neighborLists(NULL), - kim_particle_codes(NULL), - lmps_maxalloc(0), - kim_particleSpecies(NULL), - kim_particleContributing(NULL), - lmps_stripped_neigh_list(NULL), - lmps_stripped_neigh_ptr(NULL) + Pair(lmp), + settings_call_count(0), + init_style_call_count(0), + kim_modelname(NULL), + lmps_map_species_to_unique(NULL), + lmps_unique_elements(NULL), + lmps_num_unique_elements(0), + lmps_units(METAL), + lengthUnit(KIM_LENGTH_UNIT_unused), + energyUnit(KIM_ENERGY_UNIT_unused), + chargeUnit(KIM_CHARGE_UNIT_unused), + temperatureUnit(KIM_TEMPERATURE_UNIT_unused), + timeUnit(KIM_TIME_UNIT_unused), + simulatorModel(NULL), + pkim(NULL), + pargs(NULL), + kim_model_support_for_energy(KIM_SUPPORT_STATUS_notSupported), + kim_model_support_for_forces(KIM_SUPPORT_STATUS_notSupported), + kim_model_support_for_particleEnergy(KIM_SUPPORT_STATUS_notSupported), + kim_model_support_for_particleVirial(KIM_SUPPORT_STATUS_notSupported), + lmps_local_tot_num_atoms(0), + kim_global_influence_distance(0.0), + kim_number_of_neighbor_lists(0), + kim_cutoff_values(NULL), + modelWillNotRequestNeighborsOfNoncontributingParticles(NULL), + neighborLists(NULL), + kim_particle_codes(NULL), + lmps_maxalloc(0), + kim_particleSpecies(NULL), + kim_particleContributing(NULL), + lmps_stripped_neigh_list(NULL), + lmps_stripped_neigh_ptr(NULL), + simulator_class(NULL), + simulator_style(NULL) { - // Initialize Pair data members to appropriate values - single_enable = 0; // We do not provide the Single() function - restartinfo = 0; // We do not write any restart info - one_coeff = 1; // We only allow one coeff * * call - // set to 1, regardless use of fdotr, to avoid ev_set()'s futzing with - // vflag_global - no_virial_fdotr_compute = 1; - - // BEGIN: initial values that determine the KIM state - // (used by kim_free(), etc.) - kim_init_ok = false; - kim_particle_codes_ok = false; - // END - - return; + // Initialize Pair data members to appropriate values + single_enable = 0; // We do not provide the Single() function + restartinfo = 0; // We do not write any restart info + one_coeff = 1; // We only allow one coeff * * call + // set to 1, regardless use of fdotr, to avoid ev_set()'s futzing with + // vflag_global + no_virial_fdotr_compute = 1; + + // BEGIN: initial values that determine the KIM state + // (used by kim_free(), etc.) + kim_init_ok = false; + kim_particle_codes_ok = false; + // END } /* ---------------------------------------------------------------------- */ PairKIM::~PairKIM() { - // clean up kim_modelname - if (kim_modelname != 0) delete [] kim_modelname; + // clean up kim_modelname + if (kim_modelname != 0) delete [] kim_modelname; + + // clean up lammps atom species number to unique particle names mapping + if (lmps_unique_elements) + for (int i = 0; i < lmps_num_unique_elements; i++) + delete [] lmps_unique_elements[i]; + delete [] lmps_unique_elements; + + if (kim_particle_codes_ok) { + delete [] kim_particle_codes; + kim_particle_codes = NULL; + kim_particle_codes_ok = false; + } - // clean up lammps atom species number to unique particle names mapping - if (lmps_unique_elements) - for (int i = 0; i < lmps_num_unique_elements; i++) - delete [] lmps_unique_elements[i]; - delete [] lmps_unique_elements; + // clean up local memory used to support KIM interface + memory->destroy(kim_particleSpecies); + memory->destroy(kim_particleContributing); + memory->destroy(lmps_stripped_neigh_list); + // clean up lmps_stripped_neigh_ptr + if (lmps_stripped_neigh_ptr) { + delete [] lmps_stripped_neigh_ptr; + lmps_stripped_neigh_ptr = 0; + } - if (kim_particle_codes_ok) - { - delete [] kim_particle_codes; - kim_particle_codes = NULL; - kim_particle_codes_ok = false; - } - - // clean up local memory used to support KIM interface - memory->destroy(kim_particleSpecies); - memory->destroy(kim_particleContributing); - memory->destroy(lmps_stripped_neigh_list); - // clean up lmps_stripped_neigh_ptr - if (lmps_stripped_neigh_ptr) - { - delete [] lmps_stripped_neigh_ptr; - lmps_stripped_neigh_ptr = 0; - } - - // clean up allocated memory for standard Pair class usage - // also, we allocate lmps_map_species_to_uniuqe in the allocate() function - if (allocated) { - memory->destroy(setflag); - memory->destroy(cutsq); - delete [] lmps_map_species_to_unique; - } - - // clean up neighborlist pointers - if (neighborLists) - { - delete [] neighborLists; - neighborLists = 0; - } - - // clean up KIM interface (if necessary) - kim_free(); - - return; + // clean up allocated memory for standard Pair class usage + // also, we allocate lmps_map_species_to_uniuqe in the allocate() function + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + delete [] lmps_map_species_to_unique; + } + + // clean up neighborlist pointers + if (neighborLists) { + delete [] neighborLists; + neighborLists = 0; + } + + // clean up KIM interface (if necessary) + kim_free(); } /* ---------------------------------------------------------------------- */ + void PairKIM::set_contributing() { int const nall = atom->nlocal + atom->nghost; for (int i = 0; i < nall; ++i) - { kim_particleContributing[i] = ( (i < atom->nlocal) ? 1 : 0 ); - } } /* ---------------------------------------------------------------------- */ -void PairKIM::compute(int eflag , int vflag) +void PairKIM::compute(int eflag, int vflag) { - ev_init(eflag,vflag); - - // grow kim_particleSpecies and kim_particleContributing array if necessary - // needs to be atom->nmax in length - if (atom->nmax > lmps_maxalloc) { - memory->destroy(kim_particleSpecies); - memory->destroy(kim_particleContributing); - - lmps_maxalloc = atom->nmax; - memory->create(kim_particleSpecies,lmps_maxalloc, - "pair:kim_particleSpecies"); - int kimerror = KIM_ComputeArguments_SetArgumentPointerInteger(pargs, - KIM_COMPUTE_ARGUMENT_NAME_particleSpeciesCodes, - kim_particleSpecies); - memory->create(kim_particleContributing,lmps_maxalloc, - "pair:kim_particleContributing"); - kimerror = kimerror || KIM_ComputeArguments_SetArgumentPointerInteger( - pargs, - KIM_COMPUTE_ARGUMENT_NAME_particleContributing, - kim_particleContributing); - if (kimerror) - error->all( - FLERR, - "Unable to set KIM particle species codes and/or contributing"); - } - - // kim_particleSpecies = KIM atom species for each LAMMPS atom - - int *species = atom->type; - int nall = atom->nlocal + atom->nghost; - int ielement; - - for (int i = 0; i < nall; i++) { - ielement = lmps_map_species_to_unique[species[i]]; - kim_particleSpecies[i] = kim_particle_codes[ielement]; - } - - // Set kim contributing flags - set_contributing(); - - // pass current atom pointers to KIM - set_argument_pointers(); - - // set number of particles - lmps_local_tot_num_atoms = (int) nall; - - // compute via KIM model - int kimerror = KIM_Model_Compute(pkim, pargs); - if (kimerror) error->all(FLERR,"KIM Compute returned error"); - - // compute virial before reverse comm! - if (vflag_global) - { - virial_fdotr_compute(); - } - - // if newton is off, perform reverse comm - if (!lmps_using_newton) - { - comm->reverse_comm_pair(this); - } - - if ((vflag_atom) && - KIM_SupportStatus_NotEqual(kim_model_support_for_particleVirial, - KIM_SUPPORT_STATUS_notSupported) - ) - { // flip sign and order of virial if KIM is computing it - double tmp; - for (int i = 0; i < nall; ++i) - { - for (int j = 0; j < 3; ++j) vatom[i][j] = -1.0*vatom[i][j]; - tmp = vatom[i][3]; - vatom[i][3] = -vatom[i][5]; - vatom[i][4] = -vatom[i][4]; - vatom[i][5] = -tmp; - } - } + ev_init(eflag,vflag); + + // grow kim_particleSpecies and kim_particleContributing array if necessary + // needs to be atom->nmax in length + if (atom->nmax > lmps_maxalloc) { + memory->destroy(kim_particleSpecies); + memory->destroy(kim_particleContributing); + + lmps_maxalloc = atom->nmax; + memory->create(kim_particleSpecies,lmps_maxalloc, + "pair:kim_particleSpecies"); + int kimerror = KIM_ComputeArguments_SetArgumentPointerInteger(pargs, + KIM_COMPUTE_ARGUMENT_NAME_particleSpeciesCodes, + kim_particleSpecies); + memory->create(kim_particleContributing,lmps_maxalloc, + "pair:kim_particleContributing"); + kimerror = kimerror || KIM_ComputeArguments_SetArgumentPointerInteger( + pargs, + KIM_COMPUTE_ARGUMENT_NAME_particleContributing, + kim_particleContributing); + if (kimerror) + error->all(FLERR, + "Unable to set KIM particle species codes and/or contributing"); + } + + // kim_particleSpecies = KIM atom species for each LAMMPS atom - return; + int *species = atom->type; + int nall = atom->nlocal + atom->nghost; + int ielement; + + for (int i = 0; i < nall; i++) { + ielement = lmps_map_species_to_unique[species[i]]; + kim_particleSpecies[i] = kim_particle_codes[ielement]; + } + + // Set kim contributing flags + set_contributing(); + + // pass current atom pointers to KIM + set_argument_pointers(); + + // set number of particles + lmps_local_tot_num_atoms = (int) nall; + + // compute via KIM model + int kimerror = KIM_Model_Compute(pkim, pargs); + if (kimerror) error->all(FLERR,"KIM Compute returned error"); + + // compute virial before reverse comm! + if (vflag_global) + virial_fdotr_compute(); + + // if newton is off, perform reverse comm + if (!lmps_using_newton) { + comm->reverse_comm_pair(this); + } + + if ((vflag_atom) && + KIM_SupportStatus_NotEqual(kim_model_support_for_particleVirial, + KIM_SUPPORT_STATUS_notSupported)) { + // flip sign and order of virial if KIM is computing it + double tmp; + for (int i = 0; i < nall; ++i) { + for (int j = 0; j < 3; ++j) vatom[i][j] = -1.0*vatom[i][j]; + tmp = vatom[i][3]; + vatom[i][3] = -vatom[i][5]; + vatom[i][4] = -vatom[i][4]; + vatom[i][5] = -tmp; + } + } } /* ---------------------------------------------------------------------- @@ -277,22 +264,20 @@ void PairKIM::compute(int eflag , int vflag) void PairKIM::allocate() { - int n = atom->ntypes; + int n = atom->ntypes; - // allocate standard Pair class arrays - memory->create(setflag,n+1,n+1,"pair:setflag"); - for (int i = 1; i <= n; i++) - for (int j = i; j <= n; j++) - setflag[i][j] = 0; + // allocate standard Pair class arrays + memory->create(setflag,n+1,n+1,"pair:setflag"); + for (int i = 1; i <= n; i++) + for (int j = i; j <= n; j++) + setflag[i][j] = 0; - memory->create(cutsq,n+1,n+1,"pair:cutsq"); + memory->create(cutsq,n+1,n+1,"pair:cutsq"); - // allocate mapping array - lmps_map_species_to_unique = new int[n+1]; + // allocate mapping array + lmps_map_species_to_unique = new int[n+1]; - allocated = 1; - - return; + allocated = 1; } /* ---------------------------------------------------------------------- @@ -301,56 +286,54 @@ void PairKIM::allocate() void PairKIM::settings(int narg, char **arg) { - // This is called when "pair_style kim ..." is read from input - // may be called multiple times - ++settings_call_count; - init_style_call_count = 0; - - if (narg != 1) - { - if ((narg > 0) && ((0 == strcmp("KIMvirial", arg[0])) || - (0 == strcmp("LAMMPSvirial", arg[0])))) - { - error->all(FLERR,"'KIMvirial' or 'LAMMPSvirial' not supported with " - "kim-api."); - } - else - error->all(FLERR,"Illegal pair_style command"); - } - // arg[0] is the KIM Model name - - lmps_using_molecular = (atom->molecular > 0); - - // ensure we are in a clean state for KIM (needed on repeated call) - // first time called will do nothing... - kim_free(); - - // make sure things are allocated - if (allocated != 1) allocate(); - - // clear setflag to ensure coeff() is called after settings() - int n = atom->ntypes; - for (int i = 1; i <= n; i++) - for (int j = i; j <= n; j++) - setflag[i][j] = 0; - - // set lmps_* bool flags - set_lmps_flags(); - - // set KIM Model name - int nmlen = strlen(arg[0]); - if (kim_modelname != 0) - { - delete [] kim_modelname; - kim_modelname = 0; - } - kim_modelname = new char[nmlen+1]; - strcpy(kim_modelname, arg[0]); - - // initialize KIM Model - kim_init(); - - return; + // This is called when "pair_style kim ..." is read from input + // may be called multiple times + ++settings_call_count; + init_style_call_count = 0; + + if (narg != 1) { + if ((narg > 0) && ((0 == strcmp("KIMvirial", arg[0])) || + (0 == strcmp("LAMMPSvirial", arg[0])))) { + error->all(FLERR,"'KIMvirial' or 'LAMMPSvirial' not supported with " + "kim-api."); + } else error->all(FLERR,"Illegal pair_style command"); + } + // arg[0] is the KIM Model name + + lmps_using_molecular = (atom->molecular > 0); + + // ensure we are in a clean state for KIM (needed on repeated call) + // first time called will do nothing... + kim_free(); + + // make sure things are allocated + if (allocated != 1) allocate(); + + // clear setflag to ensure coeff() is called after settings() + int n = atom->ntypes; + for (int i = 1; i <= n; i++) + for (int j = i; j <= n; j++) + setflag[i][j] = 0; + + // set lmps_* bool flags + set_lmps_flags(); + + // set KIM Model name + int nmlen = strlen(arg[0]); + if (kim_modelname != 0) { + delete [] kim_modelname; + kim_modelname = 0; + } + kim_modelname = new char[nmlen+1]; + strcpy(kim_modelname, arg[0]); + + // initialize KIM Model + kim_init(); + + // initialize LAMMPS Simulator model + if (simulatorModel) { + printf("LAMMPS simulator model: %s\n",kim_modelname); + } } /* ---------------------------------------------------------------------- @@ -359,91 +342,85 @@ void PairKIM::settings(int narg, char **arg) void PairKIM::coeff(int narg, char **arg) { - // This is called when "pair_coeff ..." is read from input - // may be called multiple times - - int i,j,n; - - if (!allocated) allocate(); - - if (narg != 2 + atom->ntypes) - error->all(FLERR,"Incorrect args for pair coefficients"); - - // insure I,J args are * * - - if (strcmp(arg[0],"*") != 0 || strcmp(arg[1],"*") != 0) - error->all(FLERR,"Incorrect args for pair coefficients"); - - - int ilo,ihi,jlo,jhi; - force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi); - force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi); - - // read args that map atom species to KIM elements - // lmps_map_species_to_unique[i] = - // which element the Ith atom type is - // lmps_num_unique_elements = # of unique elements - // lmps_unique_elements = list of element names - - // if called multiple times: update lmps_unique_elements - if (lmps_unique_elements) { - for (i = 0; i < lmps_num_unique_elements; i++) - delete [] lmps_unique_elements[i]; - delete [] lmps_unique_elements; - } - lmps_unique_elements = new char*[atom->ntypes]; - for (i = 0; i < atom->ntypes; i++) lmps_unique_elements[i] = 0; - - - // Assume all species arguments are valid - // errors will be detected by below - std::string atom_type_sym_list; - lmps_num_unique_elements = 0; - for (i = 2; i < narg; i++) { - atom_type_sym_list += std::string(" ") + arg[i]; - for (j = 0; j < lmps_num_unique_elements; j++) - if (strcmp(arg[i],lmps_unique_elements[j]) == 0) break; - lmps_map_species_to_unique[i-1] = j; - if (j == lmps_num_unique_elements) { - n = strlen(arg[i]) + 1; - lmps_unique_elements[j] = new char[n]; - strcpy(lmps_unique_elements[j],arg[i]); - lmps_num_unique_elements++; - } - } - - int count = 0; - for (int i = ilo; i <= ihi; i++) { - for (int j = MAX(jlo,i); j <= jhi; j++) { - if (lmps_map_species_to_unique[i] >= 0 && - lmps_map_species_to_unique[j] >= 0) { - setflag[i][j] = 1; - count++; - } - } - } - - if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); - - if (simulatorModel) - { - simulatorModel->AddTemplateMap("atom-type-sym-list", atom_type_sym_list); - simulatorModel->CloseTemplateMap(); - - error->all(FLERR,(simulatorModel->ToString()).c_str()); - } - else - { - // setup mapping between LAMMPS unique elements and KIM species codes - if (kim_particle_codes_ok) - { - delete [] kim_particle_codes; - kim_particle_codes = NULL; - kim_particle_codes_ok = false; - } - kim_particle_codes = new int[lmps_num_unique_elements]; - kim_particle_codes_ok = true; - for(int i = 0; i < lmps_num_unique_elements; i++){ + // This is called when "pair_coeff ..." is read from input + // may be called multiple times + + int i,j,n; + + if (!allocated) allocate(); + + if (narg != 2 + atom->ntypes) + error->all(FLERR,"Incorrect args for pair coefficients"); + + // insure I,J args are * * + + if (strcmp(arg[0],"*") != 0 || strcmp(arg[1],"*") != 0) + error->all(FLERR,"Incorrect args for pair coefficients"); + + int ilo,ihi,jlo,jhi; + force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi); + force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi); + + // read args that map atom species to KIM elements + // lmps_map_species_to_unique[i] = + // which element the Ith atom type is + // lmps_num_unique_elements = # of unique elements + // lmps_unique_elements = list of element names + + // if called multiple times: update lmps_unique_elements + if (lmps_unique_elements) { + for (i = 0; i < lmps_num_unique_elements; i++) + delete [] lmps_unique_elements[i]; + delete [] lmps_unique_elements; + } + lmps_unique_elements = new char*[atom->ntypes]; + for (i = 0; i < atom->ntypes; i++) lmps_unique_elements[i] = 0; + + // Assume all species arguments are valid + // errors will be detected by below + std::string atom_type_sym_list; + lmps_num_unique_elements = 0; + for (i = 2; i < narg; i++) { + atom_type_sym_list += std::string(" ") + arg[i]; + for (j = 0; j < lmps_num_unique_elements; j++) + if (strcmp(arg[i],lmps_unique_elements[j]) == 0) break; + lmps_map_species_to_unique[i-1] = j; + if (j == lmps_num_unique_elements) { + n = strlen(arg[i]) + 1; + lmps_unique_elements[j] = new char[n]; + strcpy(lmps_unique_elements[j],arg[i]); + lmps_num_unique_elements++; + } + } + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + for (int j = MAX(jlo,i); j <= jhi; j++) { + if (lmps_map_species_to_unique[i] >= 0 && + lmps_map_species_to_unique[j] >= 0) { + setflag[i][j] = 1; + count++; + } + } + } + + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); + + if (simulatorModel) { + simulatorModel->AddTemplateMap("atom-type-sym-list", atom_type_sym_list); + simulatorModel->CloseTemplateMap(); + + error->all(FLERR,(simulatorModel->ToString()).c_str()); + } else { + // setup mapping between LAMMPS unique elements and KIM species codes + if (kim_particle_codes_ok) { + delete [] kim_particle_codes; + kim_particle_codes = NULL; + kim_particle_codes_ok = false; + } + kim_particle_codes = new int[lmps_num_unique_elements]; + kim_particle_codes_ok = true; + for(int i = 0; i < lmps_num_unique_elements; i++) { int supported; int code; KIM_Model_GetSpeciesSupportAndCode( @@ -451,19 +428,15 @@ void PairKIM::coeff(int narg, char **arg) KIM_SpeciesName_FromString(lmps_unique_elements[i]), &supported, &code); - if (supported) + if (supported) { kim_particle_codes[i] = code; - else - { - std::stringstream msg; - msg << "create_kim_particle_codes: symbol not found: " - << lmps_unique_elements[i]; - error->all(FLERR, msg.str().c_str()); + } else { + std::string msg("create_kim_particle_codes: symbol not found: "); + msg += lmps_unique_elements[i]; + error->all(FLERR, msg.c_str()); } - } - } - - return; + } + } } /* ---------------------------------------------------------------------- @@ -472,57 +445,48 @@ void PairKIM::coeff(int narg, char **arg) void PairKIM::init_style() { - // This is called for each "run ...", "minimize ...", etc. read from input - ++init_style_call_count; - - if (domain->dimension != 3) - error->all(FLERR,"PairKIM only works with 3D problems"); - - // setup lmps_stripped_neigh_list for neighbors of one atom, if needed - if (lmps_using_molecular) { - memory->destroy(lmps_stripped_neigh_list); - memory->create(lmps_stripped_neigh_list, - kim_number_of_neighbor_lists*neighbor->oneatom, - "pair:lmps_stripped_neigh_list"); - delete [] lmps_stripped_neigh_ptr; - lmps_stripped_neigh_ptr = new int*[kim_number_of_neighbor_lists]; - for (int i = 0; i < kim_number_of_neighbor_lists; ++i) - { - lmps_stripped_neigh_ptr[i] - = &(lmps_stripped_neigh_list[i*(neighbor->oneatom)]); - } + // This is called for each "run ...", "minimize ...", etc. read from input + ++init_style_call_count; + + if (domain->dimension != 3) + error->all(FLERR,"PairKIM only works with 3D problems"); + + // setup lmps_stripped_neigh_list for neighbors of one atom, if needed + if (lmps_using_molecular) { + memory->destroy(lmps_stripped_neigh_list); + memory->create(lmps_stripped_neigh_list, + kim_number_of_neighbor_lists*neighbor->oneatom, + "pair:lmps_stripped_neigh_list"); + delete [] lmps_stripped_neigh_ptr; + lmps_stripped_neigh_ptr = new int*[kim_number_of_neighbor_lists]; + for (int i = 0; i < kim_number_of_neighbor_lists; ++i) + lmps_stripped_neigh_ptr[i] + = &(lmps_stripped_neigh_list[i*(neighbor->oneatom)]); + } + + // make sure comm_reverse expects (at most) 9 values when newton is off + if (!lmps_using_newton) comm_reverse_off = 9; + + // request full neighbor + for (int i = 0; i < kim_number_of_neighbor_lists; ++i) { + int irequest = neighbor->request(this,instance_me); + neighbor->requests[irequest]->id = i; + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full = 1; + + if (modelWillNotRequestNeighborsOfNoncontributingParticles[i]) + neighbor->requests[irequest]->ghost = 0; + else + neighbor->requests[irequest]->ghost = 1; + + // always want all owned/ghost pairs + neighbor->requests[irequest]->newton = 2; - } - - // make sure comm_reverse expects (at most) 9 values when newton is off - if (!lmps_using_newton) comm_reverse_off = 9; - - // request full neighbor - for (int i = 0; i < kim_number_of_neighbor_lists; ++i) - { - int irequest = neighbor->request(this,instance_me); - neighbor->requests[irequest]->id = i; - neighbor->requests[irequest]->half = 0; - neighbor->requests[irequest]->full = 1; - - if (modelWillNotRequestNeighborsOfNoncontributingParticles[i]) - { - neighbor->requests[irequest]->ghost = 0; - } - else - { - neighbor->requests[irequest]->ghost = 1; - - } - // always want all owned/ghost pairs - neighbor->requests[irequest]->newton = 2; - // set cutoff - neighbor->requests[irequest]->cut = 1; - neighbor->requests[irequest]->cutoff - = kim_cutoff_values[i] + neighbor->skin; - } - - return; + // set cutoff + neighbor->requests[irequest]->cut = 1; + neighbor->requests[irequest]->cutoff + = kim_cutoff_values[i] + neighbor->skin; + } } /* ---------------------------------------------------------------------- @@ -541,154 +505,134 @@ void PairKIM::init_list(int id, NeighList *ptr) double PairKIM::init_one(int i, int j) { - // This is called once of each (unordered) i,j pair for each - // "run ...", "minimize ...", etc. read from input + // This is called once of each (unordered) i,j pair for each + // "run ...", "minimize ...", etc. read from input - if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); - return kim_global_influence_distance; + return kim_global_influence_distance; } /* ---------------------------------------------------------------------- */ int PairKIM::pack_reverse_comm(int n, int first, double *buf) { - int i,m,last; - double *fp; - fp = &(atom->f[0][0]); - - m = 0; - last = first + n; - if (KIM_SupportStatus_NotEqual(kim_model_support_for_forces, - KIM_SUPPORT_STATUS_notSupported) - && - ((vflag_atom == 0) || - KIM_SupportStatus_Equal(kim_model_support_for_particleVirial, - KIM_SUPPORT_STATUS_notSupported))) - { - for (i = first; i < last; i++) - { - buf[m++] = fp[3*i+0]; - buf[m++] = fp[3*i+1]; - buf[m++] = fp[3*i+2]; - } - return m; - } - else if (KIM_SupportStatus_NotEqual(kim_model_support_for_forces, - KIM_SUPPORT_STATUS_notSupported) && - (vflag_atom == 1) && - KIM_SupportStatus_NotEqual(kim_model_support_for_particleVirial, - KIM_SUPPORT_STATUS_notSupported)) - { - double *va=&(vatom[0][0]); - for (i = first; i < last; i++) - { - buf[m++] = fp[3*i+0]; - buf[m++] = fp[3*i+1]; - buf[m++] = fp[3*i+2]; - - buf[m++] = va[6*i+0]; - buf[m++] = va[6*i+1]; - buf[m++] = va[6*i+2]; - buf[m++] = va[6*i+3]; - buf[m++] = va[6*i+4]; - buf[m++] = va[6*i+5]; - } - return m; - } - else if (KIM_SupportStatus_Equal(kim_model_support_for_forces, - KIM_SUPPORT_STATUS_notSupported) - && - (vflag_atom == 1) && - KIM_SupportStatus_NotEqual(kim_model_support_for_particleVirial, - KIM_SUPPORT_STATUS_notSupported)) - { - double *va=&(vatom[0][0]); - for (i = first; i < last; i++) - { - buf[m++] = va[6*i+0]; - buf[m++] = va[6*i+1]; - buf[m++] = va[6*i+2]; - buf[m++] = va[6*i+3]; - buf[m++] = va[6*i+4]; - buf[m++] = va[6*i+5]; - } - return m; - } - else - return 0; + int i,m,last; + double *fp; + fp = &(atom->f[0][0]); + + m = 0; + last = first + n; + if (KIM_SupportStatus_NotEqual(kim_model_support_for_forces, + KIM_SUPPORT_STATUS_notSupported) + && + ((vflag_atom == 0) || + KIM_SupportStatus_Equal(kim_model_support_for_particleVirial, + KIM_SUPPORT_STATUS_notSupported))) { + for (i = first; i < last; i++) { + buf[m++] = fp[3*i+0]; + buf[m++] = fp[3*i+1]; + buf[m++] = fp[3*i+2]; + } + return m; + } else if (KIM_SupportStatus_NotEqual(kim_model_support_for_forces, + KIM_SUPPORT_STATUS_notSupported) && + (vflag_atom == 1) && + KIM_SupportStatus_NotEqual(kim_model_support_for_particleVirial, + KIM_SUPPORT_STATUS_notSupported)) { + double *va=&(vatom[0][0]); + for (i = first; i < last; i++) { + buf[m++] = fp[3*i+0]; + buf[m++] = fp[3*i+1]; + buf[m++] = fp[3*i+2]; + + buf[m++] = va[6*i+0]; + buf[m++] = va[6*i+1]; + buf[m++] = va[6*i+2]; + buf[m++] = va[6*i+3]; + buf[m++] = va[6*i+4]; + buf[m++] = va[6*i+5]; + } + return m; + } else if (KIM_SupportStatus_Equal(kim_model_support_for_forces, + KIM_SUPPORT_STATUS_notSupported) + && + (vflag_atom == 1) && + KIM_SupportStatus_NotEqual(kim_model_support_for_particleVirial, + KIM_SUPPORT_STATUS_notSupported)) { + double *va=&(vatom[0][0]); + for (i = first; i < last; i++) { + buf[m++] = va[6*i+0]; + buf[m++] = va[6*i+1]; + buf[m++] = va[6*i+2]; + buf[m++] = va[6*i+3]; + buf[m++] = va[6*i+4]; + buf[m++] = va[6*i+5]; + } + return m; + } else return 0; } /* ---------------------------------------------------------------------- */ void PairKIM::unpack_reverse_comm(int n, int *list, double *buf) { - int i,j,m; - double *fp; - fp = &(atom->f[0][0]); - - m = 0; - if (KIM_SupportStatus_NotEqual(kim_model_support_for_forces, - KIM_SUPPORT_STATUS_notSupported) - && - ((vflag_atom == 0) || - KIM_SupportStatus_Equal(kim_model_support_for_particleVirial, - KIM_SUPPORT_STATUS_notSupported))) - { - for (i = 0; i < n; i++) - { - j = list[i]; - fp[3*j+0]+= buf[m++]; - fp[3*j+1]+= buf[m++]; - fp[3*j+2]+= buf[m++]; - } - } - else if (KIM_SupportStatus_NotEqual(kim_model_support_for_forces, - KIM_SUPPORT_STATUS_notSupported) - && - (vflag_atom == 1) && - KIM_SupportStatus_NotEqual(kim_model_support_for_particleVirial, - KIM_SUPPORT_STATUS_notSupported)) - { - double *va=&(vatom[0][0]); - for (i = 0; i < n; i++) - { - j = list[i]; - fp[3*j+0]+= buf[m++]; - fp[3*j+1]+= buf[m++]; - fp[3*j+2]+= buf[m++]; - - va[j*6+0]+=buf[m++]; - va[j*6+1]+=buf[m++]; - va[j*6+2]+=buf[m++]; - va[j*6+3]+=buf[m++]; - va[j*6+4]+=buf[m++]; - va[j*6+5]+=buf[m++]; - } - } - else if (KIM_SupportStatus_Equal(kim_model_support_for_forces, - KIM_SUPPORT_STATUS_notSupported) - && - (vflag_atom == 1) && - KIM_SupportStatus_NotEqual(kim_model_support_for_particleVirial, - KIM_SUPPORT_STATUS_notSupported)) - { - double *va=&(vatom[0][0]); - for (i = 0; i < n; i++) - { - j = list[i]; - va[j*6+0]+=buf[m++]; - va[j*6+1]+=buf[m++]; - va[j*6+2]+=buf[m++]; - va[j*6+3]+=buf[m++]; - va[j*6+4]+=buf[m++]; - va[j*6+5]+=buf[m++]; - } - } else { - ; // do nothing - } - - return; + int i,j,m; + double *fp; + fp = &(atom->f[0][0]); + + m = 0; + if (KIM_SupportStatus_NotEqual(kim_model_support_for_forces, + KIM_SUPPORT_STATUS_notSupported) + && + ((vflag_atom == 0) || + KIM_SupportStatus_Equal(kim_model_support_for_particleVirial, + KIM_SUPPORT_STATUS_notSupported))) { + for (i = 0; i < n; i++) { + j = list[i]; + fp[3*j+0]+= buf[m++]; + fp[3*j+1]+= buf[m++]; + fp[3*j+2]+= buf[m++]; + } + } else if (KIM_SupportStatus_NotEqual(kim_model_support_for_forces, + KIM_SUPPORT_STATUS_notSupported) + && + (vflag_atom == 1) && + KIM_SupportStatus_NotEqual(kim_model_support_for_particleVirial, + KIM_SUPPORT_STATUS_notSupported)) { + double *va=&(vatom[0][0]); + for (i = 0; i < n; i++) { + j = list[i]; + fp[3*j+0]+= buf[m++]; + fp[3*j+1]+= buf[m++]; + fp[3*j+2]+= buf[m++]; + + va[j*6+0]+=buf[m++]; + va[j*6+1]+=buf[m++]; + va[j*6+2]+=buf[m++]; + va[j*6+3]+=buf[m++]; + va[j*6+4]+=buf[m++]; + va[j*6+5]+=buf[m++]; + } + } else if (KIM_SupportStatus_Equal(kim_model_support_for_forces, + KIM_SUPPORT_STATUS_notSupported) + && + (vflag_atom == 1) && + KIM_SupportStatus_NotEqual(kim_model_support_for_particleVirial, + KIM_SUPPORT_STATUS_notSupported)) { + double *va=&(vatom[0][0]); + for (i = 0; i < n; i++) { + j = list[i]; + va[j*6+0]+=buf[m++]; + va[j*6+1]+=buf[m++]; + va[j*6+2]+=buf[m++]; + va[j*6+3]+=buf[m++]; + va[j*6+4]+=buf[m++]; + va[j*6+5]+=buf[m++]; + } + } else { + ; // do nothing + } } /* ---------------------------------------------------------------------- @@ -697,8 +641,34 @@ void PairKIM::unpack_reverse_comm(int n, int *list, double *buf) double PairKIM::memory_usage() { - double bytes = 2 * lmps_maxalloc * sizeof(int); - return bytes; + double bytes = 2 * lmps_maxalloc * sizeof(int); + return bytes; +} + +/* ---------------------------------------------------------------------- + simulator model support functions +------------------------------------------------------------------------- */ + +void PairKIM::simulator_init() +{ + int dummy; + // do not try with suffixes for now. + simulator_class = force->new_pair("lj/cut",1,dummy); + force->store_style(simulator_style,"lj/cut",1); + printf("Simulator model init: %s -> %s\n", kim_modelname, simulator_style); + char **args = new char*[1]; + args[0] = (char *)"8.1500"; + simulator_class->settings(1,args); + delete[] args; +} + +void PairKIM::simulator_free() +{ + printf("Simulator model free: %s -> %s\n", kim_modelname, simulator_style); + delete[] simulator_style; + simulator_style = NULL; + delete simulator_class; + simulator_class = NULL; } /* ---------------------------------------------------------------------- @@ -708,148 +678,128 @@ double PairKIM::memory_usage() int PairKIM::get_neigh(void const * const dataObject, int const numberOfNeighborLists, double const * const cutoffs, - int const neighborListIndex, int const particleNumber, + int const neighborListIndex, + int const particleNumber, int * const numberOfNeighbors, int const ** const neighborsOfParticle) { - PairKIM const * const Model - = reinterpret_cast(dataObject); - - if (numberOfNeighborLists != Model->kim_number_of_neighbor_lists) - return true; - for (int i = 0; i < numberOfNeighborLists; ++i) - { - if (Model->kim_cutoff_values[i] < cutoffs[i]) return true; - } - - // neighborListIndex and particleNumber are validated by KIM API - - // initialize numNeigh - *numberOfNeighbors = 0; - - NeighList * neiobj = Model->neighborLists[neighborListIndex]; - - int *numneigh, **firstneigh; - numneigh = neiobj->numneigh; // # of J neighbors for each I atom - firstneigh = neiobj->firstneigh; // ptr to 1st J int value of each I atom - - *numberOfNeighbors = numneigh[particleNumber]; - - // strip off neighbor mask for molecular systems - if (!Model->lmps_using_molecular) - *neighborsOfParticle = firstneigh[particleNumber]; - else - { - int n = *numberOfNeighbors; - int *ptr = firstneigh[particleNumber]; - int *lmps_stripped_neigh_list - = Model->lmps_stripped_neigh_ptr[neighborListIndex]; - for (int i = 0; i < n; i++) - lmps_stripped_neigh_list[i] = *(ptr++) & NEIGHMASK; - *neighborsOfParticle = lmps_stripped_neigh_list; - } - return false; + PairKIM const * const Model + = reinterpret_cast(dataObject); + + if (numberOfNeighborLists != Model->kim_number_of_neighbor_lists) + return true; + for (int i = 0; i < numberOfNeighborLists; ++i) { + if (Model->kim_cutoff_values[i] < cutoffs[i]) return true; + } + + // neighborListIndex and particleNumber are validated by KIM API + + // initialize numNeigh + *numberOfNeighbors = 0; + + NeighList * neiobj = Model->neighborLists[neighborListIndex]; + + int *numneigh, **firstneigh; + numneigh = neiobj->numneigh; // # of J neighbors for each I atom + firstneigh = neiobj->firstneigh; // ptr to 1st J int value of each I atom + + *numberOfNeighbors = numneigh[particleNumber]; + + // strip off neighbor mask for molecular systems + if (!Model->lmps_using_molecular) + *neighborsOfParticle = firstneigh[particleNumber]; + else { + int n = *numberOfNeighbors; + int *ptr = firstneigh[particleNumber]; + int *lmps_stripped_neigh_list + = Model->lmps_stripped_neigh_ptr[neighborListIndex]; + for (int i = 0; i < n; i++) + lmps_stripped_neigh_list[i] = *(ptr++) & NEIGHMASK; + *neighborsOfParticle = lmps_stripped_neigh_list; + } + return false; } /* ---------------------------------------------------------------------- */ void PairKIM::kim_free() { - if (kim_init_ok) - { - int kimerror = KIM_Model_ComputeArgumentsDestroy(pkim, &pargs); - if (kimerror) - error->all(FLERR,"Unable to destroy Compute Arguments Object"); - - KIM_Model_Destroy(&pkim); - } - kim_init_ok = false; + if (kim_init_ok) { + int kimerror = KIM_Model_ComputeArgumentsDestroy(pkim, &pargs); + if (kimerror) + error->all(FLERR,"Unable to destroy Compute Arguments Object"); - return; + KIM_Model_Destroy(&pkim); + } + kim_init_ok = false; } /* ---------------------------------------------------------------------- */ void PairKIM::kim_init() { - int kimerror; - - // initialize KIM model - int requestedUnitsAccepted; - kimerror = KIM_Model_Create( - KIM_NUMBERING_zeroBased, - lengthUnit, energyUnit, chargeUnit, temperatureUnit, timeUnit, - kim_modelname, - &requestedUnitsAccepted, - &pkim); - if (kimerror) - { - kimerror = KIM::SimulatorModel::Create(kim_modelname,&simulatorModel); - if (kimerror) - error->all(FLERR,"KIM ModelCreate failed"); - else - return; - } - else { - if (!requestedUnitsAccepted) { - error->all(FLERR,"KIM Model did not accept the requested unit system"); - } - - // check that the model does not require unknown capabilities - kimerror = check_for_routine_compatibility(); - if (kimerror) - { - error->all(FLERR, - "KIM Model requires unknown Routines. Unable to proceed."); - } - - kimerror = KIM_Model_ComputeArgumentsCreate(pkim, &pargs); - if (kimerror) - { - KIM_Model_Destroy(&pkim); - error->all(FLERR,"KIM ComputeArgumentsCreate failed"); - } - else - { - kim_init_ok = true; - } - } - - // determine KIM Model capabilities (used in this function below) - set_kim_model_has_flags(); - - KIM_Model_GetInfluenceDistance(pkim, &kim_global_influence_distance); - KIM_Model_GetNeighborListPointers( - pkim, - &kim_number_of_neighbor_lists, - &kim_cutoff_values, - &modelWillNotRequestNeighborsOfNoncontributingParticles); - if (neighborLists) - { - delete [] neighborLists; - neighborLists = 0; - } - neighborLists = new NeighList*[kim_number_of_neighbor_lists]; - - kimerror = KIM_ComputeArguments_SetArgumentPointerInteger(pargs, - KIM_COMPUTE_ARGUMENT_NAME_numberOfParticles, - &lmps_local_tot_num_atoms); - if (KIM_SupportStatus_NotEqual(kim_model_support_for_energy, - KIM_SUPPORT_STATUS_notSupported)) - kimerror = kimerror || KIM_ComputeArguments_SetArgumentPointerDouble(pargs, - KIM_COMPUTE_ARGUMENT_NAME_partialEnergy, - &(eng_vdwl)); - - kimerror = KIM_ComputeArguments_SetCallbackPointer(pargs, - KIM_COMPUTE_CALLBACK_NAME_GetNeighborList, - KIM_LANGUAGE_NAME_cpp, - reinterpret_cast(get_neigh), - reinterpret_cast(this)); - - if (kimerror) - error->all(FLERR,"Unable to register KIM pointers"); - - return; + int kimerror; + + // initialize KIM model + int requestedUnitsAccepted; + kimerror = KIM_Model_Create( + KIM_NUMBERING_zeroBased, + lengthUnit, energyUnit, chargeUnit, temperatureUnit, timeUnit, + kim_modelname, + &requestedUnitsAccepted, + &pkim); + if (kimerror) { + kimerror = KIM::SimulatorModel::Create(kim_modelname,&simulatorModel); + if (kimerror) error->all(FLERR,"KIM ModelCreate failed"); + else return; + } else { + if (!requestedUnitsAccepted) + error->all(FLERR,"KIM Model did not accept the requested unit system"); + + // check that the model does not require unknown capabilities + kimerror = check_for_routine_compatibility(); + if (kimerror) + error->all(FLERR, + "KIM Model requires unknown Routines. Unable to proceed."); + + kimerror = KIM_Model_ComputeArgumentsCreate(pkim, &pargs); + if (kimerror) { + KIM_Model_Destroy(&pkim); + error->all(FLERR,"KIM ComputeArgumentsCreate failed"); + } else kim_init_ok = true; + } + + // determine KIM Model capabilities (used in this function below) + set_kim_model_has_flags(); + + KIM_Model_GetInfluenceDistance(pkim, &kim_global_influence_distance); + KIM_Model_GetNeighborListPointers( + pkim, + &kim_number_of_neighbor_lists, + &kim_cutoff_values, + &modelWillNotRequestNeighborsOfNoncontributingParticles); + if (neighborLists) { + delete [] neighborLists; + neighborLists = 0; + } + neighborLists = new NeighList*[kim_number_of_neighbor_lists]; + + kimerror = KIM_ComputeArguments_SetArgumentPointerInteger(pargs, + KIM_COMPUTE_ARGUMENT_NAME_numberOfParticles, + &lmps_local_tot_num_atoms); + if (KIM_SupportStatus_NotEqual(kim_model_support_for_energy, + KIM_SUPPORT_STATUS_notSupported)) + kimerror = kimerror || KIM_ComputeArguments_SetArgumentPointerDouble(pargs, + KIM_COMPUTE_ARGUMENT_NAME_partialEnergy, + &(eng_vdwl)); + + kimerror = KIM_ComputeArguments_SetCallbackPointer(pargs, + KIM_COMPUTE_CALLBACK_NAME_GetNeighborList, + KIM_LANGUAGE_NAME_cpp, + reinterpret_cast(get_neigh), + reinterpret_cast(this)); + + if (kimerror) error->all(FLERR,"Unable to register KIM pointers"); } /* ---------------------------------------------------------------------- */ @@ -858,16 +808,14 @@ void PairKIM::set_argument_pointers() { int kimerror; kimerror = KIM_ComputeArguments_SetArgumentPointerDouble( - pargs, KIM_COMPUTE_ARGUMENT_NAME_coordinates, &(atom->x[0][0])); + pargs, KIM_COMPUTE_ARGUMENT_NAME_coordinates, &(atom->x[0][0])); // Set KIM pointer appropriately for particalEnergy if (KIM_SupportStatus_Equal(kim_model_support_for_particleEnergy, KIM_SUPPORT_STATUS_required) - && (eflag_atom != 1)) - { + && (eflag_atom != 1)) { // reallocate per-atom energy array if necessary - if (atom->nmax > maxeatom) - { + if (atom->nmax > maxeatom) { maxeatom = atom->nmax; memory->destroy(eatom); memory->create(eatom,comm->nthreads*maxeatom,"pair:eatom"); @@ -875,31 +823,25 @@ void PairKIM::set_argument_pointers() } if (KIM_SupportStatus_Equal(kim_model_support_for_particleEnergy, KIM_SUPPORT_STATUS_optional) - && (eflag_atom != 1)) - { + && (eflag_atom != 1)) { kimerror = kimerror || KIM_ComputeArguments_SetArgumentPointerDouble( - pargs, - KIM_COMPUTE_ARGUMENT_NAME_partialParticleEnergy, - reinterpret_cast(NULL)); - } - else if (KIM_SupportStatus_NotEqual(kim_model_support_for_particleEnergy, - KIM_SUPPORT_STATUS_notSupported)) - { + pargs, + KIM_COMPUTE_ARGUMENT_NAME_partialParticleEnergy, + reinterpret_cast(NULL)); + } else if (KIM_SupportStatus_NotEqual(kim_model_support_for_particleEnergy, + KIM_SUPPORT_STATUS_notSupported)) { kimerror = kimerror || KIM_ComputeArguments_SetArgumentPointerDouble( pargs, KIM_COMPUTE_ARGUMENT_NAME_partialParticleEnergy, eatom); } // Set KIM pointer appropriately for forces if (KIM_SupportStatus_Equal(kim_model_support_for_forces, - KIM_SUPPORT_STATUS_notSupported)) - { + KIM_SUPPORT_STATUS_notSupported)) { kimerror = kimerror || KIM_ComputeArguments_SetArgumentPointerDouble( - pargs, - KIM_COMPUTE_ARGUMENT_NAME_partialForces, - reinterpret_cast(NULL)); - } - else - { + pargs, + KIM_COMPUTE_ARGUMENT_NAME_partialForces, + reinterpret_cast(NULL)); + } else { kimerror = kimerror || KIM_ComputeArguments_SetArgumentPointerDouble( pargs, KIM_COMPUTE_ARGUMENT_NAME_partialForces, &(atom->f[0][0])); } @@ -907,11 +849,9 @@ void PairKIM::set_argument_pointers() // Set KIM pointer appropriately for particleVirial if (KIM_SupportStatus_Equal(kim_model_support_for_particleVirial, KIM_SUPPORT_STATUS_required) - && (vflag_atom != 1)) - { + && (vflag_atom != 1)) { // reallocate per-atom virial array if necessary - if (atom->nmax > maxeatom) - { + if (atom->nmax > maxeatom) { maxvatom = atom->nmax; memory->destroy(vatom); memory->create(vatom,comm->nthreads*maxvatom,6,"pair:vatom"); @@ -919,84 +859,72 @@ void PairKIM::set_argument_pointers() } if (KIM_SupportStatus_Equal(kim_model_support_for_particleVirial, KIM_SUPPORT_STATUS_optional) - && (vflag_atom != 1)) - { + && (vflag_atom != 1)) { kimerror = kimerror || KIM_ComputeArguments_SetArgumentPointerDouble( - pargs, - KIM_COMPUTE_ARGUMENT_NAME_partialParticleVirial, - reinterpret_cast(NULL)); - } - else if (KIM_SupportStatus_NotEqual(kim_model_support_for_particleVirial, - KIM_SUPPORT_STATUS_notSupported)) - { + pargs, + KIM_COMPUTE_ARGUMENT_NAME_partialParticleVirial, + reinterpret_cast(NULL)); + } else if (KIM_SupportStatus_NotEqual(kim_model_support_for_particleVirial, + KIM_SUPPORT_STATUS_notSupported)) { kimerror = kimerror || KIM_ComputeArguments_SetArgumentPointerDouble( - pargs, KIM_COMPUTE_ARGUMENT_NAME_partialParticleEnergy, &(vatom[0][0])); + pargs, KIM_COMPUTE_ARGUMENT_NAME_partialParticleEnergy, &(vatom[0][0])); } - if (kimerror) - { - error->all(FLERR,"Unable to set KIM argument pointers"); - } - - return; + if (kimerror) error->all(FLERR,"Unable to set KIM argument pointers"); } /* ---------------------------------------------------------------------- */ void PairKIM::set_lmps_flags() { - // determint if newton is on or off - lmps_using_newton = (force->newton_pair == 1); - - // determine if running with pair hybrid - if (force->pair_match("hybrid",0)) - { - error->all(FLERR,"pair_kim does not support hybrid"); - } - - // determine unit system and set lmps_units flag - if ((strcmp(update->unit_style,"real")==0)) { - lmps_units = REAL; - lengthUnit = KIM_LENGTH_UNIT_A; - energyUnit = KIM_ENERGY_UNIT_kcal_mol; - chargeUnit = KIM_CHARGE_UNIT_e; - temperatureUnit = KIM_TEMPERATURE_UNIT_K; - timeUnit = KIM_TIME_UNIT_fs; - } else if ((strcmp(update->unit_style,"metal")==0)) { - lmps_units = METAL; - lengthUnit = KIM_LENGTH_UNIT_A; - energyUnit = KIM_ENERGY_UNIT_eV; - chargeUnit = KIM_CHARGE_UNIT_e; - temperatureUnit = KIM_TEMPERATURE_UNIT_K; - timeUnit = KIM_TIME_UNIT_ps; - } else if ((strcmp(update->unit_style,"si")==0)) { - lmps_units = SI; - lengthUnit = KIM_LENGTH_UNIT_m; - energyUnit = KIM_ENERGY_UNIT_J; - chargeUnit = KIM_CHARGE_UNIT_C; - temperatureUnit = KIM_TEMPERATURE_UNIT_K; - timeUnit = KIM_TIME_UNIT_s; - } else if ((strcmp(update->unit_style,"cgs")==0)) { - lmps_units = CGS; - lengthUnit = KIM_LENGTH_UNIT_cm; - energyUnit = KIM_ENERGY_UNIT_erg; - chargeUnit = KIM_CHARGE_UNIT_statC; - temperatureUnit = KIM_TEMPERATURE_UNIT_K; - timeUnit = KIM_TIME_UNIT_s; - } else if ((strcmp(update->unit_style,"electron")==0)) { - lmps_units = ELECTRON; - lengthUnit = KIM_LENGTH_UNIT_Bohr; - energyUnit = KIM_ENERGY_UNIT_Hartree; - chargeUnit = KIM_CHARGE_UNIT_e; - temperatureUnit = KIM_TEMPERATURE_UNIT_K; - timeUnit = KIM_TIME_UNIT_fs; - } else if ((strcmp(update->unit_style,"lj")==0)) { - error->all(FLERR,"LAMMPS unit_style lj not supported by KIM models"); - } else { - error->all(FLERR,"Unknown unit_style"); - } - - return; + // determint if newton is on or off + lmps_using_newton = (force->newton_pair == 1); + + // determine if running with pair hybrid + if (force->pair_match("hybrid",0)) + error->all(FLERR,"pair_kim does not support hybrid"); + + // determine unit system and set lmps_units flag + if ((strcmp(update->unit_style,"real")==0)) { + lmps_units = REAL; + lengthUnit = KIM_LENGTH_UNIT_A; + energyUnit = KIM_ENERGY_UNIT_kcal_mol; + chargeUnit = KIM_CHARGE_UNIT_e; + temperatureUnit = KIM_TEMPERATURE_UNIT_K; + timeUnit = KIM_TIME_UNIT_fs; + } else if ((strcmp(update->unit_style,"metal")==0)) { + lmps_units = METAL; + lengthUnit = KIM_LENGTH_UNIT_A; + energyUnit = KIM_ENERGY_UNIT_eV; + chargeUnit = KIM_CHARGE_UNIT_e; + temperatureUnit = KIM_TEMPERATURE_UNIT_K; + timeUnit = KIM_TIME_UNIT_ps; + } else if ((strcmp(update->unit_style,"si")==0)) { + lmps_units = SI; + lengthUnit = KIM_LENGTH_UNIT_m; + energyUnit = KIM_ENERGY_UNIT_J; + chargeUnit = KIM_CHARGE_UNIT_C; + temperatureUnit = KIM_TEMPERATURE_UNIT_K; + timeUnit = KIM_TIME_UNIT_s; + } else if ((strcmp(update->unit_style,"cgs")==0)) { + lmps_units = CGS; + lengthUnit = KIM_LENGTH_UNIT_cm; + energyUnit = KIM_ENERGY_UNIT_erg; + chargeUnit = KIM_CHARGE_UNIT_statC; + temperatureUnit = KIM_TEMPERATURE_UNIT_K; + timeUnit = KIM_TIME_UNIT_s; + } else if ((strcmp(update->unit_style,"electron")==0)) { + lmps_units = ELECTRON; + lengthUnit = KIM_LENGTH_UNIT_Bohr; + energyUnit = KIM_ENERGY_UNIT_Hartree; + chargeUnit = KIM_CHARGE_UNIT_e; + temperatureUnit = KIM_TEMPERATURE_UNIT_K; + timeUnit = KIM_TIME_UNIT_fs; + } else if ((strcmp(update->unit_style,"lj")==0)) { + error->all(FLERR,"LAMMPS unit_style lj not supported by KIM models"); + } else { + error->all(FLERR,"Unknown unit_style"); + } } /* ---------------------------------------------------------------------- */ @@ -1007,8 +935,7 @@ int PairKIM::check_for_routine_compatibility() int numberOfModelRoutineNames; KIM_MODEL_ROUTINE_NAME_GetNumberOfModelRoutineNames( &numberOfModelRoutineNames); - for (int i = 0; i < numberOfModelRoutineNames; ++i) - { + for (int i = 0; i < numberOfModelRoutineNames; ++i) { KIM_ModelRoutineName modelRoutineName; KIM_MODEL_ROUTINE_NAME_GetModelRoutineName(i, &modelRoutineName); @@ -1016,10 +943,9 @@ int PairKIM::check_for_routine_compatibility() int required; int error = KIM_Model_IsRoutinePresent( pkim, modelRoutineName, &present, &required); - if (error) { return true; } + if (error) return true; - if ((present == true) && (required == true)) - { + if ((present == true) && (required == true)) { if (!(KIM_ModelRoutineName_Equal(modelRoutineName, KIM_MODEL_ROUTINE_NAME_Create) || KIM_ModelRoutineName_Equal( @@ -1033,8 +959,9 @@ int PairKIM::check_for_routine_compatibility() modelRoutineName, KIM_MODEL_ROUTINE_NAME_ComputeArgumentsDestroy) || KIM_ModelRoutineName_Equal(modelRoutineName, - KIM_MODEL_ROUTINE_NAME_Destroy))) - { return true; } + KIM_MODEL_ROUTINE_NAME_Destroy))) { + return true; + } } } @@ -1049,8 +976,7 @@ void PairKIM::set_kim_model_has_flags() int numberOfComputeArgumentNames; KIM_COMPUTE_ARGUMENT_NAME_GetNumberOfComputeArgumentNames( &numberOfComputeArgumentNames); - for (int i = 0; i < numberOfComputeArgumentNames; ++i) - { + for (int i = 0; i < numberOfComputeArgumentNames; ++i) { KIM_ComputeArgumentName computeArgumentName; KIM_COMPUTE_ARGUMENT_NAME_GetComputeArgumentName( i, &computeArgumentName); @@ -1059,32 +985,24 @@ void PairKIM::set_kim_model_has_flags() pargs, computeArgumentName, &supportStatus); if (KIM_ComputeArgumentName_Equal(computeArgumentName, - KIM_COMPUTE_ARGUMENT_NAME_partialEnergy) - ) + KIM_COMPUTE_ARGUMENT_NAME_partialEnergy)) kim_model_support_for_energy = supportStatus; else if (KIM_ComputeArgumentName_Equal( - computeArgumentName, KIM_COMPUTE_ARGUMENT_NAME_partialForces) - ) + computeArgumentName, KIM_COMPUTE_ARGUMENT_NAME_partialForces)) kim_model_support_for_forces = supportStatus; - else if - (KIM_ComputeArgumentName_Equal( - computeArgumentName, - KIM_COMPUTE_ARGUMENT_NAME_partialParticleEnergy)\ - ) + else if (KIM_ComputeArgumentName_Equal( + computeArgumentName, + KIM_COMPUTE_ARGUMENT_NAME_partialParticleEnergy)) kim_model_support_for_particleEnergy = supportStatus; - else if - (KIM_ComputeArgumentName_Equal( - computeArgumentName, - KIM_COMPUTE_ARGUMENT_NAME_partialParticleVirial) - ) + else if (KIM_ComputeArgumentName_Equal( + computeArgumentName, + KIM_COMPUTE_ARGUMENT_NAME_partialParticleVirial)) kim_model_support_for_particleVirial = supportStatus; - else if (KIM_SupportStatus_Equal(supportStatus, KIM_SUPPORT_STATUS_required) - ) - { - std::stringstream msg; - msg << "KIM Model requires unsupported compute argument: " - << KIM_ComputeArgumentName_ToString(computeArgumentName); - error->all(FLERR, msg.str().c_str()); + else if (KIM_SupportStatus_Equal(supportStatus, + KIM_SUPPORT_STATUS_required)) { + std::string msg("KIM Model requires unsupported compute argument: "); + msg += KIM_ComputeArgumentName_ToString(computeArgumentName); + error->all(FLERR, msg.c_str()); } } @@ -1111,20 +1029,15 @@ void PairKIM::set_kim_model_has_flags() int numberOfComputeCallbackNames; KIM_COMPUTE_CALLBACK_NAME_GetNumberOfComputeCallbackNames( &numberOfComputeCallbackNames); - for (int i = 0; i < numberOfComputeCallbackNames; ++i) - { + for (int i = 0; i < numberOfComputeCallbackNames; ++i) { KIM_ComputeCallbackName computeCallbackName; - KIM_COMPUTE_CALLBACK_NAME_GetComputeCallbackName( - i, &computeCallbackName); + KIM_COMPUTE_CALLBACK_NAME_GetComputeCallbackName(i, &computeCallbackName); KIM_SupportStatus supportStatus; - KIM_ComputeArguments_GetCallbackSupportStatus( - pargs, computeCallbackName, &supportStatus); + KIM_ComputeArguments_GetCallbackSupportStatus(pargs, + computeCallbackName, + &supportStatus); if (KIM_SupportStatus_Equal(supportStatus, KIM_SUPPORT_STATUS_required)) - { error->all(FLERR,"KIM Model requires unsupported compute callback"); - } } - - return; } diff --git a/src/KIM/pair_kim.h b/src/KIM/pair_kim.h index dcfb4a8af0..37a6be1e5b 100644 --- a/src/KIM/pair_kim.h +++ b/src/KIM/pair_kim.h @@ -12,7 +12,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Contributing authors: Ryan S. Elliott (UMinn) + Contributing authors: Ryan S. Elliott (UMinn), Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- @@ -65,110 +65,115 @@ PairStyle(kim,PairKIM) // includes from KIM & LAMMPS class KIM_API_model; #include "pair.h" + extern "C" { #include "KIM_SimulatorHeaders.h" } #include "KIM_SimulatorModel.hpp" -#include - namespace LAMMPS_NS { - class PairKIM : public Pair { - public: - PairKIM(class LAMMPS*); - ~PairKIM(); - - // LAMMPS Pair class virtual function prototypes - virtual void compute(int, int); - virtual void settings(int, char**); - virtual void coeff(int, char**); - virtual void init_style(); - virtual void init_list(int id, NeighList *ptr); - virtual double init_one(int, int); - virtual int pack_reverse_comm(int, int, double*); - virtual void unpack_reverse_comm(int, int*, double*); - virtual double memory_usage(); - - protected: - // (nearly) all bool flags are not initialized in constructor, but set - // explicitly in the indicated function. All other data members are - // initialized in constructor - int settings_call_count; - int init_style_call_count; - - // values set in settings() - char* kim_modelname; - - // values set in coeff() - - // values set in allocate(), called by coeff() - virtual void allocate(); - int* lmps_map_species_to_unique; - - // values set in coeff(), after calling allocate() - char** lmps_unique_elements; // names of unique elements given - // in pair_coeff command - int lmps_num_unique_elements; - - // values set in set_lmps_flags(), called from init_style() - bool lmps_using_newton; - bool lmps_using_molecular; - enum unit_sys {REAL, METAL, SI, CGS, ELECTRON}; - unit_sys lmps_units; - KIM_LengthUnit lengthUnit; - KIM_EnergyUnit energyUnit; - KIM_ChargeUnit chargeUnit; - KIM_TemperatureUnit temperatureUnit; - KIM_TimeUnit timeUnit; - - KIM::SimulatorModel * simulatorModel; - KIM_Model * pkim; - KIM_ComputeArguments * pargs; - - // values set in set_kim_model_has_flags(), called by kim_init() - KIM_SupportStatus kim_model_support_for_energy; - KIM_SupportStatus kim_model_support_for_forces; - KIM_SupportStatus kim_model_support_for_particleEnergy; - KIM_SupportStatus kim_model_support_for_particleVirial; - - // values set in kim_init() - bool kim_init_ok; - int lmps_local_tot_num_atoms; - double kim_global_influence_distance; // KIM Model cutoff value - int kim_number_of_neighbor_lists; - double const * kim_cutoff_values; - int const * modelWillNotRequestNeighborsOfNoncontributingParticles; - class NeighList ** neighborLists; - - // values set in init_style() - bool kim_particle_codes_ok; - int *kim_particle_codes; - - // values set in compute() - int lmps_maxalloc; // max allocated memory value - int* kim_particleSpecies; // array of KIM particle species - int* kim_particleContributing; // array of KIM particle contributing - int* lmps_stripped_neigh_list; // neighbors of one atom, used when LAMMPS - // is in molecular mode - int** lmps_stripped_neigh_ptr; // pointer into lists - - // KIM specific helper functions - virtual void set_contributing(); - virtual void kim_init(); - virtual void kim_free(); - virtual void set_argument_pointers(); - virtual void set_lmps_flags(); - virtual void set_kim_model_has_flags(); - virtual int check_for_routine_compatibility(); - // static methods used as callbacks from KIM - static int get_neigh( - void const * const dataObject, - int const numberOfCutoffs, double const * const cutoffs, - int const neighborListIndex, int const particleNumber, - int * const numberOfNeighbors, - int const ** const neighborsOfParticle); - }; +class PairKIM : public Pair { + public: + PairKIM(class LAMMPS*); + ~PairKIM(); + + // LAMMPS Pair class virtual function prototypes + virtual void compute(int, int); + virtual void settings(int, char**); + virtual void coeff(int, char**); + virtual void init_style(); + virtual void init_list(int id, NeighList *ptr); + virtual double init_one(int, int); + virtual int pack_reverse_comm(int, int, double*); + virtual void unpack_reverse_comm(int, int*, double*); + virtual double memory_usage(); + + protected: + // (nearly) all bool flags are not initialized in constructor, but set + // explicitly in the indicated function. All other data members are + // initialized in constructor + int settings_call_count; + int init_style_call_count; + + // values set in settings() + char* kim_modelname; + + // values set in coeff() + + // values set in allocate(), called by coeff() + virtual void allocate(); + int* lmps_map_species_to_unique; + + // values set in coeff(), after calling allocate() + char** lmps_unique_elements; // names of unique elements given + // in pair_coeff command + int lmps_num_unique_elements; + + // values set in set_lmps_flags(), called from init_style() + bool lmps_using_newton; + bool lmps_using_molecular; + enum unit_sys {REAL, METAL, SI, CGS, ELECTRON}; + unit_sys lmps_units; + KIM_LengthUnit lengthUnit; + KIM_EnergyUnit energyUnit; + KIM_ChargeUnit chargeUnit; + KIM_TemperatureUnit temperatureUnit; + KIM_TimeUnit timeUnit; + + KIM::SimulatorModel * simulatorModel; + KIM_Model * pkim; + KIM_ComputeArguments * pargs; + + // values set in set_kim_model_has_flags(), called by kim_init() + KIM_SupportStatus kim_model_support_for_energy; + KIM_SupportStatus kim_model_support_for_forces; + KIM_SupportStatus kim_model_support_for_particleEnergy; + KIM_SupportStatus kim_model_support_for_particleVirial; + + // values set in kim_init() + bool kim_init_ok; + int lmps_local_tot_num_atoms; + double kim_global_influence_distance; // KIM Model cutoff value + int kim_number_of_neighbor_lists; + double const * kim_cutoff_values; + int const * modelWillNotRequestNeighborsOfNoncontributingParticles; + class NeighList ** neighborLists; + + // values set in init_style() + bool kim_particle_codes_ok; + int *kim_particle_codes; + + // values set in compute() + int lmps_maxalloc; // max allocated memory value + int* kim_particleSpecies; // array of KIM particle species + int* kim_particleContributing; // array of KIM particle contributing + int* lmps_stripped_neigh_list; // neighbors of one atom, used when LAMMPS + // is in molecular mode + int** lmps_stripped_neigh_ptr; // pointer into lists + + // LAMMPS Simulator model support + Pair *simulator_class; + char *simulator_style; + virtual void simulator_init(); + virtual void simulator_free(); + + // KIM specific helper functions + virtual void set_contributing(); + virtual void kim_init(); + virtual void kim_free(); + virtual void set_argument_pointers(); + virtual void set_lmps_flags(); + virtual void set_kim_model_has_flags(); + virtual int check_for_routine_compatibility(); + // static methods used as callbacks from KIM + static int get_neigh( + void const * const dataObject, + int const numberOfCutoffs, double const * const cutoffs, + int const neighborListIndex, int const particleNumber, + int * const numberOfNeighbors, + int const ** const neighborsOfParticle); +}; } #endif -- GitLab From 32379d2d840a7b5421823ba1f01aed68028d5c6b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 18 May 2019 21:07:15 -0400 Subject: [PATCH 014/627] add JSON tokenizer to utils library --- src/utils.cpp | 376 +++++++++++++++++++++++++++++++++++++++++++++++++- src/utils.h | 2 + 2 files changed, 376 insertions(+), 2 deletions(-) diff --git a/src/utils.cpp b/src/utils.cpp index c3c173a73f..77ff8ef749 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -12,6 +12,8 @@ ------------------------------------------------------------------------- */ #include +#include +#include #include "utils.h" #include "error.h" @@ -46,9 +48,68 @@ extern "C" { - /** Match text against a (simplified) regular expression - * (regexp will be compiled automatically). */ +/** Match text against a (simplified) regular expression + * (regexp will be compiled automatically). */ static int re_match(const char *text, const char *pattern); + +/** + * JSON type identifier. Basic types are: + * o Object + * o Array + * o String + * o Other primitive: number, boolean (true/false) or null + */ + typedef enum { + JSMN_UNDEFINED = 0, + JSMN_OBJECT = 1, + JSMN_ARRAY = 2, + JSMN_STRING = 3, + JSMN_PRIMITIVE = 4 + } jsmntype_t; + + enum jsmnerr { + /* Not enough tokens were provided */ + JSMN_ERROR_NOMEM = -1, + /* Invalid character inside JSON string */ + JSMN_ERROR_INVAL = -2, + /* The string is not a full JSON packet, more bytes expected */ + JSMN_ERROR_PART = -3 + }; + +/** + * JSON token description. + * type type (object, array, string etc.) + * start start position in JSON data string + * end end position in JSON data string + */ + typedef struct { + jsmntype_t type; + int start; + int end; + int size; + } jsmntok_t; + +/** + * JSON parser. Contains an array of token blocks available. Also stores + * the string being parsed now and current position in that string + */ + typedef struct { + unsigned int pos; /* offset in the JSON string */ + unsigned int toknext; /* next token to allocate */ + int toksuper; /* superior token node, e.g parent object or array */ + } jsmn_parser; + +/** + * Create JSON parser over an array of tokens + */ + static void jsmn_init(jsmn_parser *parser); + +/** + * Run JSON parser. It parses a JSON data string into and array of tokens, each describing + * a single JSON object. + */ + static int jsmn_parse(jsmn_parser *parser, const char *js, size_t len, + jsmntok_t *tokens, unsigned int num_tokens); } using namespace LAMMPS_NS; @@ -121,6 +182,72 @@ void utils::sfgets(const char *srcname, int srcline, char *s, int size, return; } + + +int utils::kim_simulator_json_parse(int argc, char **argv) +{ + FILE *fp; + jsmn_parser p; + jsmntok_t *tok; + char *buf; + size_t nbytes; + + if (argc != 2) { + printf("usage: %s \n",argv[0]); + return 1; + } + + // open JSON file + + fp = fopen(argv[1],"rb"); + if (!fp) { + perror("Error opening JSON file"); + return 2; + } + + // determine file size and allocate suitable buffer + + fseek(fp,0,SEEK_END); + long int flen = ftell(fp); + rewind(fp); + buf = new char[flen]; + nbytes = fread(buf,1,flen,fp); + fclose(fp); + + // parse once to count number of tokens + + jsmn_init(&p); + int ntok = jsmn_parse(&p,buf,nbytes,NULL,1); + if (ntok < 0) { + printf("failed to parse JSON: %d\n",ntok); + return 3; + } + + // allocate token storage and parse again + + jsmn_init(&p); + tok = new jsmntok_t[ntok]; + int retval = jsmn_parse(&p,buf,nbytes,tok,ntok); + if ((retval < 1) || (tok[0].type != JSMN_OBJECT)) { + printf("failed to parse JSON: no root object\n"); + return 4; + } + + for (int i=1; i < retval; ++i) { + printf("key: %.*s\n",tok[i].end-tok[i].start,buf+tok[i].start); + if (tok[i+1].type == JSMN_ARRAY) { + printf("value is array of size %d\n",tok[i+1].size); + i += tok[i+1].size + 1; + } else { + ++i; + } + } + + delete [] buf; + delete [] tok; + return 0; +} + /* ------------------------------------------------------------------ */ extern "C" { @@ -437,4 +564,249 @@ extern "C" { return 0; } + + +/** + * Allocates a fresh unused token from the token pool. + */ + static jsmntok_t *jsmn_alloc_token(jsmn_parser *parser, + jsmntok_t *tokens, size_t num_tokens) { + jsmntok_t *tok; + if (parser->toknext >= num_tokens) { + return NULL; + } + tok = &tokens[parser->toknext++]; + tok->start = tok->end = -1; + tok->size = 0; + return tok; + } + +/** + * Fills token type and boundaries. + */ + static void jsmn_fill_token(jsmntok_t *token, jsmntype_t type, + int start, int end) { + token->type = type; + token->start = start; + token->end = end; + token->size = 0; + } + +/** + * Fills next available token with JSON primitive. + */ + static int jsmn_parse_primitive(jsmn_parser *parser, const char *js, + size_t len, jsmntok_t *tokens, size_t num_tokens) { + jsmntok_t *token; + int start; + + start = parser->pos; + + for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) { + switch (js[parser->pos]) { + case '\t' : case '\r' : case '\n' : case ' ' : + case ',' : case ']' : case '}' : + goto found; + } + if (js[parser->pos] < 32 || js[parser->pos] >= 127) { + parser->pos = start; + return JSMN_ERROR_INVAL; + } + } + + found: + if (tokens == NULL) { + parser->pos--; + return 0; + } + token = jsmn_alloc_token(parser, tokens, num_tokens); + if (token == NULL) { + parser->pos = start; + return JSMN_ERROR_NOMEM; + } + jsmn_fill_token(token, JSMN_PRIMITIVE, start, parser->pos); + parser->pos--; + return 0; + } + +/** + * Fills next token with JSON string. + */ + static int jsmn_parse_string(jsmn_parser *parser, const char *js, + size_t len, jsmntok_t *tokens, size_t num_tokens) { + jsmntok_t *token; + + int start = parser->pos; + + parser->pos++; + + /* Skip starting quote */ + for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) { + char c = js[parser->pos]; + + /* Quote: end of string */ + if (c == '\"') { + if (tokens == NULL) { + return 0; + } + token = jsmn_alloc_token(parser, tokens, num_tokens); + if (token == NULL) { + parser->pos = start; + return JSMN_ERROR_NOMEM; + } + jsmn_fill_token(token, JSMN_STRING, start+1, parser->pos); + return 0; + } + + /* Backslash: Quoted symbol expected */ + if (c == '\\' && parser->pos + 1 < len) { + int i; + parser->pos++; + switch (js[parser->pos]) { + /* Allowed escaped symbols */ + case '\"': case '/' : case '\\' : case 'b' : + case 'f' : case 'r' : case 'n' : case 't' : + break; + /* Allows escaped symbol \uXXXX */ + case 'u': + parser->pos++; + for(i = 0; i < 4 && parser->pos < len && js[parser->pos] != '\0'; i++) { + /* If it isn't a hex character we have an error */ + if(!((js[parser->pos] >= 48 && js[parser->pos] <= 57) || /* 0-9 */ + (js[parser->pos] >= 65 && js[parser->pos] <= 70) || /* A-F */ + (js[parser->pos] >= 97 && js[parser->pos] <= 102))) { /* a-f */ + parser->pos = start; + return JSMN_ERROR_INVAL; + } + parser->pos++; + } + parser->pos--; + break; + /* Unexpected symbol */ + default: + parser->pos = start; + return JSMN_ERROR_INVAL; + } + } + } + parser->pos = start; + return JSMN_ERROR_PART; + } + +/** + * Parse JSON string and fill tokens. + */ + int jsmn_parse(jsmn_parser *parser, const char *js, size_t len, + jsmntok_t *tokens, unsigned int num_tokens) { + int r; + int i; + jsmntok_t *token; + int count = parser->toknext; + + for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) { + char c; + jsmntype_t type; + + c = js[parser->pos]; + switch (c) { + case '{': case '[': + count++; + if (tokens == NULL) { + break; + } + token = jsmn_alloc_token(parser, tokens, num_tokens); + if (token == NULL) + return JSMN_ERROR_NOMEM; + if (parser->toksuper != -1) { + tokens[parser->toksuper].size++; + } + token->type = (c == '{' ? JSMN_OBJECT : JSMN_ARRAY); + token->start = parser->pos; + parser->toksuper = parser->toknext - 1; + break; + case '}': case ']': + if (tokens == NULL) + break; + type = (c == '}' ? JSMN_OBJECT : JSMN_ARRAY); + for (i = parser->toknext - 1; i >= 0; i--) { + token = &tokens[i]; + if (token->start != -1 && token->end == -1) { + if (token->type != type) { + return JSMN_ERROR_INVAL; + } + parser->toksuper = -1; + token->end = parser->pos + 1; + break; + } + } + /* Error if unmatched closing bracket */ + if (i == -1) return JSMN_ERROR_INVAL; + for (; i >= 0; i--) { + token = &tokens[i]; + if (token->start != -1 && token->end == -1) { + parser->toksuper = i; + break; + } + } + break; + case '\"': + r = jsmn_parse_string(parser, js, len, tokens, num_tokens); + if (r < 0) return r; + count++; + if (parser->toksuper != -1 && tokens != NULL) + tokens[parser->toksuper].size++; + break; + case '\t' : case '\r' : case '\n' : case ' ': + break; + case ':': + parser->toksuper = parser->toknext - 1; + break; + case ',': + if (tokens != NULL && parser->toksuper != -1 && + tokens[parser->toksuper].type != JSMN_ARRAY && + tokens[parser->toksuper].type != JSMN_OBJECT) { + for (i = parser->toknext - 1; i >= 0; i--) { + if (tokens[i].type == JSMN_ARRAY || tokens[i].type == JSMN_OBJECT) { + if (tokens[i].start != -1 && tokens[i].end == -1) { + parser->toksuper = i; + break; + } + } + } + } + break; + /* In non-strict mode every unquoted value is a primitive */ + default: + r = jsmn_parse_primitive(parser, js, len, tokens, num_tokens); + if (r < 0) return r; + count++; + if (parser->toksuper != -1 && tokens != NULL) + tokens[parser->toksuper].size++; + break; + + } + } + + if (tokens != NULL) { + for (i = parser->toknext - 1; i >= 0; i--) { + /* Unmatched opened object or array */ + if (tokens[i].start != -1 && tokens[i].end == -1) { + return JSMN_ERROR_PART; + } + } + } + + return count; + } + +/** + * Creates a new parser based over a given buffer with an array of tokens + * available. + */ + void jsmn_init(jsmn_parser *parser) { + parser->pos = 0; + parser->toknext = 0; + parser->toksuper = -1; + } } + diff --git a/src/utils.h b/src/utils.h index 2596fcd774..e908dcae81 100644 --- a/src/utils.h +++ b/src/utils.h @@ -66,6 +66,8 @@ namespace LAMMPS_NS { */ void sfgets(const char *srcname, int srcline, char *s, int size, FILE *fp, const char *filename, Error *error); + + int kim_simulator_json_parse(int argc, char **argv); } } -- GitLab From b779bf524afaf41e95ad4f9fb4fe7c622022825e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 19 May 2019 10:09:25 -0400 Subject: [PATCH 015/627] use KIM-API calls to query simulator model info --- src/KIM/pair_kim.cpp | 45 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/src/KIM/pair_kim.cpp b/src/KIM/pair_kim.cpp index d75d960355..fff84a1821 100644 --- a/src/KIM/pair_kim.cpp +++ b/src/KIM/pair_kim.cpp @@ -13,6 +13,7 @@ /* ---------------------------------------------------------------------- Contributing authors: Ryan S. Elliott (UMinn) + Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- @@ -61,6 +62,7 @@ #include "pair_kim.h" #include "atom.h" #include "comm.h" +#include "universe.h" #include "force.h" #include "neighbor.h" #include "neigh_list.h" @@ -132,6 +134,14 @@ PairKIM::~PairKIM() // clean up kim_modelname if (kim_modelname != 0) delete [] kim_modelname; + if (simulatorModel) { + KIM::SimulatorModel::Destroy(&simulatorModel); + + // clean up KIM interface (if necessary) + kim_free(); + return; + } + // clean up lammps atom species number to unique particle names mapping if (lmps_unique_elements) for (int i = 0; i < lmps_num_unique_elements; i++) @@ -330,9 +340,40 @@ void PairKIM::settings(int narg, char **arg) // initialize KIM Model kim_init(); - // initialize LAMMPS Simulator model + // Set up and initialize LAMMPS Simulator model + if (simulatorModel) { - printf("LAMMPS simulator model: %s\n",kim_modelname); + const std::string *sim_name, *sim_version; + simulatorModel->GetSimulatorName(&sim_name); + simulatorModel->GetSimulatorVersion(&sim_version); + + if (comm->me == 0) { + std::string mesg("Using KIM Simulator Model : "); + mesg += kim_modelname; + mesg += "\n"; + mesg += "For Simulator : "; + mesg += *sim_name + " " + *sim_version + "\n"; + mesg += "Running on : LAMMPS "; + mesg += universe->version; + mesg += "\n"; + + if (screen) fputs(mesg.c_str(),screen); + if (logfile) fputs(mesg.c_str(),logfile); + } + + if (*sim_name != "LAMMPS") + error->all(FLERR,"Incompatible KIM Simulator Model"); + + int sim_fields, sim_lines; + const std::string *sim_field, *sim_value; + simulatorModel->GetNumberOfSimulatorFields(&sim_fields); + printf("sim_fields=%d\n",sim_fields); + for (int i=0; i < sim_fields; ++i) { + simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); + printf("i=%d: %s (%d)\n",i,sim_field->c_str(),sim_lines); +// for (int j=0; j < +// simulatorModel->GetSimulatorFieldLine(i, + } } } -- GitLab From 56cf97e4970508b42ef4842e6f0de9ecfc1a9618 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 20 May 2019 13:53:17 -0400 Subject: [PATCH 016/627] hard code creation of simulator model pair style for now --- src/KIM/pair_kim.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/KIM/pair_kim.cpp b/src/KIM/pair_kim.cpp index fff84a1821..87a6d636d2 100644 --- a/src/KIM/pair_kim.cpp +++ b/src/KIM/pair_kim.cpp @@ -371,9 +371,25 @@ void PairKIM::settings(int narg, char **arg) for (int i=0; i < sim_fields; ++i) { simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); printf("i=%d: %s (%d)\n",i,sim_field->c_str(),sim_lines); -// for (int j=0; j < -// simulatorModel->GetSimulatorFieldLine(i, } + // hard code result for now: + + int dummy; + const char *simulator_style = (const char*)"tersoff/mod"; + simulator_class = force->new_pair(simulator_style,1,dummy); + if (simulator_class) { + if (comm->me == 0) { + std::string mesg("Created simulator pair style: "); + mesg += simulator_style; + mesg += "\n"; + + if (screen) fputs(mesg.c_str(),screen); + if (logfile) fputs(mesg.c_str(),logfile); + } + } else { + error->all(FLERR,"Failure to create simulator model pair style"); + } + simulator_class->settings(0,NULL); } } -- GitLab From 38a8c765f0974799a82cee1a185adff5f3eb06fc Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 20 May 2019 22:54:20 -0400 Subject: [PATCH 017/627] add support species checking --- examples/kim/in.kim.simulator-model | 6 +-- src/KIM/pair_kim.cpp | 79 +++++++++++++++++++---------- 2 files changed, 54 insertions(+), 31 deletions(-) diff --git a/examples/kim/in.kim.simulator-model b/examples/kim/in.kim.simulator-model index 32baf9d78e..109711fffc 100644 --- a/examples/kim/in.kim.simulator-model +++ b/examples/kim/in.kim.simulator-model @@ -20,16 +20,16 @@ newton off lattice fcc 4.4300 region box block 0 ${xx} 0 ${yy} 0 ${zz} -create_box 1 box +create_box 2 box create_atoms 1 box #pair_style lj/cut 8.1500 #pair_coeff 1 1 0.0104 3.4000 pair_style kim ex_sim_model_Si_mod_tersoff -pair_coeff * * Ar +pair_coeff * * Si Si -mass 1 39.95 +mass * 39.95 velocity all create 200.0 232345 loop geom neighbor 0.3 bin diff --git a/src/KIM/pair_kim.cpp b/src/KIM/pair_kim.cpp index 87a6d636d2..2ed9df0aed 100644 --- a/src/KIM/pair_kim.cpp +++ b/src/KIM/pair_kim.cpp @@ -344,6 +344,8 @@ void PairKIM::settings(int narg, char **arg) if (simulatorModel) { const std::string *sim_name, *sim_version; + std::string atom_type_sym_list; + simulatorModel->GetSimulatorName(&sim_name); simulatorModel->GetSimulatorVersion(&sim_version); @@ -363,33 +365,6 @@ void PairKIM::settings(int narg, char **arg) if (*sim_name != "LAMMPS") error->all(FLERR,"Incompatible KIM Simulator Model"); - - int sim_fields, sim_lines; - const std::string *sim_field, *sim_value; - simulatorModel->GetNumberOfSimulatorFields(&sim_fields); - printf("sim_fields=%d\n",sim_fields); - for (int i=0; i < sim_fields; ++i) { - simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); - printf("i=%d: %s (%d)\n",i,sim_field->c_str(),sim_lines); - } - // hard code result for now: - - int dummy; - const char *simulator_style = (const char*)"tersoff/mod"; - simulator_class = force->new_pair(simulator_style,1,dummy); - if (simulator_class) { - if (comm->me == 0) { - std::string mesg("Created simulator pair style: "); - mesg += simulator_style; - mesg += "\n"; - - if (screen) fputs(mesg.c_str(),screen); - if (logfile) fputs(mesg.c_str(),logfile); - } - } else { - error->all(FLERR,"Failure to create simulator model pair style"); - } - simulator_class->settings(0,NULL); } } @@ -464,9 +439,57 @@ void PairKIM::coeff(int narg, char **arg) if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); if (simulatorModel) { - simulatorModel->AddTemplateMap("atom-type-sym-list", atom_type_sym_list); + simulatorModel->AddTemplateMap("atom-type-sym-list",atom_type_sym_list); simulatorModel->CloseTemplateMap(); + int len = strlen(atom_type_sym_list.c_str())+1; + char *strbuf = new char[len]; + char *strword; + + int sim_num_species; + const std::string *sim_species; + simulatorModel->GetNumberOfSupportedSpecies(&sim_num_species); + for (int i=0; i < sim_num_species; ++i) { + simulatorModel->GetSupportedSpecies(i, &sim_species); + strcpy(strbuf,atom_type_sym_list.c_str()); + strword = strtok(strbuf," \t"); + while (strword) { + if (strcmp(sim_species->c_str(),strword) != 0) + error->all(FLERR,"Species not supported by KIM Simulator Model"); + strword = strtok(NULL," \t"); + } + } + + int sim_fields, sim_lines; + const std::string *sim_field, *sim_value; + simulatorModel->GetNumberOfSimulatorFields(&sim_fields); + if (comm->me==0) printf("sim_fields=%d\n",sim_fields); + for (int i=0; i < sim_fields; ++i) { + simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); + if (comm->me==0) printf("field[%d]=%s\n",i,sim_field->c_str()); + for (int j=0; j < sim_lines; ++j) { + simulatorModel->GetSimulatorFieldLine(i,j,&sim_value); + if (comm->me==0) printf("line %d: %s\n",j,sim_value->c_str()); + } + } + // hard code result for now: + + int dummy; + const char *simulator_style = (const char*)"tersoff/mod"; + simulator_class = force->new_pair(simulator_style,1,dummy); + if (simulator_class) { + if (comm->me == 0) { + std::string mesg("Created simulator pair style: "); + mesg += simulator_style; + mesg += "\n"; + + if (screen) fputs(mesg.c_str(),screen); + if (logfile) fputs(mesg.c_str(),logfile); + } + } else { + error->all(FLERR,"Failure to create simulator model pair style"); + } + simulator_class->settings(0,NULL); error->all(FLERR,(simulatorModel->ToString()).c_str()); } else { // setup mapping between LAMMPS unique elements and KIM species codes -- GitLab From 92b042552e4de87631b5a6a848209a24945f2cac Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 20 May 2019 22:54:33 -0400 Subject: [PATCH 018/627] Revert "add JSON tokenizer to utils library" This reverts commit 32379d2d840a7b5421823ba1f01aed68028d5c6b. --- src/utils.cpp | 376 +------------------------------------------------- src/utils.h | 2 - 2 files changed, 2 insertions(+), 376 deletions(-) diff --git a/src/utils.cpp b/src/utils.cpp index 77ff8ef749..c3c173a73f 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -12,8 +12,6 @@ ------------------------------------------------------------------------- */ #include -#include -#include #include "utils.h" #include "error.h" @@ -48,68 +46,9 @@ extern "C" { -/** Match text against a (simplified) regular expression - * (regexp will be compiled automatically). */ + /** Match text against a (simplified) regular expression + * (regexp will be compiled automatically). */ static int re_match(const char *text, const char *pattern); - -/** - * JSON type identifier. Basic types are: - * o Object - * o Array - * o String - * o Other primitive: number, boolean (true/false) or null - */ - typedef enum { - JSMN_UNDEFINED = 0, - JSMN_OBJECT = 1, - JSMN_ARRAY = 2, - JSMN_STRING = 3, - JSMN_PRIMITIVE = 4 - } jsmntype_t; - - enum jsmnerr { - /* Not enough tokens were provided */ - JSMN_ERROR_NOMEM = -1, - /* Invalid character inside JSON string */ - JSMN_ERROR_INVAL = -2, - /* The string is not a full JSON packet, more bytes expected */ - JSMN_ERROR_PART = -3 - }; - -/** - * JSON token description. - * type type (object, array, string etc.) - * start start position in JSON data string - * end end position in JSON data string - */ - typedef struct { - jsmntype_t type; - int start; - int end; - int size; - } jsmntok_t; - -/** - * JSON parser. Contains an array of token blocks available. Also stores - * the string being parsed now and current position in that string - */ - typedef struct { - unsigned int pos; /* offset in the JSON string */ - unsigned int toknext; /* next token to allocate */ - int toksuper; /* superior token node, e.g parent object or array */ - } jsmn_parser; - -/** - * Create JSON parser over an array of tokens - */ - static void jsmn_init(jsmn_parser *parser); - -/** - * Run JSON parser. It parses a JSON data string into and array of tokens, each describing - * a single JSON object. - */ - static int jsmn_parse(jsmn_parser *parser, const char *js, size_t len, - jsmntok_t *tokens, unsigned int num_tokens); } using namespace LAMMPS_NS; @@ -182,72 +121,6 @@ void utils::sfgets(const char *srcname, int srcline, char *s, int size, return; } - - -int utils::kim_simulator_json_parse(int argc, char **argv) -{ - FILE *fp; - jsmn_parser p; - jsmntok_t *tok; - char *buf; - size_t nbytes; - - if (argc != 2) { - printf("usage: %s \n",argv[0]); - return 1; - } - - // open JSON file - - fp = fopen(argv[1],"rb"); - if (!fp) { - perror("Error opening JSON file"); - return 2; - } - - // determine file size and allocate suitable buffer - - fseek(fp,0,SEEK_END); - long int flen = ftell(fp); - rewind(fp); - buf = new char[flen]; - nbytes = fread(buf,1,flen,fp); - fclose(fp); - - // parse once to count number of tokens - - jsmn_init(&p); - int ntok = jsmn_parse(&p,buf,nbytes,NULL,1); - if (ntok < 0) { - printf("failed to parse JSON: %d\n",ntok); - return 3; - } - - // allocate token storage and parse again - - jsmn_init(&p); - tok = new jsmntok_t[ntok]; - int retval = jsmn_parse(&p,buf,nbytes,tok,ntok); - if ((retval < 1) || (tok[0].type != JSMN_OBJECT)) { - printf("failed to parse JSON: no root object\n"); - return 4; - } - - for (int i=1; i < retval; ++i) { - printf("key: %.*s\n",tok[i].end-tok[i].start,buf+tok[i].start); - if (tok[i+1].type == JSMN_ARRAY) { - printf("value is array of size %d\n",tok[i+1].size); - i += tok[i+1].size + 1; - } else { - ++i; - } - } - - delete [] buf; - delete [] tok; - return 0; -} - /* ------------------------------------------------------------------ */ extern "C" { @@ -564,249 +437,4 @@ extern "C" { return 0; } - - -/** - * Allocates a fresh unused token from the token pool. - */ - static jsmntok_t *jsmn_alloc_token(jsmn_parser *parser, - jsmntok_t *tokens, size_t num_tokens) { - jsmntok_t *tok; - if (parser->toknext >= num_tokens) { - return NULL; - } - tok = &tokens[parser->toknext++]; - tok->start = tok->end = -1; - tok->size = 0; - return tok; - } - -/** - * Fills token type and boundaries. - */ - static void jsmn_fill_token(jsmntok_t *token, jsmntype_t type, - int start, int end) { - token->type = type; - token->start = start; - token->end = end; - token->size = 0; - } - -/** - * Fills next available token with JSON primitive. - */ - static int jsmn_parse_primitive(jsmn_parser *parser, const char *js, - size_t len, jsmntok_t *tokens, size_t num_tokens) { - jsmntok_t *token; - int start; - - start = parser->pos; - - for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) { - switch (js[parser->pos]) { - case '\t' : case '\r' : case '\n' : case ' ' : - case ',' : case ']' : case '}' : - goto found; - } - if (js[parser->pos] < 32 || js[parser->pos] >= 127) { - parser->pos = start; - return JSMN_ERROR_INVAL; - } - } - - found: - if (tokens == NULL) { - parser->pos--; - return 0; - } - token = jsmn_alloc_token(parser, tokens, num_tokens); - if (token == NULL) { - parser->pos = start; - return JSMN_ERROR_NOMEM; - } - jsmn_fill_token(token, JSMN_PRIMITIVE, start, parser->pos); - parser->pos--; - return 0; - } - -/** - * Fills next token with JSON string. - */ - static int jsmn_parse_string(jsmn_parser *parser, const char *js, - size_t len, jsmntok_t *tokens, size_t num_tokens) { - jsmntok_t *token; - - int start = parser->pos; - - parser->pos++; - - /* Skip starting quote */ - for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) { - char c = js[parser->pos]; - - /* Quote: end of string */ - if (c == '\"') { - if (tokens == NULL) { - return 0; - } - token = jsmn_alloc_token(parser, tokens, num_tokens); - if (token == NULL) { - parser->pos = start; - return JSMN_ERROR_NOMEM; - } - jsmn_fill_token(token, JSMN_STRING, start+1, parser->pos); - return 0; - } - - /* Backslash: Quoted symbol expected */ - if (c == '\\' && parser->pos + 1 < len) { - int i; - parser->pos++; - switch (js[parser->pos]) { - /* Allowed escaped symbols */ - case '\"': case '/' : case '\\' : case 'b' : - case 'f' : case 'r' : case 'n' : case 't' : - break; - /* Allows escaped symbol \uXXXX */ - case 'u': - parser->pos++; - for(i = 0; i < 4 && parser->pos < len && js[parser->pos] != '\0'; i++) { - /* If it isn't a hex character we have an error */ - if(!((js[parser->pos] >= 48 && js[parser->pos] <= 57) || /* 0-9 */ - (js[parser->pos] >= 65 && js[parser->pos] <= 70) || /* A-F */ - (js[parser->pos] >= 97 && js[parser->pos] <= 102))) { /* a-f */ - parser->pos = start; - return JSMN_ERROR_INVAL; - } - parser->pos++; - } - parser->pos--; - break; - /* Unexpected symbol */ - default: - parser->pos = start; - return JSMN_ERROR_INVAL; - } - } - } - parser->pos = start; - return JSMN_ERROR_PART; - } - -/** - * Parse JSON string and fill tokens. - */ - int jsmn_parse(jsmn_parser *parser, const char *js, size_t len, - jsmntok_t *tokens, unsigned int num_tokens) { - int r; - int i; - jsmntok_t *token; - int count = parser->toknext; - - for (; parser->pos < len && js[parser->pos] != '\0'; parser->pos++) { - char c; - jsmntype_t type; - - c = js[parser->pos]; - switch (c) { - case '{': case '[': - count++; - if (tokens == NULL) { - break; - } - token = jsmn_alloc_token(parser, tokens, num_tokens); - if (token == NULL) - return JSMN_ERROR_NOMEM; - if (parser->toksuper != -1) { - tokens[parser->toksuper].size++; - } - token->type = (c == '{' ? JSMN_OBJECT : JSMN_ARRAY); - token->start = parser->pos; - parser->toksuper = parser->toknext - 1; - break; - case '}': case ']': - if (tokens == NULL) - break; - type = (c == '}' ? JSMN_OBJECT : JSMN_ARRAY); - for (i = parser->toknext - 1; i >= 0; i--) { - token = &tokens[i]; - if (token->start != -1 && token->end == -1) { - if (token->type != type) { - return JSMN_ERROR_INVAL; - } - parser->toksuper = -1; - token->end = parser->pos + 1; - break; - } - } - /* Error if unmatched closing bracket */ - if (i == -1) return JSMN_ERROR_INVAL; - for (; i >= 0; i--) { - token = &tokens[i]; - if (token->start != -1 && token->end == -1) { - parser->toksuper = i; - break; - } - } - break; - case '\"': - r = jsmn_parse_string(parser, js, len, tokens, num_tokens); - if (r < 0) return r; - count++; - if (parser->toksuper != -1 && tokens != NULL) - tokens[parser->toksuper].size++; - break; - case '\t' : case '\r' : case '\n' : case ' ': - break; - case ':': - parser->toksuper = parser->toknext - 1; - break; - case ',': - if (tokens != NULL && parser->toksuper != -1 && - tokens[parser->toksuper].type != JSMN_ARRAY && - tokens[parser->toksuper].type != JSMN_OBJECT) { - for (i = parser->toknext - 1; i >= 0; i--) { - if (tokens[i].type == JSMN_ARRAY || tokens[i].type == JSMN_OBJECT) { - if (tokens[i].start != -1 && tokens[i].end == -1) { - parser->toksuper = i; - break; - } - } - } - } - break; - /* In non-strict mode every unquoted value is a primitive */ - default: - r = jsmn_parse_primitive(parser, js, len, tokens, num_tokens); - if (r < 0) return r; - count++; - if (parser->toksuper != -1 && tokens != NULL) - tokens[parser->toksuper].size++; - break; - - } - } - - if (tokens != NULL) { - for (i = parser->toknext - 1; i >= 0; i--) { - /* Unmatched opened object or array */ - if (tokens[i].start != -1 && tokens[i].end == -1) { - return JSMN_ERROR_PART; - } - } - } - - return count; - } - -/** - * Creates a new parser based over a given buffer with an array of tokens - * available. - */ - void jsmn_init(jsmn_parser *parser) { - parser->pos = 0; - parser->toknext = 0; - parser->toksuper = -1; - } } - diff --git a/src/utils.h b/src/utils.h index e908dcae81..2596fcd774 100644 --- a/src/utils.h +++ b/src/utils.h @@ -66,8 +66,6 @@ namespace LAMMPS_NS { */ void sfgets(const char *srcname, int srcline, char *s, int size, FILE *fp, const char *filename, Error *error); - - int kim_simulator_json_parse(int argc, char **argv); } } -- GitLab From 1e2ceb88daa631e50d68d79c581193a8bd52bdad Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 21 May 2019 15:57:14 -0400 Subject: [PATCH 019/627] complete basic simulator model proxy class creation and setup. --- src/KIM/pair_kim.cpp | 118 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 96 insertions(+), 22 deletions(-) diff --git a/src/KIM/pair_kim.cpp b/src/KIM/pair_kim.cpp index 2ed9df0aed..626b7ccb1c 100644 --- a/src/KIM/pair_kim.cpp +++ b/src/KIM/pair_kim.cpp @@ -64,6 +64,7 @@ #include "comm.h" #include "universe.h" #include "force.h" +#include "input.h" #include "neighbor.h" #include "neigh_list.h" #include "neigh_request.h" @@ -71,6 +72,7 @@ #include "memory.h" #include "domain.h" #include "error.h" +#include "utils.h" using namespace LAMMPS_NS; @@ -136,6 +138,7 @@ PairKIM::~PairKIM() if (simulatorModel) { KIM::SimulatorModel::Destroy(&simulatorModel); + delete simulator_class; // clean up KIM interface (if necessary) kim_free(); @@ -446,6 +449,8 @@ void PairKIM::coeff(int narg, char **arg) char *strbuf = new char[len]; char *strword; + // validate species selection + int sim_num_species; const std::string *sim_species; simulatorModel->GetNumberOfSupportedSpecies(&sim_num_species); @@ -454,7 +459,7 @@ void PairKIM::coeff(int narg, char **arg) strcpy(strbuf,atom_type_sym_list.c_str()); strword = strtok(strbuf," \t"); while (strword) { - if (strcmp(sim_species->c_str(),strword) != 0) + if ((strcmp(strword,"NULL") != 0) && (strcmp(sim_species->c_str(),strword) != 0)) error->all(FLERR,"Species not supported by KIM Simulator Model"); strword = strtok(NULL," \t"); } @@ -463,33 +468,102 @@ void PairKIM::coeff(int narg, char **arg) int sim_fields, sim_lines; const std::string *sim_field, *sim_value; simulatorModel->GetNumberOfSimulatorFields(&sim_fields); - if (comm->me==0) printf("sim_fields=%d\n",sim_fields); for (int i=0; i < sim_fields; ++i) { simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); - if (comm->me==0) printf("field[%d]=%s\n",i,sim_field->c_str()); - for (int j=0; j < sim_lines; ++j) { - simulatorModel->GetSimulatorFieldLine(i,j,&sim_value); - if (comm->me==0) printf("line %d: %s\n",j,sim_value->c_str()); + if (*sim_field == "units") { + simulatorModel->GetSimulatorFieldLine(i,0,&sim_value); + if (*sim_value != update->unit_style) + error->all(FLERR,"Incompatible units for KIM Simulator Model"); + break; + } + } + + for (int i=0; i < sim_fields; ++i) { + simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); + if (*sim_field == "model-init") { + for (int j=0; j < sim_lines; ++j) { + simulatorModel->GetSimulatorFieldLine(i,j,&sim_value); + input->one(sim_value->c_str()); + } + break; + } + } + + int sim_model_idx=-1; + for (int i=0; i < sim_fields; ++i) { + simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); + if (*sim_field == "model-defn") { + sim_model_idx = i; + break; } } - // hard code result for now: - - int dummy; - const char *simulator_style = (const char*)"tersoff/mod"; - simulator_class = force->new_pair(simulator_style,1,dummy); - if (simulator_class) { - if (comm->me == 0) { - std::string mesg("Created simulator pair style: "); - mesg += simulator_style; - mesg += "\n"; - - if (screen) fputs(mesg.c_str(),screen); - if (logfile) fputs(mesg.c_str(),logfile); + + if (sim_model_idx < 0) + error->all(FLERR,"KIM Simulator Model has no Model definition"); + else { + for (int j=0; j < sim_lines; ++j) { + simulatorModel->GetSimulatorFieldLine(sim_model_idx,j,&sim_value); + if (utils::strmatch(*sim_value,"^pair_style")) { + char *ptr,*sim_style; + char *style_args[64]; + int style_narg = 0; + int len = strlen(sim_value->c_str())+1; + char *stylecmd = new char[len]; + strcpy(stylecmd,sim_value->c_str()); + + // ignore first word (pair_style) + strtok(stylecmd," \t"); + ptr = sim_style = strtok(NULL," \t"); + while (ptr && (style_narg < 63)) { + ptr = strtok(NULL," \t"); + if (!ptr) break; + style_args[style_narg] = ptr; + ++style_narg; + } + + int dummy; + delete simulator_class; + simulator_class = force->new_pair(sim_style,1,dummy); + if (simulator_class) { + if (comm->me == 0) { + std::string mesg("Created KIM Simulator Model pair style: "); + mesg += sim_style; + mesg += "\n"; + + if (screen) fputs(mesg.c_str(),screen); + if (logfile) fputs(mesg.c_str(),logfile); + } + } else { + error->all(FLERR,"Failure to create simulator model pair style"); + } + simulator_class->settings(style_narg,style_args); + delete[] stylecmd; + } + } + for (int j=0; j < sim_lines; ++j) { + simulatorModel->GetSimulatorFieldLine(sim_model_idx,j,&sim_value); + if (utils::strmatch(*sim_value,"^pair_coeff")) { + char *ptr; + char *coeff_args[64]; + int coeff_narg = 0; + int len = strlen(sim_value->c_str())+1; + char *coeffcmd = new char[len]; + strcpy(coeffcmd,sim_value->c_str()); + + // ignore first word (pair_coeff) + strtok(coeffcmd," \t"); + ptr = strtok(NULL," \t"); + while (ptr && (coeff_narg < 63)) { + coeff_args[coeff_narg] = ptr; + ++coeff_narg; + ptr = strtok(NULL," \t"); + } + + simulator_class->coeff(coeff_narg,coeff_args); + delete[] coeffcmd; + } } - } else { - error->all(FLERR,"Failure to create simulator model pair style"); } - simulator_class->settings(0,NULL); error->all(FLERR,(simulatorModel->ToString()).c_str()); } else { // setup mapping between LAMMPS unique elements and KIM species codes -- GitLab From ce46d52c8a9ab27383d797fc29c9108f4ed59ccd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 May 2019 10:23:26 -0400 Subject: [PATCH 020/627] add new 'kim_style' command as front end for KIM simulator (and regular) models --- examples/kim/in.kim.simulator-model | 4 +- src/KIM/fix_store_kim.cpp | 127 ++++++++++++ src/KIM/fix_store_kim.h | 98 ++++++++++ src/KIM/kim_query.cpp | 1 - src/KIM/kim_style.cpp | 286 ++++++++++++++++++++++++++++ src/KIM/kim_style.h | 87 +++++++++ src/modify.cpp | 2 +- 7 files changed, 600 insertions(+), 5 deletions(-) create mode 100644 src/KIM/fix_store_kim.cpp create mode 100644 src/KIM/fix_store_kim.h create mode 100644 src/KIM/kim_style.cpp create mode 100644 src/KIM/kim_style.h diff --git a/examples/kim/in.kim.simulator-model b/examples/kim/in.kim.simulator-model index 109711fffc..1e6e9dec89 100644 --- a/examples/kim/in.kim.simulator-model +++ b/examples/kim/in.kim.simulator-model @@ -16,7 +16,6 @@ variable zz equal 20*$z units metal atom_style atomic -newton off lattice fcc 4.4300 region box block 0 ${xx} 0 ${yy} 0 ${zz} @@ -26,8 +25,7 @@ create_atoms 1 box #pair_style lj/cut 8.1500 #pair_coeff 1 1 0.0104 3.4000 -pair_style kim ex_sim_model_Si_mod_tersoff -pair_coeff * * Si Si +kim_style define ex_sim_model_Si_mod_tersoff Si Si mass * 39.95 velocity all create 200.0 232345 loop geom diff --git a/src/KIM/fix_store_kim.cpp b/src/KIM/fix_store_kim.cpp new file mode 100644 index 0000000000..8e9946c20d --- /dev/null +++ b/src/KIM/fix_store_kim.cpp @@ -0,0 +1,127 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing authors: Axel Kohlmeyer (Temple U), + Ryan S. Elliott (UMN) +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + 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 2 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 . + + Linking LAMMPS statically or dynamically with other modules is making a + combined work based on LAMMPS. Thus, the terms and conditions of the GNU + General Public License cover the whole combination. + + In addition, as a special exception, the copyright holders of LAMMPS give + you permission to combine LAMMPS with free software programs or libraries + that are released under the GNU LGPL and with code included in the standard + release of the "kim-api" under the CDDL (or modified versions of such code, + with unchanged license). You may copy and distribute such a system following + the terms of the GNU GPL for LAMMPS and the licenses of the other code + concerned, provided that you include the source code of that other code + when and as the GNU GPL requires distribution of source code. + + Note that people who make modified versions of LAMMPS are not obligated to + grant this special exception for their modified versions; it is their choice + whether to do so. The GNU General Public License gives permission to release + a modified version without this exception; this exception also makes it + possible to release a modified version which carries forward this exception. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Designed for use with the kim-api-2.0.2 (and newer) package +------------------------------------------------------------------------- */ + +#include +#include "fix_store_kim.h" +#include "KIM_SimulatorModel.hpp" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +FixStoreKIM::FixStoreKIM(LAMMPS *lmp, int narg, char **arg) + : Fix(lmp, narg, arg), simulator_model(NULL), model_name(NULL) +{ + if (narg != 3) error->all(FLERR,"Illegal fix STORE/KIM command"); +} + +/* ---------------------------------------------------------------------- */ + +FixStoreKIM::~FixStoreKIM() +{ + // free associated storage + + if (simulator_model) { + KIM::SimulatorModel *sm = (KIM::SimulatorModel *)simulator_model; + KIM::SimulatorModel::Destroy(&sm); + simulator_model = NULL; + } + + if (model_name) { + char *mn = (char *)model_name; + delete[] mn; + model_name = NULL; + } +} + +/* ---------------------------------------------------------------------- */ + +int FixStoreKIM::setmask() +{ + int mask = 0; + return mask; +} + + +/* ---------------------------------------------------------------------- */ + +void FixStoreKIM::setptr(const char *name, void *ptr) +{ + if (strcmp(name,"simulator_model") == 0) { + if (simulator_model) { + KIM::SimulatorModel *sm = (KIM::SimulatorModel *)simulator_model; + KIM::SimulatorModel::Destroy(&sm); + } + simulator_model = ptr; + } else if (strcmp(name,"model_name") == 0) { + if (model_name) { + char *mn = (char *)model_name; + delete[] mn; + } + model_name = ptr; + } +} + +/* ---------------------------------------------------------------------- */ + +void *FixStoreKIM::getptr(const char *name) +{ + if (strcmp(name,"simulator_model") == 0) return simulator_model; + else if (strcmp(name,"model_name") == 0) return model_name; + else return NULL; +} diff --git a/src/KIM/fix_store_kim.h b/src/KIM/fix_store_kim.h new file mode 100644 index 0000000000..04081fd6dc --- /dev/null +++ b/src/KIM/fix_store_kim.h @@ -0,0 +1,98 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing authors: Axel Kohlmeyer (Temple U), + Ryan S. Elliott (UMN) +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + 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 2 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 . + + Linking LAMMPS statically or dynamically with other modules is making a + combined work based on LAMMPS. Thus, the terms and conditions of the GNU + General Public License cover the whole combination. + + In addition, as a special exception, the copyright holders of LAMMPS give + you permission to combine LAMMPS with free software programs or libraries + that are released under the GNU LGPL and with code included in the standard + release of the "kim-api" under the CDDL (or modified versions of such code, + with unchanged license). You may copy and distribute such a system following + the terms of the GNU GPL for LAMMPS and the licenses of the other code + concerned, provided that you include the source code of that other code + when and as the GNU GPL requires distribution of source code. + + Note that people who make modified versions of LAMMPS are not obligated to + grant this special exception for their modified versions; it is their choice + whether to do so. The GNU General Public License gives permission to release + a modified version without this exception; this exception also makes it + possible to release a modified version which carries forward this exception. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Designed for use with the kim-api-2.0.2 (and newer) package +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS + +FixStyle(STORE/KIM,FixStoreKIM) + +#else + +#ifndef LMP_FIX_STORE_KIM_H +#define LMP_FIX_STORE_KIM_H + +#include +#include "fix.h" + +namespace LAMMPS_NS { + +class FixStoreKIM : public Fix { + public: + FixStoreKIM(class LAMMPS *, int, char **); + ~FixStoreKIM(); + int setmask(); + + void setptr(const char *, void *); + void *getptr(const char *); + + private: + void *simulator_model; // pointer to KIM simulator model class + void *model_name; // string of KIM model name +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +*/ diff --git a/src/KIM/kim_query.cpp b/src/KIM/kim_query.cpp index fedc976110..e4818abc94 100644 --- a/src/KIM/kim_query.cpp +++ b/src/KIM/kim_query.cpp @@ -11,7 +11,6 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ - /* ---------------------------------------------------------------------- Contributing authors: Axel Kohlmeyer (Temple U), Ryan S. Elliott (UMN) diff --git a/src/KIM/kim_style.cpp b/src/KIM/kim_style.cpp new file mode 100644 index 0000000000..865f6827ab --- /dev/null +++ b/src/KIM/kim_style.cpp @@ -0,0 +1,286 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing authors: Axel Kohlmeyer (Temple U), + Ryan S. Elliott (UMN) +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + 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 2 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 . + + Linking LAMMPS statically or dynamically with other modules is making a + combined work based on LAMMPS. Thus, the terms and conditions of the GNU + General Public License cover the whole combination. + + In addition, as a special exception, the copyright holders of LAMMPS give + you permission to combine LAMMPS with free software programs or libraries + that are released under the GNU LGPL and with code included in the standard + release of the "kim-api" under the CDDL (or modified versions of such code, + with unchanged license). You may copy and distribute such a system following + the terms of the GNU GPL for LAMMPS and the licenses of the other code + concerned, provided that you include the source code of that other code + when and as the GNU GPL requires distribution of source code. + + Note that people who make modified versions of LAMMPS are not obligated to + grant this special exception for their modified versions; it is their choice + whether to do so. The GNU General Public License gives permission to release + a modified version without this exception; this exception also makes it + possible to release a modified version which carries forward this exception. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Designed for use with the kim-api-2.0.2 (and newer) package +------------------------------------------------------------------------- */ + +#include +#include +#include "kim_style.h" +#include "error.h" +#include "atom.h" +#include "comm.h" +#include "domain.h" +#include "modify.h" +#include "update.h" +#include "universe.h" +#include "input.h" +#include "fix_store_kim.h" + +#include "KIM_SimulatorModel.hpp" + + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +void KimStyle::command(int narg, char **arg) +{ + if (narg < 2) error->all(FLERR,"Illegal kim_style command"); + + if (strcmp(arg[0],"init") == 0) { + if (narg > 2) error->all(FLERR,"Illegal kim_style init command"); + if (domain->box_exist) + error->all(FLERR,"Must use 'kim_style init' command before " + "simulation box is defined"); + int len = strlen(arg[1])+1; + char *model = new char[len]; + strcpy(model,arg[1]); + do_init(model); + } else if (strcmp(arg[0],"define") == 0) { + if (!domain->box_exist) + error->all(FLERR,"Must use 'kim_style define' command after " + "simulation box is defined"); + do_defn(narg-1,arg+1); + } else error->all(FLERR,"Illegal kim_style command"); +} + + +/* ---------------------------------------------------------------------- */ + +void KimStyle::do_init(char *model) +{ + // create storage proxy fix. delete existing fix, if needed. + + int ifix = modify->find_fix("KIM_MODEL_STORE"); + if (ifix >= 0) modify->delete_fix(ifix); + input->one("fix KIM_MODEL_STORE all STORE/KIM"); + ifix = modify->find_fix("KIM_MODEL_STORE"); + + FixStoreKIM *fix_store = (FixStoreKIM *) modify->fix[ifix]; + fix_store->setptr("model_name", (void *) model); + + int kimerror; + KIM::SimulatorModel * simulatorModel; + kimerror = KIM::SimulatorModel::Create(model,&simulatorModel); + + // not a Kim Simulator Model; nothing else to do here. + if (kimerror) return; + + fix_store->setptr("simulator_model", (void *) simulatorModel); + + // need to call this to have access to (some) simulator model init data. + simulatorModel->CloseTemplateMap(); + + int sim_fields, sim_lines; + const std::string *sim_field, *sim_value; + simulatorModel->GetNumberOfSimulatorFields(&sim_fields); + + // set units + for (int i=0; i < sim_fields; ++i) { + simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); + if (*sim_field == "units") { + simulatorModel->GetSimulatorFieldLine(i,0,&sim_value); + std::string cmd("units "); + cmd += *sim_value; + input->one(cmd.c_str()); + break; + } + } + + // init model + for (int i=0; i < sim_fields; ++i) { + simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); + if (*sim_field == "model-init") { + for (int j=0; j < sim_lines; ++j) { + simulatorModel->GetSimulatorFieldLine(i,j,&sim_value); + input->one(sim_value->c_str()); + } + break; + } + } + + // reset template map. + simulatorModel->ClearTemplateMap(); +} + +/* ---------------------------------------------------------------------- */ + +void KimStyle::do_defn(int narg, char **arg) +{ + if (narg != atom->ntypes + 1) + error->all(FLERR,"Incorrect number of arguments for kim_style define command"); + + char *model = arg[0]; + KIM::SimulatorModel *simulatorModel(NULL); + int kimerror; + + // check if we had a kim_style init command by finding fix STORE/KIM + // retrieve model name and pointer to simulator model class instance. + // validate model name if not given as NULL. + // if kim_style init wasn't run try to initialize simulator model now. + + int ifix = modify->find_fix("KIM_MODEL_STORE"); + if (ifix >= 0) { + FixStoreKIM *fix_store = (FixStoreKIM *) modify->fix[ifix]; + if (strcmp(model,"NULL") == 0) + model = (char *)fix_store->getptr("model_name"); + else if (strcmp(model,(const char*)fix_store->getptr("model_name")) != 0) + error->all(FLERR,"Inconsistent KIM model name"); + + simulatorModel = (KIM::SimulatorModel *)fix_store->getptr("simulator_model"); + } else { + + kimerror = KIM::SimulatorModel::Create(model,&simulatorModel); + if (kimerror) simulatorModel = NULL; + } + + if (simulatorModel) { + + const std::string *sim_name, *sim_version; + std::string atom_type_sym_list; + + simulatorModel->GetSimulatorName(&sim_name); + simulatorModel->GetSimulatorVersion(&sim_version); + + if (comm->me == 0) { + std::string mesg("Using KIM Simulator Model : "); + mesg += model; + mesg += "\n"; + mesg += "For Simulator : "; + mesg += *sim_name + " " + *sim_version + "\n"; + mesg += "Running on : LAMMPS "; + mesg += universe->version; + mesg += "\n"; + + if (screen) fputs(mesg.c_str(),screen); + if (logfile) fputs(mesg.c_str(),logfile); + } + + if (*sim_name != "LAMMPS") + error->all(FLERR,"Incompatible KIM Simulator Model"); + + for (int i = 1; i < narg; i++) + atom_type_sym_list += std::string(" ") + arg[i]; + + simulatorModel->AddTemplateMap("atom-type-sym-list",atom_type_sym_list); + simulatorModel->CloseTemplateMap(); + + int len = strlen(atom_type_sym_list.c_str())+1; + char *strbuf = new char[len]; + char *strword; + + // validate species selection + + int sim_num_species; + const std::string *sim_species; + simulatorModel->GetNumberOfSupportedSpecies(&sim_num_species); + for (int i=0; i < sim_num_species; ++i) { + simulatorModel->GetSupportedSpecies(i, &sim_species); + strcpy(strbuf,atom_type_sym_list.c_str()); + strword = strtok(strbuf," \t"); + while (strword) { + if ((strcmp(strword,"NULL") != 0) && (strcmp(sim_species->c_str(),strword) != 0)) + error->all(FLERR,"Species not supported by KIM Simulator Model"); + strword = strtok(NULL," \t"); + } + } + delete[] strbuf; + + int sim_fields, sim_lines; + const std::string *sim_field, *sim_value; + simulatorModel->GetNumberOfSimulatorFields(&sim_fields); + for (int i=0; i < sim_fields; ++i) { + simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); + if (*sim_field == "units") { + simulatorModel->GetSimulatorFieldLine(i,0,&sim_value); + if (*sim_value != update->unit_style) + error->all(FLERR,"Incompatible units for KIM Simulator Model"); + break; + } + } + + int sim_model_idx=-1; + for (int i=0; i < sim_fields; ++i) { + simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); + if (*sim_field == "model-defn") { + sim_model_idx = i; + for (int j=0; j < sim_lines; ++j) { + simulatorModel->GetSimulatorFieldLine(sim_model_idx,j,&sim_value); + input->one(sim_value->c_str()); + } + } + } + + if (sim_model_idx < 0) + error->all(FLERR,"KIM Simulator Model has no Model definition"); + + } else { + + // not a simulator model. issue pair_style and pair_coeff commands. + // NOTE: all references to arg must appear before calls to input->one() + // as that will reset the argument vector. + + std::string cmd1("pair_style kim "); + cmd1 += model; + + std::string cmd2("pair_coeff * * "); + for (int i=1; i < narg; ++i) { + cmd2 += arg[i]; + cmd2 += " "; + } + + input->one(cmd1.c_str()); + input->one(cmd2.c_str()); + } +} diff --git a/src/KIM/kim_style.h b/src/KIM/kim_style.h new file mode 100644 index 0000000000..588de6e620 --- /dev/null +++ b/src/KIM/kim_style.h @@ -0,0 +1,87 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing authors: Axel Kohlmeyer (Temple U), + Ryan S. Elliott (UMN) +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + 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 2 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 . + + Linking LAMMPS statically or dynamically with other modules is making a + combined work based on LAMMPS. Thus, the terms and conditions of the GNU + General Public License cover the whole combination. + + In addition, as a special exception, the copyright holders of LAMMPS give + you permission to combine LAMMPS with free software programs or libraries + that are released under the GNU LGPL and with code included in the standard + release of the "kim-api" under the CDDL (or modified versions of such code, + with unchanged license). You may copy and distribute such a system following + the terms of the GNU GPL for LAMMPS and the licenses of the other code + concerned, provided that you include the source code of that other code + when and as the GNU GPL requires distribution of source code. + + Note that people who make modified versions of LAMMPS are not obligated to + grant this special exception for their modified versions; it is their choice + whether to do so. The GNU General Public License gives permission to release + a modified version without this exception; this exception also makes it + possible to release a modified version which carries forward this exception. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Designed for use with the kim-api-2.0.2 (and newer) package +------------------------------------------------------------------------- */ + +#ifdef COMMAND_CLASS + +CommandStyle(kim_style,KimStyle) + +#else + +#ifndef LMP_KIM_STYLE_H +#define LMP_KIM_STYLE_H + +#include "pointers.h" + +namespace LAMMPS_NS { + +class KimStyle : protected Pointers { + public: + KimStyle(class LAMMPS *lmp) : Pointers(lmp) {}; + void command(int, char **); + private: + void do_init(char *); + void do_defn(int, char **); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + + +*/ diff --git a/src/modify.cpp b/src/modify.cpp index 7f43f035d2..9f0457c9d0 100644 --- a/src/modify.cpp +++ b/src/modify.cpp @@ -793,7 +793,7 @@ void Modify::add_fix(int narg, char **arg, int trysuffix) const char *exceptions[] = {"GPU", "OMP", "INTEL", "property/atom", "cmap", "cmap3", "rx", - "deprecated", NULL}; + "deprecated", "STORE/KIM", NULL}; if (domain->box_exist == 0) { int m; -- GitLab From b91b3c18cffff347ca58f2d5cdef7052adf5875b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 May 2019 11:52:38 -0400 Subject: [PATCH 021/627] remove references to simulator models from pair style kim --- src/KIM/pair_kim.cpp | 269 ++++++------------------------------------- src/KIM/pair_kim.h | 13 +-- 2 files changed, 41 insertions(+), 241 deletions(-) diff --git a/src/KIM/pair_kim.cpp b/src/KIM/pair_kim.cpp index 626b7ccb1c..6251ebb6c7 100644 --- a/src/KIM/pair_kim.cpp +++ b/src/KIM/pair_kim.cpp @@ -92,7 +92,6 @@ PairKIM::PairKIM(LAMMPS *lmp) : chargeUnit(KIM_CHARGE_UNIT_unused), temperatureUnit(KIM_TEMPERATURE_UNIT_unused), timeUnit(KIM_TIME_UNIT_unused), - simulatorModel(NULL), pkim(NULL), pargs(NULL), kim_model_support_for_energy(KIM_SUPPORT_STATUS_notSupported), @@ -110,9 +109,7 @@ PairKIM::PairKIM(LAMMPS *lmp) : kim_particleSpecies(NULL), kim_particleContributing(NULL), lmps_stripped_neigh_list(NULL), - lmps_stripped_neigh_ptr(NULL), - simulator_class(NULL), - simulator_style(NULL) + lmps_stripped_neigh_ptr(NULL) { // Initialize Pair data members to appropriate values single_enable = 0; // We do not provide the Single() function @@ -136,15 +133,6 @@ PairKIM::~PairKIM() // clean up kim_modelname if (kim_modelname != 0) delete [] kim_modelname; - if (simulatorModel) { - KIM::SimulatorModel::Destroy(&simulatorModel); - delete simulator_class; - - // clean up KIM interface (if necessary) - kim_free(); - return; - } - // clean up lammps atom species number to unique particle names mapping if (lmps_unique_elements) for (int i = 0; i < lmps_num_unique_elements; i++) @@ -342,33 +330,6 @@ void PairKIM::settings(int narg, char **arg) // initialize KIM Model kim_init(); - - // Set up and initialize LAMMPS Simulator model - - if (simulatorModel) { - const std::string *sim_name, *sim_version; - std::string atom_type_sym_list; - - simulatorModel->GetSimulatorName(&sim_name); - simulatorModel->GetSimulatorVersion(&sim_version); - - if (comm->me == 0) { - std::string mesg("Using KIM Simulator Model : "); - mesg += kim_modelname; - mesg += "\n"; - mesg += "For Simulator : "; - mesg += *sim_name + " " + *sim_version + "\n"; - mesg += "Running on : LAMMPS "; - mesg += universe->version; - mesg += "\n"; - - if (screen) fputs(mesg.c_str(),screen); - if (logfile) fputs(mesg.c_str(),logfile); - } - - if (*sim_name != "LAMMPS") - error->all(FLERR,"Incompatible KIM Simulator Model"); - } } /* ---------------------------------------------------------------------- @@ -441,154 +402,29 @@ void PairKIM::coeff(int narg, char **arg) if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); - if (simulatorModel) { - simulatorModel->AddTemplateMap("atom-type-sym-list",atom_type_sym_list); - simulatorModel->CloseTemplateMap(); - - int len = strlen(atom_type_sym_list.c_str())+1; - char *strbuf = new char[len]; - char *strword; - - // validate species selection - - int sim_num_species; - const std::string *sim_species; - simulatorModel->GetNumberOfSupportedSpecies(&sim_num_species); - for (int i=0; i < sim_num_species; ++i) { - simulatorModel->GetSupportedSpecies(i, &sim_species); - strcpy(strbuf,atom_type_sym_list.c_str()); - strword = strtok(strbuf," \t"); - while (strword) { - if ((strcmp(strword,"NULL") != 0) && (strcmp(sim_species->c_str(),strword) != 0)) - error->all(FLERR,"Species not supported by KIM Simulator Model"); - strword = strtok(NULL," \t"); - } - } - - int sim_fields, sim_lines; - const std::string *sim_field, *sim_value; - simulatorModel->GetNumberOfSimulatorFields(&sim_fields); - for (int i=0; i < sim_fields; ++i) { - simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); - if (*sim_field == "units") { - simulatorModel->GetSimulatorFieldLine(i,0,&sim_value); - if (*sim_value != update->unit_style) - error->all(FLERR,"Incompatible units for KIM Simulator Model"); - break; - } - } - - for (int i=0; i < sim_fields; ++i) { - simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); - if (*sim_field == "model-init") { - for (int j=0; j < sim_lines; ++j) { - simulatorModel->GetSimulatorFieldLine(i,j,&sim_value); - input->one(sim_value->c_str()); - } - break; - } - } - - int sim_model_idx=-1; - for (int i=0; i < sim_fields; ++i) { - simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); - if (*sim_field == "model-defn") { - sim_model_idx = i; - break; - } - } - - if (sim_model_idx < 0) - error->all(FLERR,"KIM Simulator Model has no Model definition"); - else { - for (int j=0; j < sim_lines; ++j) { - simulatorModel->GetSimulatorFieldLine(sim_model_idx,j,&sim_value); - if (utils::strmatch(*sim_value,"^pair_style")) { - char *ptr,*sim_style; - char *style_args[64]; - int style_narg = 0; - int len = strlen(sim_value->c_str())+1; - char *stylecmd = new char[len]; - strcpy(stylecmd,sim_value->c_str()); - - // ignore first word (pair_style) - strtok(stylecmd," \t"); - ptr = sim_style = strtok(NULL," \t"); - while (ptr && (style_narg < 63)) { - ptr = strtok(NULL," \t"); - if (!ptr) break; - style_args[style_narg] = ptr; - ++style_narg; - } - - int dummy; - delete simulator_class; - simulator_class = force->new_pair(sim_style,1,dummy); - if (simulator_class) { - if (comm->me == 0) { - std::string mesg("Created KIM Simulator Model pair style: "); - mesg += sim_style; - mesg += "\n"; - - if (screen) fputs(mesg.c_str(),screen); - if (logfile) fputs(mesg.c_str(),logfile); - } - } else { - error->all(FLERR,"Failure to create simulator model pair style"); - } - simulator_class->settings(style_narg,style_args); - delete[] stylecmd; - } - } - for (int j=0; j < sim_lines; ++j) { - simulatorModel->GetSimulatorFieldLine(sim_model_idx,j,&sim_value); - if (utils::strmatch(*sim_value,"^pair_coeff")) { - char *ptr; - char *coeff_args[64]; - int coeff_narg = 0; - int len = strlen(sim_value->c_str())+1; - char *coeffcmd = new char[len]; - strcpy(coeffcmd,sim_value->c_str()); - - // ignore first word (pair_coeff) - strtok(coeffcmd," \t"); - ptr = strtok(NULL," \t"); - while (ptr && (coeff_narg < 63)) { - coeff_args[coeff_narg] = ptr; - ++coeff_narg; - ptr = strtok(NULL," \t"); - } - - simulator_class->coeff(coeff_narg,coeff_args); - delete[] coeffcmd; - } - } - } - error->all(FLERR,(simulatorModel->ToString()).c_str()); - } else { - // setup mapping between LAMMPS unique elements and KIM species codes - if (kim_particle_codes_ok) { - delete [] kim_particle_codes; - kim_particle_codes = NULL; - kim_particle_codes_ok = false; - } - kim_particle_codes = new int[lmps_num_unique_elements]; - kim_particle_codes_ok = true; - for(int i = 0; i < lmps_num_unique_elements; i++) { - int supported; - int code; - KIM_Model_GetSpeciesSupportAndCode( - pkim, - KIM_SpeciesName_FromString(lmps_unique_elements[i]), - &supported, - &code); - if (supported) { - kim_particle_codes[i] = code; - } else { - std::string msg("create_kim_particle_codes: symbol not found: "); - msg += lmps_unique_elements[i]; - error->all(FLERR, msg.c_str()); - } + // setup mapping between LAMMPS unique elements and KIM species codes + if (kim_particle_codes_ok) { + delete [] kim_particle_codes; + kim_particle_codes = NULL; + kim_particle_codes_ok = false; + } + kim_particle_codes = new int[lmps_num_unique_elements]; + kim_particle_codes_ok = true; + + for(int i = 0; i < lmps_num_unique_elements; i++) { + int supported; + int code; + KIM_Model_GetSpeciesSupportAndCode( + pkim, + KIM_SpeciesName_FromString(lmps_unique_elements[i]), + &supported, + &code); + if (supported) { + kim_particle_codes[i] = code; + } else { + std::string msg("create_kim_particle_codes: symbol not found: "); + msg += lmps_unique_elements[i]; + error->all(FLERR, msg.c_str()); } } } @@ -799,32 +635,6 @@ double PairKIM::memory_usage() return bytes; } -/* ---------------------------------------------------------------------- - simulator model support functions -------------------------------------------------------------------------- */ - -void PairKIM::simulator_init() -{ - int dummy; - // do not try with suffixes for now. - simulator_class = force->new_pair("lj/cut",1,dummy); - force->store_style(simulator_style,"lj/cut",1); - printf("Simulator model init: %s -> %s\n", kim_modelname, simulator_style); - char **args = new char*[1]; - args[0] = (char *)"8.1500"; - simulator_class->settings(1,args); - delete[] args; -} - -void PairKIM::simulator_free() -{ - printf("Simulator model free: %s -> %s\n", kim_modelname, simulator_style); - delete[] simulator_style; - simulator_style = NULL; - delete simulator_class; - simulator_class = NULL; -} - /* ---------------------------------------------------------------------- KIM-specific interface ------------------------------------------------------------------------- */ @@ -902,26 +712,21 @@ void PairKIM::kim_init() kim_modelname, &requestedUnitsAccepted, &pkim); - if (kimerror) { - kimerror = KIM::SimulatorModel::Create(kim_modelname,&simulatorModel); - if (kimerror) error->all(FLERR,"KIM ModelCreate failed"); - else return; - } else { - if (!requestedUnitsAccepted) - error->all(FLERR,"KIM Model did not accept the requested unit system"); + if (kimerror) error->all(FLERR,"KIM ModelCreate failed"); + else if (!requestedUnitsAccepted) + error->all(FLERR,"KIM Model did not accept the requested unit system"); - // check that the model does not require unknown capabilities - kimerror = check_for_routine_compatibility(); - if (kimerror) - error->all(FLERR, - "KIM Model requires unknown Routines. Unable to proceed."); + // check that the model does not require unknown capabilities + kimerror = check_for_routine_compatibility(); + if (kimerror) + error->all(FLERR, + "KIM Model requires unknown Routines. Unable to proceed."); - kimerror = KIM_Model_ComputeArgumentsCreate(pkim, &pargs); - if (kimerror) { - KIM_Model_Destroy(&pkim); - error->all(FLERR,"KIM ComputeArgumentsCreate failed"); - } else kim_init_ok = true; - } + kimerror = KIM_Model_ComputeArgumentsCreate(pkim, &pargs); + if (kimerror) { + KIM_Model_Destroy(&pkim); + error->all(FLERR,"KIM ComputeArgumentsCreate failed"); + } else kim_init_ok = true; // determine KIM Model capabilities (used in this function below) set_kim_model_has_flags(); diff --git a/src/KIM/pair_kim.h b/src/KIM/pair_kim.h index 37a6be1e5b..aa33b9b271 100644 --- a/src/KIM/pair_kim.h +++ b/src/KIM/pair_kim.h @@ -69,7 +69,6 @@ class KIM_API_model; extern "C" { #include "KIM_SimulatorHeaders.h" } -#include "KIM_SimulatorModel.hpp" namespace LAMMPS_NS { @@ -121,7 +120,6 @@ class PairKIM : public Pair { KIM_TemperatureUnit temperatureUnit; KIM_TimeUnit timeUnit; - KIM::SimulatorModel * simulatorModel; KIM_Model * pkim; KIM_ComputeArguments * pargs; @@ -152,12 +150,6 @@ class PairKIM : public Pair { // is in molecular mode int** lmps_stripped_neigh_ptr; // pointer into lists - // LAMMPS Simulator model support - Pair *simulator_class; - char *simulator_style; - virtual void simulator_init(); - virtual void simulator_free(); - // KIM specific helper functions virtual void set_contributing(); virtual void kim_init(); @@ -191,7 +183,10 @@ The KIM model was unable, for some reason, to complete the computation. E: 'KIMvirial' or 'LAMMPSvirial' not supported with kim-api. -"KIMvirial or "LAMMPSvirial" found on the pair_style line. These keys are not supported kim-api. (The virial computation is always performed by LAMMPS.) Please remove these keys, make sure the KIM model you are using supports kim-api, and rerun. +"KIMvirial or "LAMMPSvirial" found on the pair_style line. These keys +are not supported kim-api. (The virial computation is always performed +by LAMMPS.) Please remove these keys, make sure the KIM model you are +using supports kim-api, and rerun. E: Illegal pair_style command -- GitLab From fc8a639d585c7325eb08e2044a274a3b514043d8 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 May 2019 19:39:15 -0400 Subject: [PATCH 022/627] add documentation for kim_style command. update a few KIM related doc files --- doc/src/Commands_all.txt | 1 + doc/src/Packages_details.txt | 11 +++-- doc/src/commands_list.txt | 1 + doc/src/kim_query.txt | 3 +- doc/src/kim_style.txt | 81 ++++++++++++++++++++++++++++++++++++ doc/src/lammps.book | 1 + doc/src/pair_kim.txt | 3 +- src/KIM/README | 6 +-- 8 files changed, 99 insertions(+), 8 deletions(-) create mode 100644 doc/src/kim_style.txt diff --git a/doc/src/Commands_all.txt b/doc/src/Commands_all.txt index 52c2e67e2e..d76ffac14c 100644 --- a/doc/src/Commands_all.txt +++ b/doc/src/Commands_all.txt @@ -69,6 +69,7 @@ An alphabetic list of all general LAMMPS commands. "include"_include.html, "jump"_jump.html, "kim_query"_kim_query.html, +"kim_style"_kim_style.html, "kspace_modify"_kspace_modify.html, "kspace_style"_kspace_style.html, "label"_label.html, diff --git a/doc/src/Packages_details.txt b/doc/src/Packages_details.txt index 352a38af84..19c7e96fe9 100644 --- a/doc/src/Packages_details.txt +++ b/doc/src/Packages_details.txt @@ -342,7 +342,10 @@ A "pair_style kim"_pair_kim.html command which is a wrapper on the Knowledge Base for Interatomic Models (KIM) repository of interatomic potentials, enabling any of them to be used in LAMMPS simulations. Also a "kim_query"_kim_query.html command, which allows to query -the OpenKIM database for stored properties. +the OpenKIM database for stored properties, and a +"kim_style"_kim_style.html command, which serves as a front end to +generating LAMMPS input on-the-fly for KIM simulator models and native +KIM models. To use this package you must have the KIM library available on your system. @@ -352,8 +355,10 @@ https://openkim.org. The KIM project is led by Ellad Tadmor and Ryan Elliott (U Minnesota). [Authors:] Ryan Elliott (U Minnesota) is the main developer for the KIM -API which the "pair_style kim"_pair_kim.html command uses. He -developed the pair style. +API which the "pair_style kim"_pair_kim.html command uses. He developed +the pair style. Axel Kohlmeyer (Temple U) contributed the +"kim_query"_kim_query.html and "kim_style"_kim_style.html commands in +close collaboration with Ryan. [Install:] diff --git a/doc/src/commands_list.txt b/doc/src/commands_list.txt index cf716df9ac..39d2f7c7d0 100644 --- a/doc/src/commands_list.txt +++ b/doc/src/commands_list.txt @@ -54,6 +54,7 @@ Commands :h1 info jump kim_query + kim_style kspace_modify kspace_style label diff --git a/doc/src/kim_query.txt b/doc/src/kim_query.txt index c581de0ebb..84eca6e676 100644 --- a/doc/src/kim_query.txt +++ b/doc/src/kim_query.txt @@ -43,4 +43,5 @@ See the "Build package"_Build_package.html doc page for more info. [Related commands:] -"pair_style kim"_pair_kim.html, "variable"_variable.html +"pair_style kim"_pair_kim.html, "kim_style"_kim_style.html, +"variable"_variable.html diff --git a/doc/src/kim_style.txt b/doc/src/kim_style.txt new file mode 100644 index 0000000000..ab605c017a --- /dev/null +++ b/doc/src/kim_style.txt @@ -0,0 +1,81 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Commands_all.html) + +:line + +kim_style command :h3 + +[Syntax:] + +kim_style mode model args :pre + +mode = {init} or {define} +model = name of the KIM model (potential or simulator model) or NULL +args = atom type to species mapping ({define} option only, one entry per atom type) :ul + +[Examples:] + +kim_style init ex_sim_model_Si_mod_tersoff +kim_style define NULL Si Si +kim_style define LennardJones_Ar Ar :pre + +[Description:] + +The kim_style command is a high-level wrapper around the +"Knowledge Base for Interatomic Models (OpenKIM)"_https://openkim.org +repository of interatomic potentials, so that they can be used by +LAMMPS scripts. It does not implement any computations directly, but +rather will generate LAMMPS input commands based on the information +retrieved from the OpenKIM repository. It is primarily meant to realize +so-called "KIM Simulator Models", which are OpenKIM repository entries +of models using native features of the simulation engine, i.e. LAMMPS +in this case, but it also supports realizing conventional KIM models +via the "pair_style kim"_pair_kim.html command. + +The kim_style command has two modes, {init} and {define}, indicated by +the first argument to the kim_style command. An {init} mode command +must be issued [before] the simulation box is created, while the {define} +mode version may only be used [after] the simulation box exists. The +{init} mode version is only required, if the KIM model requires it. +The second argument to the kim_style command is the KIM model ID. It +can be set to NULL in the kim_style define command, if it was already +set in a kim_style init command. Otherwise, the two model IDs must match. + +Only the kim_style define command allows additional arguments. Those +are used to map the atom types in LAMMPS to the available species in +the KIM model. This is equivalent to the arguments following +"pair_coeff * *" in a "kim"_pair_kim.html pair style. Thus the command + +kim_style define LennardJones_Ar Ar :pre + +will generate the LAMMPS input commands: + +pair_style kim LennardJones_Ar +pair_coeff * * Ar :pre + +For simulator models, the generated input commands may be more complex +and require that LAMMPS is built with the required packages included. +The commands generated by the kim_style command, can be copied to the +screen or log file, through the "echo"_echo.html command. +The kim_style command will also validate, that the selected simulator +model was generated for the LAMMPS MD code and not some other software. +In addition, the version strings for LAMMPS version used for defining +the simulator model and the LAMMPS version being currently run are +printed, so that it can be tracked down, if there are any incompatible +changes to input script or command syntax between the two LAMMPS versions. + +[Restrictions:] + +This command is part of the KIM package. It is only enabled if +LAMMPS was built with that package. Furthermore, its correct +functioning depends on compiling LAMMPS with all required packages +installed that are required by the commands embedded in any KIM +simulator models used. +See the "Build package"_Build_package.html doc page for more info. + +[Related commands:] + +"pair_style kim"_pair_kim.html, "kim_query"_kim_query.html diff --git a/doc/src/lammps.book b/doc/src/lammps.book index 500690597d..cedb6ea709 100644 --- a/doc/src/lammps.book +++ b/doc/src/lammps.book @@ -168,6 +168,7 @@ include.html info.html jump.html kim_query.html +kim_style.html label.html lattice.html log.html diff --git a/doc/src/pair_kim.txt b/doc/src/pair_kim.txt index a415ac606b..523bd89d7c 100644 --- a/doc/src/pair_kim.txt +++ b/doc/src/pair_kim.txt @@ -112,6 +112,7 @@ kim-api package version 2.0.0 and higher. [Related commands:] -"pair_coeff"_pair_coeff.html +"pair_coeff"_pair_coeff.html, "kim_style"_kim_style.html, +"kim_query"_kim_query.html [Default:] none diff --git a/src/KIM/README b/src/KIM/README index a69206596f..4f52d69a67 100644 --- a/src/KIM/README +++ b/src/KIM/README @@ -13,8 +13,8 @@ Using this package requires the KIM library and its models system. The library can be downloaded and built in lib/kim or elsewhere on your system, which must be done before bulding LAMMPS with this package. Details of the download, build, and install -process for KIM are given in the lib/kim/README file, and scripts will -soon be provided to help automate the process. Also see the LAMMPS +process for KIM are given in the lib/kim/README file, and scripts +are provided to help automate the process. Also see the LAMMPS manual for general information on building LAMMPS with external libraries. The settings in the Makefile.lammps file in lib/kim must be correct for LAMMPS to build correctly with this package installed. @@ -24,6 +24,6 @@ Makefile.lammps file usually will not need to be changed. Once you have successfully built LAMMPS with this package and the KIM library you can test it using an input file from the examples dir: -./lmp_serial < lammps/examples/kim/in.kim.lj +./lmp_serial -in lammps/examples/kim/in.kim.lj This pair_style was written by Ryan S. Elliott (U Minn). -- GitLab From ee5fa04732588646047111488bd5f4fec2870772 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 May 2019 22:41:28 -0400 Subject: [PATCH 023/627] create internal fix via modify->add_fix() so it does not get logged --- src/KIM/kim_style.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/KIM/kim_style.cpp b/src/KIM/kim_style.cpp index 865f6827ab..53bf2958b3 100644 --- a/src/KIM/kim_style.cpp +++ b/src/KIM/kim_style.cpp @@ -104,7 +104,11 @@ void KimStyle::do_init(char *model) int ifix = modify->find_fix("KIM_MODEL_STORE"); if (ifix >= 0) modify->delete_fix(ifix); - input->one("fix KIM_MODEL_STORE all STORE/KIM"); + char *fixarg[3]; + fixarg[0] = (char *)"KIM_MODEL_STORE"; + fixarg[1] = (char *)"all"; + fixarg[2] = (char *)"STORE/KIM"; + modify->add_fix(3,fixarg); ifix = modify->find_fix("KIM_MODEL_STORE"); FixStoreKIM *fix_store = (FixStoreKIM *) modify->fix[ifix]; -- GitLab From 5a929aff6ed77043341a396ecf30b25d14add523 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 May 2019 22:42:40 -0400 Subject: [PATCH 024/627] error out if kim_style init is required but wasn't called --- src/KIM/kim_style.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/KIM/kim_style.cpp b/src/KIM/kim_style.cpp index 53bf2958b3..d906d56041 100644 --- a/src/KIM/kim_style.cpp +++ b/src/KIM/kim_style.cpp @@ -240,17 +240,27 @@ void KimStyle::do_defn(int narg, char **arg) } } delete[] strbuf; - + + // check if units are unchanged, and if kim_style init was required + int sim_fields, sim_lines; const std::string *sim_field, *sim_value; simulatorModel->GetNumberOfSimulatorFields(&sim_fields); for (int i=0; i < sim_fields; ++i) { simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); + if (*sim_field == "units") { simulatorModel->GetSimulatorFieldLine(i,0,&sim_value); if (*sim_value != update->unit_style) error->all(FLERR,"Incompatible units for KIM Simulator Model"); - break; + } + + if ((ifix < 0) && ( *sim_field == "model-init")) { + for (int j=0; j < sim_lines; ++j) { + simulatorModel->GetSimulatorFieldLine(i,j,&sim_value); + if (*sim_value != "") + error->all(FLERR,"Must use 'kim_style init' with this model"); + } } } -- GitLab From c3897212e2fe7531c6cd37d0165b2c7a419f54da Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 May 2019 22:44:03 -0400 Subject: [PATCH 025/627] must call ClearTemplateMap(), so kim_style define may be called multiple times --- src/KIM/kim_style.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/KIM/kim_style.cpp b/src/KIM/kim_style.cpp index d906d56041..323832fbad 100644 --- a/src/KIM/kim_style.cpp +++ b/src/KIM/kim_style.cpp @@ -279,6 +279,7 @@ void KimStyle::do_defn(int narg, char **arg) if (sim_model_idx < 0) error->all(FLERR,"KIM Simulator Model has no Model definition"); + simulatorModel->ClearTemplateMap(); } else { // not a simulator model. issue pair_style and pair_coeff commands. -- GitLab From 264f6e1630e3d4730953c9ca4b169a5631de3d34 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 24 May 2019 22:44:41 -0400 Subject: [PATCH 026/627] whitespace cleanup --- src/KIM/kim_style.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/KIM/kim_style.cpp b/src/KIM/kim_style.cpp index 323832fbad..e8aee77b66 100644 --- a/src/KIM/kim_style.cpp +++ b/src/KIM/kim_style.cpp @@ -113,17 +113,19 @@ void KimStyle::do_init(char *model) FixStoreKIM *fix_store = (FixStoreKIM *) modify->fix[ifix]; fix_store->setptr("model_name", (void *) model); - + int kimerror; KIM::SimulatorModel * simulatorModel; kimerror = KIM::SimulatorModel::Create(model,&simulatorModel); // not a Kim Simulator Model; nothing else to do here. + if (kimerror) return; fix_store->setptr("simulator_model", (void *) simulatorModel); // need to call this to have access to (some) simulator model init data. + simulatorModel->CloseTemplateMap(); int sim_fields, sim_lines; @@ -131,6 +133,7 @@ void KimStyle::do_init(char *model) simulatorModel->GetNumberOfSimulatorFields(&sim_fields); // set units + for (int i=0; i < sim_fields; ++i) { simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); if (*sim_field == "units") { @@ -143,6 +146,7 @@ void KimStyle::do_init(char *model) } // init model + for (int i=0; i < sim_fields; ++i) { simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); if (*sim_field == "model-init") { @@ -155,6 +159,7 @@ void KimStyle::do_init(char *model) } // reset template map. + simulatorModel->ClearTemplateMap(); } @@ -281,7 +286,7 @@ void KimStyle::do_defn(int narg, char **arg) simulatorModel->ClearTemplateMap(); } else { - + // not a simulator model. issue pair_style and pair_coeff commands. // NOTE: all references to arg must appear before calls to input->one() // as that will reset the argument vector. -- GitLab From 4619018eadc0f9e23bc347d5df53b745a15b60d0 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 May 2019 23:26:26 -0400 Subject: [PATCH 027/627] provide more simulator model variant input examples --- examples/kim/data.VOH | 118 ++++++++++++++++++ examples/kim/in.kim.VOH.simulator.model | 24 ++++ examples/kim/in.kim.ex_si_1.simulator_model | 69 ++++++++++ examples/kim/in.kim.ex_si_2.simulator_model | 69 ++++++++++ ...ulator-model => in.kim.lj.simulator-model} | 7 +- 5 files changed, 284 insertions(+), 3 deletions(-) create mode 100644 examples/kim/data.VOH create mode 100644 examples/kim/in.kim.VOH.simulator.model create mode 100644 examples/kim/in.kim.ex_si_1.simulator_model create mode 100644 examples/kim/in.kim.ex_si_2.simulator_model rename examples/kim/{in.kim.simulator-model => in.kim.lj.simulator-model} (88%) diff --git a/examples/kim/data.VOH b/examples/kim/data.VOH new file mode 100644 index 0000000000..c093705adc --- /dev/null +++ b/examples/kim/data.VOH @@ -0,0 +1,118 @@ +# VOH example + +100 atoms +4 atom types + +0 25.000 xlo xhi +0 25.000 ylo yhi +0 25.000 zlo zhi + +Masses + +1 1.0080 +2 12.0107 +3 15.9994 +4 50.9415 + +Atoms + + 1 2 0.0 12.35333 12.56112 11.08925 + 2 4 0.0 12.32916 12.62071 13.13099 + 3 3 0.0 14.09425 12.56218 13.76130 + 4 3 0.0 11.42814 11.10330 13.76732 + 5 3 0.0 11.63260 13.89286 13.64097 + 6 1 0.0 10.61647 11.29221 14.30535 + 7 1 0.0 14.38026 13.34626 14.29055 + 8 1 0.0 11.32479 12.58820 10.70253 + 9 1 0.0 12.90918 13.42567 10.69612 + 10 1 0.0 12.84043 11.63643 10.74688 + 11 2 0.0 0.93670 23.74637 24.45218 + 12 4 0.0 2.18151 24.36876 0.94725 + 13 3 0.0 3.93452 24.44779 0.28384 + 14 3 0.0 2.13668 23.10529 2.33362 + 15 3 0.0 1.76108 0.74666 1.48323 + 16 1 0.0 1.82070 23.45305 3.20745 + 17 1 0.0 4.35555 0.34186 0.31083 + 18 1 0.0 24.90472 23.68735 24.82586 + 19 1 0.0 0.97611 24.45631 23.61244 + 20 1 0.0 1.24583 22.75250 24.09589 + 21 2 0.0 2.25730 12.18969 18.74792 + 22 4 0.0 0.67140 13.31162 19.37385 + 23 3 0.0 0.71106 13.43250 21.24545 + 24 3 0.0 24.08603 12.44025 18.87949 + 25 3 0.0 0.70486 14.71920 18.75808 + 26 1 0.0 23.49516 12.95430 18.26686 + 27 1 0.0 0.79723 14.34808 21.60818 + 28 1 0.0 2.24383 12.10285 17.65239 + 29 1 0.0 3.19860 12.66607 19.06030 + 30 1 0.0 2.20214 11.18299 19.18774 + 31 2 0.0 9.32237 8.16220 23.74501 + 32 4 0.0 9.41775 7.26178 21.91463 + 33 3 0.0 8.54752 8.34565 20.65588 + 34 3 0.0 8.50942 5.62151 22.00137 + 35 3 0.0 10.87539 7.02683 21.48455 + 36 1 0.0 9.06507 4.82324 21.80615 + 37 1 0.0 9.11458 8.67119 19.91477 + 38 1 0.0 9.82196 7.53487 24.49616 + 39 1 0.0 9.81855 9.14254 23.70532 + 40 1 0.0 8.27176 8.30387 24.03831 + 41 2 0.0 9.10113 13.98748 23.44281 + 42 4 0.0 8.84954 12.89163 21.73780 + 43 3 0.0 10.01387 13.54293 20.42005 + 44 3 0.0 7.08992 13.11522 21.12954 + 45 3 0.0 9.12937 11.39982 21.99065 + 46 1 0.0 6.55309 12.28287 21.08224 + 47 1 0.0 10.67858 12.89258 20.08249 + 48 1 0.0 8.42108 13.62252 24.22498 + 49 1 0.0 10.13926 13.89766 23.79639 + 50 1 0.0 8.88118 15.04646 23.24289 + 51 2 0.0 17.73225 3.40708 8.28945 + 52 4 0.0 18.49877 5.29835 8.37599 + 53 3 0.0 19.48472 5.62627 6.81505 + 54 3 0.0 19.66498 5.40961 9.84118 + 55 3 0.0 17.38120 6.34466 8.51889 + 56 1 0.0 19.41208 6.07779 10.52927 + 57 1 0.0 19.15960 6.37609 6.25924 + 58 1 0.0 17.15579 3.19557 9.20103 + 59 1 0.0 17.07197 3.31049 7.41454 + 60 1 0.0 18.54903 2.67524 8.20436 + 61 2 0.0 5.18346 20.97409 24.28840 + 62 4 0.0 7.06396 20.17968 24.34847 + 63 3 0.0 7.63220 19.82889 22.59578 + 64 3 0.0 7.00272 18.55243 0.28036 + 65 3 0.0 8.05085 21.13715 0.03620 + 66 1 0.0 7.56109 18.51690 1.09952 + 67 1 0.0 8.44257 20.31624 22.30833 + 68 1 0.0 4.83239 21.17976 0.30904 + 69 1 0.0 5.19182 21.91237 23.71419 + 70 1 0.0 4.49282 20.26573 23.80772 + 71 2 0.0 21.82701 12.79861 20.63056 + 72 4 0.0 21.27646 11.09990 19.63611 + 73 3 0.0 19.52930 10.64327 20.13923 + 74 3 0.0 22.41924 9.70346 20.14638 + 75 3 0.0 21.34556 11.30206 18.11274 + 76 1 0.0 22.94464 9.30084 19.40876 + 77 1 0.0 18.86743 10.62817 19.40629 + 78 1 0.0 22.85378 13.07853 20.35349 + 79 1 0.0 21.14666 13.62206 20.37063 + 80 1 0.0 21.78702 12.62668 21.71522 + 81 2 0.0 4.84801 10.63893 5.85720 + 82 4 0.0 2.99668 11.06158 5.10490 + 83 3 0.0 3.09505 11.09458 3.23258 + 84 3 0.0 2.48053 12.76555 5.69567 + 85 3 0.0 1.96195 10.01780 5.55634 + 86 1 0.0 1.65323 12.78746 6.24245 + 87 1 0.0 2.52753 10.43264 2.76734 + 88 1 0.0 4.80984 10.62196 6.95551 + 89 1 0.0 5.18492 9.65688 5.49273 + 90 1 0.0 5.56737 11.40648 5.53568 + 91 2 0.0 13.58126 9.47098 19.40329 + 92 4 0.0 14.17691 10.17243 21.22692 + 93 3 0.0 14.44428 12.02521 21.10583 + 94 3 0.0 15.81206 9.37183 21.67632 + 95 3 0.0 13.12907 9.86545 22.30960 + 96 1 0.0 15.80034 8.83149 22.50703 + 97 1 0.0 13.87232 12.57457 21.69672 + 98 1 0.0 13.42563 8.38456 19.45392 + 99 1 0.0 12.63978 9.95672 19.10431 + 100 1 0.0 14.35123 9.68789 18.64825 diff --git a/examples/kim/in.kim.VOH.simulator.model b/examples/kim/in.kim.VOH.simulator.model new file mode 100644 index 0000000000..3803ceceba --- /dev/null +++ b/examples/kim/in.kim.VOH.simulator.model @@ -0,0 +1,24 @@ +# REAX potential for VOH system +# ..... + +units real +atom_style charge + +kim_style init Sim_LAMMPS_ReaxFF_ChenowethVanDuinPersson_2008_CHOV__SM_429148913211_000 + +read_data data.VOH + +kim_style define NULL H C O V + +neighbor 2 bin +neigh_modify every 10 delay 0 check no + +fix 1 all nve +fix 2 all qeq/reax 1 0.0 10.0 1e-6 param.qeq +fix 3 all temp/berendsen 500.0 500.0 100.0 + +timestep 0.25 + +#dump 1 all atom 30 dump.reax.voh + +run 300 diff --git a/examples/kim/in.kim.ex_si_1.simulator_model b/examples/kim/in.kim.ex_si_1.simulator_model new file mode 100644 index 0000000000..03f9c25a33 --- /dev/null +++ b/examples/kim/in.kim.ex_si_1.simulator_model @@ -0,0 +1,69 @@ + +units metal +kim_style init ex_sim_model_Si_mod_tersoff + +atom_style atomic +atom_modify map array +boundary p p p + +# temperatures +variable tlo equal 1800.0 +variable thi equal 2400.0 + +# coordination number cutoff + +variable r equal 2.835 + +# minimization parameters + +variable etol equal 1.0e-5 +variable ftol equal 1.0e-5 +variable maxiter equal 100 +variable maxeval equal 100 +variable dmax equal 1.0e-1 + +# diamond unit cell + +variable a equal 5.431 +lattice custom $a & + a1 1.0 0.0 0.0 & + a2 0.0 1.0 0.0 & + a3 0.0 0.0 1.0 & + basis 0.0 0.0 0.0 & + basis 0.0 0.5 0.5 & + basis 0.5 0.0 0.5 & + basis 0.5 0.5 0.0 & + basis 0.25 0.25 0.25 & + basis 0.25 0.75 0.75 & + basis 0.75 0.25 0.75 & + basis 0.75 0.75 0.25 + +region myreg block 0 4 & + 0 4 & + 0 4 +create_box 1 myreg +create_atoms 1 region myreg + +mass 1 28.06 + +group Si type 1 + +velocity all create ${thi} 5287286 mom yes rot yes dist gaussian + +# make a vacancy + +group del id 300 +delete_atoms group del +kim_style define ex_sim_model_Si_mod_tersoff Si + +thermo 10 + +fix 1 all nve +fix 2 all langevin ${thi} ${thi} 0.1 48278 + +timestep 1.0e-3 +neighbor 1.0 bin +neigh_modify every 1 delay 10 check yes + +run 100 + diff --git a/examples/kim/in.kim.ex_si_2.simulator_model b/examples/kim/in.kim.ex_si_2.simulator_model new file mode 100644 index 0000000000..18efd94222 --- /dev/null +++ b/examples/kim/in.kim.ex_si_2.simulator_model @@ -0,0 +1,69 @@ + +units metal +kim_style init ex_sim_model_Si_mod_tersoff + +atom_style atomic +atom_modify map array +boundary p p p + +# temperatures +variable tlo equal 1800.0 +variable thi equal 2400.0 + +# coordination number cutoff + +variable r equal 2.835 + +# minimization parameters + +variable etol equal 1.0e-5 +variable ftol equal 1.0e-5 +variable maxiter equal 100 +variable maxeval equal 100 +variable dmax equal 1.0e-1 + +# diamond unit cell + +variable a equal 5.431 +lattice custom $a & + a1 1.0 0.0 0.0 & + a2 0.0 1.0 0.0 & + a3 0.0 0.0 1.0 & + basis 0.0 0.0 0.0 & + basis 0.0 0.5 0.5 & + basis 0.5 0.0 0.5 & + basis 0.5 0.5 0.0 & + basis 0.25 0.25 0.25 & + basis 0.25 0.75 0.75 & + basis 0.75 0.25 0.75 & + basis 0.75 0.75 0.25 + +region myreg block 0 4 & + 0 4 & + 0 4 +create_box 1 myreg +create_atoms 1 region myreg + +mass 1 28.06 + +group Si type 1 + +velocity all create ${thi} 5287286 mom yes rot yes dist gaussian + +# make a vacancy + +group del id 300 +delete_atoms group del +kim_style define NULL Si + +thermo 10 + +fix 1 all nve +fix 2 all langevin ${thi} ${thi} 0.1 48278 + +timestep 1.0e-3 +neighbor 1.0 bin +neigh_modify every 1 delay 10 check yes + +run 100 + diff --git a/examples/kim/in.kim.simulator-model b/examples/kim/in.kim.lj.simulator-model similarity index 88% rename from examples/kim/in.kim.simulator-model rename to examples/kim/in.kim.lj.simulator-model index 1e6e9dec89..21d60a48d9 100644 --- a/examples/kim/in.kim.simulator-model +++ b/examples/kim/in.kim.lj.simulator-model @@ -16,18 +16,19 @@ variable zz equal 20*$z units metal atom_style atomic +newton on lattice fcc 4.4300 region box block 0 ${xx} 0 ${yy} 0 ${zz} -create_box 2 box +create_box 1 box create_atoms 1 box #pair_style lj/cut 8.1500 #pair_coeff 1 1 0.0104 3.4000 -kim_style define ex_sim_model_Si_mod_tersoff Si Si +kim_style define LennardJones_Ar Ar -mass * 39.95 +mass 1 39.95 velocity all create 200.0 232345 loop geom neighbor 0.3 bin -- GitLab From eb6287d2e8877c3b56af90b89a692c64d9a00036 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 May 2019 23:26:46 -0400 Subject: [PATCH 028/627] correctly check for supported species --- src/KIM/kim_style.cpp | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/KIM/kim_style.cpp b/src/KIM/kim_style.cpp index e8aee77b66..eac16f1a8a 100644 --- a/src/KIM/kim_style.cpp +++ b/src/KIM/kim_style.cpp @@ -232,17 +232,26 @@ void KimStyle::do_defn(int narg, char **arg) // validate species selection int sim_num_species; + bool species_is_supported; const std::string *sim_species; simulatorModel->GetNumberOfSupportedSpecies(&sim_num_species); - for (int i=0; i < sim_num_species; ++i) { - simulatorModel->GetSupportedSpecies(i, &sim_species); - strcpy(strbuf,atom_type_sym_list.c_str()); - strword = strtok(strbuf," \t"); - while (strword) { - if ((strcmp(strword,"NULL") != 0) && (strcmp(sim_species->c_str(),strword) != 0)) - error->all(FLERR,"Species not supported by KIM Simulator Model"); - strword = strtok(NULL," \t"); + strcpy(strbuf,atom_type_sym_list.c_str()); + strword = strtok(strbuf," \t"); + while (strword) { + species_is_supported = false; + if (strcmp(strword,"NULL") == 0) continue; + for (int i=0; i < sim_num_species; ++i) { + simulatorModel->GetSupportedSpecies(i, &sim_species); + if (strcmp(sim_species->c_str(),strword) == 0) + species_is_supported = true; } + if (!species_is_supported) { + std::string msg("Species '"); + msg += strword; + msg += "' is not supported by this KIM Simulator Model"; + error->all(FLERR,msg.c_str()); + } + strword = strtok(NULL," \t"); } delete[] strbuf; -- GitLab From b3a01694b7312989554f24817bd94e8ccca2a83d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 27 May 2019 23:34:05 -0400 Subject: [PATCH 029/627] remove leftover fix qeq/reax command --- examples/kim/in.kim.VOH.simulator.model | 1 - 1 file changed, 1 deletion(-) diff --git a/examples/kim/in.kim.VOH.simulator.model b/examples/kim/in.kim.VOH.simulator.model index 3803ceceba..a2dd6983c0 100644 --- a/examples/kim/in.kim.VOH.simulator.model +++ b/examples/kim/in.kim.VOH.simulator.model @@ -14,7 +14,6 @@ neighbor 2 bin neigh_modify every 10 delay 0 check no fix 1 all nve -fix 2 all qeq/reax 1 0.0 10.0 1e-6 param.qeq fix 3 all temp/berendsen 500.0 500.0 100.0 timestep 0.25 -- GitLab From 113b8b4be23bdbcfde5031144110a26d178f29a0 Mon Sep 17 00:00:00 2001 From: "Dan S. Bolintineanu" Date: Thu, 30 May 2019 14:21:11 -0600 Subject: [PATCH 030/627] Fixes two bugs in pair granular: 1. User-set cutoffs did not work 2. Restarts not working --- src/GRANULAR/pair_granular.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/GRANULAR/pair_granular.cpp b/src/GRANULAR/pair_granular.cpp index 903ed303b0..913f6f8b59 100644 --- a/src/GRANULAR/pair_granular.cpp +++ b/src/GRANULAR/pair_granular.cpp @@ -890,6 +890,7 @@ void PairGranular::coeff(int narg, char **arg) if (iarg + 1 >= narg) error->all(FLERR, "Illegal pair_coeff command, not enough parameters"); cutoff_one = force->numeric(FLERR,arg[iarg+1]); + iarg += 2; } else error->all(FLERR, "Illegal pair coeff command"); } @@ -1234,7 +1235,7 @@ void PairGranular::write_restart(FILE *fp) fwrite(&tangential_coeffs[i][j],sizeof(double),3,fp); fwrite(&roll_coeffs[i][j],sizeof(double),3,fp); fwrite(&twist_coeffs[i][j],sizeof(double),3,fp); - fwrite(&cut[i][j],sizeof(double),1,fp); + fwrite(&cutoff_type[i][j],sizeof(double),1,fp); } } } @@ -1264,7 +1265,7 @@ void PairGranular::read_restart(FILE *fp) fread(&tangential_coeffs[i][j],sizeof(double),3,fp); fread(&roll_coeffs[i][j],sizeof(double),3,fp); fread(&twist_coeffs[i][j],sizeof(double),3,fp); - fread(&cut[i][j],sizeof(double),1,fp); + fread(&cutoff_type[i][j],sizeof(double),1,fp); } MPI_Bcast(&normal_model[i][j],1,MPI_INT,0,world); MPI_Bcast(&damping_model[i][j],1,MPI_INT,0,world); @@ -1275,7 +1276,7 @@ void PairGranular::read_restart(FILE *fp) MPI_Bcast(&tangential_coeffs[i][j],3,MPI_DOUBLE,0,world); MPI_Bcast(&roll_coeffs[i][j],3,MPI_DOUBLE,0,world); MPI_Bcast(&twist_coeffs[i][j],3,MPI_DOUBLE,0,world); - MPI_Bcast(&cut[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&cutoff_type[i][j],1,MPI_DOUBLE,0,world); } } } -- GitLab From 24a63f0f31446f5a98a32325248cced2d1c6d21a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 30 May 2019 21:51:13 -0400 Subject: [PATCH 031/627] update kim_style command semantics as discussed in PR #1440 this also adds documentation of error messages in the kim_style header --- doc/src/kim_style.txt | 54 ++++++++------- ...lator.model => in.kim.VOH.simulator_model} | 2 +- ...tor_model => in.kim.ex_si.simulator_model} | 2 +- examples/kim/in.kim.ex_si_1.simulator_model | 69 ------------------- ...ulator-model => in.kim.lj.simulator_model} | 4 +- src/KIM/kim_style.cpp | 33 +++------ src/KIM/kim_style.h | 36 ++++++++++ 7 files changed, 81 insertions(+), 119 deletions(-) rename examples/kim/{in.kim.VOH.simulator.model => in.kim.VOH.simulator_model} (92%) rename examples/kim/{in.kim.ex_si_2.simulator_model => in.kim.ex_si.simulator_model} (98%) delete mode 100644 examples/kim/in.kim.ex_si_1.simulator_model rename examples/kim/{in.kim.lj.simulator-model => in.kim.lj.simulator_model} (92%) diff --git a/doc/src/kim_style.txt b/doc/src/kim_style.txt index ab605c017a..dcdfae1cdc 100644 --- a/doc/src/kim_style.txt +++ b/doc/src/kim_style.txt @@ -10,17 +10,18 @@ kim_style command :h3 [Syntax:] -kim_style mode model args :pre +kim_style mode args :pre -mode = {init} or {define} -model = name of the KIM model (potential or simulator model) or NULL -args = atom type to species mapping ({define} option only, one entry per atom type) :ul +mode = {init model} or {define typeargs} +model = name of the KIM model (KIM potential or KIM simulator model) +typeargs = atom type to species mapping (one entry per atom type) :ul [Examples:] kim_style init ex_sim_model_Si_mod_tersoff -kim_style define NULL Si Si -kim_style define LennardJones_Ar Ar :pre +kim_style define Si Si +kim_style init LennardJones_Ar +kim_style define Ar :pre [Description:] @@ -29,27 +30,34 @@ The kim_style command is a high-level wrapper around the repository of interatomic potentials, so that they can be used by LAMMPS scripts. It does not implement any computations directly, but rather will generate LAMMPS input commands based on the information -retrieved from the OpenKIM repository. It is primarily meant to realize -so-called "KIM Simulator Models", which are OpenKIM repository entries -of models using native features of the simulation engine, i.e. LAMMPS +retrieved from the OpenKIM repository. It is able to realize so-called +"KIM Simulator Models", which are OpenKIM repository entries of models +using native features of the simulation engine in use, i.e. LAMMPS in this case, but it also supports realizing conventional KIM models -via the "pair_style kim"_pair_kim.html command. +implicitly via generating a "pair_style kim"_pair_kim.html command +followed by a suitable "pair_coeff"_pair_coeff.html command. The kim_style command has two modes, {init} and {define}, indicated by the first argument to the kim_style command. An {init} mode command must be issued [before] the simulation box is created, while the {define} -mode version may only be used [after] the simulation box exists. The -{init} mode version is only required, if the KIM model requires it. -The second argument to the kim_style command is the KIM model ID. It -can be set to NULL in the kim_style define command, if it was already -set in a kim_style init command. Otherwise, the two model IDs must match. - -Only the kim_style define command allows additional arguments. Those -are used to map the atom types in LAMMPS to the available species in -the KIM model. This is equivalent to the arguments following -"pair_coeff * *" in a "kim"_pair_kim.html pair style. Thus the command - -kim_style define LennardJones_Ar Ar :pre +mode version may only be used [after] the simulation box exists. Both +are required. The {init} mode version sets the model name and may issue +additional commands changing LAMMPS default settings that are required +for using a selected simulator model. If needed, those settings can be +overridden. The second argument to the {kim_style init} command is the +KIM model ID. + +The {kim_style define} command will issue commands that will realize +the selected model (through generating pair_style and pair_coeff commands, +but also other commands, as required). It has to be issued [after] the +the simulation box is defined. The {kim_style define} command allows a +varying numbver of additional arguments. Those are used to map the atom +types in LAMMPS to the available species in the KIM model. This is +equivalent to the arguments following "pair_coeff * *" in a +"kim"_pair_kim.html pair style. Thus the commands: + +kim_style init LennardJones_Ar +kim_style define Ar :pre will generate the LAMMPS input commands: @@ -60,7 +68,7 @@ For simulator models, the generated input commands may be more complex and require that LAMMPS is built with the required packages included. The commands generated by the kim_style command, can be copied to the screen or log file, through the "echo"_echo.html command. -The kim_style command will also validate, that the selected simulator +The kim_style command will also validate, that a selected simulator model was generated for the LAMMPS MD code and not some other software. In addition, the version strings for LAMMPS version used for defining the simulator model and the LAMMPS version being currently run are diff --git a/examples/kim/in.kim.VOH.simulator.model b/examples/kim/in.kim.VOH.simulator_model similarity index 92% rename from examples/kim/in.kim.VOH.simulator.model rename to examples/kim/in.kim.VOH.simulator_model index a2dd6983c0..8696cf265a 100644 --- a/examples/kim/in.kim.VOH.simulator.model +++ b/examples/kim/in.kim.VOH.simulator_model @@ -8,7 +8,7 @@ kim_style init Sim_LAMMPS_ReaxFF_ChenowethVanDuinPersson_2008_CHOV__SM_429148913 read_data data.VOH -kim_style define NULL H C O V +kim_style define H C O V neighbor 2 bin neigh_modify every 10 delay 0 check no diff --git a/examples/kim/in.kim.ex_si_2.simulator_model b/examples/kim/in.kim.ex_si.simulator_model similarity index 98% rename from examples/kim/in.kim.ex_si_2.simulator_model rename to examples/kim/in.kim.ex_si.simulator_model index 18efd94222..2f9e79ef4e 100644 --- a/examples/kim/in.kim.ex_si_2.simulator_model +++ b/examples/kim/in.kim.ex_si.simulator_model @@ -54,7 +54,7 @@ velocity all create ${thi} 5287286 mom yes rot yes dist gaussian group del id 300 delete_atoms group del -kim_style define NULL Si +kim_style define Si thermo 10 diff --git a/examples/kim/in.kim.ex_si_1.simulator_model b/examples/kim/in.kim.ex_si_1.simulator_model deleted file mode 100644 index 03f9c25a33..0000000000 --- a/examples/kim/in.kim.ex_si_1.simulator_model +++ /dev/null @@ -1,69 +0,0 @@ - -units metal -kim_style init ex_sim_model_Si_mod_tersoff - -atom_style atomic -atom_modify map array -boundary p p p - -# temperatures -variable tlo equal 1800.0 -variable thi equal 2400.0 - -# coordination number cutoff - -variable r equal 2.835 - -# minimization parameters - -variable etol equal 1.0e-5 -variable ftol equal 1.0e-5 -variable maxiter equal 100 -variable maxeval equal 100 -variable dmax equal 1.0e-1 - -# diamond unit cell - -variable a equal 5.431 -lattice custom $a & - a1 1.0 0.0 0.0 & - a2 0.0 1.0 0.0 & - a3 0.0 0.0 1.0 & - basis 0.0 0.0 0.0 & - basis 0.0 0.5 0.5 & - basis 0.5 0.0 0.5 & - basis 0.5 0.5 0.0 & - basis 0.25 0.25 0.25 & - basis 0.25 0.75 0.75 & - basis 0.75 0.25 0.75 & - basis 0.75 0.75 0.25 - -region myreg block 0 4 & - 0 4 & - 0 4 -create_box 1 myreg -create_atoms 1 region myreg - -mass 1 28.06 - -group Si type 1 - -velocity all create ${thi} 5287286 mom yes rot yes dist gaussian - -# make a vacancy - -group del id 300 -delete_atoms group del -kim_style define ex_sim_model_Si_mod_tersoff Si - -thermo 10 - -fix 1 all nve -fix 2 all langevin ${thi} ${thi} 0.1 48278 - -timestep 1.0e-3 -neighbor 1.0 bin -neigh_modify every 1 delay 10 check yes - -run 100 - diff --git a/examples/kim/in.kim.lj.simulator-model b/examples/kim/in.kim.lj.simulator_model similarity index 92% rename from examples/kim/in.kim.lj.simulator-model rename to examples/kim/in.kim.lj.simulator_model index 21d60a48d9..15b26c3c64 100644 --- a/examples/kim/in.kim.lj.simulator-model +++ b/examples/kim/in.kim.lj.simulator_model @@ -18,6 +18,8 @@ units metal atom_style atomic newton on +kim_style init LennardJones_Ar + lattice fcc 4.4300 region box block 0 ${xx} 0 ${yy} 0 ${zz} create_box 1 box @@ -26,7 +28,7 @@ create_atoms 1 box #pair_style lj/cut 8.1500 #pair_coeff 1 1 0.0104 3.4000 -kim_style define LennardJones_Ar Ar +kim_style define Ar mass 1 39.95 velocity all create 200.0 232345 loop geom diff --git a/src/KIM/kim_style.cpp b/src/KIM/kim_style.cpp index eac16f1a8a..856fb94c9e 100644 --- a/src/KIM/kim_style.cpp +++ b/src/KIM/kim_style.cpp @@ -79,7 +79,7 @@ void KimStyle::command(int narg, char **arg) if (narg < 2) error->all(FLERR,"Illegal kim_style command"); if (strcmp(arg[0],"init") == 0) { - if (narg > 2) error->all(FLERR,"Illegal kim_style init command"); + if (narg > 2) error->all(FLERR,"Illegal kim_style command"); if (domain->box_exist) error->all(FLERR,"Must use 'kim_style init' command before " "simulation box is defined"); @@ -167,10 +167,10 @@ void KimStyle::do_init(char *model) void KimStyle::do_defn(int narg, char **arg) { - if (narg != atom->ntypes + 1) - error->all(FLERR,"Incorrect number of arguments for kim_style define command"); + if (narg != atom->ntypes) + error->all(FLERR,"Illegal kim_style command"); - char *model = arg[0]; + char *model = NULL; KIM::SimulatorModel *simulatorModel(NULL); int kimerror; @@ -182,17 +182,9 @@ void KimStyle::do_defn(int narg, char **arg) int ifix = modify->find_fix("KIM_MODEL_STORE"); if (ifix >= 0) { FixStoreKIM *fix_store = (FixStoreKIM *) modify->fix[ifix]; - if (strcmp(model,"NULL") == 0) - model = (char *)fix_store->getptr("model_name"); - else if (strcmp(model,(const char*)fix_store->getptr("model_name")) != 0) - error->all(FLERR,"Inconsistent KIM model name"); - + model = (char *)fix_store->getptr("model_name"); simulatorModel = (KIM::SimulatorModel *)fix_store->getptr("simulator_model"); - } else { - - kimerror = KIM::SimulatorModel::Create(model,&simulatorModel); - if (kimerror) simulatorModel = NULL; - } + } else error->all(FLERR,"Must use 'kim_style init' before 'kim_style define'"); if (simulatorModel) { @@ -219,7 +211,7 @@ void KimStyle::do_defn(int narg, char **arg) if (*sim_name != "LAMMPS") error->all(FLERR,"Incompatible KIM Simulator Model"); - for (int i = 1; i < narg; i++) + for (int i = 0; i < narg; i++) atom_type_sym_list += std::string(" ") + arg[i]; simulatorModel->AddTemplateMap("atom-type-sym-list",atom_type_sym_list); @@ -268,14 +260,6 @@ void KimStyle::do_defn(int narg, char **arg) if (*sim_value != update->unit_style) error->all(FLERR,"Incompatible units for KIM Simulator Model"); } - - if ((ifix < 0) && ( *sim_field == "model-init")) { - for (int j=0; j < sim_lines; ++j) { - simulatorModel->GetSimulatorFieldLine(i,j,&sim_value); - if (*sim_value != "") - error->all(FLERR,"Must use 'kim_style init' with this model"); - } - } } int sim_model_idx=-1; @@ -294,6 +278,7 @@ void KimStyle::do_defn(int narg, char **arg) error->all(FLERR,"KIM Simulator Model has no Model definition"); simulatorModel->ClearTemplateMap(); + } else { // not a simulator model. issue pair_style and pair_coeff commands. @@ -304,7 +289,7 @@ void KimStyle::do_defn(int narg, char **arg) cmd1 += model; std::string cmd2("pair_coeff * * "); - for (int i=1; i < narg; ++i) { + for (int i=0; i < narg; ++i) { cmd2 += arg[i]; cmd2 += " "; } diff --git a/src/KIM/kim_style.h b/src/KIM/kim_style.h index 588de6e620..eddc22eebc 100644 --- a/src/KIM/kim_style.h +++ b/src/KIM/kim_style.h @@ -83,5 +83,41 @@ class KimStyle : protected Pointers { /* ERROR/WARNING messages: +E: Illegal kim_style command + +Incorrect number or kind of arguments to kim_style + +E: Must use 'kim_style init' command before simulation box is defined + +Self-explanatory + +E: Must use 'kim_style define' command after simulation box is defined + +Self-explanatory + +E: Must use 'kim_style init' command before 'kim_style define' + +Self-explanatory + +E: Incompatible KIM Simulator Model + +The requested KIM Simulator Model was defined for a different MD code +and thus is not compatible with LAMMPS + +E: Species XXX is not supported by this KIM Simulator Model + +The kim_style define command was referencing a species that is not +present in the requested KIM Simulator Model + +E: Incompatible units for KIM Simulator Model + +The selected unit style is not compatible with the requested KIM +Simulator Model + +E: KIM Simulator Model has no Model definition + +There is no model definition (key: model-defn) in the KIM Simulator +Model. Please contact the OpenKIM database maintainers to verify +and potentially correct this. */ -- GitLab From c9fe5810c1c0029e42fa3ef1d1b4d6b0ea0f1c32 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 30 May 2019 21:52:23 -0400 Subject: [PATCH 032/627] add log outputs for updated kim_style command input examples --- ...og.30Apr2019.kim.VOH.simulator_model.g++.1 | 92 ++++++++++++ ....30Apr2019.kim.ex_si.simulator_model.g++.1 | 132 ++++++++++++++++++ ....30Apr2019.kim.ex_si.simulator_model.g++.4 | 132 ++++++++++++++++++ ...log.30Apr2019.kim.lj.simulator_model.g++.1 | 104 ++++++++++++++ ...log.30Apr2019.kim.lj.simulator_model.g++.4 | 104 ++++++++++++++ 5 files changed, 564 insertions(+) create mode 100644 examples/kim/log.30Apr2019.kim.VOH.simulator_model.g++.1 create mode 100644 examples/kim/log.30Apr2019.kim.ex_si.simulator_model.g++.1 create mode 100644 examples/kim/log.30Apr2019.kim.ex_si.simulator_model.g++.4 create mode 100644 examples/kim/log.30Apr2019.kim.lj.simulator_model.g++.1 create mode 100644 examples/kim/log.30Apr2019.kim.lj.simulator_model.g++.4 diff --git a/examples/kim/log.30Apr2019.kim.VOH.simulator_model.g++.1 b/examples/kim/log.30Apr2019.kim.VOH.simulator_model.g++.1 new file mode 100644 index 0000000000..e9d1f17d76 --- /dev/null +++ b/examples/kim/log.30Apr2019.kim.VOH.simulator_model.g++.1 @@ -0,0 +1,92 @@ +LAMMPS (30 Apr 2019) + using 1 OpenMP thread(s) per MPI task +# REAX potential for VOH system +# ..... + +units real +atom_style charge + +kim_style init Sim_LAMMPS_ReaxFF_ChenowethVanDuinPersson_2008_CHOV__SM_429148913211_000 +units real +atom_style charge +neigh_modify one 4000 + +read_data data.VOH + orthogonal box = (0 0 0) to (25 25 25) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 100 atoms + read_data CPU = 0.000217199 secs + +kim_style define H C O V +Using KIM Simulator Model : Sim_LAMMPS_ReaxFF_ChenowethVanDuinPersson_2008_CHOV__SM_429148913211_000 +For Simulator : LAMMPS 28-Feb-2019 +Running on : LAMMPS 30 Apr 2019 +pair_style reax/c /tmp/kim-simulator-model-parameter-file-XXXXXXFRmlac safezone 2.0 mincap 100 +pair_coeff * * /tmp/kim-simulator-model-parameter-file-XXXXXX363kge H C O V +Reading potential file /tmp/kim-simulator-model-parameter-file-XXXXXX363kge with DATE: 2011-02-18 +WARNING: Changed valency_val to valency_boc for X (src/USER-REAXC/reaxc_ffield.cpp:311) +fix reaxqeq all qeq/reax 1 0.0 10.0 1.0e-6 /tmp/kim-simulator-model-parameter-file-XXXXXXzgDl49 + +neighbor 2 bin +neigh_modify every 10 delay 0 check no + +fix 1 all nve +fix 3 all temp/berendsen 500.0 500.0 100.0 + +timestep 0.25 + +#dump 1 all atom 30 dump.reax.voh + +run 300 +Neighbor list info ... + update every 10 steps, delay 0 steps, check no + max neighbors/atom: 4000, page size: 100000 + master list distance cutoff = 12 + ghost atom cutoff = 12 + binsize = 6, bins = 5 5 5 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair reax/c, perpetual + attributes: half, newton off, ghost + pair build: half/bin/newtoff/ghost + stencil: half/ghost/bin/3d/newtoff + bin: standard + (2) fix qeq/reax, perpetual, copy from (1) + attributes: half, newton off, ghost + pair build: copy + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 25.97 | 25.97 | 25.97 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 0 -10246.825 0 -10246.825 42.256089 + 300 199.45773 -10218.342 0 -10159.482 -66.730725 +Loop time of 1.06721 on 1 procs for 300 steps with 100 atoms + +Performance: 6.072 ns/day, 3.953 hours/ns, 281.107 timesteps/s +98.8% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.93954 | 0.93954 | 0.93954 | 0.0 | 88.04 +Neigh | 0.029087 | 0.029087 | 0.029087 | 0.0 | 2.73 +Comm | 0.0018935 | 0.0018935 | 0.0018935 | 0.0 | 0.18 +Output | 1.8358e-05 | 1.8358e-05 | 1.8358e-05 | 0.0 | 0.00 +Modify | 0.096112 | 0.096112 | 0.096112 | 0.0 | 9.01 +Other | | 0.0005522 | | | 0.05 + +Nlocal: 100 ave 100 max 100 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 608 ave 608 max 608 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 3441 ave 3441 max 3441 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 3441 +Ave neighs/atom = 34.41 +Neighbor list builds = 30 +Dangerous builds not checked + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:01 diff --git a/examples/kim/log.30Apr2019.kim.ex_si.simulator_model.g++.1 b/examples/kim/log.30Apr2019.kim.ex_si.simulator_model.g++.1 new file mode 100644 index 0000000000..a6d1c4a955 --- /dev/null +++ b/examples/kim/log.30Apr2019.kim.ex_si.simulator_model.g++.1 @@ -0,0 +1,132 @@ +LAMMPS (30 Apr 2019) + using 1 OpenMP thread(s) per MPI task + +units metal +kim_style init ex_sim_model_Si_mod_tersoff +units metal +newton on + +atom_style atomic +atom_modify map array +boundary p p p + +# temperatures +variable tlo equal 1800.0 +variable thi equal 2400.0 + +# coordination number cutoff + +variable r equal 2.835 + +# minimization parameters + +variable etol equal 1.0e-5 +variable ftol equal 1.0e-5 +variable maxiter equal 100 +variable maxeval equal 100 +variable dmax equal 1.0e-1 + +# diamond unit cell + +variable a equal 5.431 +lattice custom $a a1 1.0 0.0 0.0 a2 0.0 1.0 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 basis 0.0 0.5 0.5 basis 0.5 0.0 0.5 basis 0.5 0.5 0.0 basis 0.25 0.25 0.25 basis 0.25 0.75 0.75 basis 0.75 0.25 0.75 basis 0.75 0.75 0.25 +lattice custom 5.431 a1 1.0 0.0 0.0 a2 0.0 1.0 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 basis 0.0 0.5 0.5 basis 0.5 0.0 0.5 basis 0.5 0.5 0.0 basis 0.25 0.25 0.25 basis 0.25 0.75 0.75 basis 0.75 0.25 0.75 basis 0.75 0.75 0.25 +Lattice spacing in x,y,z = 5.431 5.431 5.431 + +region myreg block 0 4 0 4 0 4 +create_box 1 myreg +Created orthogonal box = (0 0 0) to (21.724 21.724 21.724) + 1 by 1 by 1 MPI processor grid +create_atoms 1 region myreg +Created 512 atoms + create_atoms CPU = 0.000393867 secs + +mass 1 28.06 + +group Si type 1 +512 atoms in group Si + +velocity all create ${thi} 5287286 mom yes rot yes dist gaussian +velocity all create 2400 5287286 mom yes rot yes dist gaussian + +# make a vacancy + +group del id 300 +1 atoms in group del +delete_atoms group del +Deleted 1 atoms, new total = 511 +kim_style define Si +Using KIM Simulator Model : ex_sim_model_Si_mod_tersoff +For Simulator : LAMMPS 12-Dec-2018 +Running on : LAMMPS 30 Apr 2019 +pair_style tersoff/mod +pair_coeff * * /tmp/kim-simulator-model-parameter-file-XXXXXXVWG8uV Si +Reading potential file /tmp/kim-simulator-model-parameter-file-XXXXXXVWG8uV with DATE: 2013-07-26 + +thermo 10 + +fix 1 all nve +fix 2 all langevin ${thi} ${thi} 0.1 48278 +fix 2 all langevin 2400 ${thi} 0.1 48278 +fix 2 all langevin 2400 2400 0.1 48278 + +timestep 1.0e-3 +neighbor 1.0 bin +neigh_modify every 1 delay 10 check yes + +run 100 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 4.3 + ghost atom cutoff = 4.3 + binsize = 2.15, bins = 11 11 11 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair tersoff/mod, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.11 | 3.11 | 3.11 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 2397.3877 -2363.0694 0 -2205.0272 15086.224 + 10 1328.4035 -2289.1682 0 -2201.5963 29164.666 + 20 1086.1557 -2254.4447 0 -2182.8424 31906.878 + 30 1528.8439 -2270.2968 0 -2169.5113 21610.528 + 40 1345.227 -2250.3915 0 -2161.7105 22146.886 + 50 1300.3329 -2235.8593 0 -2150.1379 23557.875 + 60 1546.1664 -2241.3019 0 -2139.3744 21648.774 + 70 1662.2896 -2236.2369 0 -2126.6543 23958.738 + 80 1631.7284 -2223.45 0 -2115.8821 28842.194 + 90 1795.3629 -2225.2998 0 -2106.9447 29522.37 + 100 1830.156 -2224.3733 0 -2103.7245 28805.09 +Loop time of 0.201725 on 1 procs for 100 steps with 511 atoms + +Performance: 42.831 ns/day, 0.560 hours/ns, 495.724 timesteps/s +99.3% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.19292 | 0.19292 | 0.19292 | 0.0 | 95.63 +Neigh | 0.0037313 | 0.0037313 | 0.0037313 | 0.0 | 1.85 +Comm | 0.00074744 | 0.00074744 | 0.00074744 | 0.0 | 0.37 +Output | 0.00026727 | 0.00026727 | 0.00026727 | 0.0 | 0.13 +Modify | 0.0036564 | 0.0036564 | 0.0036564 | 0.0 | 1.81 +Other | | 0.0004075 | | | 0.20 + +Nlocal: 511 ave 511 max 511 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 970 ave 970 max 970 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 9174 ave 9174 max 9174 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 9174 +Ave neighs/atom = 17.953 +Neighbor list builds = 4 +Dangerous builds = 0 + +Total wall time: 0:00:00 diff --git a/examples/kim/log.30Apr2019.kim.ex_si.simulator_model.g++.4 b/examples/kim/log.30Apr2019.kim.ex_si.simulator_model.g++.4 new file mode 100644 index 0000000000..dcb170aeb6 --- /dev/null +++ b/examples/kim/log.30Apr2019.kim.ex_si.simulator_model.g++.4 @@ -0,0 +1,132 @@ +LAMMPS (30 Apr 2019) + using 1 OpenMP thread(s) per MPI task + +units metal +kim_style init ex_sim_model_Si_mod_tersoff +units metal +newton on + +atom_style atomic +atom_modify map array +boundary p p p + +# temperatures +variable tlo equal 1800.0 +variable thi equal 2400.0 + +# coordination number cutoff + +variable r equal 2.835 + +# minimization parameters + +variable etol equal 1.0e-5 +variable ftol equal 1.0e-5 +variable maxiter equal 100 +variable maxeval equal 100 +variable dmax equal 1.0e-1 + +# diamond unit cell + +variable a equal 5.431 +lattice custom $a a1 1.0 0.0 0.0 a2 0.0 1.0 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 basis 0.0 0.5 0.5 basis 0.5 0.0 0.5 basis 0.5 0.5 0.0 basis 0.25 0.25 0.25 basis 0.25 0.75 0.75 basis 0.75 0.25 0.75 basis 0.75 0.75 0.25 +lattice custom 5.431 a1 1.0 0.0 0.0 a2 0.0 1.0 0.0 a3 0.0 0.0 1.0 basis 0.0 0.0 0.0 basis 0.0 0.5 0.5 basis 0.5 0.0 0.5 basis 0.5 0.5 0.0 basis 0.25 0.25 0.25 basis 0.25 0.75 0.75 basis 0.75 0.25 0.75 basis 0.75 0.75 0.25 +Lattice spacing in x,y,z = 5.431 5.431 5.431 + +region myreg block 0 4 0 4 0 4 +create_box 1 myreg +Created orthogonal box = (0 0 0) to (21.724 21.724 21.724) + 1 by 2 by 2 MPI processor grid +create_atoms 1 region myreg +Created 512 atoms + create_atoms CPU = 0.102434 secs + +mass 1 28.06 + +group Si type 1 +512 atoms in group Si + +velocity all create ${thi} 5287286 mom yes rot yes dist gaussian +velocity all create 2400 5287286 mom yes rot yes dist gaussian + +# make a vacancy + +group del id 300 +1 atoms in group del +delete_atoms group del +Deleted 1 atoms, new total = 511 +kim_style define Si +Using KIM Simulator Model : ex_sim_model_Si_mod_tersoff +For Simulator : LAMMPS 12-Dec-2018 +Running on : LAMMPS 30 Apr 2019 +pair_style tersoff/mod +pair_coeff * * /tmp/kim-simulator-model-parameter-file-XXXXXXqDlERL Si +Reading potential file /tmp/kim-simulator-model-parameter-file-XXXXXXqDlERL with DATE: 2013-07-26 + +thermo 10 + +fix 1 all nve +fix 2 all langevin ${thi} ${thi} 0.1 48278 +fix 2 all langevin 2400 ${thi} 0.1 48278 +fix 2 all langevin 2400 2400 0.1 48278 + +timestep 1.0e-3 +neighbor 1.0 bin +neigh_modify every 1 delay 10 check yes + +run 100 +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 4.3 + ghost atom cutoff = 4.3 + binsize = 2.15, bins = 11 11 11 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair tersoff/mod, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 3.082 | 3.082 | 3.082 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 2397.5824 -2363.0694 0 -2205.0143 15087.562 + 10 1298.5003 -2292.5456 0 -2206.945 28361.893 + 20 1114.7065 -2260.7006 0 -2187.2161 30574.077 + 30 1504.9472 -2271.8639 0 -2172.6537 20395.651 + 40 1357.5949 -2248.6066 0 -2159.1103 21779.773 + 50 1351.7212 -2235.0803 0 -2145.9713 23404.844 + 60 1582.4191 -2238.3233 0 -2134.006 21711.26 + 70 1654.3988 -2230.0965 0 -2121.0341 24276.504 + 80 1654.9629 -2218.6654 0 -2109.5658 27571.472 + 90 1815.7206 -2219.2065 0 -2099.5093 28475.757 + 100 1901.1544 -2216.5428 0 -2091.2137 28962.04 +Loop time of 4.36959 on 4 procs for 100 steps with 511 atoms + +Performance: 1.977 ns/day, 12.138 hours/ns, 22.885 timesteps/s +47.8% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 0.051784 | 0.056551 | 0.064825 | 2.1 | 1.29 +Neigh | 0.00093389 | 0.001028 | 0.0011392 | 0.3 | 0.02 +Comm | 2.8964 | 2.9342 | 3.016 | 2.8 | 67.15 +Output | 0.673 | 0.68159 | 0.69707 | 1.1 | 15.60 +Modify | 0.0011303 | 0.0029655 | 0.0081694 | 5.5 | 0.07 +Other | | 0.6933 | | | 15.87 + +Nlocal: 127.75 ave 134 max 123 min +Histogram: 1 0 0 2 0 0 0 0 0 1 +Nghost: 495 ave 498 max 489 min +Histogram: 1 0 0 0 0 0 0 1 1 1 +Neighs: 0 ave 0 max 0 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +FullNghs: 2302 ave 2443 max 2194 min +Histogram: 1 0 0 2 0 0 0 0 0 1 + +Total # of neighbors = 9208 +Ave neighs/atom = 18.0196 +Neighbor list builds = 4 +Dangerous builds = 0 + +Total wall time: 0:00:05 diff --git a/examples/kim/log.30Apr2019.kim.lj.simulator_model.g++.1 b/examples/kim/log.30Apr2019.kim.lj.simulator_model.g++.1 new file mode 100644 index 0000000000..94aaf1aaef --- /dev/null +++ b/examples/kim/log.30Apr2019.kim.lj.simulator_model.g++.1 @@ -0,0 +1,104 @@ +LAMMPS (30 Apr 2019) + using 1 OpenMP thread(s) per MPI task +# 3d Lennard-Jones melt +# +# This example requires that the example models provided with +# the kim-api package are installed. see the ./lib/kim/README or +# ./lib/kim/Install.py files for details on how to install these +# example models. +# + +variable x index 1 +variable y index 1 +variable z index 1 + +variable xx equal 20*$x +variable xx equal 20*1 +variable yy equal 20*$y +variable yy equal 20*1 +variable zz equal 20*$z +variable zz equal 20*1 + +units metal +atom_style atomic +newton on + +kim_style init LennardJones_Ar + +lattice fcc 4.4300 +Lattice spacing in x,y,z = 4.43 4.43 4.43 +region box block 0 ${xx} 0 ${yy} 0 ${zz} +region box block 0 20 0 ${yy} 0 ${zz} +region box block 0 20 0 20 0 ${zz} +region box block 0 20 0 20 0 20 +create_box 1 box +Created orthogonal box = (0 0 0) to (88.6 88.6 88.6) + 1 by 1 by 1 MPI processor grid +create_atoms 1 box +Created 32000 atoms + create_atoms CPU = 0.00314307 secs + +#pair_style lj/cut 8.1500 +#pair_coeff 1 1 0.0104 3.4000 + +kim_style define Ar +pair_style kim LennardJones_Ar +WARNING: KIM Model does not provide `partialParticleEnergy'; energy per atom will be zero (src/KIM/pair_kim.cpp:980) +WARNING: KIM Model does not provide `partialParticleVirial'; virial per atom will be zero (src/KIM/pair_kim.cpp:985) +pair_coeff * * Ar + +mass 1 39.95 +velocity all create 200.0 232345 loop geom + +neighbor 0.3 bin +neigh_modify delay 0 every 1 check yes + +fix 1 all nve +#fix 1 all npt temp 1.0 1.0 1.0 iso 1.0 1.0 3.0 + +run 100 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 8.45 + ghost atom cutoff = 8.45 + binsize = 4.225, bins = 21 21 21 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair kim, perpetual + attributes: full, newton off, cut 8.45 + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 28.12 | 28.12 | 28.12 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 200 6290.8194 0 7118.0584 129712.25 + 100 95.179725 6718.814 0 7112.496 133346.59 +Loop time of 4.91804 on 1 procs for 100 steps with 32000 atoms + +Performance: 1.757 ns/day, 13.661 hours/ns, 20.333 timesteps/s +99.7% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 4.3033 | 4.3033 | 4.3033 | 0.0 | 87.50 +Neigh | 0.53176 | 0.53176 | 0.53176 | 0.0 | 10.81 +Comm | 0.024606 | 0.024606 | 0.024606 | 0.0 | 0.50 +Output | 0.00016403 | 0.00016403 | 0.00016403 | 0.0 | 0.00 +Modify | 0.038671 | 0.038671 | 0.038671 | 0.0 | 0.79 +Other | | 0.01951 | | | 0.40 + +Nlocal: 32000 ave 32000 max 32000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 19911 ave 19911 max 19911 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 0 ave 0 max 0 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 4.25375e+06 ave 4.25375e+06 max 4.25375e+06 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 4253750 +Ave neighs/atom = 132.93 +Neighbor list builds = 3 +Dangerous builds = 0 +Total wall time: 0:00:05 diff --git a/examples/kim/log.30Apr2019.kim.lj.simulator_model.g++.4 b/examples/kim/log.30Apr2019.kim.lj.simulator_model.g++.4 new file mode 100644 index 0000000000..3377f22d02 --- /dev/null +++ b/examples/kim/log.30Apr2019.kim.lj.simulator_model.g++.4 @@ -0,0 +1,104 @@ +LAMMPS (30 Apr 2019) + using 1 OpenMP thread(s) per MPI task +# 3d Lennard-Jones melt +# +# This example requires that the example models provided with +# the kim-api package are installed. see the ./lib/kim/README or +# ./lib/kim/Install.py files for details on how to install these +# example models. +# + +variable x index 1 +variable y index 1 +variable z index 1 + +variable xx equal 20*$x +variable xx equal 20*1 +variable yy equal 20*$y +variable yy equal 20*1 +variable zz equal 20*$z +variable zz equal 20*1 + +units metal +atom_style atomic +newton on + +kim_style init LennardJones_Ar + +lattice fcc 4.4300 +Lattice spacing in x,y,z = 4.43 4.43 4.43 +region box block 0 ${xx} 0 ${yy} 0 ${zz} +region box block 0 20 0 ${yy} 0 ${zz} +region box block 0 20 0 20 0 ${zz} +region box block 0 20 0 20 0 20 +create_box 1 box +Created orthogonal box = (0 0 0) to (88.6 88.6 88.6) + 1 by 2 by 2 MPI processor grid +create_atoms 1 box +Created 32000 atoms + create_atoms CPU = 0.0979962 secs + +#pair_style lj/cut 8.1500 +#pair_coeff 1 1 0.0104 3.4000 + +kim_style define Ar +pair_style kim LennardJones_Ar +WARNING: KIM Model does not provide `partialParticleEnergy'; energy per atom will be zero (src/KIM/pair_kim.cpp:980) +WARNING: KIM Model does not provide `partialParticleVirial'; virial per atom will be zero (src/KIM/pair_kim.cpp:985) +pair_coeff * * Ar + +mass 1 39.95 +velocity all create 200.0 232345 loop geom + +neighbor 0.3 bin +neigh_modify delay 0 every 1 check yes + +fix 1 all nve +#fix 1 all npt temp 1.0 1.0 1.0 iso 1.0 1.0 3.0 + +run 100 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 8.45 + ghost atom cutoff = 8.45 + binsize = 4.225, bins = 21 21 21 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair kim, perpetual + attributes: full, newton off, cut 8.45 + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard +Per MPI rank memory allocation (min/avg/max) = 9.789 | 9.789 | 9.789 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 200 6290.8194 0 7118.0584 129712.25 + 100 95.179725 6718.814 0 7112.496 133346.59 +Loop time of 6.29539 on 4 procs for 100 steps with 32000 atoms + +Performance: 1.372 ns/day, 17.487 hours/ns, 15.885 timesteps/s +48.4% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 1.9399 | 2.079 | 2.2181 | 9.1 | 33.02 +Neigh | 0.25924 | 0.26632 | 0.2692 | 0.8 | 4.23 +Comm | 2.5011 | 2.6605 | 2.751 | 5.9 | 42.26 +Output | 0.069904 | 0.07097 | 0.071545 | 0.3 | 1.13 +Modify | 0.011383 | 0.012206 | 0.01419 | 1.0 | 0.19 +Other | | 1.206 | | | 19.16 + +Nlocal: 8000 ave 8018 max 7967 min +Histogram: 1 0 0 0 0 0 1 0 0 2 +Nghost: 9131 ave 9164 max 9113 min +Histogram: 2 0 0 1 0 0 0 0 0 1 +Neighs: 0 ave 0 max 0 min +Histogram: 4 0 0 0 0 0 0 0 0 0 +FullNghs: 1.06344e+06 ave 1.06594e+06 max 1.05881e+06 min +Histogram: 1 0 0 0 0 0 1 0 0 2 + +Total # of neighbors = 4253750 +Ave neighs/atom = 132.93 +Neighbor list builds = 3 +Dangerous builds = 0 +Total wall time: 0:00:07 -- GitLab From df1308ad922c4fd47bcd90bb5253540902ac2aff Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 30 May 2019 21:58:18 -0400 Subject: [PATCH 033/627] add kim_style error messages to Errors_messages.txt doc file --- doc/src/Errors_messages.txt | 33 +++++++++++++++++++++++++++++++++ src/KIM/kim_style.h | 14 +++++++------- 2 files changed, 40 insertions(+), 7 deletions(-) diff --git a/doc/src/Errors_messages.txt b/doc/src/Errors_messages.txt index fb5003e602..7f6e80948c 100644 --- a/doc/src/Errors_messages.txt +++ b/doc/src/Errors_messages.txt @@ -5729,6 +5729,16 @@ definitions. :dd The data file header lists improper but no improper types. :dd +{Incompatible KIM Simulator Model} :dt + +The requested KIM Simulator Model was defined for a different MD code +and thus is not compatible with LAMMPS. :dd + +{Incompatible units for KIM Simulator Model} :dt + +The selected unit style is not compatible with the requested KIM +Simulator Model. :dd + {Incomplete use of variables in create_atoms command} :dt The var and set options must be used together. :dd @@ -6988,6 +6998,12 @@ The atom style defined does not have this attribute. :dd The atom style defined does not have these attributes. :dd +{KIM Simulator Model has no Model definition} :dt + +There is no model definition (key: model-defn) in the KIM Simulator +Model. Please contact the OpenKIM database maintainers to verify +and potentially correct this. :dd + {KOKKOS package does not yet support comm_style tiled} :dt Self-explanatory. :dd @@ -7475,6 +7491,18 @@ Self-explanatory. :dd Self-explanatory. :dd +{Must use 'kim_style init' command before simulation box is defined} :dt + +Self-explanatory. :dd + +{Must use 'kim_style define' command after simulation box is defined} :dt + +Self-explanatory. :dd + +{Must use 'kim_style init' command before 'kim_style define'} :dt + +Self-explanatory. :dd + {Must use 'kspace_modify pressure/scalar no' for rRESPA with kspace_style MSM} :dt The kspace scalar pressure option cannot (yet) be used with rRESPA. :dd @@ -9418,6 +9446,11 @@ See the "read_data extra/special/per/atom" command for info on how to leave space in the special bonds list to allow for additional bonds to be formed. :dd +{Species XXX is not supported by this KIM Simulator Model} :dt + +The kim_style define command was referencing a species that is not +present in the requested KIM Simulator Model. :dd + {Specified processors != physical processors} :dt The 3d grid of processors defined by the processors command does not diff --git a/src/KIM/kim_style.h b/src/KIM/kim_style.h index eddc22eebc..f8c0602beb 100644 --- a/src/KIM/kim_style.h +++ b/src/KIM/kim_style.h @@ -85,34 +85,34 @@ class KimStyle : protected Pointers { E: Illegal kim_style command -Incorrect number or kind of arguments to kim_style +Incorrect number or kind of arguments to kim_style. E: Must use 'kim_style init' command before simulation box is defined -Self-explanatory +Self-explanatory. E: Must use 'kim_style define' command after simulation box is defined -Self-explanatory +Self-explanatory. E: Must use 'kim_style init' command before 'kim_style define' -Self-explanatory +Self-explanatory. E: Incompatible KIM Simulator Model The requested KIM Simulator Model was defined for a different MD code -and thus is not compatible with LAMMPS +and thus is not compatible with LAMMPS. E: Species XXX is not supported by this KIM Simulator Model The kim_style define command was referencing a species that is not -present in the requested KIM Simulator Model +present in the requested KIM Simulator Model. E: Incompatible units for KIM Simulator Model The selected unit style is not compatible with the requested KIM -Simulator Model +Simulator Model. E: KIM Simulator Model has no Model definition -- GitLab From edecd2b7601f900e99b6eaeb9c3acb25dfe35edc Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 30 May 2019 22:19:47 -0400 Subject: [PATCH 034/627] fix typo and update list of false positives for updated docs --- doc/src/kim_style.txt | 2 +- doc/utils/sphinx-config/false_positives.txt | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/src/kim_style.txt b/doc/src/kim_style.txt index dcdfae1cdc..afa7a19fab 100644 --- a/doc/src/kim_style.txt +++ b/doc/src/kim_style.txt @@ -51,7 +51,7 @@ The {kim_style define} command will issue commands that will realize the selected model (through generating pair_style and pair_coeff commands, but also other commands, as required). It has to be issued [after] the the simulation box is defined. The {kim_style define} command allows a -varying numbver of additional arguments. Those are used to map the atom +varying number of additional arguments. Those are used to map the atom types in LAMMPS to the available species in the KIM model. This is equivalent to the arguments following "pair_coeff * *" in a "kim"_pair_kim.html pair style. Thus the commands: diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 7160800c50..a8bfa8f193 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -521,6 +521,7 @@ decrementing deeppink deepskyblue defgrad +defn deformable del deleteIDs @@ -2792,6 +2793,7 @@ txt typeI typeJ typeN +typeargs Tz Tzou ub -- GitLab From ad8fd4a2a46c004dba1313f9daa7896be8052077 Mon Sep 17 00:00:00 2001 From: Andrew Schultz Date: Mon, 10 Jun 2019 16:13:09 -0400 Subject: [PATCH 035/627] Clean up comments --- src/USER-HMA/compute_hma.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/USER-HMA/compute_hma.cpp b/src/USER-HMA/compute_hma.cpp index c0a7901640..ad86577ba1 100644 --- a/src/USER-HMA/compute_hma.cpp +++ b/src/USER-HMA/compute_hma.cpp @@ -119,6 +119,7 @@ ComputeHMA::ComputeHMA(LAMMPS *lmp, int narg, char **arg) : extvec.push_back(1); } else if (!strcasecmp(arg[iarg], "anharmonic")) { + // the first time we're called, we'll grab lattice pressure and energy returnAnharmonic = -1; } else { @@ -333,9 +334,7 @@ void ComputeHMA::compute_vector() } } -//adding PE for this processor - -//adding the energies of all processors + // compute and sum up properties across processors double fdrTotal; MPI_Allreduce(&fdr,&fdrTotal,1,MPI_DOUBLE,MPI_SUM,world); @@ -383,6 +382,7 @@ void ComputeHMA::compute_vector() } } if (returnAnharmonic == -1) { + // we have our lattice properties returnAnharmonic = 1; } } -- GitLab From 5c9c15025afffecd365bbbf40d5fc9cdc437cd6e Mon Sep 17 00:00:00 2001 From: Andrew Schultz Date: Mon, 10 Jun 2019 16:13:34 -0400 Subject: [PATCH 036/627] Add bits to Packages_details, Packages_user, fix up typos --- doc/src/Packages_details.txt | 20 ++++++++++++++++++++ doc/src/Packages_user.txt | 1 + doc/src/compute_hma.txt | 6 +++--- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/doc/src/Packages_details.txt b/doc/src/Packages_details.txt index 0ab1b5e4fd..b5050b8c4b 100644 --- a/doc/src/Packages_details.txt +++ b/doc/src/Packages_details.txt @@ -76,6 +76,7 @@ as contained in the file name. "USER-EFF"_#PKG-USER-EFF, "USER-FEP"_#PKG-USER-FEP, "USER-H5MD"_#PKG-USER-H5MD, +"USER-HMA"_#PKG-USER-HMA, "USER-INTEL"_#PKG-USER-INTEL, "USER-LB"_#PKG-USER-LB, "USER-MANIFOLD"_#PKG-USER-MANIFOLD, @@ -1373,6 +1374,25 @@ lib/h5md/README :line +USER-HMA package :link(PKG-USER-HMA),h4 + +[Contents:] + +Harmonically mapped averaging for efficient calculation of properties of +crystalline solids. The compute hma can specify use of HMA for calculation of +potential energy, pressure and heat capacity. + +[Author:] Apoorva Purohit, Andrew Schultz and David Kofke (University at +Buffalo, NY, USA) + +[Supporting info:] + +examples/USER/hma/README +src/USER-HMA/README +"compute hma"_compute_hma.html :ul + +:line + USER-INTEL package :link(PKG-USER-INTEL),h4 [Contents:] diff --git a/doc/src/Packages_user.txt b/doc/src/Packages_user.txt index 4210f617ef..3ce2a458b6 100644 --- a/doc/src/Packages_user.txt +++ b/doc/src/Packages_user.txt @@ -51,6 +51,7 @@ Package, Description, Doc page, Example, Library "USER-EFF"_Packages_details.html#PKG-USER-EFF, electron force field,"pair_style eff/cut"_pair_eff.html, USER/eff, no "USER-FEP"_Packages_details.html#PKG-USER-FEP, free energy perturbation,"compute fep"_compute_fep.html, USER/fep, no "USER-H5MD"_Packages_details.html#PKG-USER-H5MD, dump output via HDF5,"dump h5md"_dump_h5md.html, n/a, ext +"USER-HMA"_Packages_details.html#PKG-USER-HMA, compute properties via HMA,"compute hma"_compute_hma.html, USER/hma, no "USER-INTEL"_Packages_details.html#PKG-USER-INTEL, optimized Intel CPU and KNL styles,"Speed intel"_Speed_intel.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, no "USER-LB"_Packages_details.html#PKG-USER-LB, Lattice Boltzmann fluid,"fix lb/fluid"_fix_lb_fluid.html, USER/lb, no "USER-MANIFOLD"_Packages_details.html#PKG-USER-MANIFOLD, motion on 2d surfaces,"fix manifoldforce"_fix_manifoldforce.html, USER/manifold, no diff --git a/doc/src/compute_hma.txt b/doc/src/compute_hma.txt index c4ade07ad7..340881bf68 100644 --- a/doc/src/compute_hma.txt +++ b/doc/src/compute_hma.txt @@ -61,7 +61,7 @@ The pressure is computed by the formula: \end\{equation\} where \(\rho\) is the number density of the system, \(\Delta \hat P\) is the -difference between theh harmonic and lattice pressure, and \(P_\{vir\}\) is +difference between the harmonic and lattice pressure, and \(P_\{vir\}\) is the virial pressure computed as the sum of pair, bond, angle, dihedral, improper, kspace (long-range), and fix contributions to the force on each atom. Although the method will work for any value of \(\Delta \hat P\) @@ -76,13 +76,13 @@ U_\{HMA\}^2 \right> - \left^2 \right)/T + \frac\{1\}\{4 T\} \left< F\bullet\Delta r + \Delta r \bullet \Phi \bullet \Delta r \right> \end\{equation\} -where \(\Phi\) is the Hessian of second derivatives. The compute hma command +where \(\Phi\) is the Hessian matrix. The compute hma command computes the full expression for \(C_V\) except for the \(\left^2\) in the variance term, which can be obtained by passing the {u} keyword; you must add this extra contribution to the \(C_V\) value reported by this compute. The variance term can cause significant roundoff error when computing \(C_V\). To address this, the {anharmonic} -keyword can be passed and/or the output format can be speicified with more +keyword can be passed and/or the output format can be specified with more digits. thermo_modify format float '%22.15e' :pre -- GitLab From e438d46ee2c54bdb5cb9927991329f071f5e87c2 Mon Sep 17 00:00:00 2001 From: Andrew Schultz Date: Mon, 10 Jun 2019 16:14:28 -0400 Subject: [PATCH 037/627] Add README in src directory --- src/USER-HMA/README | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/USER-HMA/README diff --git a/src/USER-HMA/README b/src/USER-HMA/README new file mode 100644 index 0000000000..b27999341b --- /dev/null +++ b/src/USER-HMA/README @@ -0,0 +1,30 @@ +The HMA package implements the compute hma command for LAMMPS, which implements +harmonically-mapped averaging for crystalline solids. The current +implementation handles atomic crystals. + +Computing the heat capacity relies on being able to compute the second +derivative of the energy with respect to atom positions. This capability is +provided by the single2 method in Pair, but is currently only implemented for +the shifted-force LJ potential (lj/smooth/linear). Pair::single2 takes a single +pair and (like Pair::single) returns the energy and sets the force as an out +parameter, but also sets the elements of 6-element double array out parameter, +which are the unique components of the atomic Hessian tensor for the pair. A +helper method exists (Pair::pairTensor), which will compute the tensor from +linear derivatives and the vector between the positions. HMA Heat capacity can +be computed for other models by implementing single2 in those Pair classes. + +More information about HMA is available in these publications: + +A. J. Schultz, D. A. Kofke, “Comprehensive high-precision high-accuracy +equation of state and coexistence properties for classical Lennard-Jones +crystals and low-temperature fluid phases”, J. Chem. Phys. 149, 204508 (2018) +https://dx.doi.org/10.1063/1.5053714 + +S. G. Moustafa, A. J. Schultz, D. A. Kofke, “Harmonically Assisted Methods for +Computing the Free Energy of Classical Crystals by Molecular Simulation: A +Comparative Study”, J. Chem. Theory Comput. 13, 825-834 (2017) +https://dx.doi.org/10.1021/acs.jctc.6b01082 + +S. G. Moustafa, A. J. Schultz, D. A. Kofke, “Very fast averaging of thermal +properties of crystals by molecular simulation”, Phys. Rev. E 92, 043303 (2015) +https://dx.doi.org/10.1103/PhysRevE.92.043303 -- GitLab From b195ccfb27e0037e5e6f1836724d8ae042000ce0 Mon Sep 17 00:00:00 2001 From: Andrew Schultz Date: Mon, 10 Jun 2019 17:08:40 -0400 Subject: [PATCH 038/627] Unbreak compute.txt --- doc/src/compute.txt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/doc/src/compute.txt b/doc/src/compute.txt index c8456fb342..52ae5df0eb 100644 --- a/doc/src/compute.txt +++ b/doc/src/compute.txt @@ -169,7 +169,7 @@ There are also additional accelerated compute styles included in the LAMMPS distribution for faster performance on CPUs, GPUs, and KNLs. The individual style names on the "Commands compute"_Commands_compute.html doc page are followed by one or more of -(g,i,k,o,t) to indicate which accerlerated styles exist. +(g,i,k,o,t) to indicate which accelerated styles exist. "ackland/atom"_compute_ackland_atom.html - "adf"_compute_adf.html - angular distribution function of triples of atoms @@ -184,6 +184,7 @@ compute"_Commands_compute.html doc page are followed by one or more of "bond/local"_compute_bond_local.html - distance and energy of each bond "centro/atom"_compute_centro_atom.html - centro-symmetry parameter for each atom "chunk/atom"_compute_chunk_atom.html - assign chunk IDs to each atom +"chunk/spread/atom"_compute_chunk_spread_atom.html - spreads chunk values to each atom in chunk "cluster/atom"_compute_cluster_atom.html - cluster ID for each atom "cna/atom"_compute_cna_atom.html - common neighbor analysis (CNA) for each atom "cnp/atom"_compute_cnp_atom.html - @@ -223,6 +224,12 @@ compute"_Commands_compute.html doc page are followed by one or more of "inertia/chunk"_compute_inertia_chunk.html - inertia tensor for each chunk "ke"_compute_ke.html - translational kinetic energy "ke/atom"_compute_ke_atom.html - kinetic energy for each atom +"ke/atom/eff"_compute_ke_atom_eff.html - +"ke/eff"_compute_ke_eff.html - +"ke/rigid"_compute_ke_rigid.html - translational kinetic energy of rigid bodies +"meso/e/atom"_compute_meso_e_atom.html - +"meso/rho/atom"_compute_meso_rho_atom.html - +"meso/t/atom"_compute_meso_t_atom.html - "msd"_compute_msd.html - mean-squared displacement of group of atoms "msd/chunk"_compute_msd_chunk.html - mean-squared displacement for each chunk "msd/nongauss"_compute_msd_nongauss.html - MSD and non-Gaussian parameter of group of atoms @@ -239,10 +246,12 @@ compute"_Commands_compute.html doc page are followed by one or more of "pressure/cylinder"_compute_pressure_cylinder.html - "pressure/uef"_compute_pressure_uef.html - "property/atom"_compute_property_atom.html - convert atom attributes to per-atom vectors/arrays +"property/chunk"_compute_property_chunk.html - extract various per-chunk attributes "property/local"_compute_property_local.html - convert local attributes to localvectors/arrays "ptm/atom"_compute_ptm_atom.html - "rdf"_compute_rdf.html - radial distribution function g(r) histogram of group of atoms "reduce"_compute_reduce.html - combine per-atom quantities into a single global value +"reduce/chunk"_compute_reduce_chunk.html - reduce per-atom quantities within each chunk "reduce/region"_compute_reduce.html - same as compute reduce, within a region "rigid/local"_compute_rigid_local.html - extract rigid body attributes "saed"_compute_saed.html - @@ -299,7 +308,8 @@ compute"_Commands_compute.html doc page are followed by one or more of "torque/chunk"_compute_torque_chunk.html - torque applied on each chunk "vacf"_compute_vacf.html - velocity auto-correlation function of group of atoms "vcm/chunk"_compute_vcm_chunk.html - velocity of center-of-mass for each chunk -"voronoi/atom"_compute_voronoi_atom.html - Voronoi volume and neighbors for each atom :ul +"voronoi/atom"_compute_voronoi_atom.html - Voronoi volume and neighbors for each atom +"xrd"_compute_xrd.html - :ul [Restrictions:] none -- GitLab From 2d90bb994795f1a56fda0a4abb5a784c27a925fa Mon Sep 17 00:00:00 2001 From: Andrew Schultz Date: Mon, 10 Jun 2019 17:12:01 -0400 Subject: [PATCH 039/627] Unbreak computes.txt --- doc/src/computes.txt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/src/computes.txt b/doc/src/computes.txt index c636633b38..f3a552b740 100644 --- a/doc/src/computes.txt +++ b/doc/src/computes.txt @@ -6,6 +6,7 @@ Computes :h1 :maxdepth: 1 compute_ackland_atom + compute_adf compute_angle compute_angle_local compute_angmom_chunk @@ -15,6 +16,7 @@ Computes :h1 compute_bond_local compute_centro_atom compute_chunk_atom + compute_chunk_spread_atom compute_cluster_atom compute_cna_atom compute_cnp_atom @@ -67,12 +69,15 @@ Computes :h1 compute_pe_atom compute_plasticity_atom compute_pressure + compute_pressure_cylinder compute_pressure_uef compute_property_atom compute_property_chunk compute_property_local + compute_ptm_atom compute_rdf compute_reduce + compute_reduce_chunk compute_rigid_local compute_saed compute_slice @@ -90,7 +95,7 @@ Computes :h1 compute_smd_tlsph_strain compute_smd_tlsph_strain_rate compute_smd_tlsph_stress - compute_smd_triangle_mesh_vertices + compute_smd_triangle_vertices compute_smd_ulsph_num_neighs compute_smd_ulsph_strain compute_smd_ulsph_strain_rate @@ -99,6 +104,7 @@ Computes :h1 compute_sna_atom compute_spin compute_stress_atom + compute_stress_mop compute_tally compute_tdpd_cc_atom compute_temp -- GitLab From 8858846e399a0086d922bbc5bd7c03cb9262a1ca Mon Sep 17 00:00:00 2001 From: Andrew Schultz Date: Mon, 10 Jun 2019 17:13:16 -0400 Subject: [PATCH 040/627] Unbreak pair.h --- src/pair.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pair.h b/src/pair.h index 7ebf56173c..3947f4cd81 100644 --- a/src/pair.h +++ b/src/pair.h @@ -221,6 +221,10 @@ class Pair : protected Pointers { typedef union {int i; float f;} union_int_float_t; + // Accessor for the user-intel package to determine virial calc for hybrid + + inline int fdotr_is_set() const { return vflag_fdotr; } + protected: int vflag_fdotr; int maxeatom,maxvatom; -- GitLab From 22fd12b56c803e6e0e5939bb0a950adf080c31a9 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 10 Jun 2019 17:14:17 -0400 Subject: [PATCH 041/627] support storing unit conversion variable setting between kim_style calls --- src/KIM/fix_store_kim.cpp | 29 ++++++++++++++++++++++++++++- src/KIM/fix_store_kim.h | 2 ++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/KIM/fix_store_kim.cpp b/src/KIM/fix_store_kim.cpp index 8e9946c20d..6423a57e18 100644 --- a/src/KIM/fix_store_kim.cpp +++ b/src/KIM/fix_store_kim.cpp @@ -65,7 +65,8 @@ using namespace FixConst; /* ---------------------------------------------------------------------- */ FixStoreKIM::FixStoreKIM(LAMMPS *lmp, int narg, char **arg) - : Fix(lmp, narg, arg), simulator_model(NULL), model_name(NULL) + : Fix(lmp, narg, arg), simulator_model(NULL), model_name(NULL), + units_from(NULL), units_to(NULL) { if (narg != 3) error->all(FLERR,"Illegal fix STORE/KIM command"); } @@ -87,6 +88,18 @@ FixStoreKIM::~FixStoreKIM() delete[] mn; model_name = NULL; } + + if (units_from) { + char *uf = (char *)units_from; + delete[] uf; + units_from = NULL; + } + + if (units_to) { + char *ut = (char *)units_to; + delete[] ut; + units_to = NULL; + } } /* ---------------------------------------------------------------------- */ @@ -114,6 +127,18 @@ void FixStoreKIM::setptr(const char *name, void *ptr) delete[] mn; } model_name = ptr; + } else if (strcmp(name,"units_from") == 0) { + if (units_from) { + char *uf = (char *)units_from; + delete[] uf; + } + units_from = ptr; + } else if (strcmp(name,"units_to") == 0) { + if (units_to) { + char *ut = (char *)units_to; + delete[] ut; + } + units_to = ptr; } } @@ -123,5 +148,7 @@ void *FixStoreKIM::getptr(const char *name) { if (strcmp(name,"simulator_model") == 0) return simulator_model; else if (strcmp(name,"model_name") == 0) return model_name; + else if (strcmp(name,"units_from") == 0) return units_from; + else if (strcmp(name,"units_to") == 0) return units_to; else return NULL; } diff --git a/src/KIM/fix_store_kim.h b/src/KIM/fix_store_kim.h index 04081fd6dc..5bca2a3dd0 100644 --- a/src/KIM/fix_store_kim.h +++ b/src/KIM/fix_store_kim.h @@ -80,6 +80,8 @@ class FixStoreKIM : public Fix { private: void *simulator_model; // pointer to KIM simulator model class void *model_name; // string of KIM model name + void *units_from; // string of unit conversion origin or NULL + void *units_to; // string of unit conversion target or NULL }; } -- GitLab From 9a428217d9f9d864e7ff66618645dfab4be04341 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 10 Jun 2019 17:19:18 -0400 Subject: [PATCH 042/627] prototype implementation of unit conversion variable support --- src/KIM/kim_style.cpp | 161 +++++++++++++++++++++++++++++++++++++++++- src/KIM/kim_style.h | 4 ++ 2 files changed, 162 insertions(+), 3 deletions(-) diff --git a/src/KIM/kim_style.cpp b/src/KIM/kim_style.cpp index 856fb94c9e..814da6b188 100644 --- a/src/KIM/kim_style.cpp +++ b/src/KIM/kim_style.cpp @@ -65,6 +65,7 @@ #include "update.h" #include "universe.h" #include "input.h" +#include "variable.h" #include "fix_store_kim.h" #include "KIM_SimulatorModel.hpp" @@ -78,20 +79,33 @@ void KimStyle::command(int narg, char **arg) { if (narg < 2) error->all(FLERR,"Illegal kim_style command"); + units_from = NULL; + units_to = NULL; + if (strcmp(arg[0],"init") == 0) { - if (narg > 2) error->all(FLERR,"Illegal kim_style command"); if (domain->box_exist) error->all(FLERR,"Must use 'kim_style init' command before " "simulation box is defined"); int len = strlen(arg[1])+1; char *model = new char[len]; strcpy(model,arg[1]); + + int args_done = do_units(narg-2,arg-2); + if (narg > (args_done + 2)) + error->all(FLERR,"Illegal kim_style command"); do_init(model); + do_variables(); } else if (strcmp(arg[0],"define") == 0) { if (!domain->box_exist) error->all(FLERR,"Must use 'kim_style define' command after " "simulation box is defined"); - do_defn(narg-1,arg+1); + int args_done = do_units(narg-1,arg-1); + do_defn(narg - (args_done+1),arg + (args_done+1)); + } else if (strcmp(arg[0],"unit_variables") == 0) { + int args_done = do_units(narg,arg); + if (narg > args_done) + error->all(FLERR,"Illegal kim_style command"); + do_variables(); } else error->all(FLERR,"Illegal kim_style command"); } @@ -113,6 +127,8 @@ void KimStyle::do_init(char *model) FixStoreKIM *fix_store = (FixStoreKIM *) modify->fix[ifix]; fix_store->setptr("model_name", (void *) model); + fix_store->setptr("units_from", (void *) units_from); + fix_store->setptr("units_to", (void *) units_to); int kimerror; KIM::SimulatorModel * simulatorModel; @@ -172,7 +188,6 @@ void KimStyle::do_defn(int narg, char **arg) char *model = NULL; KIM::SimulatorModel *simulatorModel(NULL); - int kimerror; // check if we had a kim_style init command by finding fix STORE/KIM // retrieve model name and pointer to simulator model class instance. @@ -298,3 +313,143 @@ void KimStyle::do_defn(int narg, char **arg) input->one(cmd2.c_str()); } } + +/* ---------------------------------------------------------------------- */ + +int KimStyle::do_units(int narg, char **arg) +{ + // retrieve custom units setting if kim_style had been called before + + int ifix = modify->find_fix("KIM_MODEL_STORE"); + FixStoreKIM *fix_store = NULL; + if (ifix >= 0) { + fix_store = (FixStoreKIM *) modify->fix[ifix]; + units_from = (char *)fix_store->getptr("units_from"); + units_to = (char *)fix_store->getptr("units_to"); + } + + if (narg < 2) return 0; + int iarg=0; + for (iarg = 0; iarg < narg; iarg += 2) { + if (strcmp(arg[iarg],"unit_variables") == 0) { + if (narg > iarg+2) error->all(FLERR,"Illegal kim_style command"); + if (strcmp(arg[iarg+1],"NULL") == 0) { + delete[] units_to; + units_to = NULL; + } else { + int len = strlen(arg[iarg+1])+1; + delete[] units_to; + units_to = new char[len]; + strcpy(units_to,arg[iarg+1]); + } + if (fix_store) fix_store->setptr("units_to",units_to); + } else if (strcmp(arg[iarg],"unit_from") == 0) { + if (narg > iarg+2) error->all(FLERR,"Illegal kim_style command"); + if (strcmp(arg[iarg+1],"NULL") == 0) { + delete[] units_from; + units_from = NULL; + } else { + int len = strlen(arg[iarg+1])+1; + delete[] units_from; + units_from = new char[len]; + strcpy(units_from,arg[iarg+1]); + } + if (fix_store) fix_store->setptr("units_from",units_from); + } else return iarg; + } + return iarg; +} + +/* ---------------------------------------------------------------------- */ + +void KimStyle::do_variables() +{ + char *from, *to; + Variable *variable = input->variable; + + if (units_from) from = units_from; + else from = update->unit_style; + if (units_to) to = units_to; + else to = update->unit_style; + + // refuse convertion from or to reduced units + + if ((strcmp(from,"lj") == 0) || (strcmp(to,"lj") == 0)) + error->all(FLERR,"Cannot set up conversion variables for 'lj' units"); + + // get index to internal style variables. create, if needed. + // default to conversion factor 1.0 for newly created variables + + int v_length, v_mass, v_time; + char *args[3]; + args[1] = (char *)"internal"; + args[2] = (char *)"1.0"; + + args[0] = (char *)"_u_length"; + v_length = variable->find(args[0]); + if (v_length < 0) { + variable->set(3,args); + v_length = variable->find(args[0]); + } + + args[0] = (char *)"_u_mass"; + v_mass = variable->find(args[0]); + if (v_mass < 0) { + variable->set(3,args); + v_mass = variable->find(args[0]); + } + + args[0] = (char *)"_u_time"; + v_time = variable->find(args[0]); + if (v_time < 0) { + variable->set(3,args); + v_time = variable->find(args[0]); + } + + // special case: both unit styles are the same => conversion factor 1.0 + + if (strcmp(from,to) == 0) { + variable->internal_set(v_length,1.0); + variable->internal_set(v_mass,1.0); + variable->internal_set(v_time,1.0); + return; + } + + if (strcmp(from,"real") == 0) { + if (strcmp(to,"metal") == 0) { + variable->internal_set(v_length,1.0); + variable->internal_set(v_mass,1.0); + variable->internal_set(v_time,0.001); + } else { + std::string err("Do not know how to set up conversion variables "); + err += "between '"; + err += from; + err += "' and '"; + err += to; + err += "' units"; + error->all(FLERR,err.c_str()); + } + } else if (strcmp(from,"metal") == 0) { + if (strcmp(to,"real") == 0) { + variable->internal_set(v_length,1.0); + variable->internal_set(v_mass,1.0); + variable->internal_set(v_time,1000.0); + } else { + std::string err("Do not know how to set up conversion variables "); + err += "between '"; + err += from; + err += "' and '"; + err += to; + err += "' units"; + error->all(FLERR,err.c_str()); + } + } else { + std::string err("Do not know how to set up conversion variables "); + err += "between '"; + err += from; + err += "' and '"; + err += to; + err += "' units"; + error->all(FLERR,err.c_str()); + } +} diff --git a/src/KIM/kim_style.h b/src/KIM/kim_style.h index f8c0602beb..36084183ee 100644 --- a/src/KIM/kim_style.h +++ b/src/KIM/kim_style.h @@ -72,8 +72,12 @@ class KimStyle : protected Pointers { KimStyle(class LAMMPS *lmp) : Pointers(lmp) {}; void command(int, char **); private: + char *units_from; + char *units_to; void do_init(char *); void do_defn(int, char **); + int do_units(int, char **); + void do_variables(); }; } -- GitLab From 664b938ed12cafc2fa232a34abccd4d79278a494 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 10 Jun 2019 17:45:07 -0400 Subject: [PATCH 043/627] document kim_style changes --- doc/src/kim_style.txt | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/doc/src/kim_style.txt b/doc/src/kim_style.txt index afa7a19fab..c24cfe8581 100644 --- a/doc/src/kim_style.txt +++ b/doc/src/kim_style.txt @@ -12,15 +12,18 @@ kim_style command :h3 kim_style mode args :pre -mode = {init model} or {define typeargs} +mode = {init model} or {define typeargs} or no mode chosen model = name of the KIM model (KIM potential or KIM simulator model) -typeargs = atom type to species mapping (one entry per atom type) :ul +typeargs = atom type to species mapping (one entry per atom type) +args = {unit_variables unit_style} or {unit_from unit_style} (optional):ul [Examples:] -kim_style init ex_sim_model_Si_mod_tersoff +kim_style init ex_sim_model_Si_mod_tersoff unit_variables metal kim_style define Si Si -kim_style init LennardJones_Ar +kim_style unit_variables real +kim_style init LennardJones_Ar unit_variables metal +kim_style unit_variables real unit_from metal kim_style define Ar :pre [Description:] @@ -47,6 +50,21 @@ for using a selected simulator model. If needed, those settings can be overridden. The second argument to the {kim_style init} command is the KIM model ID. +In both modes, the keywords {unit_variables} and {unit_from} may be +added. They control the values of a set of +"internal style variables"_variable.html that can be used to convert +between different unit styles in LAMMPS. The argument to +each keyword is a LAMMPS unit style or NULL, which means to look up +the unit style from what was set with the "units"_units.html command. +Please note, that KIM simulator models will set their preferred unit style. +By default all conversion variables are set to 1.0. Converting to or +from the "lj" unit style is not supported. The following variables are defined: + +_u_length +_u_mass +_u_time :ul + + The {kim_style define} command will issue commands that will realize the selected model (through generating pair_style and pair_coeff commands, but also other commands, as required). It has to be issued [after] the -- GitLab From 36ebf4d47ab3c6e6263bcdde2a7402089b04e524 Mon Sep 17 00:00:00 2001 From: Andrew Schultz Date: Tue, 11 Jun 2019 10:22:55 -0400 Subject: [PATCH 044/627] Make cmake aware of HMA --- cmake/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 911b6f0f15..c2356002b2 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -177,8 +177,8 @@ set(DEFAULT_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GRANULAR KSPACE LATTE MANYBODY MC MESSAGE MISC MOLECULE PERI POEMS QEQ REPLICA RIGID SHOCK SPIN SNAP SRD KIM PYTHON MSCG MPIIO VORONOI USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-MESO USER-CGSDK USER-COLVARS - USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD USER-LB - USER-MANIFOLD USER-MEAMC USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE + USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD USER-HMA + USER-LB USER-MANIFOLD USER-MEAMC USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-PHONON USER-PLUMED USER-PTM USER-QTB USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF USER-VTK USER-QUIP USER-QMMM USER-YAFF USER-ADIOS) -- GitLab From d9206127fb3bc2309d9260e06644d1025f7545a1 Mon Sep 17 00:00:00 2001 From: Andrew Schultz Date: Wed, 12 Jun 2019 11:40:21 -0400 Subject: [PATCH 045/627] Add hyphen to roundoff, fix false positives --- doc/src/compute_hma.txt | 2 +- doc/utils/sphinx-config/false_positives.txt | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/src/compute_hma.txt b/doc/src/compute_hma.txt index 340881bf68..c203c281ed 100644 --- a/doc/src/compute_hma.txt +++ b/doc/src/compute_hma.txt @@ -81,7 +81,7 @@ computes the full expression for \(C_V\) except for the \(\left^2\) in the variance term, which can be obtained by passing the {u} keyword; you must add this extra contribution to the \(C_V\) value reported by this compute. The variance term can cause significant -roundoff error when computing \(C_V\). To address this, the {anharmonic} +round-off error when computing \(C_V\). To address this, the {anharmonic} keyword can be passed and/or the output format can be specified with more digits. diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 7b7c4d11b2..4d3ea22491 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -98,6 +98,7 @@ antisymmetry anton Antonelli api +Apoorva Appl Apu arccos @@ -1064,6 +1065,7 @@ Hilger histo histogrammed histogramming +hma hmaktulga hoc Hochbruck @@ -1320,6 +1322,7 @@ kmax Kmax Knizhnik knl +Kofke Kohlmeyer Kohn kokkos @@ -1701,6 +1704,7 @@ Morteza Mosayebi Moseler Moskalev +Moustafa mov mpi MPI @@ -2200,6 +2204,7 @@ PTM ptr pu purdue +Purohit pushstore pvar pw @@ -2413,6 +2418,7 @@ Ryckaert Rycroft Rydbergs Rz +Sabry saddlebrown Sadigh saed -- GitLab From 56ae35fb1a4e23aff8238c7baccd747667f3a962 Mon Sep 17 00:00:00 2001 From: Andrew Schultz Date: Wed, 12 Jun 2019 13:09:33 -0400 Subject: [PATCH 046/627] Address feedback on PR #1503 --- src/USER-HMA/compute_hma.cpp | 47 ++++++++++++++++++----------------- src/pair.cpp | 2 +- src/pair_lj_smooth_linear.cpp | 4 +-- 3 files changed, 27 insertions(+), 26 deletions(-) diff --git a/src/USER-HMA/compute_hma.cpp b/src/USER-HMA/compute_hma.cpp index ad86577ba1..8edff5aa59 100644 --- a/src/USER-HMA/compute_hma.cpp +++ b/src/USER-HMA/compute_hma.cpp @@ -11,9 +11,9 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include +#include #include -#include -#include #include "compute_hma.h" #include "atom.h" #include "update.h" @@ -100,25 +100,29 @@ ComputeHMA::ComputeHMA(LAMMPS *lmp, int narg, char **arg) : computeU = computeP = computeCv = -1; returnAnharmonic = 0; - std::vector extvec; + size_vector = 0; + memory->create(extlist, 3, "hma:extlist"); for (int iarg=4; iarg-1) continue; + computeU = size_vector; + extlist[size_vector] = 1; } - else if (!strcasecmp(arg[iarg], "p")) { + else if (!strcmp(arg[iarg], "p")) { if (iarg+2 > narg) error->all(FLERR,"Illegal fix hma command"); - computeP = extvec.size(); + if (computeP>-1) continue; + computeP = size_vector; deltaPcap = force->numeric(FLERR, arg[iarg+1]); - extvec.push_back(0); + extlist[size_vector] = 0; iarg++; } - else if (!strcasecmp(arg[iarg], "cv")) { - computeCv = extvec.size(); + else if (!strcmp(arg[iarg], "cv")) { + if (computeCv>-1) continue; + computeCv = size_vector; comm_forward = 3; - extvec.push_back(1); + extlist[size_vector] = 1; } - else if (!strcasecmp(arg[iarg], "anharmonic")) { + else if (!strcmp(arg[iarg], "anharmonic")) { // the first time we're called, we'll grab lattice pressure and energy returnAnharmonic = -1; } @@ -127,18 +131,16 @@ ComputeHMA::ComputeHMA(LAMMPS *lmp, int narg, char **arg) : } } - if (extvec.size() == 0) { + if (size_vector == 0) { error->all(FLERR,"Illegal fix hma command"); } - size_vector = extvec.size(); - memory->create(vector, size_vector, "hma::vector"); - extlist = new int[size_vector]; - for (int i=0; igrow(extlist, size_vector, "hma:extlist"); } + memory->create(vector, size_vector, "hma:vector"); if (computeU>-1 || computeCv>-1) { - peflag = 1; + peflag = 1; } if (computeP>-1) { pressflag = 1; @@ -156,7 +158,7 @@ ComputeHMA::~ComputeHMA() delete [] id_fix; delete [] id_temp; - delete [] extlist; + memory->destroy(extlist); memory->destroy(vector); memory->destroy(deltaR); } @@ -184,11 +186,10 @@ void ComputeHMA::setup() if (temperat==NULL) error->all(FLERR,"Could not find compute hma temperature ID"); finaltemp = * temperat; - // set fix which stores original atom coords int ifix2 = modify->find_fix(id_fix); - if (ifix2 < 0) error->all(FLERR,"Could not find compute hma ID"); + if (ifix2 < 0) error->all(FLERR,"Could not find hma store fix ID"); fix = (FixStore *) modify->fix[ifix2]; } diff --git a/src/pair.cpp b/src/pair.cpp index c393e7b12b..15efa62c59 100644 --- a/src/pair.cpp +++ b/src/pair.cpp @@ -307,7 +307,7 @@ void Pair::init_style() specific pair style can override this function ------------------------------------------------------------------------- */ -void Pair::init_list(int which, NeighList *ptr) +void Pair::init_list(int /*which*/, NeighList *ptr) { list = ptr; } diff --git a/src/pair_lj_smooth_linear.cpp b/src/pair_lj_smooth_linear.cpp index 370caeddf7..d2bb6a1cc4 100644 --- a/src/pair_lj_smooth_linear.cpp +++ b/src/pair_lj_smooth_linear.cpp @@ -325,7 +325,7 @@ void PairLJSmoothLinear::read_restart_settings(FILE *fp) /* ---------------------------------------------------------------------- */ -double PairLJSmoothLinear::single(int i, int j, int itype, int jtype, +double PairLJSmoothLinear::single(int /*i*/, int /*j*/, int itype, int jtype, double rsq, double factor_coul, double factor_lj, double &fforce) @@ -347,7 +347,7 @@ double PairLJSmoothLinear::single(int i, int j, int itype, int jtype, return factor_lj*philj; } -double PairLJSmoothLinear::single2(int i, int j, int itype, int jtype, double rsq, +double PairLJSmoothLinear::single2(int /*i*/, int /*j*/, int itype, int jtype, double rsq, double delr[3], double factor_coul, double factor_lj, double &fforce, double d2u[6]) { -- GitLab From 053ac654c31f33c97a3648fc2ef0864acff84de2 Mon Sep 17 00:00:00 2001 From: Andrew Schultz Date: Wed, 12 Jun 2019 20:32:22 -0400 Subject: [PATCH 047/627] Install.sh not needed --- src/USER-HMA/Install.sh | 31 ------------------------------- 1 file changed, 31 deletions(-) delete mode 100644 src/USER-HMA/Install.sh diff --git a/src/USER-HMA/Install.sh b/src/USER-HMA/Install.sh deleted file mode 100644 index 1f8f418ca2..0000000000 --- a/src/USER-HMA/Install.sh +++ /dev/null @@ -1,31 +0,0 @@ -# Install/Uninstall package files in LAMMPS -# mode = 0/1/2 for uninstall/install/update - -mode=$1 - -# enforce using portable C locale -LC_ALL=C -export LC_ALL - -# arg1 = file, arg2 = file it depends on - -action () { - if (test $mode = 0) then - rm -f ../$1 - elif (! cmp -s $1 ../$1) then - if (test -z "$2" || test -e ../$2) then - cp $1 .. - if (test $mode = 2) then - echo " updating src/$1" - fi - fi - elif (test -n "$2") then - if (test ! -e ../$2) then - rm -f ../$1 - fi - fi -} - -# package files without dependencies -action compute_hma.h -action compute_hma.cpp -- GitLab From 7fab12c36f847efddd6d6e6c0d1939c0036be0eb Mon Sep 17 00:00:00 2001 From: Julien Devemy Date: Fri, 14 Jun 2019 16:53:26 +0200 Subject: [PATCH 048/627] Add keyword hybridpair for compute_pressure only on a certain pair of a hybrid pair --- src/compute_pressure.cpp | 17 +++++++++++++++++ src/compute_pressure.h | 1 + src/pair_hybrid.h | 1 + 3 files changed, 19 insertions(+) diff --git a/src/compute_pressure.cpp b/src/compute_pressure.cpp index dde02a5aed..8381e04fa8 100644 --- a/src/compute_pressure.cpp +++ b/src/compute_pressure.cpp @@ -22,6 +22,7 @@ #include "fix.h" #include "force.h" #include "pair.h" +#include "pair_hybrid.h" #include "bond.h" #include "angle.h" #include "dihedral.h" @@ -66,6 +67,7 @@ ComputePressure::ComputePressure(LAMMPS *lmp, int narg, char **arg) : // process optional args + hybridpairflag = 0; if (narg == 4) { keflag = 1; pairflag = 1; @@ -79,6 +81,8 @@ ComputePressure::ComputePressure(LAMMPS *lmp, int narg, char **arg) : int iarg = 4; while (iarg < narg) { if (strcmp(arg[iarg],"ke") == 0) keflag = 1; + else if (strcmp(arg[iarg],"hybridpair") == 0) + hybridpairflag = force->inumeric(FLERR, arg[++iarg]); else if (strcmp(arg[iarg],"pair") == 0) pairflag = 1; else if (strcmp(arg[iarg],"bond") == 0) bondflag = 1; else if (strcmp(arg[iarg],"angle") == 0) angleflag = 1; @@ -140,6 +144,12 @@ void ComputePressure::init() nvirial = 0; vptr = NULL; + if (hybridpairflag > 0 && force->pair) { + if (strstr(force->pair_style, "hybrid")) { + PairHybrid *ph = (PairHybrid *) force->pair; + if (hybridpairflag <= ph->nstyles) nvirial++; + } + } if (pairflag && force->pair) nvirial++; if (bondflag && atom->molecular && force->bond) nvirial++; if (angleflag && atom->molecular && force->angle) nvirial++; @@ -152,6 +162,13 @@ void ComputePressure::init() if (nvirial) { vptr = new double*[nvirial]; nvirial = 0; + if (hybridpairflag > 0 && force->pair) { + if (strstr(force->pair_style, "hybrid")) { + PairHybrid *ph = (PairHybrid *) force->pair; + if (hybridpairflag <= ph->nstyles) + vptr[nvirial++] = ph->styles[hybridpairflag-1]->virial; + } + } if (pairflag && force->pair) vptr[nvirial++] = force->pair->virial; if (bondflag && force->bond) vptr[nvirial++] = force->bond->virial; if (angleflag && force->angle) vptr[nvirial++] = force->angle->virial; diff --git a/src/compute_pressure.h b/src/compute_pressure.h index a59a64e634..3259377bd8 100644 --- a/src/compute_pressure.h +++ b/src/compute_pressure.h @@ -41,6 +41,7 @@ class ComputePressure : public Compute { Compute *temperature; char *id_temp; double virial[6]; + int hybridpairflag; int keflag,pairflag,bondflag,angleflag,dihedralflag,improperflag; int fixflag,kspaceflag; diff --git a/src/pair_hybrid.h b/src/pair_hybrid.h index e313e16f18..1e0130ba3d 100644 --- a/src/pair_hybrid.h +++ b/src/pair_hybrid.h @@ -33,6 +33,7 @@ class PairHybrid : public Pair { friend class Respa; friend class Info; friend class PairDeprecated; + friend class ComputePressure; public: PairHybrid(class LAMMPS *); virtual ~PairHybrid(); -- GitLab From db3de8a31bbf16063cf19b6e71939aa933cbeb39 Mon Sep 17 00:00:00 2001 From: Andrew Schultz Date: Fri, 14 Jun 2019 13:48:31 -0400 Subject: [PATCH 049/627] rename Pair::single to single2nd --- src/USER-HMA/compute_hma.cpp | 2 +- src/pair.h | 2 +- src/pair_lj_smooth_linear.cpp | 2 +- src/pair_lj_smooth_linear.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/USER-HMA/compute_hma.cpp b/src/USER-HMA/compute_hma.cpp index 8edff5aa59..75ba335879 100644 --- a/src/USER-HMA/compute_hma.cpp +++ b/src/USER-HMA/compute_hma.cpp @@ -318,7 +318,7 @@ void ComputeHMA::compute_vector() if (rsq < cutsq[itype][jtype]) { double* jdr = deltaR[j]; double fforce, d2u[6]; - force->pair->single2(i, j, itype, jtype, rsq, delr, factor_coul, factor_lj, fforce, d2u); + force->pair->single2nd(i, j, itype, jtype, rsq, delr, factor_coul, factor_lj, fforce, d2u); int m = 0; for (int k=0; k<3; k++) { double a = fac; diff --git a/src/pair.h b/src/pair.h index 3947f4cd81..ae5bebf23a 100644 --- a/src/pair.h +++ b/src/pair.h @@ -149,7 +149,7 @@ class Pair : protected Pointers { void pairTensor(double fforce, double dfac, double delr[3], double phiTensor[6]); - virtual double single2(int, int, int, int, + virtual double single2nd(int, int, int, int, double, double[3], double, double, double& fforce, double d2u[6]) { fforce = 0.0; diff --git a/src/pair_lj_smooth_linear.cpp b/src/pair_lj_smooth_linear.cpp index d2bb6a1cc4..57f72dc28e 100644 --- a/src/pair_lj_smooth_linear.cpp +++ b/src/pair_lj_smooth_linear.cpp @@ -347,7 +347,7 @@ double PairLJSmoothLinear::single(int /*i*/, int /*j*/, int itype, int jtype, return factor_lj*philj; } -double PairLJSmoothLinear::single2(int /*i*/, int /*j*/, int itype, int jtype, double rsq, +double PairLJSmoothLinear::single2nd(int /*i*/, int /*j*/, int itype, int jtype, double rsq, double delr[3], double factor_coul, double factor_lj, double &fforce, double d2u[6]) { diff --git a/src/pair_lj_smooth_linear.h b/src/pair_lj_smooth_linear.h index 9cee9f2951..a43cbc23e2 100644 --- a/src/pair_lj_smooth_linear.h +++ b/src/pair_lj_smooth_linear.h @@ -38,7 +38,7 @@ class PairLJSmoothLinear : public Pair { void write_restart_settings(FILE *); void read_restart_settings(FILE *); double single(int, int, int, int, double, double, double, double &); - double single2(int, int, int, int, double, double[3], double, double, double&, double[6]); + double single2nd(int, int, int, int, double, double[3], double, double, double&, double[6]); protected: double cut_global; -- GitLab From 3611cfdaf8c153750ce8cc45ac239c1145eb0a2b Mon Sep 17 00:00:00 2001 From: mkanski Date: Fri, 14 Jun 2019 19:58:31 +0200 Subject: [PATCH 050/627] All styles support setting molecules' orientation --- doc/src/create_atoms.txt | 5 ++--- src/create_atoms.cpp | 10 ++++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/doc/src/create_atoms.txt b/doc/src/create_atoms.txt index d80e2d45f1..e673849793 100644 --- a/doc/src/create_atoms.txt +++ b/doc/src/create_atoms.txt @@ -242,9 +242,8 @@ write_dump all atom sinusoid.lammpstrj :pre :c,image(JPG/sinusoid_small.jpg,JPG/sinusoid.jpg) -The {rotate} keyword can only be used with the {single} style and -when adding a single molecule. It allows to specify the orientation -at which the molecule is inserted. The axis of rotation is +The {rotate} keyword allows to specify the orientation +at which molecules are inserted. The axis of rotation is determined by the rotation vector (Rx,Ry,Rz) that goes through the insertion point. The specified {theta} determines the angle of rotation around that axis. Note that the direction of rotation for diff --git a/src/create_atoms.cpp b/src/create_atoms.cpp index 52e4256fca..8869171115 100644 --- a/src/create_atoms.cpp +++ b/src/create_atoms.cpp @@ -176,8 +176,6 @@ void CreateAtoms::command(int narg, char **arg) } else error->all(FLERR,"Illegal create_atoms command"); iarg += 3; } else if (strcmp(arg[iarg],"rotate") == 0) { - if (style != SINGLE) - error->all(FLERR,"Cannot use create_atoms rotate unless single style"); if (iarg+5 > narg) error->all(FLERR,"Illegal create_atoms command"); double thetaone; double axisone[3]; @@ -678,7 +676,9 @@ void CreateAtoms::add_random() coord[1] >= sublo[1] && coord[1] < subhi[1] && coord[2] >= sublo[2] && coord[2] < subhi[2]) { if (mode == ATOM) atom->avec->create_atom(ntype,xone); - else add_molecule(xone); + else if (quatone[0] == 0 && quatone[1] == 0 && quatone[2] == 0) + add_molecule(xone); + else add_molecule(xone, quatone); } } @@ -832,7 +832,9 @@ void CreateAtoms::add_lattice() // add the atom or entire molecule to my list of atoms if (mode == ATOM) atom->avec->create_atom(basistype[m],x); - else add_molecule(x); + else if (quatone[0] == 0 && quatone[1] == 0 && quatone[2] == 0) + add_molecule(x); + else add_molecule(x,quatone); } } } -- GitLab From 343bc728e205f9e33a739aac149c087faec093ee Mon Sep 17 00:00:00 2001 From: Andrew Schultz Date: Fri, 14 Jun 2019 14:11:15 -0400 Subject: [PATCH 051/627] Cleanup: s/fix/compute/ and properly increment size_vector --- src/USER-HMA/compute_hma.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/USER-HMA/compute_hma.cpp b/src/USER-HMA/compute_hma.cpp index 75ba335879..9f6a976332 100644 --- a/src/USER-HMA/compute_hma.cpp +++ b/src/USER-HMA/compute_hma.cpp @@ -107,13 +107,15 @@ ComputeHMA::ComputeHMA(LAMMPS *lmp, int narg, char **arg) : if (computeU>-1) continue; computeU = size_vector; extlist[size_vector] = 1; + size_vector++; } else if (!strcmp(arg[iarg], "p")) { - if (iarg+2 > narg) error->all(FLERR,"Illegal fix hma command"); + if (iarg+2 > narg) error->all(FLERR,"Illegal compute hma command"); if (computeP>-1) continue; computeP = size_vector; deltaPcap = force->numeric(FLERR, arg[iarg+1]); extlist[size_vector] = 0; + size_vector++; iarg++; } else if (!strcmp(arg[iarg], "cv")) { @@ -121,18 +123,19 @@ ComputeHMA::ComputeHMA(LAMMPS *lmp, int narg, char **arg) : computeCv = size_vector; comm_forward = 3; extlist[size_vector] = 1; + size_vector++; } else if (!strcmp(arg[iarg], "anharmonic")) { // the first time we're called, we'll grab lattice pressure and energy returnAnharmonic = -1; } else { - error->all(FLERR,"Illegal fix hma command"); + error->all(FLERR,"Illegal compute hma command"); } } if (size_vector == 0) { - error->all(FLERR,"Illegal fix hma command"); + error->all(FLERR,"Illegal compute hma command"); } if (size_vector<3) { memory->grow(extlist, size_vector, "hma:extlist"); -- GitLab From 622cfd571818edc57f1b91443ed38c49f2c24e73 Mon Sep 17 00:00:00 2001 From: Andrew Schultz Date: Fri, 14 Jun 2019 14:12:09 -0400 Subject: [PATCH 052/627] Add single2nd_enable flag for Pair --- src/USER-HMA/compute_hma.cpp | 7 +++++++ src/pair.cpp | 1 + src/pair.h | 1 + src/pair_lj_smooth_linear.cpp | 4 +++- 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/USER-HMA/compute_hma.cpp b/src/USER-HMA/compute_hma.cpp index 9f6a976332..bedcda769d 100644 --- a/src/USER-HMA/compute_hma.cpp +++ b/src/USER-HMA/compute_hma.cpp @@ -169,6 +169,13 @@ ComputeHMA::~ComputeHMA() /* ---------------------------------------------------------------------- */ void ComputeHMA::init() { + if (computeCv>-1) { + if (force->pair == NULL) + error->all(FLERR,"No pair style is defined for compute hma cv"); + if (force->pair->single_enable == 0) + error->all(FLERR,"Pair style does not support compute hma cv"); + } + int irequest = neighbor->request(this,instance_me); neighbor->requests[irequest]->pair = 0; neighbor->requests[irequest]->compute = 1; diff --git a/src/pair.cpp b/src/pair.cpp index 15efa62c59..448df7f511 100644 --- a/src/pair.cpp +++ b/src/pair.cpp @@ -60,6 +60,7 @@ Pair::Pair(LAMMPS *lmp) : Pointers(lmp) comm_forward = comm_reverse = comm_reverse_off = 0; single_enable = 1; + single2nd_enable = 0; restartinfo = 1; respa_enable = 0; one_coeff = 0; diff --git a/src/pair.h b/src/pair.h index ae5bebf23a..d831e3010e 100644 --- a/src/pair.h +++ b/src/pair.h @@ -46,6 +46,7 @@ class Pair : protected Pointers { int comm_reverse_off; // size of reverse comm even if newton off int single_enable; // 1 if single() routine exists + int single2nd_enable; // 1 if single2nd() routine exists int restartinfo; // 1 if pair style writes restart info int respa_enable; // 1 if inner/middle/outer rRESPA routines int one_coeff; // 1 if allows only one coeff * * call diff --git a/src/pair_lj_smooth_linear.cpp b/src/pair_lj_smooth_linear.cpp index 57f72dc28e..0aa19570f2 100644 --- a/src/pair_lj_smooth_linear.cpp +++ b/src/pair_lj_smooth_linear.cpp @@ -30,7 +30,9 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -PairLJSmoothLinear::PairLJSmoothLinear(LAMMPS *lmp) : Pair(lmp) {} +PairLJSmoothLinear::PairLJSmoothLinear(LAMMPS *lmp) : Pair(lmp) { + single2nd_enable = 1; +} /* ---------------------------------------------------------------------- */ -- GitLab From 959da9de013d29d9e58bb4d2c4b6d8a48308bdc5 Mon Sep 17 00:00:00 2001 From: Rupert Nash Date: Sat, 16 Feb 2019 14:49:44 +0000 Subject: [PATCH 053/627] Create a compute for the momentum of a group of atoms --- src/Makefile.list | 4 +-- src/compute_momentum.cpp | 59 ++++++++++++++++++++++++++++++++++++++++ src/compute_momentum.h | 36 ++++++++++++++++++++++++ 3 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 src/compute_momentum.cpp create mode 100644 src/compute_momentum.h diff --git a/src/Makefile.list b/src/Makefile.list index 65bbebca09..6e4c9726a6 100644 --- a/src/Makefile.list +++ b/src/Makefile.list @@ -7,9 +7,9 @@ SHELL = /bin/sh ROOT = lmp EXE = $(ROOT)_$@ -SRC = angle.cpp angle_charmm.cpp angle_cosine.cpp angle_cosine_delta.cpp angle_cosine_squared.cpp angle_harmonic.cpp angle_hybrid.cpp angle_table.cpp atom.cpp atom_vec.cpp atom_vec_angle.cpp atom_vec_atomic.cpp atom_vec_bond.cpp atom_vec_charge.cpp atom_vec_full.cpp atom_vec_hybrid.cpp atom_vec_molecular.cpp bond.cpp bond_fene.cpp bond_fene_expand.cpp bond_harmonic.cpp bond_hybrid.cpp bond_morse.cpp bond_nonlinear.cpp bond_quartic.cpp bond_table.cpp change_box.cpp comm.cpp compute.cpp compute_angle_local.cpp compute_bond_local.cpp compute_centro_atom.cpp compute_cna_atom.cpp compute_com.cpp compute_com_molecule.cpp compute_coord_atom.cpp compute_dihedral_local.cpp compute_displace_atom.cpp compute_erotate_sphere.cpp compute_group_group.cpp compute_gyration.cpp compute_gyration_molecule.cpp compute_heat_flux.cpp compute_improper_local.cpp compute_ke.cpp compute_ke_atom.cpp compute_msd.cpp compute_msd_molecule.cpp compute_pair_local.cpp compute_pe.cpp compute_pe_atom.cpp compute_pressure.cpp compute_property_atom.cpp compute_property_local.cpp compute_property_molecule.cpp compute_rdf.cpp compute_reduce.cpp compute_reduce_region.cpp compute_stress_atom.cpp compute_temp.cpp compute_temp_com.cpp compute_temp_deform.cpp compute_temp_partial.cpp compute_temp_profile.cpp compute_temp_ramp.cpp compute_temp_region.cpp compute_temp_sphere.cpp create_atoms.cpp create_box.cpp delete_atoms.cpp delete_bonds.cpp dihedral.cpp dihedral_charmm.cpp dihedral_harmonic.cpp dihedral_helix.cpp dihedral_hybrid.cpp dihedral_multi_harmonic.cpp dihedral_opls.cpp displace_atoms.cpp displace_box.cpp domain.cpp dump.cpp dump_atom.cpp dump_cfg.cpp dump_custom.cpp dump_dcd.cpp dump_local.cpp dump_xyz.cpp error.cpp ewald.cpp fft3d.cpp fft3d_wrap.cpp finish.cpp fix.cpp fix_adapt.cpp fix_addforce.cpp fix_ave_atom.cpp fix_ave_correlate.cpp fix_ave_histo.cpp fix_ave_spatial.cpp fix_ave_time.cpp fix_aveforce.cpp fix_bond_break.cpp fix_bond_create.cpp fix_bond_swap.cpp fix_box_relax.cpp fix_deform.cpp fix_deposit.cpp fix_drag.cpp fix_dt_reset.cpp fix_efield.cpp fix_enforce2d.cpp fix_evaporate.cpp fix_gravity.cpp fix_heat.cpp fix_indent.cpp fix_langevin.cpp fix_lineforce.cpp fix_minimize.cpp fix_momentum.cpp fix_move.cpp fix_nh.cpp fix_nh_sphere.cpp fix_nph.cpp fix_nph_sphere.cpp fix_npt.cpp fix_npt_sphere.cpp fix_nve.cpp fix_nve_limit.cpp fix_nve_noforce.cpp fix_nve_sphere.cpp fix_nvt.cpp fix_nvt_sllod.cpp fix_nvt_sphere.cpp fix_orient_fcc.cpp fix_planeforce.cpp fix_press_berendsen.cpp fix_print.cpp fix_qeq_comb.cpp fix_recenter.cpp fix_respa.cpp fix_rigid.cpp fix_rigid_nve.cpp fix_rigid_nvt.cpp fix_setforce.cpp fix_shake.cpp fix_shear_history.cpp fix_spring.cpp fix_spring_rg.cpp fix_spring_self.cpp fix_store_force.cpp fix_store_state.cpp fix_temp_berendsen.cpp fix_temp_rescale.cpp fix_thermal_conductivity.cpp fix_tmd.cpp fix_ttm.cpp fix_viscosity.cpp fix_viscous.cpp fix_wall.cpp fix_wall_harmonic.cpp fix_wall_lj126.cpp fix_wall_lj93.cpp fix_wall_reflect.cpp fix_wall_region.cpp force.cpp group.cpp improper.cpp improper_cvff.cpp improper_harmonic.cpp improper_hybrid.cpp input.cpp integrate.cpp kspace.cpp lammps.cpp lattice.cpp library.cpp main.cpp memory.cpp min.cpp min_cg.cpp min_hftn.cpp min_linesearch.cpp min_sd.cpp minimize.cpp modify.cpp neigh_bond.cpp neigh_derive.cpp neigh_full.cpp neigh_gran.cpp neigh_half_bin.cpp neigh_half_multi.cpp neigh_half_nsq.cpp neigh_list.cpp neigh_request.cpp neigh_respa.cpp neigh_stencil.cpp neighbor.cpp output.cpp pack.cpp pair.cpp pair_airebo.cpp pair_born_coul_long.cpp pair_buck.cpp pair_buck_coul_cut.cpp pair_buck_coul_long.cpp pair_comb.cpp pair_coul_cut.cpp pair_coul_debye.cpp pair_coul_long.cpp pair_dpd.cpp pair_dpd_tstat.cpp pair_eam.cpp pair_eam_alloy.cpp pair_eam_fs.cpp pair_eim.cpp pair_hybrid.cpp pair_hybrid_overlay.cpp pair_lj96_cut.cpp pair_lj_charmm_coul_charmm.cpp pair_lj_charmm_coul_charmm_implicit.cpp pair_lj_charmm_coul_long.cpp pair_lj_cut.cpp pair_lj_cut_coul_cut.cpp pair_lj_cut_coul_debye.cpp pair_lj_cut_coul_long.cpp pair_lj_cut_coul_long_tip4p.cpp pair_lj_expand.cpp pair_lj_gromacs.cpp pair_lj_gromacs_coul_gromacs.cpp pair_lj_smooth.cpp pair_morse.cpp pair_soft.cpp pair_sw.cpp pair_table.cpp pair_tersoff.cpp pair_tersoff_zbl.cpp pair_yukawa.cpp pppm.cpp pppm_tip4p.cpp random_mars.cpp random_park.cpp read_data.cpp read_restart.cpp region.cpp region_block.cpp region_cone.cpp region_cylinder.cpp region_intersect.cpp region_plane.cpp region_prism.cpp region_sphere.cpp region_union.cpp remap.cpp remap_wrap.cpp replicate.cpp respa.cpp run.cpp set.cpp shell.cpp special.cpp temper.cpp thermo.cpp timer.cpp universe.cpp update.cpp variable.cpp velocity.cpp verlet.cpp write_restart.cpp +SRC = angle.cpp angle_charmm.cpp angle_cosine.cpp angle_cosine_delta.cpp angle_cosine_squared.cpp angle_harmonic.cpp angle_hybrid.cpp angle_table.cpp atom.cpp atom_vec.cpp atom_vec_angle.cpp atom_vec_atomic.cpp atom_vec_bond.cpp atom_vec_charge.cpp atom_vec_full.cpp atom_vec_hybrid.cpp atom_vec_molecular.cpp bond.cpp bond_fene.cpp bond_fene_expand.cpp bond_harmonic.cpp bond_hybrid.cpp bond_morse.cpp bond_nonlinear.cpp bond_quartic.cpp bond_table.cpp change_box.cpp comm.cpp compute.cpp compute_angle_local.cpp compute_bond_local.cpp compute_centro_atom.cpp compute_cna_atom.cpp compute_com.cpp compute_com_molecule.cpp compute_coord_atom.cpp compute_dihedral_local.cpp compute_displace_atom.cpp compute_erotate_sphere.cpp compute_group_group.cpp compute_gyration.cpp compute_gyration_molecule.cpp compute_heat_flux.cpp compute_improper_local.cpp compute_ke.cpp compute_ke_atom.cpp compute_momentum.cpp compute_msd.cpp compute_msd_molecule.cpp compute_pair_local.cpp compute_pe.cpp compute_pe_atom.cpp compute_pressure.cpp compute_property_atom.cpp compute_property_local.cpp compute_property_molecule.cpp compute_rdf.cpp compute_reduce.cpp compute_reduce_region.cpp compute_stress_atom.cpp compute_temp.cpp compute_temp_com.cpp compute_temp_deform.cpp compute_temp_partial.cpp compute_temp_profile.cpp compute_temp_ramp.cpp compute_temp_region.cpp compute_temp_sphere.cpp create_atoms.cpp create_box.cpp delete_atoms.cpp delete_bonds.cpp dihedral.cpp dihedral_charmm.cpp dihedral_harmonic.cpp dihedral_helix.cpp dihedral_hybrid.cpp dihedral_multi_harmonic.cpp dihedral_opls.cpp displace_atoms.cpp displace_box.cpp domain.cpp dump.cpp dump_atom.cpp dump_cfg.cpp dump_custom.cpp dump_dcd.cpp dump_local.cpp dump_xyz.cpp error.cpp ewald.cpp fft3d.cpp fft3d_wrap.cpp finish.cpp fix.cpp fix_adapt.cpp fix_addforce.cpp fix_ave_atom.cpp fix_ave_correlate.cpp fix_ave_histo.cpp fix_ave_spatial.cpp fix_ave_time.cpp fix_aveforce.cpp fix_bond_break.cpp fix_bond_create.cpp fix_bond_swap.cpp fix_box_relax.cpp fix_deform.cpp fix_deposit.cpp fix_drag.cpp fix_dt_reset.cpp fix_efield.cpp fix_enforce2d.cpp fix_evaporate.cpp fix_gravity.cpp fix_heat.cpp fix_indent.cpp fix_langevin.cpp fix_lineforce.cpp fix_minimize.cpp fix_momentum.cpp fix_move.cpp fix_nh.cpp fix_nh_sphere.cpp fix_nph.cpp fix_nph_sphere.cpp fix_npt.cpp fix_npt_sphere.cpp fix_nve.cpp fix_nve_limit.cpp fix_nve_noforce.cpp fix_nve_sphere.cpp fix_nvt.cpp fix_nvt_sllod.cpp fix_nvt_sphere.cpp fix_orient_fcc.cpp fix_planeforce.cpp fix_press_berendsen.cpp fix_print.cpp fix_qeq_comb.cpp fix_recenter.cpp fix_respa.cpp fix_rigid.cpp fix_rigid_nve.cpp fix_rigid_nvt.cpp fix_setforce.cpp fix_shake.cpp fix_shear_history.cpp fix_spring.cpp fix_spring_rg.cpp fix_spring_self.cpp fix_store_force.cpp fix_store_state.cpp fix_temp_berendsen.cpp fix_temp_rescale.cpp fix_thermal_conductivity.cpp fix_tmd.cpp fix_ttm.cpp fix_viscosity.cpp fix_viscous.cpp fix_wall.cpp fix_wall_harmonic.cpp fix_wall_lj126.cpp fix_wall_lj93.cpp fix_wall_reflect.cpp fix_wall_region.cpp force.cpp group.cpp improper.cpp improper_cvff.cpp improper_harmonic.cpp improper_hybrid.cpp input.cpp integrate.cpp kspace.cpp lammps.cpp lattice.cpp library.cpp main.cpp memory.cpp min.cpp min_cg.cpp min_hftn.cpp min_linesearch.cpp min_sd.cpp minimize.cpp modify.cpp neigh_bond.cpp neigh_derive.cpp neigh_full.cpp neigh_gran.cpp neigh_half_bin.cpp neigh_half_multi.cpp neigh_half_nsq.cpp neigh_list.cpp neigh_request.cpp neigh_respa.cpp neigh_stencil.cpp neighbor.cpp output.cpp pack.cpp pair.cpp pair_airebo.cpp pair_born_coul_long.cpp pair_buck.cpp pair_buck_coul_cut.cpp pair_buck_coul_long.cpp pair_comb.cpp pair_coul_cut.cpp pair_coul_debye.cpp pair_coul_long.cpp pair_dpd.cpp pair_dpd_tstat.cpp pair_eam.cpp pair_eam_alloy.cpp pair_eam_fs.cpp pair_eim.cpp pair_hybrid.cpp pair_hybrid_overlay.cpp pair_lj96_cut.cpp pair_lj_charmm_coul_charmm.cpp pair_lj_charmm_coul_charmm_implicit.cpp pair_lj_charmm_coul_long.cpp pair_lj_cut.cpp pair_lj_cut_coul_cut.cpp pair_lj_cut_coul_debye.cpp pair_lj_cut_coul_long.cpp pair_lj_cut_coul_long_tip4p.cpp pair_lj_expand.cpp pair_lj_gromacs.cpp pair_lj_gromacs_coul_gromacs.cpp pair_lj_smooth.cpp pair_morse.cpp pair_soft.cpp pair_sw.cpp pair_table.cpp pair_tersoff.cpp pair_tersoff_zbl.cpp pair_yukawa.cpp pppm.cpp pppm_tip4p.cpp random_mars.cpp random_park.cpp read_data.cpp read_restart.cpp region.cpp region_block.cpp region_cone.cpp region_cylinder.cpp region_intersect.cpp region_plane.cpp region_prism.cpp region_sphere.cpp region_union.cpp remap.cpp remap_wrap.cpp replicate.cpp respa.cpp run.cpp set.cpp shell.cpp special.cpp temper.cpp thermo.cpp timer.cpp universe.cpp update.cpp variable.cpp velocity.cpp verlet.cpp write_restart.cpp -INC = angle.h angle_charmm.h angle_cosine.h angle_cosine_delta.h angle_cosine_squared.h angle_harmonic.h angle_hybrid.h angle_table.h atom.h atom_vec.h atom_vec_angle.h atom_vec_atomic.h atom_vec_bond.h atom_vec_charge.h atom_vec_full.h atom_vec_hybrid.h atom_vec_molecular.h bond.h bond_fene.h bond_fene_expand.h bond_harmonic.h bond_hybrid.h bond_morse.h bond_nonlinear.h bond_quartic.h bond_table.h change_box.h comm.h compute.h compute_angle_local.h compute_bond_local.h compute_centro_atom.h compute_cna_atom.h compute_com.h compute_com_molecule.h compute_coord_atom.h compute_dihedral_local.h compute_displace_atom.h compute_erotate_sphere.h compute_group_group.h compute_gyration.h compute_gyration_molecule.h compute_heat_flux.h compute_improper_local.h compute_ke.h compute_ke_atom.h compute_msd.h compute_msd_molecule.h compute_pair_local.h compute_pe.h compute_pe_atom.h compute_pressure.h compute_property_atom.h compute_property_local.h compute_property_molecule.h compute_rdf.h compute_reduce.h compute_reduce_region.h compute_stress_atom.h compute_temp.h compute_temp_com.h compute_temp_deform.h compute_temp_partial.h compute_temp_profile.h compute_temp_ramp.h compute_temp_region.h compute_temp_sphere.h create_atoms.h create_box.h delete_atoms.h delete_bonds.h dihedral.h dihedral_charmm.h dihedral_harmonic.h dihedral_helix.h dihedral_hybrid.h dihedral_multi_harmonic.h dihedral_opls.h displace_atoms.h displace_box.h domain.h dump.h dump_atom.h dump_cfg.h dump_custom.h dump_dcd.h dump_local.h dump_xyz.h error.h ewald.h fft3d.h fft3d_wrap.h finish.h fix.h fix_adapt.h fix_addforce.h fix_ave_atom.h fix_ave_correlate.h fix_ave_histo.h fix_ave_spatial.h fix_ave_time.h fix_aveforce.h fix_bond_break.h fix_bond_create.h fix_bond_swap.h fix_box_relax.h fix_deform.h fix_deposit.h fix_drag.h fix_dt_reset.h fix_efield.h fix_enforce2d.h fix_evaporate.h fix_gravity.h fix_heat.h fix_indent.h fix_langevin.h fix_lineforce.h fix_minimize.h fix_momentum.h fix_move.h fix_nh.h fix_nh_sphere.h fix_nph.h fix_nph_sphere.h fix_npt.h fix_npt_sphere.h fix_nve.h fix_nve_limit.h fix_nve_noforce.h fix_nve_sphere.h fix_nvt.h fix_nvt_sllod.h fix_nvt_sphere.h fix_orient_fcc.h fix_planeforce.h fix_press_berendsen.h fix_print.h fix_qeq_comb.h fix_recenter.h fix_respa.h fix_rigid.h fix_rigid_nve.h fix_rigid_nvt.h fix_setforce.h fix_shake.h fix_shear_history.h fix_spring.h fix_spring_rg.h fix_spring_self.h fix_store_force.h fix_store_state.h fix_temp_berendsen.h fix_temp_rescale.h fix_thermal_conductivity.h fix_tmd.h fix_ttm.h fix_viscosity.h fix_viscous.h fix_wall.h fix_wall_harmonic.h fix_wall_lj126.h fix_wall_lj93.h fix_wall_reflect.h fix_wall_region.h force.h group.h improper.h improper_cvff.h improper_harmonic.h improper_hybrid.h input.h integrate.h kspace.h lammps.h lattice.h library.h math_extra.h memory.h min.h min_cg.h min_hftn.h min_linesearch.h min_sd.h minimize.h modify.h neigh_list.h neigh_request.h neighbor.h output.h pack.h pair.h pair_airebo.h pair_born_coul_long.h pair_buck.h pair_buck_coul_cut.h pair_buck_coul_long.h pair_comb.h pair_coul_cut.h pair_coul_debye.h pair_coul_long.h pair_dpd.h pair_dpd_tstat.h pair_eam.h pair_eam_alloy.h pair_eam_fs.h pair_eim.h pair_hybrid.h pair_hybrid_overlay.h pair_lj96_cut.h pair_lj_charmm_coul_charmm.h pair_lj_charmm_coul_charmm_implicit.h pair_lj_charmm_coul_long.h pair_lj_cut.h pair_lj_cut_coul_cut.h pair_lj_cut_coul_debye.h pair_lj_cut_coul_long.h pair_lj_cut_coul_long_tip4p.h pair_lj_expand.h pair_lj_gromacs.h pair_lj_gromacs_coul_gromacs.h pair_lj_smooth.h pair_morse.h pair_soft.h pair_sw.h pair_table.h pair_tersoff.h pair_tersoff_zbl.h pair_yukawa.h pointers.h pppm.h pppm_tip4p.h random_mars.h random_park.h read_data.h read_restart.h region.h region_block.h region_cone.h region_cylinder.h region_intersect.h region_plane.h region_prism.h region_sphere.h region_union.h remap.h remap_wrap.h replicate.h respa.h run.h set.h shell.h special.h style_angle.h style_atom.h style_bond.h style_command.h style_compute.h style_dihedral.h style_dump.h style_fix.h style_improper.h style_integrate.h style_kspace.h style_minimize.h style_pair.h style_region.h temper.h thermo.h timer.h universe.h update.h variable.h velocity.h verlet.h version.h write_restart.h +INC = angle.h angle_charmm.h angle_cosine.h angle_cosine_delta.h angle_cosine_squared.h angle_harmonic.h angle_hybrid.h angle_table.h atom.h atom_vec.h atom_vec_angle.h atom_vec_atomic.h atom_vec_bond.h atom_vec_charge.h atom_vec_full.h atom_vec_hybrid.h atom_vec_molecular.h bond.h bond_fene.h bond_fene_expand.h bond_harmonic.h bond_hybrid.h bond_morse.h bond_nonlinear.h bond_quartic.h bond_table.h change_box.h comm.h compute.h compute_angle_local.h compute_bond_local.h compute_centro_atom.h compute_cna_atom.h compute_com.h compute_com_molecule.h compute_coord_atom.h compute_dihedral_local.h compute_displace_atom.h compute_erotate_sphere.h compute_group_group.h compute_gyration.h compute_gyration_molecule.h compute_heat_flux.h compute_improper_local.h compute_ke.h compute_ke_atom.h compute_momentum.h compute_msd.h compute_msd_molecule.h compute_pair_local.h compute_pe.h compute_pe_atom.h compute_pressure.h compute_property_atom.h compute_property_local.h compute_property_molecule.h compute_rdf.h compute_reduce.h compute_reduce_region.h compute_stress_atom.h compute_temp.h compute_temp_com.h compute_temp_deform.h compute_temp_partial.h compute_temp_profile.h compute_temp_ramp.h compute_temp_region.h compute_temp_sphere.h create_atoms.h create_box.h delete_atoms.h delete_bonds.h dihedral.h dihedral_charmm.h dihedral_harmonic.h dihedral_helix.h dihedral_hybrid.h dihedral_multi_harmonic.h dihedral_opls.h displace_atoms.h displace_box.h domain.h dump.h dump_atom.h dump_cfg.h dump_custom.h dump_dcd.h dump_local.h dump_xyz.h error.h ewald.h fft3d.h fft3d_wrap.h finish.h fix.h fix_adapt.h fix_addforce.h fix_ave_atom.h fix_ave_correlate.h fix_ave_histo.h fix_ave_spatial.h fix_ave_time.h fix_aveforce.h fix_bond_break.h fix_bond_create.h fix_bond_swap.h fix_box_relax.h fix_deform.h fix_deposit.h fix_drag.h fix_dt_reset.h fix_efield.h fix_enforce2d.h fix_evaporate.h fix_gravity.h fix_heat.h fix_indent.h fix_langevin.h fix_lineforce.h fix_minimize.h fix_momentum.h fix_move.h fix_nh.h fix_nh_sphere.h fix_nph.h fix_nph_sphere.h fix_npt.h fix_npt_sphere.h fix_nve.h fix_nve_limit.h fix_nve_noforce.h fix_nve_sphere.h fix_nvt.h fix_nvt_sllod.h fix_nvt_sphere.h fix_orient_fcc.h fix_planeforce.h fix_press_berendsen.h fix_print.h fix_qeq_comb.h fix_recenter.h fix_respa.h fix_rigid.h fix_rigid_nve.h fix_rigid_nvt.h fix_setforce.h fix_shake.h fix_shear_history.h fix_spring.h fix_spring_rg.h fix_spring_self.h fix_store_force.h fix_store_state.h fix_temp_berendsen.h fix_temp_rescale.h fix_thermal_conductivity.h fix_tmd.h fix_ttm.h fix_viscosity.h fix_viscous.h fix_wall.h fix_wall_harmonic.h fix_wall_lj126.h fix_wall_lj93.h fix_wall_reflect.h fix_wall_region.h force.h group.h improper.h improper_cvff.h improper_harmonic.h improper_hybrid.h input.h integrate.h kspace.h lammps.h lattice.h library.h math_extra.h memory.h min.h min_cg.h min_hftn.h min_linesearch.h min_sd.h minimize.h modify.h neigh_list.h neigh_request.h neighbor.h output.h pack.h pair.h pair_airebo.h pair_born_coul_long.h pair_buck.h pair_buck_coul_cut.h pair_buck_coul_long.h pair_comb.h pair_coul_cut.h pair_coul_debye.h pair_coul_long.h pair_dpd.h pair_dpd_tstat.h pair_eam.h pair_eam_alloy.h pair_eam_fs.h pair_eim.h pair_hybrid.h pair_hybrid_overlay.h pair_lj96_cut.h pair_lj_charmm_coul_charmm.h pair_lj_charmm_coul_charmm_implicit.h pair_lj_charmm_coul_long.h pair_lj_cut.h pair_lj_cut_coul_cut.h pair_lj_cut_coul_debye.h pair_lj_cut_coul_long.h pair_lj_cut_coul_long_tip4p.h pair_lj_expand.h pair_lj_gromacs.h pair_lj_gromacs_coul_gromacs.h pair_lj_smooth.h pair_morse.h pair_soft.h pair_sw.h pair_table.h pair_tersoff.h pair_tersoff_zbl.h pair_yukawa.h pointers.h pppm.h pppm_tip4p.h random_mars.h random_park.h read_data.h read_restart.h region.h region_block.h region_cone.h region_cylinder.h region_intersect.h region_plane.h region_prism.h region_sphere.h region_union.h remap.h remap_wrap.h replicate.h respa.h run.h set.h shell.h special.h style_angle.h style_atom.h style_bond.h style_command.h style_compute.h style_dihedral.h style_dump.h style_fix.h style_improper.h style_integrate.h style_kspace.h style_minimize.h style_pair.h style_region.h temper.h thermo.h timer.h universe.h update.h variable.h velocity.h verlet.h version.h write_restart.h OBJ = $(SRC:.cpp=.o) diff --git a/src/compute_momentum.cpp b/src/compute_momentum.cpp new file mode 100644 index 0000000000..f8fc0ec6ab --- /dev/null +++ b/src/compute_momentum.cpp @@ -0,0 +1,59 @@ + +#include +#include "compute_momentum.h" +#include "atom.h" +#include "update.h" +#include "force.h" +#include "domain.h" +#include "group.h" +#include "error.h" + +using namespace LAMMPS_NS; + +ComputeMomentum::ComputeMomentum(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg) +{ + if (narg != 3) error->all(FLERR,"Illegal compute momentum command"); + + vector_flag = 1; + size_vector = 3; + extvector = 1; + vector = new double[size_vector]; +} + +ComputeMomentum::~ComputeMomentum() { + delete[] vector; +} + +void ComputeMomentum::init() +{ +} + +void ComputeMomentum::compute_vector() +{ + invoked_vector = update->ntimestep; + + double **v = atom->v; + double *rmass = atom->rmass; + double *mass = atom->mass; + int *mask = atom->mask; + int *type = atom->type; + int nlocal = atom->nlocal; + + double mom[3] = {0.0, 0.0, 0.0}; + + if (rmass) { + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + for(int j = 0; j < 3; ++j) + mom[j] += rmass[i] * v[i][j]; + } + } else { + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) + for(int j = 0; j < 3; ++j) + mom[j] += mass[type[i]] * v[i][j]; + } + + MPI_Allreduce(&mom, vector, 3, MPI_DOUBLE, MPI_SUM, world); +} diff --git a/src/compute_momentum.h b/src/compute_momentum.h new file mode 100644 index 0000000000..1e0c52c045 --- /dev/null +++ b/src/compute_momentum.h @@ -0,0 +1,36 @@ +#ifdef COMPUTE_CLASS + +ComputeStyle(momentum,ComputeMomentum) + +#else + +#ifndef LMP_COMPUTE_MOMENTUM_H +#define LMP_COMPUTE_MOMENTUM_H + +#include "compute.h" + +namespace LAMMPS_NS { + +class ComputeMomentum : public Compute { + public: + ComputeMomentum(class LAMMPS *, int, char **); + virtual ~ComputeMomentum(); + + virtual void init(); + virtual void compute_vector(); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +*/ -- GitLab From 26347ec80ce8a33a4162d5d5275d8be52d6666fa Mon Sep 17 00:00:00 2001 From: Rupert Nash Date: Wed, 19 Jun 2019 13:55:10 +0100 Subject: [PATCH 054/627] Add docs for compute momentum --- doc/src/Commands_compute.txt | 1 + doc/src/compute.txt | 1 + doc/src/compute_momentum.txt | 45 ++++++++++++++++++++++++++++++++++++ doc/src/computes.txt | 1 + doc/src/lammps.book | 1 + 5 files changed, 49 insertions(+) create mode 100644 doc/src/compute_momentum.txt diff --git a/doc/src/Commands_compute.txt b/doc/src/Commands_compute.txt index f566702609..0817f44adf 100644 --- a/doc/src/Commands_compute.txt +++ b/doc/src/Commands_compute.txt @@ -80,6 +80,7 @@ KOKKOS, o = USER-OMP, t = OPT. "meso/e/atom"_compute_meso_e_atom.html, "meso/rho/atom"_compute_meso_rho_atom.html, "meso/t/atom"_compute_meso_t_atom.html, +"momentum"_compute_momentum.html, "msd"_compute_msd.html, "msd/chunk"_compute_msd_chunk.html, "msd/nongauss"_compute_msd_nongauss.html, diff --git a/doc/src/compute.txt b/doc/src/compute.txt index 87dbee57d6..12c6b141b7 100644 --- a/doc/src/compute.txt +++ b/doc/src/compute.txt @@ -229,6 +229,7 @@ compute"_Commands_compute.html doc page are followed by one or more of "meso/e/atom"_compute_meso_e_atom.html - "meso/rho/atom"_compute_meso_rho_atom.html - "meso/t/atom"_compute_meso_t_atom.html - +"momentum"_compute_momentum.html - translational momentum "msd"_compute_msd.html - mean-squared displacement of group of atoms "msd/chunk"_compute_msd_chunk.html - mean-squared displacement for each chunk "msd/nongauss"_compute_msd_nongauss.html - MSD and non-Gaussian parameter of group of atoms diff --git a/doc/src/compute_momentum.txt b/doc/src/compute_momentum.txt new file mode 100644 index 0000000000..4db171d42d --- /dev/null +++ b/doc/src/compute_momentum.txt @@ -0,0 +1,45 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Commands_all.html) + +:line + +compute momentum command :h3 + +[Syntax:] + +compute ID group-ID momentum :pre + +ID, group-ID are documented in "compute"_compute.html command +momentum = style name of this compute command :ul + +[Examples:] + +compute 1 all momentum :pre + +[Description:] + +Define a computation that calculates the translational momentum +of a group of particles. + +The momentum of each particles is computed as m v, where m and v are +the mass and velocity of the particle. + +[Output info:] + +This compute calculates a global vector (the summed momentum) on +length 3. This value can be used by any command that uses a global +vector value from a compute as input. See the "Howto +output"_Howto_output.html doc page for an overview of LAMMPS output +options. + +The vector value calculated by this compute is "extensive". The vector +value will be in momentum "units"_units.html. + +[Restrictions:] none + +[Related commands:] + +[Default:] none diff --git a/doc/src/computes.txt b/doc/src/computes.txt index 926b8da222..1c914365b1 100644 --- a/doc/src/computes.txt +++ b/doc/src/computes.txt @@ -57,6 +57,7 @@ Computes :h1 compute_meso_e_atom compute_meso_rho_atom compute_meso_t_atom + compute_momentum compute_msd compute_msd_chunk compute_msd_nongauss diff --git a/doc/src/lammps.book b/doc/src/lammps.book index 2738c9b051..816acd3521 100644 --- a/doc/src/lammps.book +++ b/doc/src/lammps.book @@ -468,6 +468,7 @@ compute_ke_rigid.html compute_meso_e_atom.html compute_meso_rho_atom.html compute_meso_t_atom.html +compute_momentum.html compute_msd.html compute_msd_chunk.html compute_msd_nongauss.html -- GitLab From 52a3d825ef32729f101d2fe09703b519e3c06b0a Mon Sep 17 00:00:00 2001 From: Andrew Schultz Date: Wed, 19 Jun 2019 13:35:35 -0400 Subject: [PATCH 055/627] Explain more about advantages of HMA, restrictions, point to examples/hma --- doc/src/compute_hma.txt | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/doc/src/compute_hma.txt b/doc/src/compute_hma.txt index c203c281ed..58934be054 100644 --- a/doc/src/compute_hma.txt +++ b/doc/src/compute_hma.txt @@ -37,8 +37,24 @@ energy, pressure or heat capacity), using the harmonically-mapped averaging (HMA) method. This command yields much higher precision than the equivalent compute commands ("compute pe"_compute_pe.html, "compute pressure"_compute_pressure.html, etc.) -commands during a canonical simulation of an atomic crystal. - +commands during a canonical simulation of an atomic crystal. Specifically, +near melting HMA can yield averages of a given precision an order of magnitude +faster than conventional methods, and this only improves as the temperatures is +lowered. This is particularly important for evaluating the free energy by +thermodynamic integration, where the low-temperature contributions are the +greatest source of statistical uncertainty. Moreover, HMA has other +advantages, including smaller potential-truncation effects, finite-size +effects, smaller timestep inaccuracy, faster equilibration and shorter +decorrelation time. + +HMA should not be used if atoms are expected to diffuse. It is also +restricted to simulations in the NVT ensemble. + +Computation of the heat capacity with this compute is presently restricted to +the "lj_smooth_linear"_lj_smooth_linear.html pair style. Use with other pair +styles requires an additional method (single2nd) to be implemented in the +corresponding Pair class. Computation of the energy and pressure does not +have this restriction. In this method, the analytically known harmonic behavior of a crystal is removed from the traditional ensemble averages, which leads to an accurate and precise measurement of the anharmonic contributions without contamination @@ -119,7 +135,9 @@ NOTE: Compute hma should be used when the atoms of the solid do not diffuse. Dif NOTE: The "fix_modify energy yes"_fix_modify.html command must also be specified if a fix is to contribute potential energy to this command. -:line +An example input script that uses this compute is included in +examples/USER/hma/ along with corresponding LAMMPS output showing that the HMA +properties fluctuate less than the corresponding conventional properties. [Output info:] -- GitLab From 04cfaae54f99e7a6dc4e1cd4e10408a54f551a64 Mon Sep 17 00:00:00 2001 From: Andrew Schultz Date: Wed, 19 Jun 2019 13:37:41 -0400 Subject: [PATCH 056/627] Fold HMA README into source code in preparation for move to MISC --- src/USER-HMA/README | 30 ------------------------------ src/USER-HMA/compute_hma.cpp | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 30 deletions(-) delete mode 100644 src/USER-HMA/README diff --git a/src/USER-HMA/README b/src/USER-HMA/README deleted file mode 100644 index b27999341b..0000000000 --- a/src/USER-HMA/README +++ /dev/null @@ -1,30 +0,0 @@ -The HMA package implements the compute hma command for LAMMPS, which implements -harmonically-mapped averaging for crystalline solids. The current -implementation handles atomic crystals. - -Computing the heat capacity relies on being able to compute the second -derivative of the energy with respect to atom positions. This capability is -provided by the single2 method in Pair, but is currently only implemented for -the shifted-force LJ potential (lj/smooth/linear). Pair::single2 takes a single -pair and (like Pair::single) returns the energy and sets the force as an out -parameter, but also sets the elements of 6-element double array out parameter, -which are the unique components of the atomic Hessian tensor for the pair. A -helper method exists (Pair::pairTensor), which will compute the tensor from -linear derivatives and the vector between the positions. HMA Heat capacity can -be computed for other models by implementing single2 in those Pair classes. - -More information about HMA is available in these publications: - -A. J. Schultz, D. A. Kofke, “Comprehensive high-precision high-accuracy -equation of state and coexistence properties for classical Lennard-Jones -crystals and low-temperature fluid phases”, J. Chem. Phys. 149, 204508 (2018) -https://dx.doi.org/10.1063/1.5053714 - -S. G. Moustafa, A. J. Schultz, D. A. Kofke, “Harmonically Assisted Methods for -Computing the Free Energy of Classical Crystals by Molecular Simulation: A -Comparative Study”, J. Chem. Theory Comput. 13, 825-834 (2017) -https://dx.doi.org/10.1021/acs.jctc.6b01082 - -S. G. Moustafa, A. J. Schultz, D. A. Kofke, “Very fast averaging of thermal -properties of crystals by molecular simulation”, Phys. Rev. E 92, 043303 (2015) -https://dx.doi.org/10.1103/PhysRevE.92.043303 diff --git a/src/USER-HMA/compute_hma.cpp b/src/USER-HMA/compute_hma.cpp index bedcda769d..15cadbdd45 100644 --- a/src/USER-HMA/compute_hma.cpp +++ b/src/USER-HMA/compute_hma.cpp @@ -11,6 +11,38 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- +This compute implements harmonically-mapped averaging for crystalline solids. +The current implementation handles atomic crystals. + +Computing the heat capacity relies on being able to compute the second +derivative of the energy with respect to atom positions. This capability is +provided by the single2 method in Pair, but is currently only implemented for +the shifted-force LJ potential (lj/smooth/linear). Pair::single2 takes a single +pair and (like Pair::single) returns the energy and sets the force as an out +parameter, but also sets the elements of 6-element double array out parameter, +which are the unique components of the atomic Hessian tensor for the pair. A +helper method exists (Pair::pairTensor), which will compute the tensor from +linear derivatives and the vector between the positions. HMA Heat capacity can +be computed for other models by implementing single2 in those Pair classes. + +More information about HMA is available in these publications: + +A. J. Schultz, D. A. Kofke, “Comprehensive high-precision high-accuracy +equation of state and coexistence properties for classical Lennard-Jones +crystals and low-temperature fluid phases”, J. Chem. Phys. 149, 204508 (2018) +https://dx.doi.org/10.1063/1.5053714 + +S. G. Moustafa, A. J. Schultz, D. A. Kofke, “Harmonically Assisted Methods for +Computing the Free Energy of Classical Crystals by Molecular Simulation: A +Comparative Study”, J. Chem. Theory Comput. 13, 825-834 (2017) +https://dx.doi.org/10.1021/acs.jctc.6b01082 + +S. G. Moustafa, A. J. Schultz, D. A. Kofke, “Very fast averaging of thermal +properties of crystals by molecular simulation”, Phys. Rev. E 92, 043303 (2015) +https://dx.doi.org/10.1103/PhysRevE.92.043303 +------------------------------------------------------------------------- */ + #include #include #include -- GitLab From 395a9d3739eef12917d172525de3414b6178ee5c Mon Sep 17 00:00:00 2001 From: Andrew Schultz Date: Wed, 19 Jun 2019 16:12:15 -0400 Subject: [PATCH 057/627] Fold hma compute into USER-MISC --- cmake/CMakeLists.txt | 4 ++-- doc/src/Packages_details.txt | 20 ------------------- doc/src/Packages_user.txt | 1 - examples/USER/{ => misc}/hma/README | 0 examples/USER/{ => misc}/hma/hma.in | 0 .../USER/{ => misc}/hma/log.6Nov18.hma.g++.1 | 0 .../USER/{ => misc}/hma/log.6Nov18.hma.g++.4 | 0 src/{USER-HMA => USER-MISC}/compute_hma.cpp | 0 src/{USER-HMA => USER-MISC}/compute_hma.h | 0 9 files changed, 2 insertions(+), 23 deletions(-) rename examples/USER/{ => misc}/hma/README (100%) rename examples/USER/{ => misc}/hma/hma.in (100%) rename examples/USER/{ => misc}/hma/log.6Nov18.hma.g++.1 (100%) rename examples/USER/{ => misc}/hma/log.6Nov18.hma.g++.4 (100%) rename src/{USER-HMA => USER-MISC}/compute_hma.cpp (100%) rename src/{USER-HMA => USER-MISC}/compute_hma.h (100%) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index c2356002b2..911b6f0f15 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -177,8 +177,8 @@ set(DEFAULT_PACKAGES ASPHERE BODY CLASS2 COLLOID COMPRESS CORESHELL DIPOLE GRANULAR KSPACE LATTE MANYBODY MC MESSAGE MISC MOLECULE PERI POEMS QEQ REPLICA RIGID SHOCK SPIN SNAP SRD KIM PYTHON MSCG MPIIO VORONOI USER-ATC USER-AWPMD USER-BOCS USER-CGDNA USER-MESO USER-CGSDK USER-COLVARS - USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD USER-HMA - USER-LB USER-MANIFOLD USER-MEAMC USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE + USER-DIFFRACTION USER-DPD USER-DRUDE USER-EFF USER-FEP USER-H5MD USER-LB + USER-MANIFOLD USER-MEAMC USER-MGPT USER-MISC USER-MOFFF USER-MOLFILE USER-NETCDF USER-PHONON USER-PLUMED USER-PTM USER-QTB USER-REAXC USER-SCAFACOS USER-SDPD USER-SMD USER-SMTBQ USER-SPH USER-TALLY USER-UEF USER-VTK USER-QUIP USER-QMMM USER-YAFF USER-ADIOS) diff --git a/doc/src/Packages_details.txt b/doc/src/Packages_details.txt index 12f63e2e3b..1528adc420 100644 --- a/doc/src/Packages_details.txt +++ b/doc/src/Packages_details.txt @@ -76,7 +76,6 @@ as contained in the file name. "USER-EFF"_#PKG-USER-EFF, "USER-FEP"_#PKG-USER-FEP, "USER-H5MD"_#PKG-USER-H5MD, -"USER-HMA"_#PKG-USER-HMA, "USER-INTEL"_#PKG-USER-INTEL, "USER-LB"_#PKG-USER-LB, "USER-MANIFOLD"_#PKG-USER-MANIFOLD, @@ -1375,25 +1374,6 @@ lib/h5md/README :line -USER-HMA package :link(PKG-USER-HMA),h4 - -[Contents:] - -Harmonically mapped averaging for efficient calculation of properties of -crystalline solids. The compute hma can specify use of HMA for calculation of -potential energy, pressure and heat capacity. - -[Author:] Apoorva Purohit, Andrew Schultz and David Kofke (University at -Buffalo, NY, USA) - -[Supporting info:] - -examples/USER/hma/README -src/USER-HMA/README -"compute hma"_compute_hma.html :ul - -:line - USER-INTEL package :link(PKG-USER-INTEL),h4 [Contents:] diff --git a/doc/src/Packages_user.txt b/doc/src/Packages_user.txt index 3ce2a458b6..4210f617ef 100644 --- a/doc/src/Packages_user.txt +++ b/doc/src/Packages_user.txt @@ -51,7 +51,6 @@ Package, Description, Doc page, Example, Library "USER-EFF"_Packages_details.html#PKG-USER-EFF, electron force field,"pair_style eff/cut"_pair_eff.html, USER/eff, no "USER-FEP"_Packages_details.html#PKG-USER-FEP, free energy perturbation,"compute fep"_compute_fep.html, USER/fep, no "USER-H5MD"_Packages_details.html#PKG-USER-H5MD, dump output via HDF5,"dump h5md"_dump_h5md.html, n/a, ext -"USER-HMA"_Packages_details.html#PKG-USER-HMA, compute properties via HMA,"compute hma"_compute_hma.html, USER/hma, no "USER-INTEL"_Packages_details.html#PKG-USER-INTEL, optimized Intel CPU and KNL styles,"Speed intel"_Speed_intel.html, "Benchmarks"_http://lammps.sandia.gov/bench.html, no "USER-LB"_Packages_details.html#PKG-USER-LB, Lattice Boltzmann fluid,"fix lb/fluid"_fix_lb_fluid.html, USER/lb, no "USER-MANIFOLD"_Packages_details.html#PKG-USER-MANIFOLD, motion on 2d surfaces,"fix manifoldforce"_fix_manifoldforce.html, USER/manifold, no diff --git a/examples/USER/hma/README b/examples/USER/misc/hma/README similarity index 100% rename from examples/USER/hma/README rename to examples/USER/misc/hma/README diff --git a/examples/USER/hma/hma.in b/examples/USER/misc/hma/hma.in similarity index 100% rename from examples/USER/hma/hma.in rename to examples/USER/misc/hma/hma.in diff --git a/examples/USER/hma/log.6Nov18.hma.g++.1 b/examples/USER/misc/hma/log.6Nov18.hma.g++.1 similarity index 100% rename from examples/USER/hma/log.6Nov18.hma.g++.1 rename to examples/USER/misc/hma/log.6Nov18.hma.g++.1 diff --git a/examples/USER/hma/log.6Nov18.hma.g++.4 b/examples/USER/misc/hma/log.6Nov18.hma.g++.4 similarity index 100% rename from examples/USER/hma/log.6Nov18.hma.g++.4 rename to examples/USER/misc/hma/log.6Nov18.hma.g++.4 diff --git a/src/USER-HMA/compute_hma.cpp b/src/USER-MISC/compute_hma.cpp similarity index 100% rename from src/USER-HMA/compute_hma.cpp rename to src/USER-MISC/compute_hma.cpp diff --git a/src/USER-HMA/compute_hma.h b/src/USER-MISC/compute_hma.h similarity index 100% rename from src/USER-HMA/compute_hma.h rename to src/USER-MISC/compute_hma.h -- GitLab From fe5e952319a082deb831be24d27e425b8121aca8 Mon Sep 17 00:00:00 2001 From: Andrew Schultz Date: Wed, 19 Jun 2019 19:17:20 -0400 Subject: [PATCH 058/627] Fix docs issues --- doc/src/compute_hma.txt | 2 +- doc/utils/sphinx-config/false_positives.txt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/src/compute_hma.txt b/doc/src/compute_hma.txt index 58934be054..581e4afeb4 100644 --- a/doc/src/compute_hma.txt +++ b/doc/src/compute_hma.txt @@ -51,7 +51,7 @@ HMA should not be used if atoms are expected to diffuse. It is also restricted to simulations in the NVT ensemble. Computation of the heat capacity with this compute is presently restricted to -the "lj_smooth_linear"_lj_smooth_linear.html pair style. Use with other pair +the "pair_lj_smooth_linear"_pair_lj_smooth_linear.html pair style. Use with other pair styles requires an additional method (single2nd) to be implemented in the corresponding Pair class. Computation of the energy and pressure does not have this restriction. diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 3166544b10..07a0e4eaf0 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -518,6 +518,7 @@ Dcut de dE De +decorrelation debye Debye Decius -- GitLab From 128d021c10c2c0d4fd54bd81d7c49f82bf2dc0a9 Mon Sep 17 00:00:00 2001 From: "Ryan S. Elliott" Date: Thu, 20 Jun 2019 13:13:13 -0500 Subject: [PATCH 059/627] Update to latest prototype for SimulatorModel interface --- src/KIM/kim_style.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/KIM/kim_style.cpp b/src/KIM/kim_style.cpp index 814da6b188..b67360ce82 100644 --- a/src/KIM/kim_style.cpp +++ b/src/KIM/kim_style.cpp @@ -68,8 +68,9 @@ #include "variable.h" #include "fix_store_kim.h" +//@@@@@ Need to switch to c-bindings when they are available. #include "KIM_SimulatorModel.hpp" - +//@@@@@ using namespace LAMMPS_NS; @@ -131,6 +132,7 @@ void KimStyle::do_init(char *model) fix_store->setptr("units_to", (void *) units_to); int kimerror; + // @@@@@ switch to c-bindings when they are available KIM::SimulatorModel * simulatorModel; kimerror = KIM::SimulatorModel::Create(model,&simulatorModel); @@ -176,7 +178,7 @@ void KimStyle::do_init(char *model) // reset template map. - simulatorModel->ClearTemplateMap(); + simulatorModel->OpenAndInitializeTemplateMap(); } /* ---------------------------------------------------------------------- */ @@ -206,8 +208,7 @@ void KimStyle::do_defn(int narg, char **arg) const std::string *sim_name, *sim_version; std::string atom_type_sym_list; - simulatorModel->GetSimulatorName(&sim_name); - simulatorModel->GetSimulatorVersion(&sim_version); + simulatorModel->GetSimulatorNameAndVersion(&sim_name, &sim_version); if (comm->me == 0) { std::string mesg("Using KIM Simulator Model : "); @@ -292,7 +293,7 @@ void KimStyle::do_defn(int narg, char **arg) if (sim_model_idx < 0) error->all(FLERR,"KIM Simulator Model has no Model definition"); - simulatorModel->ClearTemplateMap(); + simulatorModel->OpenAndInitializeTemplateMap(); } else { -- GitLab From 0613c10395ab286a0dd7c82e1f0ab092bdacbb5a Mon Sep 17 00:00:00 2001 From: "Ryan S. Elliott" Date: Thu, 20 Jun 2019 16:45:45 -0500 Subject: [PATCH 060/627] Work on kim_style for latest definition prototype --- examples/kim/in.kim.lj.simulator_model | 9 +- src/KIM/kim_style.cpp | 288 ++++++++++++++++--------- src/KIM/kim_style.h | 34 ++- 3 files changed, 218 insertions(+), 113 deletions(-) diff --git a/examples/kim/in.kim.lj.simulator_model b/examples/kim/in.kim.lj.simulator_model index 15b26c3c64..01ee5aa64c 100644 --- a/examples/kim/in.kim.lj.simulator_model +++ b/examples/kim/in.kim.lj.simulator_model @@ -14,12 +14,11 @@ variable xx equal 20*$x variable yy equal 20*$y variable zz equal 20*$z -units metal -atom_style atomic +echo both +#kim_style model LennardJones_Ar metal +kim_style model Sim_LAMMPS_LJcut_AkersonElliott_Alchemy_PbAu real unit_conversion_mode newton on -kim_style init LennardJones_Ar - lattice fcc 4.4300 region box block 0 ${xx} 0 ${yy} 0 ${zz} create_box 1 box @@ -28,7 +27,7 @@ create_atoms 1 box #pair_style lj/cut 8.1500 #pair_coeff 1 1 0.0104 3.4000 -kim_style define Ar +kim_style setup Au mass 1 39.95 velocity all create 200.0 232345 loop geom diff --git a/src/KIM/kim_style.cpp b/src/KIM/kim_style.cpp index b67360ce82..fcc3f33aa2 100644 --- a/src/KIM/kim_style.cpp +++ b/src/KIM/kim_style.cpp @@ -51,7 +51,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Designed for use with the kim-api-2.0.2 (and newer) package + Designed for use with the kim-api-2.1.0 (and newer) package ------------------------------------------------------------------------- */ #include @@ -68,6 +68,9 @@ #include "variable.h" #include "fix_store_kim.h" +extern "C" { +#include "KIM_SimulatorHeaders.h" +} //@@@@@ Need to switch to c-bindings when they are available. #include "KIM_SimulatorModel.hpp" //@@@@@ @@ -78,42 +81,188 @@ using namespace LAMMPS_NS; void KimStyle::command(int narg, char **arg) { - if (narg < 2) error->all(FLERR,"Illegal kim_style command"); - - units_from = NULL; - units_to = NULL; + if ((narg < 2) || (narg > 4)) error->all(FLERR,"Illegal kim_style command"); - if (strcmp(arg[0],"init") == 0) { + if (strcmp(arg[0],"model") == 0) { if (domain->box_exist) - error->all(FLERR,"Must use 'kim_style init' command before " + error->all(FLERR,"Must use 'kim_style model' command before " "simulation box is defined"); - int len = strlen(arg[1])+1; - char *model = new char[len]; - strcpy(model,arg[1]); - - int args_done = do_units(narg-2,arg-2); - if (narg > (args_done + 2)) - error->all(FLERR,"Illegal kim_style command"); - do_init(model); - do_variables(); - } else if (strcmp(arg[0],"define") == 0) { + int len1 = strlen(arg[1])+1; + int len2 = strlen(arg[2])+1; + char *model_name = new char[len1]; strcpy(model_name,arg[1]); + char *user_units = new char[len2]; strcpy(user_units,arg[2]); + if (narg == 4) { + if (strcmp(arg[3],"unit_conversion_mode")==0) unit_conversion_mode = true; + else { error->all(FLERR,"Illegal kim_style command"); } + } else unit_conversion_mode = false; + + char *model_units; + determine_model_type_and_units(model_name, user_units, &model_units); + + do_init(model_name, user_units, model_units); + if (unit_conversion_mode) do_variables(user_units, model_units); + } else if (strcmp(arg[0],"setup") == 0) { if (!domain->box_exist) - error->all(FLERR,"Must use 'kim_style define' command after " + error->all(FLERR,"Must use 'kim_style setup' command after " "simulation box is defined"); - int args_done = do_units(narg-1,arg-1); - do_defn(narg - (args_done+1),arg + (args_done+1)); - } else if (strcmp(arg[0],"unit_variables") == 0) { - int args_done = do_units(narg,arg); - if (narg > args_done) - error->all(FLERR,"Illegal kim_style command"); - do_variables(); + do_setup(narg-1,++arg); } else error->all(FLERR,"Illegal kim_style command"); } +/* ---------------------------------------------------------------------- */ +namespace { +void get_kim_unit_names( + char const * const system, + KIM_LengthUnit & lengthUnit, + KIM_EnergyUnit & energyUnit, + KIM_ChargeUnit & chargeUnit, + KIM_TemperatureUnit & temperatureUnit, + KIM_TimeUnit & timeUnit, + Error * error) +{ + if ((strcmp(system,"real")==0)) { + lengthUnit = KIM_LENGTH_UNIT_A; + energyUnit = KIM_ENERGY_UNIT_kcal_mol; + chargeUnit = KIM_CHARGE_UNIT_e; + temperatureUnit = KIM_TEMPERATURE_UNIT_K; + timeUnit = KIM_TIME_UNIT_fs; + } else if ((strcmp(system,"metal")==0)) { + lengthUnit = KIM_LENGTH_UNIT_A; + energyUnit = KIM_ENERGY_UNIT_eV; + chargeUnit = KIM_CHARGE_UNIT_e; + temperatureUnit = KIM_TEMPERATURE_UNIT_K; + timeUnit = KIM_TIME_UNIT_ps; + } else if ((strcmp(system,"si")==0)) { + lengthUnit = KIM_LENGTH_UNIT_m; + energyUnit = KIM_ENERGY_UNIT_J; + chargeUnit = KIM_CHARGE_UNIT_C; + temperatureUnit = KIM_TEMPERATURE_UNIT_K; + timeUnit = KIM_TIME_UNIT_s; + } else if ((strcmp(system,"cgs")==0)) { + lengthUnit = KIM_LENGTH_UNIT_cm; + energyUnit = KIM_ENERGY_UNIT_erg; + chargeUnit = KIM_CHARGE_UNIT_statC; + temperatureUnit = KIM_TEMPERATURE_UNIT_K; + timeUnit = KIM_TIME_UNIT_s; + } else if ((strcmp(system,"electron")==0)) { + lengthUnit = KIM_LENGTH_UNIT_Bohr; + energyUnit = KIM_ENERGY_UNIT_Hartree; + chargeUnit = KIM_CHARGE_UNIT_e; + temperatureUnit = KIM_TEMPERATURE_UNIT_K; + timeUnit = KIM_TIME_UNIT_fs; + } else if ((strcmp(system,"lj")==0)) { + error->all(FLERR,"LAMMPS unit_style lj not supported by KIM models"); + } else { + error->all(FLERR,"Unknown unit_style"); + } +} +} // namespace +void KimStyle::determine_model_type_and_units(char * model_name, + char * user_units, + char ** model_units) +{ + KIM_LengthUnit lengthUnit; + KIM_EnergyUnit energyUnit; + KIM_ChargeUnit chargeUnit; + KIM_TemperatureUnit temperatureUnit; + KIM_TimeUnit timeUnit; + int units_accepted; + KIM_Model * kim_MO; + + get_kim_unit_names(user_units, lengthUnit, energyUnit, + chargeUnit, temperatureUnit, timeUnit, error); + int kim_error = KIM_Model_Create(KIM_NUMBERING_zeroBased, + lengthUnit, + energyUnit, + chargeUnit, + temperatureUnit, + timeUnit, + model_name, + &units_accepted, + &kim_MO); + + if (!kim_error) // model is an MO + { + model_type = MO; + KIM_Model_Destroy(&kim_MO); + + if (units_accepted) + { + int len=strlen(user_units); + *model_units = new char[len]; strcpy(*model_units,user_units); + return; + } + else if (unit_conversion_mode) + { + int const num_systems = 5; + char const * const systems[num_systems] + = {"metal", "real", "si", "cgs", "electron"}; + for (int i=0; i < num_systems; ++i) + { + get_kim_unit_names(systems[i], lengthUnit, energyUnit, + chargeUnit, temperatureUnit, timeUnit, error); + kim_error = KIM_Model_Create(KIM_NUMBERING_zeroBased, + lengthUnit, + energyUnit, + chargeUnit, + temperatureUnit, + timeUnit, + model_name, + &units_accepted, + &kim_MO); + KIM_Model_Destroy(&kim_MO); + if (units_accepted) + { + int len=strlen(systems[i]); + *model_units = new char[len]; strcpy(*model_units,systems[i]); + return; + } + } + error->all(FLERR,"KIM Model does not support any lammps unit system"); + } + else + { + error->all(FLERR,"KIM Model does not support the requested unit system"); + } + } + + KIM::SimulatorModel * kim_SM; + kim_error = KIM::SimulatorModel::Create(model_name, &kim_SM); + if (kim_error) + { + error->all(FLERR,"KIM model name not found"); + } + model_type = SM; + + int sim_fields; + int sim_lines; + std::string const * sim_field; + std::string const * sim_value; + kim_SM->GetNumberOfSimulatorFields(&sim_fields); + kim_SM->CloseTemplateMap(); + for (int i=0; i < sim_fields; ++i) { + kim_SM->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); + + if (*sim_field == "units") { + kim_SM->GetSimulatorFieldLine(i,0,&sim_value); + int len=(*sim_value).length(); + *model_units = new char[len]; strcpy(*model_units,sim_value->c_str()); + break; + } + } + KIM::SimulatorModel::Destroy(&kim_SM); + + if ((! unit_conversion_mode) && (strcmp(*model_units, user_units)!=0)) + { + error->all(FLERR,"Incompatible units for KIM Simulator Model"); + } +} + + /* ---------------------------------------------------------------------- */ -void KimStyle::do_init(char *model) +void KimStyle::do_init(char *model_name, char *user_units, char* model_units) { // create storage proxy fix. delete existing fix, if needed. @@ -127,14 +276,20 @@ void KimStyle::do_init(char *model) ifix = modify->find_fix("KIM_MODEL_STORE"); FixStoreKIM *fix_store = (FixStoreKIM *) modify->fix[ifix]; - fix_store->setptr("model_name", (void *) model); - fix_store->setptr("units_from", (void *) units_from); - fix_store->setptr("units_to", (void *) units_to); + fix_store->setptr("model_name", (void *) model_name); + fix_store->setptr("user_units", (void *) user_units); + fix_store->setptr("model_units", (void *) model_units); + + // set units + + std::string cmd("units "); + cmd += model_units; + input->one(cmd.c_str()); int kimerror; // @@@@@ switch to c-bindings when they are available KIM::SimulatorModel * simulatorModel; - kimerror = KIM::SimulatorModel::Create(model,&simulatorModel); + kimerror = KIM::SimulatorModel::Create(model_name,&simulatorModel); // not a Kim Simulator Model; nothing else to do here. @@ -150,19 +305,6 @@ void KimStyle::do_init(char *model) const std::string *sim_field, *sim_value; simulatorModel->GetNumberOfSimulatorFields(&sim_fields); - // set units - - for (int i=0; i < sim_fields; ++i) { - simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); - if (*sim_field == "units") { - simulatorModel->GetSimulatorFieldLine(i,0,&sim_value); - std::string cmd("units "); - cmd += *sim_value; - input->one(cmd.c_str()); - break; - } - } - // init model for (int i=0; i < sim_fields; ++i) { @@ -183,7 +325,7 @@ void KimStyle::do_init(char *model) /* ---------------------------------------------------------------------- */ -void KimStyle::do_defn(int narg, char **arg) +void KimStyle::do_setup(int narg, char **arg) { if (narg != atom->ntypes) error->all(FLERR,"Illegal kim_style command"); @@ -201,7 +343,7 @@ void KimStyle::do_defn(int narg, char **arg) FixStoreKIM *fix_store = (FixStoreKIM *) modify->fix[ifix]; model = (char *)fix_store->getptr("model_name"); simulatorModel = (KIM::SimulatorModel *)fix_store->getptr("simulator_model"); - } else error->all(FLERR,"Must use 'kim_style init' before 'kim_style define'"); + } else error->all(FLERR,"Must use 'kim_style model' before 'kim_style setup'"); if (simulatorModel) { @@ -317,62 +459,11 @@ void KimStyle::do_defn(int narg, char **arg) /* ---------------------------------------------------------------------- */ -int KimStyle::do_units(int narg, char **arg) -{ - // retrieve custom units setting if kim_style had been called before - - int ifix = modify->find_fix("KIM_MODEL_STORE"); - FixStoreKIM *fix_store = NULL; - if (ifix >= 0) { - fix_store = (FixStoreKIM *) modify->fix[ifix]; - units_from = (char *)fix_store->getptr("units_from"); - units_to = (char *)fix_store->getptr("units_to"); - } - - if (narg < 2) return 0; - int iarg=0; - for (iarg = 0; iarg < narg; iarg += 2) { - if (strcmp(arg[iarg],"unit_variables") == 0) { - if (narg > iarg+2) error->all(FLERR,"Illegal kim_style command"); - if (strcmp(arg[iarg+1],"NULL") == 0) { - delete[] units_to; - units_to = NULL; - } else { - int len = strlen(arg[iarg+1])+1; - delete[] units_to; - units_to = new char[len]; - strcpy(units_to,arg[iarg+1]); - } - if (fix_store) fix_store->setptr("units_to",units_to); - } else if (strcmp(arg[iarg],"unit_from") == 0) { - if (narg > iarg+2) error->all(FLERR,"Illegal kim_style command"); - if (strcmp(arg[iarg+1],"NULL") == 0) { - delete[] units_from; - units_from = NULL; - } else { - int len = strlen(arg[iarg+1])+1; - delete[] units_from; - units_from = new char[len]; - strcpy(units_from,arg[iarg+1]); - } - if (fix_store) fix_store->setptr("units_from",units_from); - } else return iarg; - } - return iarg; -} - -/* ---------------------------------------------------------------------- */ - -void KimStyle::do_variables() +void KimStyle::do_variables(char *user_units, char *model_units) { - char *from, *to; + char *from = user_units, *to = model_units; Variable *variable = input->variable; - if (units_from) from = units_from; - else from = update->unit_style; - if (units_to) to = units_to; - else to = update->unit_style; - // refuse convertion from or to reduced units if ((strcmp(from,"lj") == 0) || (strcmp(to,"lj") == 0)) @@ -381,6 +472,7 @@ void KimStyle::do_variables() // get index to internal style variables. create, if needed. // default to conversion factor 1.0 for newly created variables + // @@@@@@ below needs to be updated to use Ellad's luc. int v_length, v_mass, v_time; char *args[3]; args[1] = (char *)"internal"; diff --git a/src/KIM/kim_style.h b/src/KIM/kim_style.h index 36084183ee..b7ff47404f 100644 --- a/src/KIM/kim_style.h +++ b/src/KIM/kim_style.h @@ -51,7 +51,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Designed for use with the kim-api-2.0.2 (and newer) package + Designed for use with the kim-api-2.1.0 (and newer) package ------------------------------------------------------------------------- */ #ifdef COMMAND_CLASS @@ -72,12 +72,14 @@ class KimStyle : protected Pointers { KimStyle(class LAMMPS *lmp) : Pointers(lmp) {}; void command(int, char **); private: - char *units_from; - char *units_to; - void do_init(char *); - void do_defn(int, char **); - int do_units(int, char **); - void do_variables(); + enum model_type_enum {MO, SM}; + model_type_enum model_type; + bool unit_conversion_mode; + + void determine_model_type_and_units(char *, char *, char **); + void do_init(char *, char *, char *); + void do_setup(int, char **); + void do_variables(char*, char*); }; } @@ -91,15 +93,27 @@ E: Illegal kim_style command Incorrect number or kind of arguments to kim_style. -E: Must use 'kim_style init' command before simulation box is defined +E: Must use 'kim_style model' command before simulation box is defined Self-explanatory. -E: Must use 'kim_style define' command after simulation box is defined +E: Must use 'kim_style setup' command after simulation box is defined Self-explanatory. -E: Must use 'kim_style init' command before 'kim_style define' +E: Must use 'kim_style model' command before 'kim_style setup' + +Self-explanatory. + +E: KIM Model does not support the requested unit system + +Self-explanatory. + +E: KIM Model does not support any lammps unit system + +Self-explanatory. + +E: KIM model name not found Self-explanatory. -- GitLab From 1bb18ebde4dec8dab43741b4b9c005f732200214 Mon Sep 17 00:00:00 2001 From: Rupert Nash Date: Fri, 21 Jun 2019 15:50:52 +0100 Subject: [PATCH 061/627] rollback unneeded change to Makefile.list per review --- src/Makefile.list | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Makefile.list b/src/Makefile.list index 6e4c9726a6..65bbebca09 100644 --- a/src/Makefile.list +++ b/src/Makefile.list @@ -7,9 +7,9 @@ SHELL = /bin/sh ROOT = lmp EXE = $(ROOT)_$@ -SRC = angle.cpp angle_charmm.cpp angle_cosine.cpp angle_cosine_delta.cpp angle_cosine_squared.cpp angle_harmonic.cpp angle_hybrid.cpp angle_table.cpp atom.cpp atom_vec.cpp atom_vec_angle.cpp atom_vec_atomic.cpp atom_vec_bond.cpp atom_vec_charge.cpp atom_vec_full.cpp atom_vec_hybrid.cpp atom_vec_molecular.cpp bond.cpp bond_fene.cpp bond_fene_expand.cpp bond_harmonic.cpp bond_hybrid.cpp bond_morse.cpp bond_nonlinear.cpp bond_quartic.cpp bond_table.cpp change_box.cpp comm.cpp compute.cpp compute_angle_local.cpp compute_bond_local.cpp compute_centro_atom.cpp compute_cna_atom.cpp compute_com.cpp compute_com_molecule.cpp compute_coord_atom.cpp compute_dihedral_local.cpp compute_displace_atom.cpp compute_erotate_sphere.cpp compute_group_group.cpp compute_gyration.cpp compute_gyration_molecule.cpp compute_heat_flux.cpp compute_improper_local.cpp compute_ke.cpp compute_ke_atom.cpp compute_momentum.cpp compute_msd.cpp compute_msd_molecule.cpp compute_pair_local.cpp compute_pe.cpp compute_pe_atom.cpp compute_pressure.cpp compute_property_atom.cpp compute_property_local.cpp compute_property_molecule.cpp compute_rdf.cpp compute_reduce.cpp compute_reduce_region.cpp compute_stress_atom.cpp compute_temp.cpp compute_temp_com.cpp compute_temp_deform.cpp compute_temp_partial.cpp compute_temp_profile.cpp compute_temp_ramp.cpp compute_temp_region.cpp compute_temp_sphere.cpp create_atoms.cpp create_box.cpp delete_atoms.cpp delete_bonds.cpp dihedral.cpp dihedral_charmm.cpp dihedral_harmonic.cpp dihedral_helix.cpp dihedral_hybrid.cpp dihedral_multi_harmonic.cpp dihedral_opls.cpp displace_atoms.cpp displace_box.cpp domain.cpp dump.cpp dump_atom.cpp dump_cfg.cpp dump_custom.cpp dump_dcd.cpp dump_local.cpp dump_xyz.cpp error.cpp ewald.cpp fft3d.cpp fft3d_wrap.cpp finish.cpp fix.cpp fix_adapt.cpp fix_addforce.cpp fix_ave_atom.cpp fix_ave_correlate.cpp fix_ave_histo.cpp fix_ave_spatial.cpp fix_ave_time.cpp fix_aveforce.cpp fix_bond_break.cpp fix_bond_create.cpp fix_bond_swap.cpp fix_box_relax.cpp fix_deform.cpp fix_deposit.cpp fix_drag.cpp fix_dt_reset.cpp fix_efield.cpp fix_enforce2d.cpp fix_evaporate.cpp fix_gravity.cpp fix_heat.cpp fix_indent.cpp fix_langevin.cpp fix_lineforce.cpp fix_minimize.cpp fix_momentum.cpp fix_move.cpp fix_nh.cpp fix_nh_sphere.cpp fix_nph.cpp fix_nph_sphere.cpp fix_npt.cpp fix_npt_sphere.cpp fix_nve.cpp fix_nve_limit.cpp fix_nve_noforce.cpp fix_nve_sphere.cpp fix_nvt.cpp fix_nvt_sllod.cpp fix_nvt_sphere.cpp fix_orient_fcc.cpp fix_planeforce.cpp fix_press_berendsen.cpp fix_print.cpp fix_qeq_comb.cpp fix_recenter.cpp fix_respa.cpp fix_rigid.cpp fix_rigid_nve.cpp fix_rigid_nvt.cpp fix_setforce.cpp fix_shake.cpp fix_shear_history.cpp fix_spring.cpp fix_spring_rg.cpp fix_spring_self.cpp fix_store_force.cpp fix_store_state.cpp fix_temp_berendsen.cpp fix_temp_rescale.cpp fix_thermal_conductivity.cpp fix_tmd.cpp fix_ttm.cpp fix_viscosity.cpp fix_viscous.cpp fix_wall.cpp fix_wall_harmonic.cpp fix_wall_lj126.cpp fix_wall_lj93.cpp fix_wall_reflect.cpp fix_wall_region.cpp force.cpp group.cpp improper.cpp improper_cvff.cpp improper_harmonic.cpp improper_hybrid.cpp input.cpp integrate.cpp kspace.cpp lammps.cpp lattice.cpp library.cpp main.cpp memory.cpp min.cpp min_cg.cpp min_hftn.cpp min_linesearch.cpp min_sd.cpp minimize.cpp modify.cpp neigh_bond.cpp neigh_derive.cpp neigh_full.cpp neigh_gran.cpp neigh_half_bin.cpp neigh_half_multi.cpp neigh_half_nsq.cpp neigh_list.cpp neigh_request.cpp neigh_respa.cpp neigh_stencil.cpp neighbor.cpp output.cpp pack.cpp pair.cpp pair_airebo.cpp pair_born_coul_long.cpp pair_buck.cpp pair_buck_coul_cut.cpp pair_buck_coul_long.cpp pair_comb.cpp pair_coul_cut.cpp pair_coul_debye.cpp pair_coul_long.cpp pair_dpd.cpp pair_dpd_tstat.cpp pair_eam.cpp pair_eam_alloy.cpp pair_eam_fs.cpp pair_eim.cpp pair_hybrid.cpp pair_hybrid_overlay.cpp pair_lj96_cut.cpp pair_lj_charmm_coul_charmm.cpp pair_lj_charmm_coul_charmm_implicit.cpp pair_lj_charmm_coul_long.cpp pair_lj_cut.cpp pair_lj_cut_coul_cut.cpp pair_lj_cut_coul_debye.cpp pair_lj_cut_coul_long.cpp pair_lj_cut_coul_long_tip4p.cpp pair_lj_expand.cpp pair_lj_gromacs.cpp pair_lj_gromacs_coul_gromacs.cpp pair_lj_smooth.cpp pair_morse.cpp pair_soft.cpp pair_sw.cpp pair_table.cpp pair_tersoff.cpp pair_tersoff_zbl.cpp pair_yukawa.cpp pppm.cpp pppm_tip4p.cpp random_mars.cpp random_park.cpp read_data.cpp read_restart.cpp region.cpp region_block.cpp region_cone.cpp region_cylinder.cpp region_intersect.cpp region_plane.cpp region_prism.cpp region_sphere.cpp region_union.cpp remap.cpp remap_wrap.cpp replicate.cpp respa.cpp run.cpp set.cpp shell.cpp special.cpp temper.cpp thermo.cpp timer.cpp universe.cpp update.cpp variable.cpp velocity.cpp verlet.cpp write_restart.cpp +SRC = angle.cpp angle_charmm.cpp angle_cosine.cpp angle_cosine_delta.cpp angle_cosine_squared.cpp angle_harmonic.cpp angle_hybrid.cpp angle_table.cpp atom.cpp atom_vec.cpp atom_vec_angle.cpp atom_vec_atomic.cpp atom_vec_bond.cpp atom_vec_charge.cpp atom_vec_full.cpp atom_vec_hybrid.cpp atom_vec_molecular.cpp bond.cpp bond_fene.cpp bond_fene_expand.cpp bond_harmonic.cpp bond_hybrid.cpp bond_morse.cpp bond_nonlinear.cpp bond_quartic.cpp bond_table.cpp change_box.cpp comm.cpp compute.cpp compute_angle_local.cpp compute_bond_local.cpp compute_centro_atom.cpp compute_cna_atom.cpp compute_com.cpp compute_com_molecule.cpp compute_coord_atom.cpp compute_dihedral_local.cpp compute_displace_atom.cpp compute_erotate_sphere.cpp compute_group_group.cpp compute_gyration.cpp compute_gyration_molecule.cpp compute_heat_flux.cpp compute_improper_local.cpp compute_ke.cpp compute_ke_atom.cpp compute_msd.cpp compute_msd_molecule.cpp compute_pair_local.cpp compute_pe.cpp compute_pe_atom.cpp compute_pressure.cpp compute_property_atom.cpp compute_property_local.cpp compute_property_molecule.cpp compute_rdf.cpp compute_reduce.cpp compute_reduce_region.cpp compute_stress_atom.cpp compute_temp.cpp compute_temp_com.cpp compute_temp_deform.cpp compute_temp_partial.cpp compute_temp_profile.cpp compute_temp_ramp.cpp compute_temp_region.cpp compute_temp_sphere.cpp create_atoms.cpp create_box.cpp delete_atoms.cpp delete_bonds.cpp dihedral.cpp dihedral_charmm.cpp dihedral_harmonic.cpp dihedral_helix.cpp dihedral_hybrid.cpp dihedral_multi_harmonic.cpp dihedral_opls.cpp displace_atoms.cpp displace_box.cpp domain.cpp dump.cpp dump_atom.cpp dump_cfg.cpp dump_custom.cpp dump_dcd.cpp dump_local.cpp dump_xyz.cpp error.cpp ewald.cpp fft3d.cpp fft3d_wrap.cpp finish.cpp fix.cpp fix_adapt.cpp fix_addforce.cpp fix_ave_atom.cpp fix_ave_correlate.cpp fix_ave_histo.cpp fix_ave_spatial.cpp fix_ave_time.cpp fix_aveforce.cpp fix_bond_break.cpp fix_bond_create.cpp fix_bond_swap.cpp fix_box_relax.cpp fix_deform.cpp fix_deposit.cpp fix_drag.cpp fix_dt_reset.cpp fix_efield.cpp fix_enforce2d.cpp fix_evaporate.cpp fix_gravity.cpp fix_heat.cpp fix_indent.cpp fix_langevin.cpp fix_lineforce.cpp fix_minimize.cpp fix_momentum.cpp fix_move.cpp fix_nh.cpp fix_nh_sphere.cpp fix_nph.cpp fix_nph_sphere.cpp fix_npt.cpp fix_npt_sphere.cpp fix_nve.cpp fix_nve_limit.cpp fix_nve_noforce.cpp fix_nve_sphere.cpp fix_nvt.cpp fix_nvt_sllod.cpp fix_nvt_sphere.cpp fix_orient_fcc.cpp fix_planeforce.cpp fix_press_berendsen.cpp fix_print.cpp fix_qeq_comb.cpp fix_recenter.cpp fix_respa.cpp fix_rigid.cpp fix_rigid_nve.cpp fix_rigid_nvt.cpp fix_setforce.cpp fix_shake.cpp fix_shear_history.cpp fix_spring.cpp fix_spring_rg.cpp fix_spring_self.cpp fix_store_force.cpp fix_store_state.cpp fix_temp_berendsen.cpp fix_temp_rescale.cpp fix_thermal_conductivity.cpp fix_tmd.cpp fix_ttm.cpp fix_viscosity.cpp fix_viscous.cpp fix_wall.cpp fix_wall_harmonic.cpp fix_wall_lj126.cpp fix_wall_lj93.cpp fix_wall_reflect.cpp fix_wall_region.cpp force.cpp group.cpp improper.cpp improper_cvff.cpp improper_harmonic.cpp improper_hybrid.cpp input.cpp integrate.cpp kspace.cpp lammps.cpp lattice.cpp library.cpp main.cpp memory.cpp min.cpp min_cg.cpp min_hftn.cpp min_linesearch.cpp min_sd.cpp minimize.cpp modify.cpp neigh_bond.cpp neigh_derive.cpp neigh_full.cpp neigh_gran.cpp neigh_half_bin.cpp neigh_half_multi.cpp neigh_half_nsq.cpp neigh_list.cpp neigh_request.cpp neigh_respa.cpp neigh_stencil.cpp neighbor.cpp output.cpp pack.cpp pair.cpp pair_airebo.cpp pair_born_coul_long.cpp pair_buck.cpp pair_buck_coul_cut.cpp pair_buck_coul_long.cpp pair_comb.cpp pair_coul_cut.cpp pair_coul_debye.cpp pair_coul_long.cpp pair_dpd.cpp pair_dpd_tstat.cpp pair_eam.cpp pair_eam_alloy.cpp pair_eam_fs.cpp pair_eim.cpp pair_hybrid.cpp pair_hybrid_overlay.cpp pair_lj96_cut.cpp pair_lj_charmm_coul_charmm.cpp pair_lj_charmm_coul_charmm_implicit.cpp pair_lj_charmm_coul_long.cpp pair_lj_cut.cpp pair_lj_cut_coul_cut.cpp pair_lj_cut_coul_debye.cpp pair_lj_cut_coul_long.cpp pair_lj_cut_coul_long_tip4p.cpp pair_lj_expand.cpp pair_lj_gromacs.cpp pair_lj_gromacs_coul_gromacs.cpp pair_lj_smooth.cpp pair_morse.cpp pair_soft.cpp pair_sw.cpp pair_table.cpp pair_tersoff.cpp pair_tersoff_zbl.cpp pair_yukawa.cpp pppm.cpp pppm_tip4p.cpp random_mars.cpp random_park.cpp read_data.cpp read_restart.cpp region.cpp region_block.cpp region_cone.cpp region_cylinder.cpp region_intersect.cpp region_plane.cpp region_prism.cpp region_sphere.cpp region_union.cpp remap.cpp remap_wrap.cpp replicate.cpp respa.cpp run.cpp set.cpp shell.cpp special.cpp temper.cpp thermo.cpp timer.cpp universe.cpp update.cpp variable.cpp velocity.cpp verlet.cpp write_restart.cpp -INC = angle.h angle_charmm.h angle_cosine.h angle_cosine_delta.h angle_cosine_squared.h angle_harmonic.h angle_hybrid.h angle_table.h atom.h atom_vec.h atom_vec_angle.h atom_vec_atomic.h atom_vec_bond.h atom_vec_charge.h atom_vec_full.h atom_vec_hybrid.h atom_vec_molecular.h bond.h bond_fene.h bond_fene_expand.h bond_harmonic.h bond_hybrid.h bond_morse.h bond_nonlinear.h bond_quartic.h bond_table.h change_box.h comm.h compute.h compute_angle_local.h compute_bond_local.h compute_centro_atom.h compute_cna_atom.h compute_com.h compute_com_molecule.h compute_coord_atom.h compute_dihedral_local.h compute_displace_atom.h compute_erotate_sphere.h compute_group_group.h compute_gyration.h compute_gyration_molecule.h compute_heat_flux.h compute_improper_local.h compute_ke.h compute_ke_atom.h compute_momentum.h compute_msd.h compute_msd_molecule.h compute_pair_local.h compute_pe.h compute_pe_atom.h compute_pressure.h compute_property_atom.h compute_property_local.h compute_property_molecule.h compute_rdf.h compute_reduce.h compute_reduce_region.h compute_stress_atom.h compute_temp.h compute_temp_com.h compute_temp_deform.h compute_temp_partial.h compute_temp_profile.h compute_temp_ramp.h compute_temp_region.h compute_temp_sphere.h create_atoms.h create_box.h delete_atoms.h delete_bonds.h dihedral.h dihedral_charmm.h dihedral_harmonic.h dihedral_helix.h dihedral_hybrid.h dihedral_multi_harmonic.h dihedral_opls.h displace_atoms.h displace_box.h domain.h dump.h dump_atom.h dump_cfg.h dump_custom.h dump_dcd.h dump_local.h dump_xyz.h error.h ewald.h fft3d.h fft3d_wrap.h finish.h fix.h fix_adapt.h fix_addforce.h fix_ave_atom.h fix_ave_correlate.h fix_ave_histo.h fix_ave_spatial.h fix_ave_time.h fix_aveforce.h fix_bond_break.h fix_bond_create.h fix_bond_swap.h fix_box_relax.h fix_deform.h fix_deposit.h fix_drag.h fix_dt_reset.h fix_efield.h fix_enforce2d.h fix_evaporate.h fix_gravity.h fix_heat.h fix_indent.h fix_langevin.h fix_lineforce.h fix_minimize.h fix_momentum.h fix_move.h fix_nh.h fix_nh_sphere.h fix_nph.h fix_nph_sphere.h fix_npt.h fix_npt_sphere.h fix_nve.h fix_nve_limit.h fix_nve_noforce.h fix_nve_sphere.h fix_nvt.h fix_nvt_sllod.h fix_nvt_sphere.h fix_orient_fcc.h fix_planeforce.h fix_press_berendsen.h fix_print.h fix_qeq_comb.h fix_recenter.h fix_respa.h fix_rigid.h fix_rigid_nve.h fix_rigid_nvt.h fix_setforce.h fix_shake.h fix_shear_history.h fix_spring.h fix_spring_rg.h fix_spring_self.h fix_store_force.h fix_store_state.h fix_temp_berendsen.h fix_temp_rescale.h fix_thermal_conductivity.h fix_tmd.h fix_ttm.h fix_viscosity.h fix_viscous.h fix_wall.h fix_wall_harmonic.h fix_wall_lj126.h fix_wall_lj93.h fix_wall_reflect.h fix_wall_region.h force.h group.h improper.h improper_cvff.h improper_harmonic.h improper_hybrid.h input.h integrate.h kspace.h lammps.h lattice.h library.h math_extra.h memory.h min.h min_cg.h min_hftn.h min_linesearch.h min_sd.h minimize.h modify.h neigh_list.h neigh_request.h neighbor.h output.h pack.h pair.h pair_airebo.h pair_born_coul_long.h pair_buck.h pair_buck_coul_cut.h pair_buck_coul_long.h pair_comb.h pair_coul_cut.h pair_coul_debye.h pair_coul_long.h pair_dpd.h pair_dpd_tstat.h pair_eam.h pair_eam_alloy.h pair_eam_fs.h pair_eim.h pair_hybrid.h pair_hybrid_overlay.h pair_lj96_cut.h pair_lj_charmm_coul_charmm.h pair_lj_charmm_coul_charmm_implicit.h pair_lj_charmm_coul_long.h pair_lj_cut.h pair_lj_cut_coul_cut.h pair_lj_cut_coul_debye.h pair_lj_cut_coul_long.h pair_lj_cut_coul_long_tip4p.h pair_lj_expand.h pair_lj_gromacs.h pair_lj_gromacs_coul_gromacs.h pair_lj_smooth.h pair_morse.h pair_soft.h pair_sw.h pair_table.h pair_tersoff.h pair_tersoff_zbl.h pair_yukawa.h pointers.h pppm.h pppm_tip4p.h random_mars.h random_park.h read_data.h read_restart.h region.h region_block.h region_cone.h region_cylinder.h region_intersect.h region_plane.h region_prism.h region_sphere.h region_union.h remap.h remap_wrap.h replicate.h respa.h run.h set.h shell.h special.h style_angle.h style_atom.h style_bond.h style_command.h style_compute.h style_dihedral.h style_dump.h style_fix.h style_improper.h style_integrate.h style_kspace.h style_minimize.h style_pair.h style_region.h temper.h thermo.h timer.h universe.h update.h variable.h velocity.h verlet.h version.h write_restart.h +INC = angle.h angle_charmm.h angle_cosine.h angle_cosine_delta.h angle_cosine_squared.h angle_harmonic.h angle_hybrid.h angle_table.h atom.h atom_vec.h atom_vec_angle.h atom_vec_atomic.h atom_vec_bond.h atom_vec_charge.h atom_vec_full.h atom_vec_hybrid.h atom_vec_molecular.h bond.h bond_fene.h bond_fene_expand.h bond_harmonic.h bond_hybrid.h bond_morse.h bond_nonlinear.h bond_quartic.h bond_table.h change_box.h comm.h compute.h compute_angle_local.h compute_bond_local.h compute_centro_atom.h compute_cna_atom.h compute_com.h compute_com_molecule.h compute_coord_atom.h compute_dihedral_local.h compute_displace_atom.h compute_erotate_sphere.h compute_group_group.h compute_gyration.h compute_gyration_molecule.h compute_heat_flux.h compute_improper_local.h compute_ke.h compute_ke_atom.h compute_msd.h compute_msd_molecule.h compute_pair_local.h compute_pe.h compute_pe_atom.h compute_pressure.h compute_property_atom.h compute_property_local.h compute_property_molecule.h compute_rdf.h compute_reduce.h compute_reduce_region.h compute_stress_atom.h compute_temp.h compute_temp_com.h compute_temp_deform.h compute_temp_partial.h compute_temp_profile.h compute_temp_ramp.h compute_temp_region.h compute_temp_sphere.h create_atoms.h create_box.h delete_atoms.h delete_bonds.h dihedral.h dihedral_charmm.h dihedral_harmonic.h dihedral_helix.h dihedral_hybrid.h dihedral_multi_harmonic.h dihedral_opls.h displace_atoms.h displace_box.h domain.h dump.h dump_atom.h dump_cfg.h dump_custom.h dump_dcd.h dump_local.h dump_xyz.h error.h ewald.h fft3d.h fft3d_wrap.h finish.h fix.h fix_adapt.h fix_addforce.h fix_ave_atom.h fix_ave_correlate.h fix_ave_histo.h fix_ave_spatial.h fix_ave_time.h fix_aveforce.h fix_bond_break.h fix_bond_create.h fix_bond_swap.h fix_box_relax.h fix_deform.h fix_deposit.h fix_drag.h fix_dt_reset.h fix_efield.h fix_enforce2d.h fix_evaporate.h fix_gravity.h fix_heat.h fix_indent.h fix_langevin.h fix_lineforce.h fix_minimize.h fix_momentum.h fix_move.h fix_nh.h fix_nh_sphere.h fix_nph.h fix_nph_sphere.h fix_npt.h fix_npt_sphere.h fix_nve.h fix_nve_limit.h fix_nve_noforce.h fix_nve_sphere.h fix_nvt.h fix_nvt_sllod.h fix_nvt_sphere.h fix_orient_fcc.h fix_planeforce.h fix_press_berendsen.h fix_print.h fix_qeq_comb.h fix_recenter.h fix_respa.h fix_rigid.h fix_rigid_nve.h fix_rigid_nvt.h fix_setforce.h fix_shake.h fix_shear_history.h fix_spring.h fix_spring_rg.h fix_spring_self.h fix_store_force.h fix_store_state.h fix_temp_berendsen.h fix_temp_rescale.h fix_thermal_conductivity.h fix_tmd.h fix_ttm.h fix_viscosity.h fix_viscous.h fix_wall.h fix_wall_harmonic.h fix_wall_lj126.h fix_wall_lj93.h fix_wall_reflect.h fix_wall_region.h force.h group.h improper.h improper_cvff.h improper_harmonic.h improper_hybrid.h input.h integrate.h kspace.h lammps.h lattice.h library.h math_extra.h memory.h min.h min_cg.h min_hftn.h min_linesearch.h min_sd.h minimize.h modify.h neigh_list.h neigh_request.h neighbor.h output.h pack.h pair.h pair_airebo.h pair_born_coul_long.h pair_buck.h pair_buck_coul_cut.h pair_buck_coul_long.h pair_comb.h pair_coul_cut.h pair_coul_debye.h pair_coul_long.h pair_dpd.h pair_dpd_tstat.h pair_eam.h pair_eam_alloy.h pair_eam_fs.h pair_eim.h pair_hybrid.h pair_hybrid_overlay.h pair_lj96_cut.h pair_lj_charmm_coul_charmm.h pair_lj_charmm_coul_charmm_implicit.h pair_lj_charmm_coul_long.h pair_lj_cut.h pair_lj_cut_coul_cut.h pair_lj_cut_coul_debye.h pair_lj_cut_coul_long.h pair_lj_cut_coul_long_tip4p.h pair_lj_expand.h pair_lj_gromacs.h pair_lj_gromacs_coul_gromacs.h pair_lj_smooth.h pair_morse.h pair_soft.h pair_sw.h pair_table.h pair_tersoff.h pair_tersoff_zbl.h pair_yukawa.h pointers.h pppm.h pppm_tip4p.h random_mars.h random_park.h read_data.h read_restart.h region.h region_block.h region_cone.h region_cylinder.h region_intersect.h region_plane.h region_prism.h region_sphere.h region_union.h remap.h remap_wrap.h replicate.h respa.h run.h set.h shell.h special.h style_angle.h style_atom.h style_bond.h style_command.h style_compute.h style_dihedral.h style_dump.h style_fix.h style_improper.h style_integrate.h style_kspace.h style_minimize.h style_pair.h style_region.h temper.h thermo.h timer.h universe.h update.h variable.h velocity.h verlet.h version.h write_restart.h OBJ = $(SRC:.cpp=.o) -- GitLab From 88994d813aeba181736d7c80f2578e74731238df Mon Sep 17 00:00:00 2001 From: "Ellad B. Tadmor" Date: Fri, 21 Jun 2019 18:38:48 -0500 Subject: [PATCH 062/627] Ignore kim.log in examples/kim --- examples/kim/.gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 examples/kim/.gitignore diff --git a/examples/kim/.gitignore b/examples/kim/.gitignore new file mode 100644 index 0000000000..63421e4217 --- /dev/null +++ b/examples/kim/.gitignore @@ -0,0 +1 @@ +/kim.log -- GitLab From 08cee18f3207b6cea777dbbd24e17ca1a1f39ded Mon Sep 17 00:00:00 2001 From: "Ellad B. Tadmor" Date: Fri, 21 Jun 2019 18:39:18 -0500 Subject: [PATCH 063/627] Added code to define unit conversion factors --- src/KIM/kim_style.cpp | 219 ++++--- src/KIM/kim_style.h | 2 + src/KIM/kim_units.cpp | 1411 +++++++++++++++++++++++++++++++++++++++++ src/KIM/kim_units.h | 59 ++ 4 files changed, 1596 insertions(+), 95 deletions(-) create mode 100644 src/KIM/kim_units.cpp create mode 100644 src/KIM/kim_units.h diff --git a/src/KIM/kim_style.cpp b/src/KIM/kim_style.cpp index fcc3f33aa2..44d5c411ab 100644 --- a/src/KIM/kim_style.cpp +++ b/src/KIM/kim_style.cpp @@ -56,6 +56,7 @@ #include #include +#include #include "kim_style.h" #include "error.h" #include "atom.h" @@ -67,6 +68,7 @@ #include "input.h" #include "variable.h" #include "fix_store_kim.h" +#include "kim_units.h" extern "C" { #include "KIM_SimulatorHeaders.h" @@ -100,7 +102,6 @@ void KimStyle::command(int narg, char **arg) determine_model_type_and_units(model_name, user_units, &model_units); do_init(model_name, user_units, model_units); - if (unit_conversion_mode) do_variables(user_units, model_units); } else if (strcmp(arg[0],"setup") == 0) { if (!domain->box_exist) error->all(FLERR,"Must use 'kim_style setup' command after " @@ -255,7 +256,10 @@ void KimStyle::determine_model_type_and_units(char * model_name, if ((! unit_conversion_mode) && (strcmp(*model_units, user_units)!=0)) { - error->all(FLERR,"Incompatible units for KIM Simulator Model"); + std::stringstream mesg; + mesg << "Incompatible units for KIM Simulator Model, required units = " + << *model_units; + error->all(FLERR,mesg.str().c_str()); } } @@ -280,17 +284,43 @@ void KimStyle::do_init(char *model_name, char *user_units, char* model_units) fix_store->setptr("user_units", (void *) user_units); fix_store->setptr("model_units", (void *) model_units); + int kimerror; + // @@@@@ switch to c-bindings when they are available + KIM::SimulatorModel * simulatorModel; + kimerror = KIM::SimulatorModel::Create(model_name,&simulatorModel); + + const std::string *sim_name, *sim_version; + simulatorModel->GetSimulatorNameAndVersion(&sim_name, &sim_version); + + if (*sim_name != "LAMMPS") + error->all(FLERR,"Incompatible KIM Simulator Model"); + + // Begin output to log file + kim_style_log_delimiter("begin","model"); + if (comm->me == 0) { + std::string mesg("# Using KIM Simulator Model : "); + mesg += model_name; + mesg += "\n"; + mesg += "# For Simulator : "; + mesg += *sim_name + " " + *sim_version + "\n"; + mesg += "# Running on : LAMMPS "; + mesg += universe->version; + mesg += "\n"; + mesg += "#\n"; + + if (screen) fputs(mesg.c_str(),screen); + if (logfile) fputs(mesg.c_str(),logfile); + } + + // Define unit conversion factor variables and print to log + if (unit_conversion_mode) do_variables(user_units, model_units); + // set units std::string cmd("units "); cmd += model_units; input->one(cmd.c_str()); - int kimerror; - // @@@@@ switch to c-bindings when they are available - KIM::SimulatorModel * simulatorModel; - kimerror = KIM::SimulatorModel::Create(model_name,&simulatorModel); - // not a Kim Simulator Model; nothing else to do here. if (kimerror) return; @@ -318,13 +348,36 @@ void KimStyle::do_init(char *model_name, char *user_units, char* model_units) } } - // reset template map. + // End output to log file + kim_style_log_delimiter("end","model"); + // reset template map. simulatorModel->OpenAndInitializeTemplateMap(); } /* ---------------------------------------------------------------------- */ +void KimStyle::kim_style_log_delimiter(std::string begin_end, + std::string model_setup) +{ + if (comm->me == 0) { + std::string mesg; + if ((begin_end == "begin") && (model_setup == "model")) mesg = + "#=== BEGIN kim-style MODEL ==================================\n"; + else if ((begin_end == "begin") && (model_setup == "setup")) mesg = + "#=== BEGIN kim-style SETUP ==================================\n"; + else if ((begin_end == "end") && (model_setup == "model")) mesg = + "#=== END kim-style MODEL ====================================\n\n"; + else if ((begin_end == "end") && (model_setup == "setup")) mesg = + "#=== END kim-style SETUP ====================================\n\n"; + + if (screen) fputs(mesg.c_str(),screen); + if (logfile) fputs(mesg.c_str(),logfile); + } +} + +/* ---------------------------------------------------------------------- */ + void KimStyle::do_setup(int narg, char **arg) { if (narg != atom->ntypes) @@ -345,30 +398,13 @@ void KimStyle::do_setup(int narg, char **arg) simulatorModel = (KIM::SimulatorModel *)fix_store->getptr("simulator_model"); } else error->all(FLERR,"Must use 'kim_style model' before 'kim_style setup'"); + // Begin output to log file + kim_style_log_delimiter("begin","setup"); + if (simulatorModel) { - const std::string *sim_name, *sim_version; std::string atom_type_sym_list; - simulatorModel->GetSimulatorNameAndVersion(&sim_name, &sim_version); - - if (comm->me == 0) { - std::string mesg("Using KIM Simulator Model : "); - mesg += model; - mesg += "\n"; - mesg += "For Simulator : "; - mesg += *sim_name + " " + *sim_version + "\n"; - mesg += "Running on : LAMMPS "; - mesg += universe->version; - mesg += "\n"; - - if (screen) fputs(mesg.c_str(),screen); - if (logfile) fputs(mesg.c_str(),logfile); - } - - if (*sim_name != "LAMMPS") - error->all(FLERR,"Incompatible KIM Simulator Model"); - for (int i = 0; i < narg; i++) atom_type_sym_list += std::string(" ") + arg[i]; @@ -455,6 +491,10 @@ void KimStyle::do_setup(int narg, char **arg) input->one(cmd1.c_str()); input->one(cmd2.c_str()); } + + // End output to log file + kim_style_log_delimiter("end","setup"); + } /* ---------------------------------------------------------------------- */ @@ -464,85 +504,74 @@ void KimStyle::do_variables(char *user_units, char *model_units) char *from = user_units, *to = model_units; Variable *variable = input->variable; - // refuse convertion from or to reduced units + // refuse conversion from or to reduced units if ((strcmp(from,"lj") == 0) || (strcmp(to,"lj") == 0)) error->all(FLERR,"Cannot set up conversion variables for 'lj' units"); // get index to internal style variables. create, if needed. - // default to conversion factor 1.0 for newly created variables - - // @@@@@@ below needs to be updated to use Ellad's luc. - int v_length, v_mass, v_time; + // set conversion factors for newly created variables. + double conversion_factor; + int ier; char *args[3]; + std::string var_str; args[1] = (char *)"internal"; args[2] = (char *)"1.0"; - - args[0] = (char *)"_u_length"; - v_length = variable->find(args[0]); - if (v_length < 0) { - variable->set(3,args); - v_length = variable->find(args[0]); + int v_unit; + int const nunits = 14; + char *units[nunits] = {(char *)"mass", + (char *)"distance", + (char *)"time", + (char *)"energy", + (char *)"velocity", + (char *)"force", + (char *)"torque", + (char *)"temperature", + (char *)"pressure", + (char *)"viscosity", + (char *)"charge", + (char *)"dipole", + (char *)"efield", + (char *)"density"}; + + if (comm->me == 0) { + std::stringstream mesg; + mesg << "# Conversion factors from " << from << " to " << to + << ":" << std::endl; + if (screen) fputs(mesg.str().c_str(),screen); + if (logfile) fputs(mesg.str().c_str(),logfile); } - args[0] = (char *)"_u_mass"; - v_mass = variable->find(args[0]); - if (v_mass < 0) { - variable->set(3,args); - v_mass = variable->find(args[0]); - } - - args[0] = (char *)"_u_time"; - v_time = variable->find(args[0]); - if (v_time < 0) { - variable->set(3,args); - v_time = variable->find(args[0]); - } - - // special case: both unit styles are the same => conversion factor 1.0 - - if (strcmp(from,to) == 0) { - variable->internal_set(v_length,1.0); - variable->internal_set(v_mass,1.0); - variable->internal_set(v_time,1.0); - return; - } - - if (strcmp(from,"real") == 0) { - if (strcmp(to,"metal") == 0) { - variable->internal_set(v_length,1.0); - variable->internal_set(v_mass,1.0); - variable->internal_set(v_time,0.001); - } else { - std::string err("Do not know how to set up conversion variables "); - err += "between '"; - err += from; - err += "' and '"; - err += to; - err += "' units"; - error->all(FLERR,err.c_str()); + for (int i = 0; i < nunits; i++) + { + var_str = std::string("_u_") + std::string(units[i]); + args[0] = (char *)var_str.c_str(); + v_unit = variable->find(args[0]); + if (v_unit < 0) { + variable->set(3,args); + v_unit = variable->find(args[0]); } - } else if (strcmp(from,"metal") == 0) { - if (strcmp(to,"real") == 0) { - variable->internal_set(v_length,1.0); - variable->internal_set(v_mass,1.0); - variable->internal_set(v_time,1000.0); - } else { - std::string err("Do not know how to set up conversion variables "); - err += "between '"; - err += from; - err += "' and '"; - err += to; - err += "' units"; + ier = lammps_unit_conversion(units[i], + from, + to, + conversion_factor); + if (ier != 0) { + std::string err = std::string("Unable to obtain conversion factor: ") + + "unit = " + units[i] + "; " + "from = " + from + "; " + "to = " + to + "."; error->all(FLERR,err.c_str()); } - } else { - std::string err("Do not know how to set up conversion variables "); - err += "between '"; - err += from; - err += "' and '"; - err += to; - err += "' units"; - error->all(FLERR,err.c_str()); + variable->internal_set(v_unit,conversion_factor); + if (comm->me == 0) { + std::stringstream mesg; + mesg << "# " << var_str << " = " << conversion_factor << std::endl; + if (screen) fputs(mesg.str().c_str(),screen); + if (logfile) fputs(mesg.str().c_str(),logfile); + } + } + if (comm->me == 0) { + if (screen) fputs("#\n",screen); + if (logfile) fputs("#\n",logfile); } } diff --git a/src/KIM/kim_style.h b/src/KIM/kim_style.h index b7ff47404f..b18f6627ea 100644 --- a/src/KIM/kim_style.h +++ b/src/KIM/kim_style.h @@ -80,6 +80,8 @@ class KimStyle : protected Pointers { void do_init(char *, char *, char *); void do_setup(int, char **); void do_variables(char*, char*); + void kim_style_log_delimiter(std::string begin_end, + std::string model_setup); }; } diff --git a/src/KIM/kim_units.cpp b/src/KIM/kim_units.cpp new file mode 100644 index 0000000000..fe90d58e9e --- /dev/null +++ b/src/KIM/kim_units.cpp @@ -0,0 +1,1411 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing authors: Ellad B. Tadmor (UMN) +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + 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 2 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 . + + Linking LAMMPS statically or dynamically with other modules is making a + combined work based on LAMMPS. Thus, the terms and conditions of the GNU + General Public License cover the whole combination. + + In addition, as a special exception, the copyright holders of LAMMPS give + you permission to combine LAMMPS with free software programs or libraries + that are released under the GNU LGPL and with code included in the standard + release of the "kim-api" under the CDDL (or modified versions of such code, + with unchanged license). You may copy and distribute such a system following + the terms of the GNU GPL for LAMMPS and the licenses of the other code + concerned, provided that you include the source code of that other code + when and as the GNU GPL requires distribution of source code. + + Note that people who make modified versions of LAMMPS are not obligated to + grant this special exception for their modified versions; it is their choice + whether to do so. The GNU General Public License gives permission to release + a modified version without this exception; this exception also makes it + possible to release a modified version which carries forward this exception. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Designed for use with the kim-api-2.0.2 (and newer) package +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +using namespace std; + +namespace +{ + +// Constants of nature and basic conversion factors +// Source: https://physics.nist.gov/cuu/Constants/Table/allascii.txt +// Working with NIST values even when there are newer values for +// compatibility with LAMMPS + +/*---------------------- + Fundamental constants +------------------------ */ +double const boltz_si = 1.38064852e-23; // [J K^-1] Boltzmann's factor + // (NIST value) +double const Nav = 6.022140857e23; // [unitless] Avogadro's number + // (NIST value) +// double const Nav = 6.02214076e23; // [unitless] Avogadro's number + // (official value May 2019) +double const me = 9.10938356e-31; // [kg] electron rest mass + // (NIST value) +// double me = 9.10938291e-31; // [kg] electron rest mass +double const e_si = 1.6021766208e-19; // [C] elementary charge + // (charge of an electron/proton) + // (NIST value) + +/*---------------------- + Distance units +------------------------ */ +double const bohr_si = 5.2917721067e-11; // [m] Bohr unit (distance between + // nucleus and electron in H) + // (NIST value) +double const angstrom_si = 1e-10; // [m] Angstrom +double const centimeter_si = 1e-2; // [m] centimeter +double const micrometer_si = 1e-6; // [m] micrometer (micron) +double const nanometer_si = 1e-9; // [m] nanometer + +/*---------------------- + Mass units +------------------------ */ +double const gram_per_mole_si = 1e-3/Nav; // [kg] gram per mole +double const amu_si = 1e-3/Nav; // [kg] atomic mass unit (molecular + // weight) For example, the mean + // molecular weight of water + // is 18.015 atomic mass units + // (amu), so one mole of water + // weight 18.015 grams. +double const gram_si = 1e-3; // [kg] gram +double const picogram_si = 1e-15; // [kg] picogram +double const attogram_si = 1e-21; // [kg[ attogram + +/*---------------------- + Time units +------------------------ */ +double const atu_si = 2.418884326509e-17; // [s] atomic time unit + // ( = hbar/E_h where E_h is the + // Hartree energy) (NIST value) +double const atu_electron_si = atu_si*sqrt(amu_si/me); // [s] atomic time unit + // used in electron system (see https://sourceforge.net/p/lammps/mailman/lammps-users/thread/BCA2BDB2-BA03-4280-896F-1E6120EF47B2%40caltech.edu/) +double const microsecond_si = 1e-6; // [s] microsecond +double const nanosecond_si = 1e-9; // [s] nanosecond +double const picosecond_si = 1e-12; // [s] picosecond +double const femtosecond_si = 1e-15; // [s] femtosecond + +/*---------------------- + Density units +------------------------ */ +double const gram_per_centimetercu_si = + gram_si/pow(centimeter_si,3); // [kg/m^3] gram/centimeter^3 +double const amu_per_bohrcu_si = amu_si/pow(bohr_si,3); // [kg/m^3] amu/bohr^3 +double const picogram_per_micrometercu_si = + picogram_si/pow(micrometer_si,3); // [kg/m^3] picogram/micrometer^3 +double const attogram_per_nanometercu_si = + attogram_si/pow(nanometer_si,3); // [kg/m^3] attogram/ + // nanomaterial^3 + +/*---------------------- + Energy/torque units +------------------------ */ +double const kcal_si = 4184.0; // [J] kilocalroie (heat energy + // involved in warming up one + // kilogram of water by one + // degree Kelvin) +double const ev_si = 1.6021766208e-19; // [J] electon volt (amount of + // energy gained or lost by the + // charge of a single electron + // moving across an electric + // potential difference of one + // volt.) (NIST value) +double const hartree_si = 4.359744650e-18; // [J] Hartree (approximately the + // electric potential energy of + // the hydrogen atom in its + // ground state) (NIST value) +double const kcal_per_mole_si = kcal_si/Nav;// [J] kcal/mole +double const erg_si = 1e-7; // [J] erg +double const dyne_centimeter_si = 1e-7; // [J[ dyne*centimeter +double const picogram_micrometersq_per_microsecondsq_si = + picogram_si*pow(micrometer_si,2)/pow(microsecond_si,2); + // [J] pigogram*micrometer^2/ + // micorsecond^2 +double const attogram_nanometersq_per_nanosecondsq_si = + attogram_si*pow(nanometer_si,2)/pow(nanosecond_si,2); + // [J] attogram*nanometer^2/ + // nanosecond^2 + +/*---------------------- + Velocity units +------------------------ */ +double const angstrom_per_femtosecond_si = + angstrom_si/femtosecond_si; // [m/s] Angstrom/femtosecond +double const angstrom_per_picosecond_si = + angstrom_si/picosecond_si; // [m/s] Angstrom/picosecond +double const micrometer_per_microsecond_si = + micrometer_si/microsecond_si; // [m/s] micrometer/microsecond +double const nanometer_per_nanosecond_si = + nanometer_si/nanosecond_si; // [m/s] nanometer/nanosecond +double const centimeter_per_second_si = + centimeter_si; // [m/s] centimeter/second +double const bohr_per_atu_si = + bohr_si/atu_electron_si; // [m/s] bohr/atu + +/*---------------------- + Force units +------------------------ */ +double const kcal_per_mole_angstrom_si = + kcal_per_mole_si/angstrom_si; // [N] kcal/(mole*Angstrom) +double const ev_per_angstrom_si = + ev_si/angstrom_si; // [N] eV/Angstrom +double const dyne_si = + dyne_centimeter_si/centimeter_si; // [N] dyne +double const hartree_per_bohr_si = + hartree_si/bohr_si; // [N] hartree/bohr +double const picogram_micrometer_per_microsecondsq_si = + picogram_si*micrometer_si/pow(microsecond_si,2); + // [N] picogram*micrometer/ + // microsecond^2 +double const attogram_nanometer_per_nanosecondsq_si = + attogram_si*nanometer_si/pow(nanosecond_si,2); + // [N] attogram*nanometer/ + // nanosecond^2 + +/*---------------------- + Pressure units +------------------------ */ +double const atmosphere_si = 101325.0; // [Pa] standard atmosphere (NIST value) +double const bar_si = 1e5; // [Pa] bar +double const dyne_per_centimetersq_si = + dyne_centimeter_si/pow(centimeter_si,3); + // [Pa] dyne/centimeter^2 +double const picogram_per_micrometer_microsecondsq_si = + picogram_si/(micrometer_si*pow(microsecond_si,2)); + // [Pa] picogram/(micrometer* + // microsecond^2) +double const attogram_per_nanometer_nanosecondsq_si = + attogram_si/(nanometer_si*pow(nanosecond_si,2)); + // [Pa] attogram/(nanometer*nanosecond^2) + +/*---------------------- + Viscosity units +------------------------ */ +double const poise_si = 0.1; // [Pa*s] Poise +double const amu_per_bohr_femtosecond_si = + amu_si/(bohr_si*femtosecond_si); // [Pa*s] amu/(bohr*femtosecond) +double const picogram_per_micrometer_microsecond_si = + picogram_si/(micrometer_si*microsecond_si); + // [Pa*s] picogram/(micrometer* + // microsecond) +double const attogram_per_nanometer_nanosecond_si = + attogram_si/(nanometer_si*nanosecond_si); + // [Pa*s] attogram/(nanometer* + // nanosecond) + +/*---------------------- + Charge units +------------------------ */ +double const echarge_si = e_si; // [C] electron charge unit +double const statcoulomb_si = e_si/4.8032044e-10; // [C] Statcoulomb or esu + // (value from LAMMPS units + // documentation) +double const picocoulomb_si = 1e-12; // [C] picocoulomb + +/*---------------------- + Dipole units +------------------------ */ +double const electron_angstrom_si = echarge_si*angstrom_si; + // [C*m] electron*angstrom +double const statcoulomb_centimeter_si = statcoulomb_si*centimeter_si; + // [C*m] statcoulomb*centimeter +double const debye_si = 1e-18*statcoulomb_centimeter_si; + // [C*m] Debye +double const picocoulomb_micrometer_si = picocoulomb_si*micrometer_si; + // [C*m] picocoulomb*micrometer +double const electron_nanometer_si = echarge_si*nanometer_si; + // [C*m] electron*nanometer + +/*---------------------- + Electric field units +------------------------ */ +double const volt_per_angstrom_si = 1.0/angstrom_si;// [V/m] volt/angstrom +double const statvolt_per_centimeter_si = + erg_si/(statcoulomb_si*centimeter_si); // [V/m] statvolt/centimeter +double const volt_per_centimeter_si = + 1.0/centimeter_si; // [V/m] volt/centimeter +double const volt_per_micrometer_si = + 1.0/micrometer_si; // [V/m] volt/micrometer +double const volt_per_nanometer_si = + 1.0/nanometer_si; // [V/m] volt/nanometer + +// Define enumerations +enum sys_type +{ + real = 1, + metal = 2, + si = 3, + cgs = 4, + electron = 5, + micro = 6, + nano = 7 +}; + +enum unit_type +{ + mass = 1, + distance = 2, + time = 3, + energy = 4, + velocity = 5, + force = 6, + torque = 7, + temperature = 8, + pressure = 9, + viscosity = 10, + charge = 11, + dipole = 12, + efield = 13, + density = 14 +}; + +enum units +{ + // mass + gram_per_mole = 101, + kilogram = 102, + gram = 103, + amu = 104, + picogram = 105, + attogram = 106, + // distance + angstrom = 201, + meter = 202, + centimeter = 203, + bohr = 204, + micrometer = 205, + nanometer = 206, + // time + femtosecond = 301, + picosecond = 302, + second = 303, + microsecond = 304, + nanosecond = 305, + // energy + kcal_per_mole = 401, + ev = 402, + joule = 403, + erg = 404, + hartree = 405, + picogram_micrometersq_per_microsecondsq = 406, + attogram_nanometersq_per_nanosecondsq = 407, + // velocity + angstrom_per_femtosecond = 501, + angstrom_per_picosecond = 502, + meter_per_second = 503, + centimeter_per_second = 504, + bohr_per_atu = 505, + micrometer_per_microsecond = 506, + nanometer_per_nanosecond = 507, + // force + kcal_per_mole_angstrom = 601, + ev_per_angstrom = 602, + newton = 603, + dyne = 604, + hartree_per_bohr = 605, + picogram_micrometer_per_microsecondsq = 606, + attogram_nanometer_per_nanosecondsq = 607, + // torque + newton_meter = 701, + dyne_centimeter = 702, + // temperature + kelvin = 801, + // pressure + atmosphere = 901, + bar = 902, + pascal = 903, + dyne_per_centimetersq = 904, + picogram_per_micrometer_microsecondsq = 905, + attogram_per_nanometer_nanosecondsq = 906, + // viscosity + poise = 1001, + pascal_second = 1002, + amu_per_bohr_femtosecond = 1003, // electron system, not in docs, GUESSED + picogram_per_micrometer_microsecond = 1004, + attogram_per_nanometer_nanosecond = 1005, + // charge + echarge = 1101, + coulomb = 1102, + statcoulomb = 1103, + picocoulomb = 1104, + // dipole + electron_angstrom = 1201, + coulomb_meter = 1202, + statcoulomb_centimeter = 1203, + debye = 1204, + picocoulomb_micrometer = 1205, + electron_nanometer = 1206, + // electric field + volt_per_angstrom = 1301, + volt_per_meter = 1302, + statvolt_per_centimeter = 1303, + volt_per_centimeter = 1304, + volt_per_micrometer = 1305, + volt_per_nanometer = 1306, + // density + gram_per_centimetercu = 1401, + kilogram_per_metercu = 1402, + amu_per_bohrcu = 1403, // electron system, not in docs, GUESSED + picogram_per_micrometercu = 1404, + attogram_per_nanometercu = 1405 +}; + +// Define dictionaries +map system_dic; +map unit_dic; +map units_real_dic; +map units_metal_dic; +map units_si_dic; +map units_cgs_dic; +map units_electron_dic; +map units_micro_dic; +map units_nano_dic; + +/* ---------------------------------------------------------------------- */ + +void initialize_dictionaries() +{ + system_dic["real"] = real; + system_dic["metal"] = metal; + system_dic["si"] = si; + system_dic["cgs"] = cgs; + system_dic["electron"] = electron; + system_dic["micro"] = micro; + system_dic["nano"] = nano; + + unit_dic["mass"] = mass; + unit_dic["distance"] = distance; + unit_dic["time"] = time; + unit_dic["energy"] = energy; + unit_dic["velocity"] = velocity; + unit_dic["force"] = force; + unit_dic["torque"] = torque; + unit_dic["temperature"]= temperature; + unit_dic["pressure"] = pressure; + unit_dic["viscosity"] = viscosity; + unit_dic["charge"] = charge; + unit_dic["dipole"] = dipole; + unit_dic["efield"] = efield; + unit_dic["density"] = density; + + units_real_dic[mass] = gram_per_mole; + units_real_dic[distance] = angstrom; + units_real_dic[time] = femtosecond; + units_real_dic[energy] = kcal_per_mole; + units_real_dic[velocity] = angstrom_per_femtosecond; + units_real_dic[force] = kcal_per_mole_angstrom; + units_real_dic[torque] = kcal_per_mole; + units_real_dic[temperature]= kelvin; + units_real_dic[pressure] = atmosphere; + units_real_dic[viscosity] = poise; + units_real_dic[charge] = echarge; + units_real_dic[dipole] = electron_angstrom; + units_real_dic[efield] = volt_per_angstrom; + units_real_dic[density] = gram_per_centimetercu; + + units_metal_dic[mass] = gram_per_mole; + units_metal_dic[distance] = angstrom; + units_metal_dic[time] = picosecond; + units_metal_dic[energy] = ev; + units_metal_dic[velocity] = angstrom_per_picosecond; + units_metal_dic[force] = ev_per_angstrom; + units_metal_dic[torque] = ev; + units_metal_dic[temperature]= kelvin; + units_metal_dic[pressure] = bar; + units_metal_dic[viscosity] = poise; + units_metal_dic[charge] = echarge; + units_metal_dic[dipole] = electron_angstrom; + units_metal_dic[efield] = volt_per_angstrom; + units_metal_dic[density] = gram_per_centimetercu; + + units_si_dic[mass] = kilogram; + units_si_dic[distance] = meter; + units_si_dic[time] = second; + units_si_dic[energy] = joule; + units_si_dic[velocity] = meter_per_second; + units_si_dic[force] = newton; + units_si_dic[torque] = newton_meter; + units_si_dic[temperature]= kelvin; + units_si_dic[pressure] = pascal; + units_si_dic[viscosity] = pascal_second; + units_si_dic[charge] = coulomb; + units_si_dic[dipole] = coulomb_meter; + units_si_dic[efield] = volt_per_meter; + units_si_dic[density] = kilogram_per_metercu; + + units_cgs_dic[mass] = gram; + units_cgs_dic[distance] = centimeter; + units_cgs_dic[time] = second; + units_cgs_dic[energy] = erg; + units_cgs_dic[velocity] = centimeter_per_second; + units_cgs_dic[force] = dyne; + units_cgs_dic[torque] = dyne_centimeter; + units_cgs_dic[temperature]= kelvin; + units_cgs_dic[pressure] = dyne_per_centimetersq; + units_cgs_dic[viscosity] = poise; + units_cgs_dic[charge] = statcoulomb; + units_cgs_dic[dipole] = statcoulomb_centimeter; + units_cgs_dic[efield] = statvolt_per_centimeter; + units_cgs_dic[density] = gram_per_centimetercu; + + units_electron_dic[mass] = amu; + units_electron_dic[distance] = bohr; + units_electron_dic[time] = femtosecond; + units_electron_dic[energy] = hartree; + units_electron_dic[velocity] = bohr_per_atu; + units_electron_dic[force] = hartree_per_bohr; + units_electron_dic[torque] = hartree; // unknown, GUESSED + units_electron_dic[temperature]= kelvin; + units_electron_dic[pressure] = pascal; + units_electron_dic[viscosity] = pascal_second; // unknown, GUESSED + units_electron_dic[charge] = echarge; + units_electron_dic[dipole] = debye; + units_electron_dic[efield] = volt_per_centimeter; + units_electron_dic[density] = amu_per_bohrcu; // unknown, GUESSED + + units_micro_dic[mass] = picogram; + units_micro_dic[distance] = micrometer; + units_micro_dic[time] = microsecond; + units_micro_dic[energy] = picogram_micrometersq_per_microsecondsq; + units_micro_dic[velocity] = micrometer_per_microsecond; + units_micro_dic[force] = picogram_micrometer_per_microsecondsq; + units_micro_dic[torque] = picogram_micrometersq_per_microsecondsq; + units_micro_dic[temperature]= kelvin; + units_micro_dic[pressure] = picogram_per_micrometer_microsecondsq; + units_micro_dic[viscosity] = picogram_per_micrometer_microsecond; + units_micro_dic[charge] = picocoulomb; + units_micro_dic[dipole] = picocoulomb_micrometer; + units_micro_dic[efield] = volt_per_micrometer; + units_micro_dic[density] = picogram_per_micrometercu; + + units_nano_dic[mass] = attogram; + units_nano_dic[distance] = nanometer; + units_nano_dic[time] = nanosecond; + units_nano_dic[energy] = attogram_nanometersq_per_nanosecondsq; + units_nano_dic[velocity] = nanometer_per_nanosecond; + units_nano_dic[force] = attogram_nanometer_per_nanosecondsq; + units_nano_dic[torque] = attogram_nanometersq_per_nanosecondsq; + units_nano_dic[temperature]= kelvin; + units_nano_dic[pressure] = attogram_per_nanometer_nanosecondsq; + units_nano_dic[viscosity] = attogram_per_nanometer_nanosecond; + units_nano_dic[charge] = echarge; + units_nano_dic[dipole] = electron_nanometer; + units_nano_dic[efield] = volt_per_nanometer; + units_nano_dic[density] = attogram_per_nanometercu; + +} + +/* ---------------------------------------------------------------------- */ + +// Get the enumeration for the unit of type `unit_type_enum` +// for LAMMPS system `system_enum`. +units get_lammps_system_unit(sys_type system_enum, unit_type unit_type_enum) +{ + switch(system_enum) { + case real : + return units_real_dic[unit_type_enum]; + case metal : + return units_metal_dic[unit_type_enum]; + case si : + return units_si_dic[unit_type_enum]; + case cgs : + return units_cgs_dic[unit_type_enum]; + case electron : + return units_electron_dic[unit_type_enum]; + case micro : + return units_micro_dic[unit_type_enum]; + case nano : + default : // This is here to a prevent a compiler warning + return units_nano_dic[unit_type_enum]; + } +} + +/* ---------------------------------------------------------------------- */ + +// Mass conversion +double get_mass_conversion_factor(units from_unit_enum, units to_unit_enum) +{ + map > conv; + double to_si; + + conv[kilogram][kilogram] = 1.0; + conv[kilogram][gram_per_mole] = 1.0/gram_per_mole_si; + conv[kilogram][gram] = 1.0/gram_si; + conv[kilogram][amu] = 1.0/amu_si; + conv[kilogram][picogram] = 1.0/picogram_si; + conv[kilogram][attogram] = 1.0/attogram_si; + + to_si = 1.0/conv[kilogram][gram_per_mole]; + conv[gram_per_mole][kilogram] = to_si*conv[kilogram][kilogram]; + conv[gram_per_mole][gram_per_mole] = 1.0; + conv[gram_per_mole][gram] = to_si*conv[kilogram][gram]; + conv[gram_per_mole][amu] = to_si*conv[kilogram][amu]; + conv[gram_per_mole][picogram] = to_si*conv[kilogram][picogram]; + conv[gram_per_mole][attogram] = to_si*conv[kilogram][attogram]; + + to_si = 1.0/conv[kilogram][gram]; + conv[gram][kilogram] = to_si*conv[kilogram][kilogram]; + conv[gram][gram_per_mole] = to_si*conv[kilogram][gram_per_mole]; + conv[gram][gram] = 1.0; + conv[gram][amu] = to_si*conv[kilogram][amu]; + conv[gram][picogram] = to_si*conv[kilogram][picogram]; + conv[gram][attogram] = to_si*conv[kilogram][attogram]; + + to_si = 1.0/conv[kilogram][amu]; + conv[amu][kilogram] = to_si*conv[kilogram][kilogram]; + conv[amu][gram_per_mole] = to_si*conv[kilogram][gram_per_mole]; + conv[amu][gram] = to_si*conv[kilogram][gram]; + conv[amu][amu] = 1.0; + conv[amu][picogram] = to_si*conv[kilogram][picogram]; + conv[amu][attogram] = to_si*conv[kilogram][attogram]; + + to_si = 1.0/conv[kilogram][picogram]; + conv[picogram][kilogram] = to_si*conv[kilogram][kilogram]; + conv[picogram][gram_per_mole] = to_si*conv[kilogram][gram_per_mole]; + conv[picogram][gram] = to_si*conv[kilogram][gram]; + conv[picogram][amu] = to_si*conv[kilogram][amu]; + conv[picogram][picogram] = 1.0; + conv[picogram][attogram] = to_si*conv[kilogram][attogram]; + + to_si = 1.0/conv[kilogram][attogram]; + conv[attogram][kilogram] = to_si*conv[kilogram][kilogram]; + conv[attogram][gram_per_mole] = to_si*conv[kilogram][gram_per_mole]; + conv[attogram][gram] = to_si*conv[kilogram][gram]; + conv[attogram][amu] = to_si*conv[kilogram][amu]; + conv[attogram][picogram] = to_si*conv[kilogram][picogram]; + conv[attogram][attogram] = 1.0; + + return conv[from_unit_enum][to_unit_enum]; +} + +/* ---------------------------------------------------------------------- */ + +// Distance conversion +double get_distance_conversion_factor(units from_unit_enum, units to_unit_enum) +{ + map > conv; + double to_si; + + conv[meter][meter] = 1.0; + conv[meter][angstrom] = 1.0/angstrom_si; + conv[meter][centimeter] = 1.0/centimeter_si; + conv[meter][bohr] = 1.0/bohr_si; + conv[meter][micrometer] = 1.0/micrometer_si; + conv[meter][nanometer] = 1.0/nanometer_si; + + to_si = 1.0/conv[meter][angstrom]; + conv[angstrom][meter] = to_si*conv[meter][meter]; + conv[angstrom][angstrom] = 1.0; + conv[angstrom][centimeter] = to_si*conv[meter][centimeter]; + conv[angstrom][bohr] = to_si*conv[meter][bohr]; + conv[angstrom][micrometer] = to_si*conv[meter][micrometer]; + conv[angstrom][nanometer] = to_si*conv[meter][nanometer]; + + to_si = 1.0/conv[meter][centimeter]; + conv[centimeter][meter] = to_si*conv[meter][meter]; + conv[centimeter][angstrom] = to_si*conv[meter][angstrom]; + conv[centimeter][centimeter] = 1.0; + conv[centimeter][bohr] = to_si*conv[meter][bohr]; + conv[centimeter][micrometer] = to_si*conv[meter][micrometer]; + conv[centimeter][nanometer] = to_si*conv[meter][nanometer]; + + to_si = 1.0/conv[meter][bohr]; + conv[bohr][meter] = to_si*conv[meter][meter]; + conv[bohr][angstrom] = to_si*conv[meter][angstrom]; + conv[bohr][centimeter] = to_si*conv[meter][centimeter]; + conv[bohr][bohr] = 1.0; + conv[bohr][micrometer] = to_si*conv[meter][micrometer]; + conv[bohr][nanometer] = to_si*conv[meter][nanometer]; + + to_si = 1.0/conv[meter][micrometer]; + conv[micrometer][meter] = to_si*conv[meter][meter]; + conv[micrometer][angstrom] = to_si*conv[meter][angstrom]; + conv[micrometer][centimeter] = to_si*conv[meter][centimeter]; + conv[micrometer][bohr] = to_si*conv[meter][bohr]; + conv[micrometer][micrometer] = 1.0; + conv[micrometer][nanometer] = to_si*conv[meter][nanometer]; + + to_si = 1.0/conv[meter][nanometer]; + conv[nanometer][meter] = to_si*conv[meter][meter]; + conv[nanometer][angstrom] = to_si*conv[meter][angstrom]; + conv[nanometer][centimeter] = to_si*conv[meter][centimeter]; + conv[nanometer][bohr] = to_si*conv[meter][bohr]; + conv[nanometer][micrometer] = to_si*conv[meter][micrometer]; + conv[nanometer][nanometer] = 1.0; + + return conv[from_unit_enum][to_unit_enum]; +} + +/* ---------------------------------------------------------------------- */ + +// Time conversion +double get_time_conversion_factor(units from_unit_enum, units to_unit_enum) +{ + map > conv; + double to_si; + + conv[second][second] = 1.0; + conv[second][femtosecond] = 1.0/femtosecond_si; + conv[second][picosecond] = 1.0/picosecond_si; + conv[second][microsecond] = 1.0/microsecond_si; + conv[second][nanosecond] = 1.0/nanosecond_si; + + to_si = 1.0/conv[second][femtosecond]; + conv[femtosecond][second] = to_si*conv[second][second]; + conv[femtosecond][femtosecond] = 1.0; + conv[femtosecond][picosecond] = to_si*conv[second][picosecond]; + conv[femtosecond][microsecond] = to_si*conv[second][microsecond]; + conv[femtosecond][nanosecond] = to_si*conv[second][nanosecond]; + + to_si = 1.0/conv[second][picosecond]; + conv[picosecond][second] = to_si*conv[second][second]; + conv[picosecond][femtosecond] = to_si*conv[second][femtosecond]; + conv[picosecond][picosecond] = 1.0; + conv[picosecond][microsecond] = to_si*conv[second][microsecond]; + conv[picosecond][nanosecond] = to_si*conv[second][nanosecond]; + + to_si = 1.0/conv[second][microsecond]; + conv[microsecond][second] = to_si*conv[second][second]; + conv[microsecond][femtosecond] = to_si*conv[second][femtosecond]; + conv[microsecond][picosecond] = to_si*conv[second][picosecond]; + conv[microsecond][microsecond] = 1.0; + conv[microsecond][nanosecond] = to_si*conv[second][nanosecond]; + + to_si = 1.0/conv[second][nanosecond]; + conv[nanosecond][second] = to_si*conv[second][second]; + conv[nanosecond][femtosecond] = to_si*conv[second][femtosecond]; + conv[nanosecond][picosecond] = to_si*conv[second][picosecond]; + conv[nanosecond][microsecond] = to_si*conv[second][microsecond]; + conv[nanosecond][nanosecond] = 1.0; + + return conv[from_unit_enum][to_unit_enum]; +} + +/* ---------------------------------------------------------------------- */ + +// Energy conversion +double get_energy_conversion_factor(units from_unit_enum, units to_unit_enum) +{ + + map > conv; + double to_si; + + conv[joule][joule] = 1.0; + conv[joule][kcal_per_mole] = 1.0/kcal_per_mole_si; + conv[joule][ev] = 1.0/ev_si; + conv[joule][erg] = 1.0/erg_si; + conv[joule][hartree] = 1.0/hartree_si; + conv[joule][picogram_micrometersq_per_microsecondsq] = 1.0/picogram_micrometersq_per_microsecondsq_si; + conv[joule][attogram_nanometersq_per_nanosecondsq] = 1.0/attogram_nanometersq_per_nanosecondsq_si; + + to_si = 1.0/conv[joule][kcal_per_mole]; + conv[kcal_per_mole][joule] = to_si*conv[joule][joule]; + conv[kcal_per_mole][kcal_per_mole] = 1.0; + conv[kcal_per_mole][ev] = to_si*conv[joule][ev]; + conv[kcal_per_mole][erg] = to_si*conv[joule][erg]; + conv[kcal_per_mole][hartree] = to_si*conv[joule][hartree]; + conv[kcal_per_mole][picogram_micrometersq_per_microsecondsq] = to_si*conv[joule][picogram_micrometersq_per_microsecondsq]; + conv[kcal_per_mole][attogram_nanometersq_per_nanosecondsq] = to_si*conv[joule][attogram_nanometersq_per_nanosecondsq]; + + to_si = 1.0/conv[joule][ev]; + conv[ev][joule] = to_si*conv[joule][joule]; + conv[ev][kcal_per_mole] = to_si*conv[joule][kcal_per_mole]; + conv[ev][ev] = 1.0; + conv[ev][erg] = to_si*conv[joule][erg]; + conv[ev][hartree] = to_si*conv[joule][hartree]; + conv[ev][picogram_micrometersq_per_microsecondsq] = to_si*conv[joule][picogram_micrometersq_per_microsecondsq]; + conv[ev][attogram_nanometersq_per_nanosecondsq] = to_si*conv[joule][attogram_nanometersq_per_nanosecondsq]; + + to_si = 1.0/conv[joule][erg]; + conv[erg][joule] = to_si*conv[joule][joule]; + conv[erg][kcal_per_mole] = to_si*conv[joule][kcal_per_mole]; + conv[erg][ev] = to_si*conv[joule][ev]; + conv[erg][erg] = 1.0; + conv[erg][hartree] = to_si*conv[joule][hartree]; + conv[erg][picogram_micrometersq_per_microsecondsq] = to_si*conv[joule][picogram_micrometersq_per_microsecondsq]; + conv[erg][attogram_nanometersq_per_nanosecondsq] = to_si*conv[joule][attogram_nanometersq_per_nanosecondsq]; + + to_si = 1.0/conv[joule][hartree]; + conv[hartree][joule] = to_si*conv[joule][joule]; + conv[hartree][kcal_per_mole] = to_si*conv[joule][kcal_per_mole]; + conv[hartree][ev] = to_si*conv[joule][ev]; + conv[hartree][erg] = to_si*conv[joule][erg]; + conv[hartree][hartree] = 1.0; + conv[hartree][picogram_micrometersq_per_microsecondsq] = to_si*conv[joule][picogram_micrometersq_per_microsecondsq]; + conv[hartree][attogram_nanometersq_per_nanosecondsq] = to_si*conv[joule][attogram_nanometersq_per_nanosecondsq]; + + to_si = 1.0/conv[joule][picogram_micrometersq_per_microsecondsq]; + conv[picogram_micrometersq_per_microsecondsq][joule] = to_si*conv[joule][joule]; + conv[picogram_micrometersq_per_microsecondsq][kcal_per_mole] = to_si*conv[joule][kcal_per_mole]; + conv[picogram_micrometersq_per_microsecondsq][ev] = to_si*conv[joule][ev]; + conv[picogram_micrometersq_per_microsecondsq][erg] = to_si*conv[joule][erg]; + conv[picogram_micrometersq_per_microsecondsq][hartree] = to_si*conv[joule][hartree]; + conv[picogram_micrometersq_per_microsecondsq][picogram_micrometersq_per_microsecondsq] = 1.0; + conv[picogram_micrometersq_per_microsecondsq][attogram_nanometersq_per_nanosecondsq] = to_si*conv[joule][attogram_nanometersq_per_nanosecondsq]; + + to_si = 1.0/conv[joule][attogram_nanometersq_per_nanosecondsq]; + conv[attogram_nanometersq_per_nanosecondsq][joule] = to_si*conv[joule][joule]; + conv[attogram_nanometersq_per_nanosecondsq][kcal_per_mole] = to_si*conv[joule][kcal_per_mole]; + conv[attogram_nanometersq_per_nanosecondsq][ev] = to_si*conv[joule][ev]; + conv[attogram_nanometersq_per_nanosecondsq][erg] = to_si*conv[joule][erg]; + conv[attogram_nanometersq_per_nanosecondsq][hartree] = to_si*conv[joule][hartree]; + conv[attogram_nanometersq_per_nanosecondsq][picogram_micrometersq_per_microsecondsq] = to_si*conv[joule][picogram_micrometersq_per_microsecondsq]; + conv[attogram_nanometersq_per_nanosecondsq][attogram_nanometersq_per_nanosecondsq] = 1.0; + + return conv[from_unit_enum][to_unit_enum]; +} + +/* ---------------------------------------------------------------------- */ + +// Velocity conversion +double get_velocity_conversion_factor(units from_unit_enum, units to_unit_enum) +{ + map > conv; + double to_si; + + conv[meter_per_second][meter_per_second] = 1.0; + conv[meter_per_second][angstrom_per_femtosecond] = 1.0/angstrom_per_femtosecond_si; + conv[meter_per_second][angstrom_per_picosecond] = 1.0/angstrom_per_picosecond_si; + conv[meter_per_second][centimeter_per_second] = 1.0/centimeter_per_second_si; + conv[meter_per_second][bohr_per_atu] = 1.0/bohr_per_atu_si; + conv[meter_per_second][micrometer_per_microsecond] = 1.0/micrometer_per_microsecond_si; + conv[meter_per_second][nanometer_per_nanosecond] = 1.0/nanometer_per_nanosecond_si; + + to_si = 1.0/conv[meter_per_second][angstrom_per_femtosecond]; + conv[angstrom_per_femtosecond][meter_per_second] = to_si*conv[meter_per_second][meter_per_second]; + conv[angstrom_per_femtosecond][angstrom_per_femtosecond] = 1.0; + conv[angstrom_per_femtosecond][angstrom_per_picosecond] = to_si*conv[meter_per_second][angstrom_per_picosecond]; + conv[angstrom_per_femtosecond][centimeter_per_second] = to_si*conv[meter_per_second][centimeter_per_second]; + conv[angstrom_per_femtosecond][bohr_per_atu] = to_si*conv[meter_per_second][bohr_per_atu]; + conv[angstrom_per_femtosecond][micrometer_per_microsecond] = to_si*conv[meter_per_second][micrometer_per_microsecond]; + conv[angstrom_per_femtosecond][nanometer_per_nanosecond] = to_si*conv[meter_per_second][nanometer_per_nanosecond]; + + to_si = 1.0/conv[meter_per_second][angstrom_per_picosecond]; + conv[angstrom_per_picosecond][meter_per_second] = to_si*conv[meter_per_second][meter_per_second]; + conv[angstrom_per_picosecond][angstrom_per_femtosecond] = to_si*conv[meter_per_second][angstrom_per_femtosecond]; + conv[angstrom_per_picosecond][angstrom_per_picosecond] = 1.0; + conv[angstrom_per_picosecond][centimeter_per_second] = to_si*conv[meter_per_second][centimeter_per_second]; + conv[angstrom_per_picosecond][bohr_per_atu] = to_si*conv[meter_per_second][bohr_per_atu]; + conv[angstrom_per_picosecond][micrometer_per_microsecond] = to_si*conv[meter_per_second][micrometer_per_microsecond]; + conv[angstrom_per_picosecond][nanometer_per_nanosecond] = to_si*conv[meter_per_second][nanometer_per_nanosecond]; + + to_si = 1.0/conv[meter_per_second][centimeter_per_second]; + conv[centimeter_per_second][meter_per_second] = to_si*conv[meter_per_second][meter_per_second]; + conv[centimeter_per_second][angstrom_per_femtosecond] = to_si*conv[meter_per_second][angstrom_per_femtosecond]; + conv[centimeter_per_second][angstrom_per_picosecond] = to_si*conv[meter_per_second][angstrom_per_picosecond]; + conv[centimeter_per_second][centimeter_per_second] = 1.0; + conv[centimeter_per_second][bohr_per_atu] = to_si*conv[meter_per_second][bohr_per_atu]; + conv[centimeter_per_second][micrometer_per_microsecond] = to_si*conv[meter_per_second][micrometer_per_microsecond]; + conv[centimeter_per_second][nanometer_per_nanosecond] = to_si*conv[meter_per_second][nanometer_per_nanosecond]; + + to_si = 1.0/conv[meter_per_second][bohr_per_atu]; + conv[bohr_per_atu][meter_per_second] = to_si*conv[meter_per_second][meter_per_second]; + conv[bohr_per_atu][angstrom_per_femtosecond] = to_si*conv[meter_per_second][angstrom_per_femtosecond]; + conv[bohr_per_atu][angstrom_per_picosecond] = to_si*conv[meter_per_second][angstrom_per_picosecond]; + conv[bohr_per_atu][centimeter_per_second] = to_si*conv[meter_per_second][centimeter_per_second]; + conv[bohr_per_atu][bohr_per_atu] = 1.0; + conv[bohr_per_atu][micrometer_per_microsecond] = to_si*conv[meter_per_second][micrometer_per_microsecond]; + conv[bohr_per_atu][nanometer_per_nanosecond] = to_si*conv[meter_per_second][nanometer_per_nanosecond]; + + to_si = 1.0/conv[meter_per_second][micrometer_per_microsecond]; + conv[micrometer_per_microsecond][meter_per_second] = to_si*conv[meter_per_second][meter_per_second]; + conv[micrometer_per_microsecond][angstrom_per_femtosecond] = to_si*conv[meter_per_second][angstrom_per_femtosecond]; + conv[micrometer_per_microsecond][angstrom_per_picosecond] = to_si*conv[meter_per_second][angstrom_per_picosecond]; + conv[micrometer_per_microsecond][centimeter_per_second] = to_si*conv[meter_per_second][centimeter_per_second]; + conv[micrometer_per_microsecond][bohr_per_atu] = to_si*conv[meter_per_second][bohr_per_atu]; + conv[micrometer_per_microsecond][micrometer_per_microsecond] = 1.0; + conv[micrometer_per_microsecond][nanometer_per_nanosecond] = to_si*conv[meter_per_second][nanometer_per_nanosecond]; + + to_si = 1.0/conv[meter_per_second][nanometer_per_nanosecond]; + conv[nanometer_per_nanosecond][meter_per_second] = to_si*conv[meter_per_second][meter_per_second]; + conv[nanometer_per_nanosecond][angstrom_per_femtosecond] = to_si*conv[meter_per_second][angstrom_per_femtosecond]; + conv[nanometer_per_nanosecond][angstrom_per_picosecond] = to_si*conv[meter_per_second][angstrom_per_picosecond]; + conv[nanometer_per_nanosecond][centimeter_per_second] = to_si*conv[meter_per_second][centimeter_per_second]; + conv[nanometer_per_nanosecond][bohr_per_atu] = to_si*conv[meter_per_second][bohr_per_atu]; + conv[nanometer_per_nanosecond][micrometer_per_microsecond] = to_si*conv[meter_per_second][micrometer_per_microsecond]; + conv[nanometer_per_nanosecond][nanometer_per_nanosecond] = 1.0; + + return conv[from_unit_enum][to_unit_enum]; +} + +/* ---------------------------------------------------------------------- */ + +// Force conversion +double get_force_conversion_factor(units from_unit_enum, units to_unit_enum) +{ + map > conv; + double to_si; + + conv[newton][newton] = 1.0; + conv[newton][kcal_per_mole_angstrom] = 1.0/kcal_per_mole_angstrom_si; + conv[newton][ev_per_angstrom] = 1.0/ev_per_angstrom_si; + conv[newton][dyne] = 1.0/dyne_si; + conv[newton][hartree_per_bohr] = 1.0/hartree_per_bohr_si; + conv[newton][picogram_micrometer_per_microsecondsq] = 1.0/picogram_micrometer_per_microsecondsq_si; + conv[newton][attogram_nanometer_per_nanosecondsq] = 1.0/attogram_nanometer_per_nanosecondsq_si; + + to_si = 1.0/conv[newton][kcal_per_mole_angstrom]; + conv[kcal_per_mole_angstrom][newton] = to_si*conv[newton][newton]; + conv[kcal_per_mole_angstrom][kcal_per_mole_angstrom] = 1.0; + conv[kcal_per_mole_angstrom][ev_per_angstrom] = to_si*conv[newton][ev_per_angstrom]; + conv[kcal_per_mole_angstrom][dyne] = to_si*conv[newton][dyne]; + conv[kcal_per_mole_angstrom][hartree_per_bohr] = to_si*conv[newton][hartree_per_bohr]; + conv[kcal_per_mole_angstrom][picogram_micrometer_per_microsecondsq] = to_si*conv[newton][picogram_micrometer_per_microsecondsq]; + conv[kcal_per_mole_angstrom][attogram_nanometer_per_nanosecondsq] = to_si*conv[newton][attogram_nanometer_per_nanosecondsq]; + + to_si = 1.0/conv[newton][ev_per_angstrom]; + conv[ev_per_angstrom][newton] = to_si*conv[newton][newton]; + conv[ev_per_angstrom][kcal_per_mole_angstrom] = to_si*conv[newton][kcal_per_mole_angstrom]; + conv[ev_per_angstrom][ev_per_angstrom] = 1.0; + conv[ev_per_angstrom][dyne] = to_si*conv[newton][dyne]; + conv[ev_per_angstrom][hartree_per_bohr] = to_si*conv[newton][hartree_per_bohr]; + conv[ev_per_angstrom][picogram_micrometer_per_microsecondsq] = to_si*conv[newton][picogram_micrometer_per_microsecondsq]; + conv[ev_per_angstrom][attogram_nanometer_per_nanosecondsq] = to_si*conv[newton][attogram_nanometer_per_nanosecondsq]; + + to_si = 1.0/conv[newton][dyne]; + conv[dyne][newton] = to_si*conv[newton][newton]; + conv[dyne][kcal_per_mole_angstrom] = to_si*conv[newton][kcal_per_mole_angstrom]; + conv[dyne][ev_per_angstrom] = to_si*conv[newton][ev_per_angstrom]; + conv[dyne][dyne] = 1.0; + conv[dyne][hartree_per_bohr] = to_si*conv[newton][hartree_per_bohr]; + conv[dyne][picogram_micrometer_per_microsecondsq] = to_si*conv[newton][picogram_micrometer_per_microsecondsq]; + conv[dyne][attogram_nanometer_per_nanosecondsq] = to_si*conv[newton][attogram_nanometer_per_nanosecondsq]; + + to_si = 1.0/conv[newton][hartree_per_bohr]; + conv[hartree_per_bohr][newton] = to_si*conv[newton][newton]; + conv[hartree_per_bohr][kcal_per_mole_angstrom] = to_si*conv[newton][kcal_per_mole_angstrom]; + conv[hartree_per_bohr][ev_per_angstrom] = to_si*conv[newton][ev_per_angstrom]; + conv[hartree_per_bohr][dyne] = to_si*conv[newton][dyne]; + conv[hartree_per_bohr][hartree_per_bohr] = 1.0; + conv[hartree_per_bohr][picogram_micrometer_per_microsecondsq] = to_si*conv[newton][picogram_micrometer_per_microsecondsq]; + conv[hartree_per_bohr][attogram_nanometer_per_nanosecondsq] = to_si*conv[newton][attogram_nanometer_per_nanosecondsq]; + + to_si = 1.0/conv[newton][picogram_micrometer_per_microsecondsq]; + conv[picogram_micrometer_per_microsecondsq][newton] = to_si*conv[newton][newton]; + conv[picogram_micrometer_per_microsecondsq][kcal_per_mole_angstrom] = to_si*conv[newton][kcal_per_mole_angstrom]; + conv[picogram_micrometer_per_microsecondsq][ev_per_angstrom] = to_si*conv[newton][ev_per_angstrom]; + conv[picogram_micrometer_per_microsecondsq][dyne] = to_si*conv[newton][dyne]; + conv[picogram_micrometer_per_microsecondsq][hartree_per_bohr] = to_si*conv[newton][hartree_per_bohr]; + conv[picogram_micrometer_per_microsecondsq][picogram_micrometer_per_microsecondsq] = 1.0; + conv[picogram_micrometer_per_microsecondsq][attogram_nanometer_per_nanosecondsq] = to_si*conv[newton][attogram_nanometer_per_nanosecondsq]; + + to_si = 1.0/conv[newton][attogram_nanometer_per_nanosecondsq]; + conv[attogram_nanometer_per_nanosecondsq][newton] = to_si*conv[newton][newton]; + conv[attogram_nanometer_per_nanosecondsq][kcal_per_mole_angstrom] = to_si*conv[newton][kcal_per_mole_angstrom]; + conv[attogram_nanometer_per_nanosecondsq][ev_per_angstrom] = to_si*conv[newton][ev_per_angstrom]; + conv[attogram_nanometer_per_nanosecondsq][dyne] = to_si*conv[newton][dyne]; + conv[attogram_nanometer_per_nanosecondsq][hartree_per_bohr] = to_si*conv[newton][hartree_per_bohr]; + conv[attogram_nanometer_per_nanosecondsq][picogram_micrometer_per_microsecondsq] = to_si*conv[newton][picogram_micrometer_per_microsecondsq]; + conv[attogram_nanometer_per_nanosecondsq][attogram_nanometer_per_nanosecondsq] = 1.0; + + return conv[from_unit_enum][to_unit_enum]; +} + +/* ---------------------------------------------------------------------- */ + +// Torque conversion +double get_torque_conversion_factor(units from_unit_enum, units to_unit_enum) +{ + map > conv; + double to_si; + + conv[newton_meter][newton_meter] = 1.0; + conv[newton_meter][kcal_per_mole] = 1.0/kcal_per_mole_si; + conv[newton_meter][ev] = 1.0/ev_si; + conv[newton_meter][dyne_centimeter] = 1.0/dyne_centimeter_si; + conv[newton_meter][hartree] = 1.0/hartree_si; + conv[newton_meter][picogram_micrometersq_per_microsecondsq] = 1.0/picogram_micrometersq_per_microsecondsq_si; + conv[newton_meter][attogram_nanometersq_per_nanosecondsq] = 1.0/attogram_nanometersq_per_nanosecondsq_si; + + to_si = 1.0/conv[newton_meter][kcal_per_mole]; + conv[kcal_per_mole][newton_meter] = to_si*conv[newton_meter][newton_meter]; + conv[kcal_per_mole][kcal_per_mole] = 1.0; + conv[kcal_per_mole][ev] = to_si*conv[newton_meter][ev]; + conv[kcal_per_mole][dyne_centimeter] = to_si*conv[newton_meter][dyne_centimeter]; + conv[kcal_per_mole][hartree] = to_si*conv[newton_meter][hartree]; + conv[kcal_per_mole][picogram_micrometersq_per_microsecondsq] = to_si*conv[newton_meter][picogram_micrometersq_per_microsecondsq]; + conv[kcal_per_mole][attogram_nanometersq_per_nanosecondsq] = to_si*conv[newton_meter][attogram_nanometersq_per_nanosecondsq]; + + to_si = 1.0/conv[newton_meter][ev]; + conv[ev][newton_meter] = to_si*conv[newton_meter][newton_meter]; + conv[ev][kcal_per_mole] = to_si*conv[newton_meter][kcal_per_mole]; + conv[ev][ev] = 1.0; + conv[ev][dyne_centimeter] = to_si*conv[newton_meter][dyne_centimeter]; + conv[ev][hartree] = to_si*conv[newton_meter][hartree]; + conv[ev][picogram_micrometersq_per_microsecondsq] = to_si*conv[newton_meter][picogram_micrometersq_per_microsecondsq]; + conv[ev][attogram_nanometersq_per_nanosecondsq] = to_si*conv[newton_meter][attogram_nanometersq_per_nanosecondsq]; + + to_si = 1.0/conv[newton_meter][dyne_centimeter]; + conv[dyne_centimeter][newton_meter] = to_si*conv[newton_meter][newton_meter]; + conv[dyne_centimeter][kcal_per_mole] = to_si*conv[newton_meter][kcal_per_mole]; + conv[dyne_centimeter][ev] = to_si*conv[newton_meter][ev]; + conv[dyne_centimeter][dyne_centimeter] = 1.0; + conv[dyne_centimeter][hartree] = to_si*conv[newton_meter][hartree]; + conv[dyne_centimeter][picogram_micrometersq_per_microsecondsq] = to_si*conv[newton_meter][picogram_micrometersq_per_microsecondsq]; + conv[dyne_centimeter][attogram_nanometersq_per_nanosecondsq] = to_si*conv[newton_meter][attogram_nanometersq_per_nanosecondsq]; + + to_si = 1.0/conv[newton_meter][hartree]; + conv[hartree][newton_meter] = to_si*conv[newton_meter][newton_meter]; + conv[hartree][kcal_per_mole] = to_si*conv[newton_meter][kcal_per_mole]; + conv[hartree][ev] = to_si*conv[newton_meter][ev]; + conv[hartree][dyne_centimeter] = to_si*conv[newton_meter][dyne_centimeter]; + conv[hartree][hartree] = 1.0; + conv[hartree][picogram_micrometersq_per_microsecondsq] = to_si*conv[newton_meter][picogram_micrometersq_per_microsecondsq]; + conv[hartree][attogram_nanometersq_per_nanosecondsq] = to_si*conv[newton_meter][attogram_nanometersq_per_nanosecondsq]; + + to_si = 1.0/conv[newton_meter][picogram_micrometersq_per_microsecondsq]; + conv[picogram_micrometersq_per_microsecondsq][newton_meter] = to_si*conv[newton_meter][newton_meter]; + conv[picogram_micrometersq_per_microsecondsq][kcal_per_mole] = to_si*conv[newton_meter][kcal_per_mole]; + conv[picogram_micrometersq_per_microsecondsq][ev] = to_si*conv[newton_meter][ev]; + conv[picogram_micrometersq_per_microsecondsq][dyne_centimeter] = to_si*conv[newton_meter][dyne_centimeter]; + conv[picogram_micrometersq_per_microsecondsq][hartree] = to_si*conv[newton_meter][hartree]; + conv[picogram_micrometersq_per_microsecondsq][picogram_micrometersq_per_microsecondsq] = 1.0; + conv[picogram_micrometersq_per_microsecondsq][attogram_nanometersq_per_nanosecondsq] = to_si*conv[newton_meter][attogram_nanometersq_per_nanosecondsq]; + + to_si = 1.0/conv[newton_meter][attogram_nanometersq_per_nanosecondsq]; + conv[attogram_nanometersq_per_nanosecondsq][newton_meter] = to_si*conv[newton_meter][newton_meter]; + conv[attogram_nanometersq_per_nanosecondsq][kcal_per_mole] = to_si*conv[newton_meter][kcal_per_mole]; + conv[attogram_nanometersq_per_nanosecondsq][ev] = to_si*conv[newton_meter][ev]; + conv[attogram_nanometersq_per_nanosecondsq][dyne_centimeter] = to_si*conv[newton_meter][dyne_centimeter]; + conv[attogram_nanometersq_per_nanosecondsq][hartree] = to_si*conv[newton_meter][hartree]; + conv[attogram_nanometersq_per_nanosecondsq][picogram_micrometersq_per_microsecondsq] = to_si*conv[newton_meter][picogram_micrometersq_per_microsecondsq]; + conv[attogram_nanometersq_per_nanosecondsq][attogram_nanometersq_per_nanosecondsq] = 1.0; + + return conv[from_unit_enum][to_unit_enum]; +} + +/* ---------------------------------------------------------------------- */ + +// Temperature conversion +double get_temperature_conversion_factor(units from_unit_enum, units to_unit_enum) +{ + map > conv; + double to_si; + + conv[kelvin][kelvin] = 1.0; + + return conv[from_unit_enum][to_unit_enum]; +} + +/* ---------------------------------------------------------------------- */ + +// Pressure conversion +double get_pressure_conversion_factor(units from_unit_enum, units to_unit_enum) +{ + map > conv; + double to_si; + + conv[pascal][pascal] = 1.0; + conv[pascal][atmosphere] = 1.0/atmosphere_si; + conv[pascal][bar] = 1.0/bar_si; + conv[pascal][dyne_per_centimetersq] = 1.0/dyne_per_centimetersq_si; + conv[pascal][picogram_per_micrometer_microsecondsq] = 1.0/picogram_per_micrometer_microsecondsq_si; + conv[pascal][attogram_per_nanometer_nanosecondsq] = 1.0/attogram_per_nanometer_nanosecondsq_si; + + to_si = 1.0/conv[pascal][atmosphere]; + conv[atmosphere][pascal] = to_si*conv[pascal][pascal]; + conv[atmosphere][atmosphere] = 1.0; + conv[atmosphere][bar] = to_si*conv[pascal][bar]; + conv[atmosphere][dyne_per_centimetersq] = to_si*conv[pascal][dyne_per_centimetersq]; + conv[atmosphere][picogram_per_micrometer_microsecondsq] = to_si*conv[pascal][picogram_per_micrometer_microsecondsq]; + conv[atmosphere][attogram_per_nanometer_nanosecondsq] = to_si*conv[pascal][attogram_per_nanometer_nanosecondsq]; + + to_si = 1.0/conv[pascal][bar]; + conv[bar][pascal] = to_si*conv[pascal][pascal]; + conv[bar][atmosphere] = to_si*conv[pascal][atmosphere]; + conv[bar][bar] = 1.0; + conv[bar][dyne_per_centimetersq] = to_si*conv[pascal][dyne_per_centimetersq]; + conv[bar][picogram_per_micrometer_microsecondsq] = to_si*conv[pascal][picogram_per_micrometer_microsecondsq]; + conv[bar][attogram_per_nanometer_nanosecondsq] = to_si*conv[pascal][attogram_per_nanometer_nanosecondsq]; + + to_si = 1.0/conv[pascal][dyne_per_centimetersq]; + conv[dyne_per_centimetersq][pascal] = to_si*conv[pascal][pascal]; + conv[dyne_per_centimetersq][atmosphere] = to_si*conv[pascal][atmosphere]; + conv[dyne_per_centimetersq][bar] = to_si*conv[pascal][bar]; + conv[dyne_per_centimetersq][dyne_per_centimetersq] = 1.0; + conv[dyne_per_centimetersq][picogram_per_micrometer_microsecondsq] = to_si*conv[pascal][picogram_per_micrometer_microsecondsq]; + conv[dyne_per_centimetersq][attogram_per_nanometer_nanosecondsq] = to_si*conv[pascal][attogram_per_nanometer_nanosecondsq]; + + to_si = 1.0/conv[pascal][picogram_per_micrometer_microsecondsq]; + conv[picogram_per_micrometer_microsecondsq][pascal] = to_si*conv[pascal][pascal]; + conv[picogram_per_micrometer_microsecondsq][atmosphere] = to_si*conv[pascal][atmosphere]; + conv[picogram_per_micrometer_microsecondsq][bar] = to_si*conv[pascal][bar]; + conv[picogram_per_micrometer_microsecondsq][dyne_per_centimetersq] = to_si*conv[pascal][dyne_per_centimetersq]; + conv[picogram_per_micrometer_microsecondsq][picogram_per_micrometer_microsecondsq] = 1.0; + conv[picogram_per_micrometer_microsecondsq][attogram_per_nanometer_nanosecondsq] = to_si*conv[pascal][attogram_per_nanometer_nanosecondsq]; + + to_si = 1.0/conv[pascal][attogram_per_nanometer_nanosecondsq]; + conv[attogram_per_nanometer_nanosecondsq][pascal] = to_si*conv[pascal][pascal]; + conv[attogram_per_nanometer_nanosecondsq][atmosphere] = to_si*conv[pascal][atmosphere]; + conv[attogram_per_nanometer_nanosecondsq][bar] = to_si*conv[pascal][bar]; + conv[attogram_per_nanometer_nanosecondsq][dyne_per_centimetersq] = to_si*conv[pascal][dyne_per_centimetersq]; + conv[attogram_per_nanometer_nanosecondsq][picogram_per_micrometer_microsecondsq] = to_si*conv[pascal][picogram_per_micrometer_microsecondsq]; + conv[attogram_per_nanometer_nanosecondsq][attogram_per_nanometer_nanosecondsq] = 1.0; + + return conv[from_unit_enum][to_unit_enum]; +} + +/* ---------------------------------------------------------------------- */ + +// Viscosity conversion +double get_viscosity_conversion_factor(units from_unit_enum, units to_unit_enum) +{ + map > conv; + double to_si; + + conv[pascal_second][pascal_second] = 1.0; + conv[pascal_second][poise] = 1.0/poise_si; + conv[pascal_second][amu_per_bohr_femtosecond] = 1.0/amu_per_bohr_femtosecond_si; + conv[pascal_second][picogram_per_micrometer_microsecond] = 1.0/picogram_per_micrometer_microsecond_si; + conv[pascal_second][attogram_per_nanometer_nanosecond] = 1.0/attogram_per_nanometer_nanosecond_si; + + to_si = 1.0/conv[pascal_second][poise]; + conv[poise][pascal_second] = to_si*conv[pascal_second][pascal_second]; + conv[poise][poise] = 1.0; + conv[poise][amu_per_bohr_femtosecond] = to_si*conv[pascal_second][amu_per_bohr_femtosecond]; + conv[poise][picogram_per_micrometer_microsecond] = to_si*conv[pascal_second][picogram_per_micrometer_microsecond]; + conv[poise][attogram_per_nanometer_nanosecond] = to_si*conv[pascal_second][attogram_per_nanometer_nanosecond]; + + to_si = 1.0/conv[pascal_second][amu_per_bohr_femtosecond]; + conv[amu_per_bohr_femtosecond][pascal_second] = to_si*conv[pascal_second][pascal_second]; + conv[amu_per_bohr_femtosecond][poise] = to_si*conv[pascal_second][poise]; + conv[amu_per_bohr_femtosecond][amu_per_bohr_femtosecond] = 1.0; + conv[amu_per_bohr_femtosecond][picogram_per_micrometer_microsecond] = to_si*conv[pascal_second][picogram_per_micrometer_microsecond]; + conv[amu_per_bohr_femtosecond][attogram_per_nanometer_nanosecond] = to_si*conv[pascal_second][attogram_per_nanometer_nanosecond]; + + to_si = 1.0/conv[pascal_second][picogram_per_micrometer_microsecond]; + conv[picogram_per_micrometer_microsecond][pascal_second] = to_si*conv[pascal_second][pascal_second]; + conv[picogram_per_micrometer_microsecond][poise] = to_si*conv[pascal_second][poise]; + conv[picogram_per_micrometer_microsecond][amu_per_bohr_femtosecond] = to_si*conv[pascal_second][amu_per_bohr_femtosecond]; + conv[picogram_per_micrometer_microsecond][picogram_per_micrometer_microsecond] = 1.0; + conv[picogram_per_micrometer_microsecond][attogram_per_nanometer_nanosecond] = to_si*conv[pascal_second][attogram_per_nanometer_nanosecond]; + + to_si = 1.0/conv[pascal_second][attogram_per_nanometer_nanosecond]; + conv[attogram_per_nanometer_nanosecond][pascal_second] = to_si*conv[pascal_second][pascal_second]; + conv[attogram_per_nanometer_nanosecond][poise] = to_si*conv[pascal_second][poise]; + conv[attogram_per_nanometer_nanosecond][amu_per_bohr_femtosecond] = to_si*conv[pascal_second][amu_per_bohr_femtosecond]; + conv[attogram_per_nanometer_nanosecond][picogram_per_micrometer_microsecond] = to_si*conv[pascal_second][picogram_per_micrometer_microsecond]; + conv[attogram_per_nanometer_nanosecond][attogram_per_nanometer_nanosecond] = 1.0; + + return conv[from_unit_enum][to_unit_enum]; +} + +/* ---------------------------------------------------------------------- */ + +// Charge conversion +double get_charge_conversion_factor(units from_unit_enum, units to_unit_enum) +{ + map > conv; + double to_si; + + conv[coulomb][coulomb] = 1.0; + conv[coulomb][echarge] = 1.0/echarge_si; + conv[coulomb][statcoulomb] = 1.0/statcoulomb_si; + conv[coulomb][picocoulomb] = 1.0/picocoulomb_si; + + to_si = 1.0/conv[coulomb][echarge]; + conv[echarge][coulomb] = to_si*conv[coulomb][coulomb]; + conv[echarge][echarge] = 1.0; + conv[echarge][statcoulomb] = to_si*conv[coulomb][statcoulomb]; + conv[echarge][picocoulomb] = to_si*conv[coulomb][picocoulomb]; + + to_si = 1.0/conv[coulomb][statcoulomb]; + conv[statcoulomb][coulomb] = to_si*conv[coulomb][coulomb]; + conv[statcoulomb][echarge] = to_si*conv[coulomb][echarge]; + conv[statcoulomb][statcoulomb] = 1.0; + conv[statcoulomb][picocoulomb] = to_si*conv[coulomb][picocoulomb]; + + to_si = 1.0/conv[coulomb][picocoulomb]; + conv[picocoulomb][coulomb] = to_si*conv[coulomb][coulomb]; + conv[picocoulomb][echarge] = to_si*conv[coulomb][echarge]; + conv[picocoulomb][statcoulomb] = to_si*conv[coulomb][statcoulomb]; + conv[picocoulomb][picocoulomb] = 1.0; + + return conv[from_unit_enum][to_unit_enum]; +} + +/* ---------------------------------------------------------------------- */ + +// Dipole conversion +double get_dipole_conversion_factor(units from_unit_enum, units to_unit_enum) +{ + map > conv; + double to_si; + + conv[coulomb_meter][coulomb_meter] = 1.0; + conv[coulomb_meter][electron_angstrom] = 1.0/electron_angstrom_si; + conv[coulomb_meter][statcoulomb_centimeter] = 1.0/statcoulomb_centimeter_si; + conv[coulomb_meter][debye] = 1.0/debye_si; + conv[coulomb_meter][picocoulomb_micrometer] = 1.0/picocoulomb_micrometer_si; + conv[coulomb_meter][electron_nanometer] = 1.0/electron_nanometer_si; + + to_si = 1.0/conv[coulomb_meter][electron_angstrom]; + conv[electron_angstrom][coulomb_meter] = to_si*conv[coulomb_meter][coulomb_meter]; + conv[electron_angstrom][electron_angstrom] = 1.0; + conv[electron_angstrom][statcoulomb_centimeter] = to_si*conv[coulomb_meter][statcoulomb_centimeter]; + conv[electron_angstrom][debye] = to_si*conv[coulomb_meter][debye]; + conv[electron_angstrom][picocoulomb_micrometer] = to_si*conv[coulomb_meter][picocoulomb_micrometer]; + conv[electron_angstrom][electron_nanometer] = to_si*conv[coulomb_meter][electron_nanometer]; + + to_si = 1.0/conv[coulomb_meter][statcoulomb_centimeter]; + conv[statcoulomb_centimeter][coulomb_meter] = to_si*conv[coulomb_meter][coulomb_meter]; + conv[statcoulomb_centimeter][electron_angstrom] = to_si*conv[coulomb_meter][electron_angstrom]; + conv[statcoulomb_centimeter][statcoulomb_centimeter] = 1.0; + conv[statcoulomb_centimeter][debye] = to_si*conv[coulomb_meter][debye]; + conv[statcoulomb_centimeter][picocoulomb_micrometer] = to_si*conv[coulomb_meter][picocoulomb_micrometer]; + conv[statcoulomb_centimeter][electron_nanometer] = to_si*conv[coulomb_meter][electron_nanometer]; + + to_si = 1.0/conv[coulomb_meter][debye]; + conv[debye][coulomb_meter] = to_si*conv[coulomb_meter][coulomb_meter]; + conv[debye][electron_angstrom] = to_si*conv[coulomb_meter][electron_angstrom]; + conv[debye][statcoulomb_centimeter] = to_si*conv[coulomb_meter][statcoulomb_centimeter]; + conv[debye][debye] = 1.0; + conv[debye][picocoulomb_micrometer] = to_si*conv[coulomb_meter][picocoulomb_micrometer]; + conv[debye][electron_nanometer] = to_si*conv[coulomb_meter][electron_nanometer]; + + to_si = 1.0/conv[coulomb_meter][picocoulomb_micrometer]; + conv[picocoulomb_micrometer][coulomb_meter] = to_si*conv[coulomb_meter][coulomb_meter]; + conv[picocoulomb_micrometer][electron_angstrom] = to_si*conv[coulomb_meter][electron_angstrom]; + conv[picocoulomb_micrometer][statcoulomb_centimeter] = to_si*conv[coulomb_meter][statcoulomb_centimeter]; + conv[picocoulomb_micrometer][debye] = to_si*conv[coulomb_meter][debye]; + conv[picocoulomb_micrometer][picocoulomb_micrometer] = 1.0; + conv[picocoulomb_micrometer][electron_nanometer] = to_si*conv[coulomb_meter][electron_nanometer]; + + to_si = 1.0/conv[coulomb_meter][electron_nanometer]; + conv[electron_nanometer][coulomb_meter] = to_si*conv[coulomb_meter][coulomb_meter]; + conv[electron_nanometer][electron_angstrom] = to_si*conv[coulomb_meter][electron_angstrom]; + conv[electron_nanometer][statcoulomb_centimeter] = to_si*conv[coulomb_meter][statcoulomb_centimeter]; + conv[electron_nanometer][debye] = to_si*conv[coulomb_meter][debye]; + conv[electron_nanometer][picocoulomb_micrometer] = to_si*conv[coulomb_meter][picocoulomb_micrometer]; + conv[electron_nanometer][electron_nanometer] = 1.0; + + return conv[from_unit_enum][to_unit_enum]; +} + +/* ---------------------------------------------------------------------- */ + +// Electric field conversion +double get_efield_conversion_factor(units from_unit_enum, units to_unit_enum) +{ + map > conv; + double to_si; + + conv[volt_per_meter][volt_per_meter] = 1.0; + conv[volt_per_meter][volt_per_angstrom] = 1.0/volt_per_angstrom_si; + conv[volt_per_meter][statvolt_per_centimeter] = 1.0/statvolt_per_centimeter_si; + conv[volt_per_meter][volt_per_centimeter] = 1.0/volt_per_centimeter_si; + conv[volt_per_meter][volt_per_micrometer] = 1.0/volt_per_micrometer_si; + conv[volt_per_meter][volt_per_nanometer] = 1.0/volt_per_nanometer_si; + + to_si = 1.0/conv[volt_per_meter][volt_per_angstrom]; + conv[volt_per_angstrom][volt_per_meter] = to_si*conv[volt_per_meter][volt_per_meter]; + conv[volt_per_angstrom][volt_per_angstrom] = 1.0; + conv[volt_per_angstrom][statvolt_per_centimeter] = to_si*conv[volt_per_meter][statvolt_per_centimeter]; + conv[volt_per_angstrom][volt_per_centimeter] = to_si*conv[volt_per_meter][volt_per_centimeter]; + conv[volt_per_angstrom][volt_per_micrometer] = to_si*conv[volt_per_meter][volt_per_micrometer]; + conv[volt_per_angstrom][volt_per_nanometer] = to_si*conv[volt_per_meter][volt_per_nanometer]; + + to_si = 1.0/conv[volt_per_meter][statvolt_per_centimeter]; + conv[statvolt_per_centimeter][volt_per_meter] = to_si*conv[volt_per_meter][volt_per_meter]; + conv[statvolt_per_centimeter][volt_per_angstrom] = to_si*conv[volt_per_meter][volt_per_angstrom]; + conv[statvolt_per_centimeter][statvolt_per_centimeter] = 1.0; + conv[statvolt_per_centimeter][volt_per_centimeter] = to_si*conv[volt_per_meter][volt_per_centimeter]; + conv[statvolt_per_centimeter][volt_per_micrometer] = to_si*conv[volt_per_meter][volt_per_micrometer]; + conv[statvolt_per_centimeter][volt_per_nanometer] = to_si*conv[volt_per_meter][volt_per_nanometer]; + + to_si = 1.0/conv[volt_per_meter][volt_per_centimeter]; + conv[volt_per_centimeter][volt_per_meter] = to_si*conv[volt_per_meter][volt_per_meter]; + conv[volt_per_centimeter][volt_per_angstrom] = to_si*conv[volt_per_meter][volt_per_angstrom]; + conv[volt_per_centimeter][statvolt_per_centimeter] = to_si*conv[volt_per_meter][statvolt_per_centimeter]; + conv[volt_per_centimeter][volt_per_centimeter] = 1.0; + conv[volt_per_centimeter][volt_per_micrometer] = to_si*conv[volt_per_meter][volt_per_micrometer]; + conv[volt_per_centimeter][volt_per_nanometer] = to_si*conv[volt_per_meter][volt_per_nanometer]; + + to_si = 1.0/conv[volt_per_meter][volt_per_micrometer]; + conv[volt_per_micrometer][volt_per_meter] = to_si*conv[volt_per_meter][volt_per_meter]; + conv[volt_per_micrometer][volt_per_angstrom] = to_si*conv[volt_per_meter][volt_per_angstrom]; + conv[volt_per_micrometer][statvolt_per_centimeter] = to_si*conv[volt_per_meter][statvolt_per_centimeter]; + conv[volt_per_micrometer][volt_per_centimeter] = to_si*conv[volt_per_meter][volt_per_centimeter]; + conv[volt_per_micrometer][volt_per_micrometer] = 1.0; + conv[volt_per_micrometer][volt_per_nanometer] = to_si*conv[volt_per_meter][volt_per_nanometer]; + + to_si = 1.0/conv[volt_per_meter][volt_per_nanometer]; + conv[volt_per_nanometer][volt_per_meter] = to_si*conv[volt_per_meter][volt_per_meter]; + conv[volt_per_nanometer][volt_per_angstrom] = to_si*conv[volt_per_meter][volt_per_angstrom]; + conv[volt_per_nanometer][statvolt_per_centimeter] = to_si*conv[volt_per_meter][statvolt_per_centimeter]; + conv[volt_per_nanometer][volt_per_centimeter] = to_si*conv[volt_per_meter][volt_per_centimeter]; + conv[volt_per_nanometer][volt_per_micrometer] = to_si*conv[volt_per_meter][volt_per_micrometer]; + conv[volt_per_nanometer][volt_per_nanometer] = 1.0; + + return conv[from_unit_enum][to_unit_enum]; +} + +/* ---------------------------------------------------------------------- */ + +// Demsity conversion +double get_density_conversion_factor(units from_unit_enum, units to_unit_enum) +{ + map > conv; + double to_si; + + conv[kilogram_per_metercu][kilogram_per_metercu] = 1.0; + conv[kilogram_per_metercu][gram_per_centimetercu] = 1.0/gram_per_centimetercu_si; + conv[kilogram_per_metercu][amu_per_bohrcu] = 1.0/amu_per_bohrcu_si; + conv[kilogram_per_metercu][picogram_per_micrometercu] = 1.0/picogram_per_micrometercu_si; + conv[kilogram_per_metercu][attogram_per_nanometercu] = 1.0/attogram_per_nanometercu_si; + + to_si = 1.0/conv[kilogram_per_metercu][gram_per_centimetercu]; + conv[gram_per_centimetercu][kilogram_per_metercu] = to_si*conv[kilogram_per_metercu][kilogram_per_metercu]; + conv[gram_per_centimetercu][gram_per_centimetercu] = 1.0; + conv[gram_per_centimetercu][amu_per_bohrcu] = to_si*conv[kilogram_per_metercu][amu_per_bohrcu]; + conv[gram_per_centimetercu][picogram_per_micrometercu] = to_si*conv[kilogram_per_metercu][picogram_per_micrometercu]; + conv[gram_per_centimetercu][attogram_per_nanometercu] = to_si*conv[kilogram_per_metercu][attogram_per_nanometercu]; + + to_si = 1.0/conv[kilogram_per_metercu][amu_per_bohrcu]; + conv[amu_per_bohrcu][kilogram_per_metercu] = to_si*conv[kilogram_per_metercu][kilogram_per_metercu]; + conv[amu_per_bohrcu][gram_per_centimetercu] = to_si*conv[kilogram_per_metercu][gram_per_centimetercu]; + conv[amu_per_bohrcu][amu_per_bohrcu] = 1.0; + conv[amu_per_bohrcu][picogram_per_micrometercu] = to_si*conv[kilogram_per_metercu][picogram_per_micrometercu]; + conv[amu_per_bohrcu][attogram_per_nanometercu] = to_si*conv[kilogram_per_metercu][attogram_per_nanometercu]; + + to_si = 1.0/conv[kilogram_per_metercu][picogram_per_micrometercu]; + conv[picogram_per_micrometercu][kilogram_per_metercu] = to_si*conv[kilogram_per_metercu][kilogram_per_metercu]; + conv[picogram_per_micrometercu][gram_per_centimetercu] = to_si*conv[kilogram_per_metercu][gram_per_centimetercu]; + conv[picogram_per_micrometercu][amu_per_bohrcu] = to_si*conv[kilogram_per_metercu][amu_per_bohrcu]; + conv[picogram_per_micrometercu][picogram_per_micrometercu] = 1.0; + conv[picogram_per_micrometercu][attogram_per_nanometercu] = to_si*conv[kilogram_per_metercu][attogram_per_nanometercu]; + + to_si = 1.0/conv[kilogram_per_metercu][attogram_per_nanometercu]; + conv[attogram_per_nanometercu][kilogram_per_metercu] = to_si*conv[kilogram_per_metercu][kilogram_per_metercu]; + conv[attogram_per_nanometercu][gram_per_centimetercu] = to_si*conv[kilogram_per_metercu][gram_per_centimetercu]; + conv[attogram_per_nanometercu][amu_per_bohrcu] = to_si*conv[kilogram_per_metercu][amu_per_bohrcu]; + conv[attogram_per_nanometercu][picogram_per_micrometercu] = to_si*conv[kilogram_per_metercu][picogram_per_micrometercu]; + conv[attogram_per_nanometercu][attogram_per_nanometercu] = 1.0; + + return conv[from_unit_enum][to_unit_enum]; +} + +/* ---------------------------------------------------------------------- */ + +// This routine returns the unit conversion factor between the +// `from_system_enum` to the `to_system_enum` for the `unit_type_enum`. +double get_unit_conversion_factor(unit_type &unit_type_enum, + sys_type from_system_enum, + sys_type to_system_enum) +{ + units from_unit = get_lammps_system_unit(from_system_enum, unit_type_enum); + units to_unit = get_lammps_system_unit(to_system_enum, unit_type_enum); + switch(unit_type_enum) { + case mass : + return get_mass_conversion_factor(from_unit, to_unit); + case distance : + return get_distance_conversion_factor(from_unit, to_unit); + case time : + return get_time_conversion_factor(from_unit, to_unit); + case energy : + return get_energy_conversion_factor(from_unit, to_unit); + case velocity : + return get_velocity_conversion_factor(from_unit, to_unit); + case force : + return get_force_conversion_factor(from_unit, to_unit); + case torque : + return get_torque_conversion_factor(from_unit, to_unit); + case temperature : + return get_temperature_conversion_factor(from_unit, to_unit); + case pressure : + return get_pressure_conversion_factor(from_unit, to_unit); + case viscosity : + return get_viscosity_conversion_factor(from_unit, to_unit); + case charge : + return get_charge_conversion_factor(from_unit, to_unit); + case dipole : + return get_dipole_conversion_factor(from_unit, to_unit); + case efield : + return get_efield_conversion_factor(from_unit, to_unit); + case density : + default : // This is here to a prevent a compiler warning + return get_density_conversion_factor(from_unit, to_unit); + } +} + +} // end of anonymous name space + +/* ---------------------------------------------------------------------- */ + +// Wrapper to the routine that gets the unit conversion. Translates strings +// to enumerations and then call get_unit_conversion_factor() +int lammps_unit_conversion(string const &unit_type_str, + string const &from_system_str, + string const &to_system_str, + double &conversion_factor) +{ + // initialize + conversion_factor = 0.0; + initialize_dictionaries(); + + // convert input to enumeration + unit_type unit_type_enum; + { + map::const_iterator itr = unit_dic.find(unit_type_str); + if (itr != unit_dic.end()) unit_type_enum = itr->second; + else return 1; // error + } + sys_type from_system_enum; + { + map::const_iterator + itr = system_dic.find(from_system_str); + if (itr != system_dic.end()) from_system_enum = itr->second; + else return 1; // error + } + sys_type to_system_enum; + { + map::const_iterator + itr = system_dic.find(to_system_str); + if (itr != system_dic.end()) to_system_enum = itr->second; + else return 1; + } + + // process unit conversions + conversion_factor = get_unit_conversion_factor(unit_type_enum, + from_system_enum, + to_system_enum); + return 0; +} + + diff --git a/src/KIM/kim_units.h b/src/KIM/kim_units.h new file mode 100644 index 0000000000..97e81a6222 --- /dev/null +++ b/src/KIM/kim_units.h @@ -0,0 +1,59 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing authors: Ellad B. Tadmor (UMN) +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + 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 2 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 . + + Linking LAMMPS statically or dynamically with other modules is making a + combined work based on LAMMPS. Thus, the terms and conditions of the GNU + General Public License cover the whole combination. + + In addition, as a special exception, the copyright holders of LAMMPS give + you permission to combine LAMMPS with free software programs or libraries + that are released under the GNU LGPL and with code included in the standard + release of the "kim-api" under the CDDL (or modified versions of such code, + with unchanged license). You may copy and distribute such a system following + the terms of the GNU GPL for LAMMPS and the licenses of the other code + concerned, provided that you include the source code of that other code + when and as the GNU GPL requires distribution of source code. + + Note that people who make modified versions of LAMMPS are not obligated to + grant this special exception for their modified versions; it is their choice + whether to do so. The GNU General Public License gives permission to release + a modified version without this exception; this exception also makes it + possible to release a modified version which carries forward this exception. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Designed for use with the kim-api-2.0.2 (and newer) package +------------------------------------------------------------------------- */ + +int lammps_unit_conversion(std::string const &unit_type_str, + std::string const &from_system_str, + std::string const &to_system_str, + double &conversion_factor); -- GitLab From dbfd1fd0e739aa9ff263fe5e6d88f73d44d2569d Mon Sep 17 00:00:00 2001 From: "Ryan S. Elliott" Date: Fri, 21 Jun 2019 22:11:58 -0500 Subject: [PATCH 064/627] Added atom-type-num-list mapping to kim_style --- src/KIM/kim_style.cpp | 156 +++++++++++++++++++++++++++++++++++++++--- src/KIM/kim_style.h | 5 +- 2 files changed, 149 insertions(+), 12 deletions(-) diff --git a/src/KIM/kim_style.cpp b/src/KIM/kim_style.cpp index 44d5c411ab..161bc31643 100644 --- a/src/KIM/kim_style.cpp +++ b/src/KIM/kim_style.cpp @@ -77,6 +77,10 @@ extern "C" { #include "KIM_SimulatorModel.hpp" //@@@@@ +#define SNUM(x) \ + static_cast(std::ostringstream() \ + << std::dec << x).str() + using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ @@ -257,7 +261,7 @@ void KimStyle::determine_model_type_and_units(char * model_name, if ((! unit_conversion_mode) && (strcmp(*model_units, user_units)!=0)) { std::stringstream mesg; - mesg << "Incompatible units for KIM Simulator Model, required units = " + mesg << "Incompatible units for KIM Simulator Model, required units = " << *model_units; error->all(FLERR,mesg.str().c_str()); } @@ -357,18 +361,18 @@ void KimStyle::do_init(char *model_name, char *user_units, char* model_units) /* ---------------------------------------------------------------------- */ -void KimStyle::kim_style_log_delimiter(std::string begin_end, - std::string model_setup) +void KimStyle::kim_style_log_delimiter(std::string const begin_end, + std::string const model_setup) const { if (comm->me == 0) { std::string mesg; - if ((begin_end == "begin") && (model_setup == "model")) mesg = + if ((begin_end == "begin") && (model_setup == "model")) mesg = "#=== BEGIN kim-style MODEL ==================================\n"; - else if ((begin_end == "begin") && (model_setup == "setup")) mesg = + else if ((begin_end == "begin") && (model_setup == "setup")) mesg = "#=== BEGIN kim-style SETUP ==================================\n"; - else if ((begin_end == "end") && (model_setup == "model")) mesg = + else if ((begin_end == "end") && (model_setup == "model")) mesg = "#=== END kim-style MODEL ====================================\n\n"; - else if ((begin_end == "end") && (model_setup == "setup")) mesg = + else if ((begin_end == "end") && (model_setup == "setup")) mesg = "#=== END kim-style SETUP ====================================\n\n"; if (screen) fputs(mesg.c_str(),screen); @@ -403,12 +407,19 @@ void KimStyle::do_setup(int narg, char **arg) if (simulatorModel) { + std::string delimiter(""); std::string atom_type_sym_list; + std::string atom_type_num_list; for (int i = 0; i < narg; i++) - atom_type_sym_list += std::string(" ") + arg[i]; + { + atom_type_sym_list += delimiter + arg[i]; + atom_type_num_list += delimiter + SNUM(species_to_atomic_no(arg[i])); + delimiter = " "; + } simulatorModel->AddTemplateMap("atom-type-sym-list",atom_type_sym_list); + simulatorModel->AddTemplateMap("atom-type-num-list",atom_type_num_list); simulatorModel->CloseTemplateMap(); int len = strlen(atom_type_sym_list.c_str())+1; @@ -533,10 +544,10 @@ void KimStyle::do_variables(char *user_units, char *model_units) (char *)"dipole", (char *)"efield", (char *)"density"}; - + if (comm->me == 0) { std::stringstream mesg; - mesg << "# Conversion factors from " << from << " to " << to + mesg << "# Conversion factors from " << from << " to " << to << ":" << std::endl; if (screen) fputs(mesg.str().c_str(),screen); if (logfile) fputs(mesg.str().c_str(),logfile); @@ -575,3 +586,128 @@ void KimStyle::do_variables(char *user_units, char *model_units) if (logfile) fputs("#\n",logfile); } } + +/* ---------------------------------------------------------------------- */ + +int KimStyle::species_to_atomic_no(std::string const species) const +{ + if (species == "H") return 1; + else if (species == "He") return 2; + else if (species == "Li") return 3; + else if (species == "Be") return 4; + else if (species == "B") return 5; + else if (species == "C") return 6; + else if (species == "N") return 7; + else if (species == "O") return 8; + else if (species == "F") return 9; + else if (species == "Ne") return 10; + else if (species == "Na") return 11; + else if (species == "Mg") return 12; + else if (species == "Al") return 13; + else if (species == "Si") return 14; + else if (species == "P") return 15; + else if (species == "S") return 16; + else if (species == "Cl") return 17; + else if (species == "Ar") return 18; + else if (species == "K") return 19; + else if (species == "Ca") return 20; + else if (species == "Sc") return 21; + else if (species == "Ti") return 22; + else if (species == "V") return 23; + else if (species == "Cr") return 24; + else if (species == "Mn") return 25; + else if (species == "Fe") return 26; + else if (species == "Co") return 27; + else if (species == "Ni") return 28; + else if (species == "Cu") return 29; + else if (species == "Zn") return 30; + else if (species == "Ga") return 31; + else if (species == "Ge") return 32; + else if (species == "As") return 33; + else if (species == "Se") return 34; + else if (species == "Br") return 35; + else if (species == "Kr") return 36; + else if (species == "Rb") return 37; + else if (species == "Sr") return 38; + else if (species == "Y") return 39; + else if (species == "Zr") return 40; + else if (species == "Nb") return 41; + else if (species == "Mo") return 42; + else if (species == "Tc") return 43; + else if (species == "Ru") return 44; + else if (species == "Rh") return 45; + else if (species == "Pd") return 46; + else if (species == "Ag") return 47; + else if (species == "Cd") return 48; + else if (species == "In") return 49; + else if (species == "Sn") return 50; + else if (species == "Sb") return 51; + else if (species == "Te") return 52; + else if (species == "I") return 53; + else if (species == "Xe") return 54; + else if (species == "Cs") return 55; + else if (species == "Ba") return 56; + else if (species == "La") return 57; + else if (species == "Ce") return 58; + else if (species == "Pr") return 59; + else if (species == "Nd") return 60; + else if (species == "Pm") return 61; + else if (species == "Sm") return 62; + else if (species == "Eu") return 63; + else if (species == "Gd") return 64; + else if (species == "Tb") return 65; + else if (species == "Dy") return 66; + else if (species == "Ho") return 67; + else if (species == "Er") return 68; + else if (species == "Tm") return 69; + else if (species == "Yb") return 70; + else if (species == "Lu") return 71; + else if (species == "Hf") return 72; + else if (species == "Ta") return 73; + else if (species == "W") return 74; + else if (species == "Re") return 75; + else if (species == "Os") return 76; + else if (species == "Ir") return 77; + else if (species == "Pt") return 78; + else if (species == "Au") return 79; + else if (species == "Hg") return 80; + else if (species == "Tl") return 81; + else if (species == "Pb") return 82; + else if (species == "Bi") return 83; + else if (species == "Po") return 84; + else if (species == "At") return 85; + else if (species == "Rn") return 86; + else if (species == "Fr") return 87; + else if (species == "Ra") return 88; + else if (species == "Ac") return 89; + else if (species == "Th") return 90; + else if (species == "Pa") return 91; + else if (species == "U") return 92; + else if (species == "Np") return 93; + else if (species == "Pu") return 94; + else if (species == "Am") return 95; + else if (species == "Cm") return 96; + else if (species == "Bk") return 97; + else if (species == "Cf") return 98; + else if (species == "Es") return 99; + else if (species == "Fm") return 100; + else if (species == "Md") return 101; + else if (species == "No") return 102; + else if (species == "Lr") return 103; + else if (species == "Rf") return 104; + else if (species == "Db") return 105; + else if (species == "Sg") return 106; + else if (species == "Bh") return 107; + else if (species == "Hs") return 108; + else if (species == "Mt") return 109; + else if (species == "Ds") return 110; + else if (species == "Rg") return 111; + else if (species == "Cn") return 112; + else if (species == "Nh") return 113; + else if (species == "Fl") return 114; + else if (species == "Mc") return 115; + else if (species == "Lv") return 116; + else if (species == "Ts") return 117; + else if (species == "Og") return 118; + else return -1; +} diff --git a/src/KIM/kim_style.h b/src/KIM/kim_style.h index b18f6627ea..626f2395bc 100644 --- a/src/KIM/kim_style.h +++ b/src/KIM/kim_style.h @@ -80,8 +80,9 @@ class KimStyle : protected Pointers { void do_init(char *, char *, char *); void do_setup(int, char **); void do_variables(char*, char*); - void kim_style_log_delimiter(std::string begin_end, - std::string model_setup); + int species_to_atomic_no(std::string const species) const; + void kim_style_log_delimiter(std::string const begin_end, + std::string const model_setup) const; }; } -- GitLab From f81c9c5322aa0d8e067f240639528b0292f83bb8 Mon Sep 17 00:00:00 2001 From: Ellad Tadmor Date: Sat, 22 Jun 2019 10:21:05 -0500 Subject: [PATCH 065/627] Changed _u_* output to log to variable commands --- src/KIM/kim_style.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/KIM/kim_style.cpp b/src/KIM/kim_style.cpp index 161bc31643..a583908fc7 100644 --- a/src/KIM/kim_style.cpp +++ b/src/KIM/kim_style.cpp @@ -576,7 +576,8 @@ void KimStyle::do_variables(char *user_units, char *model_units) variable->internal_set(v_unit,conversion_factor); if (comm->me == 0) { std::stringstream mesg; - mesg << "# " << var_str << " = " << conversion_factor << std::endl; + mesg << "variable " << var_str << " internal " << conversion_factor + << std::endl; if (screen) fputs(mesg.str().c_str(),screen); if (logfile) fputs(mesg.str().c_str(),logfile); } -- GitLab From 4a22e3bf70d03dd292319bdab315f2731da41eab Mon Sep 17 00:00:00 2001 From: "Ryan S. Elliott" Date: Sat, 22 Jun 2019 15:21:57 -0500 Subject: [PATCH 066/627] Implement kim_init, kim_interactions & various updates --- src/KIM/README | 27 +- src/KIM/{kim_style.cpp => kim_init.cpp} | 421 +++++------------------- src/KIM/{kim_style.h => kim_init.h} | 35 +- src/KIM/kim_interactions.cpp | 367 +++++++++++++++++++++ src/KIM/kim_interactions.h | 116 +++++++ 5 files changed, 590 insertions(+), 376 deletions(-) rename src/KIM/{kim_style.cpp => kim_init.cpp} (52%) rename src/KIM/{kim_style.h => kim_init.h} (82%) create mode 100644 src/KIM/kim_interactions.cpp create mode 100644 src/KIM/kim_interactions.h diff --git a/src/KIM/README b/src/KIM/README index 4f52d69a67..e61f47426f 100644 --- a/src/KIM/README +++ b/src/KIM/README @@ -1,29 +1,30 @@ -This package provides a pair_style kim command which is a wrapper on -the Knowledge Base for Interatomic Models (KIM) repository of -interatomic potentials, so that they can be used by LAMMPS scripts. +This package provides the kim_init, kim_query, kim_interactions, and +the pair_style kim command which are wrappers on the Knowledgebase of +Interatomic Models (KIM) repository of interatomic potentials, so that +they can be used by LAMMPS scripts. Information about the KIM project can be found at https://openkim.org. -The KIM project is lead by Ellad Tadmor and Ryan Elliott (U Minn) and -James Sethna (Cornell U). Ryan Elliott is the main developer for the -KIM API and he also maintains the code that implements the pair_style -kim command. +The KIM project is lead by Ellad B. Tadmor and Ryan S. Elliott (UMN). +Ryan Elliott is the main developer for the KIM API and he also +maintains the code that implements these commands. -Using this package requires the KIM library and its models +Using this package requires the KIM-API library and its models (interatomic potentials) to be downloaded and installed on your system. The library can be downloaded and built in lib/kim or elsewhere on your system, which must be done before bulding LAMMPS with this package. Details of the download, build, and install -process for KIM are given in the lib/kim/README file, and scripts -are provided to help automate the process. Also see the LAMMPS -manual for general information on building LAMMPS with external +process for the KIM-API are given in the lib/kim/README file, and +scripts are provided to help automate the process. Also see the +LAMMPS manual for general information on building LAMMPS with external libraries. The settings in the Makefile.lammps file in lib/kim must be correct for LAMMPS to build correctly with this package installed. However, the default settings should be correct in most cases and the Makefile.lammps file usually will not need to be changed. Once you have successfully built LAMMPS with this package and the KIM -library you can test it using an input file from the examples dir: +library you can test it using an input files in the examples dir: ./lmp_serial -in lammps/examples/kim/in.kim.lj -This pair_style was written by Ryan S. Elliott (U Minn). +These commands were written by Ryan S. Elliott (UMN), Ellad B. Tadmor +(UMN) and Axel Kohlmeyer (Temple U). diff --git a/src/KIM/kim_style.cpp b/src/KIM/kim_init.cpp similarity index 52% rename from src/KIM/kim_style.cpp rename to src/KIM/kim_init.cpp index a583908fc7..695db0aa0d 100644 --- a/src/KIM/kim_style.cpp +++ b/src/KIM/kim_init.cpp @@ -14,6 +14,7 @@ /* ---------------------------------------------------------------------- Contributing authors: Axel Kohlmeyer (Temple U), Ryan S. Elliott (UMN) + Ellad B. Tadmor (UMN) ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- @@ -57,7 +58,8 @@ #include #include #include -#include "kim_style.h" +#include +#include "kim_init.h" #include "error.h" #include "atom.h" #include "comm.h" @@ -85,33 +87,26 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -void KimStyle::command(int narg, char **arg) +void KimInit::command(int narg, char **arg) { - if ((narg < 2) || (narg > 4)) error->all(FLERR,"Illegal kim_style command"); - - if (strcmp(arg[0],"model") == 0) { - if (domain->box_exist) - error->all(FLERR,"Must use 'kim_style model' command before " - "simulation box is defined"); - int len1 = strlen(arg[1])+1; - int len2 = strlen(arg[2])+1; - char *model_name = new char[len1]; strcpy(model_name,arg[1]); - char *user_units = new char[len2]; strcpy(user_units,arg[2]); - if (narg == 4) { - if (strcmp(arg[3],"unit_conversion_mode")==0) unit_conversion_mode = true; - else { error->all(FLERR,"Illegal kim_style command"); } - } else unit_conversion_mode = false; - - char *model_units; - determine_model_type_and_units(model_name, user_units, &model_units); - - do_init(model_name, user_units, model_units); - } else if (strcmp(arg[0],"setup") == 0) { - if (!domain->box_exist) - error->all(FLERR,"Must use 'kim_style setup' command after " - "simulation box is defined"); - do_setup(narg-1,++arg); - } else error->all(FLERR,"Illegal kim_style command"); + if ((narg < 2) || (narg > 3)) error->all(FLERR,"Illegal kim_init command"); + + if (domain->box_exist) + error->all(FLERR,"Must use 'kim_init' command before " + "simulation box is defined"); + int len0 = strlen(arg[0])+1; + int len1 = strlen(arg[1])+1; + char *model_name = new char[len0]; strcpy(model_name,arg[0]); + char *user_units = new char[len1]; strcpy(user_units,arg[1]); + if (narg == 3) { + if (strcmp(arg[2],"unit_conversion_mode")==0) unit_conversion_mode = true; + else { error->all(FLERR,"Illegal kim_init command"); } + } else unit_conversion_mode = false; + + char *model_units; + determine_model_type_and_units(model_name, user_units, &model_units); + + do_init(model_name, user_units, model_units); } @@ -163,9 +158,9 @@ void get_kim_unit_names( } } } // namespace -void KimStyle::determine_model_type_and_units(char * model_name, - char * user_units, - char ** model_units) +void KimInit::determine_model_type_and_units(char * model_name, + char * user_units, + char ** model_units) { KIM_LengthUnit lengthUnit; KIM_EnergyUnit energyUnit; @@ -270,7 +265,7 @@ void KimStyle::determine_model_type_and_units(char * model_name, /* ---------------------------------------------------------------------- */ -void KimStyle::do_init(char *model_name, char *user_units, char* model_units) +void KimInit::do_init(char *model_name, char *user_units, char* model_units) { // create storage proxy fix. delete existing fix, if needed. @@ -288,229 +283,102 @@ void KimStyle::do_init(char *model_name, char *user_units, char* model_units) fix_store->setptr("user_units", (void *) user_units); fix_store->setptr("model_units", (void *) model_units); + // Begin output to log file + kim_init_log_delimiter("begin"); + int kimerror; // @@@@@ switch to c-bindings when they are available KIM::SimulatorModel * simulatorModel; - kimerror = KIM::SimulatorModel::Create(model_name,&simulatorModel); - - const std::string *sim_name, *sim_version; - simulatorModel->GetSimulatorNameAndVersion(&sim_name, &sim_version); - - if (*sim_name != "LAMMPS") - error->all(FLERR,"Incompatible KIM Simulator Model"); - - // Begin output to log file - kim_style_log_delimiter("begin","model"); - if (comm->me == 0) { - std::string mesg("# Using KIM Simulator Model : "); - mesg += model_name; - mesg += "\n"; - mesg += "# For Simulator : "; - mesg += *sim_name + " " + *sim_version + "\n"; - mesg += "# Running on : LAMMPS "; - mesg += universe->version; - mesg += "\n"; - mesg += "#\n"; - - if (screen) fputs(mesg.c_str(),screen); - if (logfile) fputs(mesg.c_str(),logfile); - } - - // Define unit conversion factor variables and print to log - if (unit_conversion_mode) do_variables(user_units, model_units); - - // set units - - std::string cmd("units "); - cmd += model_units; - input->one(cmd.c_str()); - - // not a Kim Simulator Model; nothing else to do here. - - if (kimerror) return; - - fix_store->setptr("simulator_model", (void *) simulatorModel); - - // need to call this to have access to (some) simulator model init data. - - simulatorModel->CloseTemplateMap(); - - int sim_fields, sim_lines; - const std::string *sim_field, *sim_value; - simulatorModel->GetNumberOfSimulatorFields(&sim_fields); - - // init model - - for (int i=0; i < sim_fields; ++i) { - simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); - if (*sim_field == "model-init") { - for (int j=0; j < sim_lines; ++j) { - simulatorModel->GetSimulatorFieldLine(i,j,&sim_value); - input->one(sim_value->c_str()); - } - break; - } - } - - // End output to log file - kim_style_log_delimiter("end","model"); + if (model_type == SM) + { + kimerror = KIM::SimulatorModel::Create(model_name,&simulatorModel); - // reset template map. - simulatorModel->OpenAndInitializeTemplateMap(); -} + const std::string *sim_name, *sim_version; + simulatorModel->GetSimulatorNameAndVersion(&sim_name, &sim_version); -/* ---------------------------------------------------------------------- */ + if (*sim_name != "LAMMPS") + error->all(FLERR,"Incompatible KIM Simulator Model"); -void KimStyle::kim_style_log_delimiter(std::string const begin_end, - std::string const model_setup) const -{ if (comm->me == 0) { - std::string mesg; - if ((begin_end == "begin") && (model_setup == "model")) mesg = - "#=== BEGIN kim-style MODEL ==================================\n"; - else if ((begin_end == "begin") && (model_setup == "setup")) mesg = - "#=== BEGIN kim-style SETUP ==================================\n"; - else if ((begin_end == "end") && (model_setup == "model")) mesg = - "#=== END kim-style MODEL ====================================\n\n"; - else if ((begin_end == "end") && (model_setup == "setup")) mesg = - "#=== END kim-style SETUP ====================================\n\n"; + std::string mesg("# Using KIM Simulator Model : "); + mesg += model_name; + mesg += "\n"; + mesg += "# For Simulator : "; + mesg += *sim_name + " " + *sim_version + "\n"; + mesg += "# Running on : LAMMPS "; + mesg += universe->version; + mesg += "\n"; + mesg += "#\n"; if (screen) fputs(mesg.c_str(),screen); if (logfile) fputs(mesg.c_str(),logfile); } -} - -/* ---------------------------------------------------------------------- */ - -void KimStyle::do_setup(int narg, char **arg) -{ - if (narg != atom->ntypes) - error->all(FLERR,"Illegal kim_style command"); - char *model = NULL; - KIM::SimulatorModel *simulatorModel(NULL); + fix_store->setptr("simulator_model", (void *) simulatorModel); - // check if we had a kim_style init command by finding fix STORE/KIM - // retrieve model name and pointer to simulator model class instance. - // validate model name if not given as NULL. - // if kim_style init wasn't run try to initialize simulator model now. + // need to call this to have access to (some) simulator model init data. - int ifix = modify->find_fix("KIM_MODEL_STORE"); - if (ifix >= 0) { - FixStoreKIM *fix_store = (FixStoreKIM *) modify->fix[ifix]; - model = (char *)fix_store->getptr("model_name"); - simulatorModel = (KIM::SimulatorModel *)fix_store->getptr("simulator_model"); - } else error->all(FLERR,"Must use 'kim_style model' before 'kim_style setup'"); - - // Begin output to log file - kim_style_log_delimiter("begin","setup"); - - if (simulatorModel) { - - std::string delimiter(""); - std::string atom_type_sym_list; - std::string atom_type_num_list; - - for (int i = 0; i < narg; i++) - { - atom_type_sym_list += delimiter + arg[i]; - atom_type_num_list += delimiter + SNUM(species_to_atomic_no(arg[i])); - delimiter = " "; - } - - simulatorModel->AddTemplateMap("atom-type-sym-list",atom_type_sym_list); - simulatorModel->AddTemplateMap("atom-type-num-list",atom_type_num_list); simulatorModel->CloseTemplateMap(); + } - int len = strlen(atom_type_sym_list.c_str())+1; - char *strbuf = new char[len]; - char *strword; - - // validate species selection - - int sim_num_species; - bool species_is_supported; - const std::string *sim_species; - simulatorModel->GetNumberOfSupportedSpecies(&sim_num_species); - strcpy(strbuf,atom_type_sym_list.c_str()); - strword = strtok(strbuf," \t"); - while (strword) { - species_is_supported = false; - if (strcmp(strword,"NULL") == 0) continue; - for (int i=0; i < sim_num_species; ++i) { - simulatorModel->GetSupportedSpecies(i, &sim_species); - if (strcmp(sim_species->c_str(),strword) == 0) - species_is_supported = true; - } - if (!species_is_supported) { - std::string msg("Species '"); - msg += strword; - msg += "' is not supported by this KIM Simulator Model"; - error->all(FLERR,msg.c_str()); - } - strword = strtok(NULL," \t"); - } - delete[] strbuf; + // Define unit conversion factor variables and print to log + if (unit_conversion_mode) do_variables(user_units, model_units); - // check if units are unchanged, and if kim_style init was required + // set units + std::string cmd("units "); + cmd += model_units; + input->one(cmd.c_str()); + + if (model_type == SM) + { int sim_fields, sim_lines; const std::string *sim_field, *sim_value; simulatorModel->GetNumberOfSimulatorFields(&sim_fields); - for (int i=0; i < sim_fields; ++i) { - simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); - if (*sim_field == "units") { - simulatorModel->GetSimulatorFieldLine(i,0,&sim_value); - if (*sim_value != update->unit_style) - error->all(FLERR,"Incompatible units for KIM Simulator Model"); - } - } + // init model - int sim_model_idx=-1; for (int i=0; i < sim_fields; ++i) { simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); - if (*sim_field == "model-defn") { - sim_model_idx = i; + if (*sim_field == "model-init") { for (int j=0; j < sim_lines; ++j) { - simulatorModel->GetSimulatorFieldLine(sim_model_idx,j,&sim_value); + simulatorModel->GetSimulatorFieldLine(i,j,&sim_value); input->one(sim_value->c_str()); } + break; } } - if (sim_model_idx < 0) - error->all(FLERR,"KIM Simulator Model has no Model definition"); - + // reset template map. simulatorModel->OpenAndInitializeTemplateMap(); + } - } else { + // End output to log file + kim_init_log_delimiter("end"); - // not a simulator model. issue pair_style and pair_coeff commands. - // NOTE: all references to arg must appear before calls to input->one() - // as that will reset the argument vector. +} - std::string cmd1("pair_style kim "); - cmd1 += model; +/* ---------------------------------------------------------------------- */ - std::string cmd2("pair_coeff * * "); - for (int i=0; i < narg; ++i) { - cmd2 += arg[i]; - cmd2 += " "; - } +void KimInit::kim_init_log_delimiter(std::string const begin_end) const +{ + if (comm->me == 0) { + std::string mesg; + if (begin_end == "begin") + mesg = + "#=== BEGIN kim-init ==========================================\n"; + else if (begin_end == "end") + mesg = + "#=== END kim-init ============================================\n\n"; - input->one(cmd1.c_str()); - input->one(cmd2.c_str()); + if (screen) fputs(mesg.c_str(),screen); + if (logfile) fputs(mesg.c_str(),logfile); } - - // End output to log file - kim_style_log_delimiter("end","setup"); - } /* ---------------------------------------------------------------------- */ -void KimStyle::do_variables(char *user_units, char *model_units) +void KimInit::do_variables(char *user_units, char *model_units) { char *from = user_units, *to = model_units; Variable *variable = input->variable; @@ -576,7 +444,9 @@ void KimStyle::do_variables(char *user_units, char *model_units) variable->internal_set(v_unit,conversion_factor); if (comm->me == 0) { std::stringstream mesg; - mesg << "variable " << var_str << " internal " << conversion_factor + mesg << "variable " << std::setw(15) << std::left << var_str + << " internal " + << std::setprecision(12) << std::scientific << conversion_factor << std::endl; if (screen) fputs(mesg.str().c_str(),screen); if (logfile) fputs(mesg.str().c_str(),logfile); @@ -587,128 +457,3 @@ void KimStyle::do_variables(char *user_units, char *model_units) if (logfile) fputs("#\n",logfile); } } - -/* ---------------------------------------------------------------------- */ - -int KimStyle::species_to_atomic_no(std::string const species) const -{ - if (species == "H") return 1; - else if (species == "He") return 2; - else if (species == "Li") return 3; - else if (species == "Be") return 4; - else if (species == "B") return 5; - else if (species == "C") return 6; - else if (species == "N") return 7; - else if (species == "O") return 8; - else if (species == "F") return 9; - else if (species == "Ne") return 10; - else if (species == "Na") return 11; - else if (species == "Mg") return 12; - else if (species == "Al") return 13; - else if (species == "Si") return 14; - else if (species == "P") return 15; - else if (species == "S") return 16; - else if (species == "Cl") return 17; - else if (species == "Ar") return 18; - else if (species == "K") return 19; - else if (species == "Ca") return 20; - else if (species == "Sc") return 21; - else if (species == "Ti") return 22; - else if (species == "V") return 23; - else if (species == "Cr") return 24; - else if (species == "Mn") return 25; - else if (species == "Fe") return 26; - else if (species == "Co") return 27; - else if (species == "Ni") return 28; - else if (species == "Cu") return 29; - else if (species == "Zn") return 30; - else if (species == "Ga") return 31; - else if (species == "Ge") return 32; - else if (species == "As") return 33; - else if (species == "Se") return 34; - else if (species == "Br") return 35; - else if (species == "Kr") return 36; - else if (species == "Rb") return 37; - else if (species == "Sr") return 38; - else if (species == "Y") return 39; - else if (species == "Zr") return 40; - else if (species == "Nb") return 41; - else if (species == "Mo") return 42; - else if (species == "Tc") return 43; - else if (species == "Ru") return 44; - else if (species == "Rh") return 45; - else if (species == "Pd") return 46; - else if (species == "Ag") return 47; - else if (species == "Cd") return 48; - else if (species == "In") return 49; - else if (species == "Sn") return 50; - else if (species == "Sb") return 51; - else if (species == "Te") return 52; - else if (species == "I") return 53; - else if (species == "Xe") return 54; - else if (species == "Cs") return 55; - else if (species == "Ba") return 56; - else if (species == "La") return 57; - else if (species == "Ce") return 58; - else if (species == "Pr") return 59; - else if (species == "Nd") return 60; - else if (species == "Pm") return 61; - else if (species == "Sm") return 62; - else if (species == "Eu") return 63; - else if (species == "Gd") return 64; - else if (species == "Tb") return 65; - else if (species == "Dy") return 66; - else if (species == "Ho") return 67; - else if (species == "Er") return 68; - else if (species == "Tm") return 69; - else if (species == "Yb") return 70; - else if (species == "Lu") return 71; - else if (species == "Hf") return 72; - else if (species == "Ta") return 73; - else if (species == "W") return 74; - else if (species == "Re") return 75; - else if (species == "Os") return 76; - else if (species == "Ir") return 77; - else if (species == "Pt") return 78; - else if (species == "Au") return 79; - else if (species == "Hg") return 80; - else if (species == "Tl") return 81; - else if (species == "Pb") return 82; - else if (species == "Bi") return 83; - else if (species == "Po") return 84; - else if (species == "At") return 85; - else if (species == "Rn") return 86; - else if (species == "Fr") return 87; - else if (species == "Ra") return 88; - else if (species == "Ac") return 89; - else if (species == "Th") return 90; - else if (species == "Pa") return 91; - else if (species == "U") return 92; - else if (species == "Np") return 93; - else if (species == "Pu") return 94; - else if (species == "Am") return 95; - else if (species == "Cm") return 96; - else if (species == "Bk") return 97; - else if (species == "Cf") return 98; - else if (species == "Es") return 99; - else if (species == "Fm") return 100; - else if (species == "Md") return 101; - else if (species == "No") return 102; - else if (species == "Lr") return 103; - else if (species == "Rf") return 104; - else if (species == "Db") return 105; - else if (species == "Sg") return 106; - else if (species == "Bh") return 107; - else if (species == "Hs") return 108; - else if (species == "Mt") return 109; - else if (species == "Ds") return 110; - else if (species == "Rg") return 111; - else if (species == "Cn") return 112; - else if (species == "Nh") return 113; - else if (species == "Fl") return 114; - else if (species == "Mc") return 115; - else if (species == "Lv") return 116; - else if (species == "Ts") return 117; - else if (species == "Og") return 118; - else return -1; -} diff --git a/src/KIM/kim_style.h b/src/KIM/kim_init.h similarity index 82% rename from src/KIM/kim_style.h rename to src/KIM/kim_init.h index 626f2395bc..c22e2be720 100644 --- a/src/KIM/kim_style.h +++ b/src/KIM/kim_init.h @@ -14,6 +14,7 @@ /* ---------------------------------------------------------------------- Contributing authors: Axel Kohlmeyer (Temple U), Ryan S. Elliott (UMN) + Ellad B. Tadmor (UMN) ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- @@ -56,20 +57,20 @@ #ifdef COMMAND_CLASS -CommandStyle(kim_style,KimStyle) +CommandStyle(kim_init,KimInit) #else -#ifndef LMP_KIM_STYLE_H -#define LMP_KIM_STYLE_H +#ifndef LMP_KIM_INIT_H +#define LMP_KIM_INIT_H #include "pointers.h" namespace LAMMPS_NS { -class KimStyle : protected Pointers { +class KimInit : protected Pointers { public: - KimStyle(class LAMMPS *lmp) : Pointers(lmp) {}; + KimInit(class LAMMPS *lmp) : Pointers(lmp) {}; void command(int, char **); private: enum model_type_enum {MO, SM}; @@ -78,11 +79,8 @@ class KimStyle : protected Pointers { void determine_model_type_and_units(char *, char *, char **); void do_init(char *, char *, char *); - void do_setup(int, char **); void do_variables(char*, char*); - int species_to_atomic_no(std::string const species) const; - void kim_style_log_delimiter(std::string const begin_end, - std::string const model_setup) const; + void kim_init_log_delimiter(std::string const begin_end) const; }; } @@ -92,19 +90,11 @@ class KimStyle : protected Pointers { /* ERROR/WARNING messages: -E: Illegal kim_style command +E: Illegal kim_init command -Incorrect number or kind of arguments to kim_style. +Incorrect number or kind of arguments to kim_init. -E: Must use 'kim_style model' command before simulation box is defined - -Self-explanatory. - -E: Must use 'kim_style setup' command after simulation box is defined - -Self-explanatory. - -E: Must use 'kim_style model' command before 'kim_style setup' +E: Must use 'kim_init' command before simulation box is defined Self-explanatory. @@ -125,11 +115,6 @@ E: Incompatible KIM Simulator Model The requested KIM Simulator Model was defined for a different MD code and thus is not compatible with LAMMPS. -E: Species XXX is not supported by this KIM Simulator Model - -The kim_style define command was referencing a species that is not -present in the requested KIM Simulator Model. - E: Incompatible units for KIM Simulator Model The selected unit style is not compatible with the requested KIM diff --git a/src/KIM/kim_interactions.cpp b/src/KIM/kim_interactions.cpp new file mode 100644 index 0000000000..491d406ae6 --- /dev/null +++ b/src/KIM/kim_interactions.cpp @@ -0,0 +1,367 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing authors: Axel Kohlmeyer (Temple U), + Ryan S. Elliott (UMN) + Ellad B. Tadmor (UMN) +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + 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 2 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 . + + Linking LAMMPS statically or dynamically with other modules is making a + combined work based on LAMMPS. Thus, the terms and conditions of the GNU + General Public License cover the whole combination. + + In addition, as a special exception, the copyright holders of LAMMPS give + you permission to combine LAMMPS with free software programs or libraries + that are released under the GNU LGPL and with code included in the standard + release of the "kim-api" under the CDDL (or modified versions of such code, + with unchanged license). You may copy and distribute such a system following + the terms of the GNU GPL for LAMMPS and the licenses of the other code + concerned, provided that you include the source code of that other code + when and as the GNU GPL requires distribution of source code. + + Note that people who make modified versions of LAMMPS are not obligated to + grant this special exception for their modified versions; it is their choice + whether to do so. The GNU General Public License gives permission to release + a modified version without this exception; this exception also makes it + possible to release a modified version which carries forward this exception. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Designed for use with the kim-api-2.1.0 (and newer) package +------------------------------------------------------------------------- */ + +#include +#include +#include +#include "kim_interactions.h" +#include "error.h" +#include "atom.h" +#include "comm.h" +#include "domain.h" +#include "modify.h" +#include "update.h" +#include "universe.h" +#include "input.h" +#include "variable.h" +#include "fix_store_kim.h" + +extern "C" { +#include "KIM_SimulatorHeaders.h" +} +//@@@@@ Need to switch to c-bindings when they are available. +#include "KIM_SimulatorModel.hpp" +//@@@@@ + +#define SNUM(x) \ + static_cast(std::ostringstream() \ + << std::dec << x).str() + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +void KimInteractions::command(int narg, char **arg) +{ + if (narg < 1) error->all(FLERR,"Illegal kim_interactions command"); + + if (!domain->box_exist) + error->all(FLERR,"Must use 'kim_interactions' command after " + "simulation box is defined"); + do_setup(narg,arg); +} + +/* ---------------------------------------------------------------------- */ + +void KimInteractions::kim_interactions_log_delimiter( + std::string const begin_end) const +{ + if (comm->me == 0) { + std::string mesg; + if (begin_end == "begin") + mesg = + "#=== BEGIN kim_interactions ==================================\n"; + else if (begin_end == "end") + mesg = + "#=== END kim_interactions ====================================\n\n"; + + if (screen) fputs(mesg.c_str(),screen); + if (logfile) fputs(mesg.c_str(),logfile); + } +} + +/* ---------------------------------------------------------------------- */ + +void KimInteractions::do_setup(int narg, char **arg) +{ + if (narg != atom->ntypes) + error->all(FLERR,"Illegal kim_interactions command"); + + char *model_name = NULL; + KIM::SimulatorModel *simulatorModel(NULL); + + // check if we had a kim_init command by finding fix STORE/KIM + // retrieve model name and pointer to simulator model class instance. + // validate model name if not given as NULL. + + int ifix = modify->find_fix("KIM_MODEL_STORE"); + if (ifix >= 0) { + FixStoreKIM *fix_store = (FixStoreKIM *) modify->fix[ifix]; + model_name = (char *)fix_store->getptr("model_name"); + simulatorModel = (KIM::SimulatorModel *)fix_store->getptr("simulator_model"); + } else error->all(FLERR,"Must use 'kim_init' before 'kim_interactions'"); + + // Begin output to log file + kim_interactions_log_delimiter("begin"); + + if (simulatorModel) { + + std::string delimiter(""); + std::string atom_type_sym_list; + std::string atom_type_num_list; + + for (int i = 0; i < narg; i++) + { + atom_type_sym_list += delimiter + arg[i]; + atom_type_num_list += delimiter + SNUM(species_to_atomic_no(arg[i])); + delimiter = " "; + } + + simulatorModel->AddTemplateMap("atom-type-sym-list",atom_type_sym_list); + simulatorModel->AddTemplateMap("atom-type-num-list",atom_type_num_list); + simulatorModel->CloseTemplateMap(); + + int len = strlen(atom_type_sym_list.c_str())+1; + char *strbuf = new char[len]; + char *strword; + + // validate species selection + + int sim_num_species; + bool species_is_supported; + const std::string *sim_species; + simulatorModel->GetNumberOfSupportedSpecies(&sim_num_species); + strcpy(strbuf,atom_type_sym_list.c_str()); + strword = strtok(strbuf," \t"); + while (strword) { + species_is_supported = false; + if (strcmp(strword,"NULL") == 0) continue; + for (int i=0; i < sim_num_species; ++i) { + simulatorModel->GetSupportedSpecies(i, &sim_species); + if (strcmp(sim_species->c_str(),strword) == 0) + species_is_supported = true; + } + if (!species_is_supported) { + std::string msg("Species '"); + msg += strword; + msg += "' is not supported by this KIM Simulator Model"; + error->all(FLERR,msg.c_str()); + } + strword = strtok(NULL," \t"); + } + delete[] strbuf; + + // check if units are unchanged + + int sim_fields, sim_lines; + const std::string *sim_field, *sim_value; + simulatorModel->GetNumberOfSimulatorFields(&sim_fields); + for (int i=0; i < sim_fields; ++i) { + simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); + + if (*sim_field == "units") { + simulatorModel->GetSimulatorFieldLine(i,0,&sim_value); + if (*sim_value != update->unit_style) + error->all(FLERR,"Incompatible units for KIM Simulator Model"); + } + } + + int sim_model_idx=-1; + for (int i=0; i < sim_fields; ++i) { + simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field); + if (*sim_field == "model-defn") { + sim_model_idx = i; + for (int j=0; j < sim_lines; ++j) { + simulatorModel->GetSimulatorFieldLine(sim_model_idx,j,&sim_value); + input->one(sim_value->c_str()); + } + } + } + + if (sim_model_idx < 0) + error->all(FLERR,"KIM Simulator Model has no Model definition"); + + simulatorModel->OpenAndInitializeTemplateMap(); + + } else { + + // not a simulator model. issue pair_style and pair_coeff commands. + // NOTE: all references to arg must appear before calls to input->one() + // as that will reset the argument vector. + + std::string cmd1("pair_style kim "); + cmd1 += model_name; + + std::string cmd2("pair_coeff * * "); + for (int i=0; i < narg; ++i) { + cmd2 += arg[i]; + cmd2 += " "; + } + + input->one(cmd1.c_str()); + input->one(cmd2.c_str()); + } + + // End output to log file + kim_interactions_log_delimiter("end"); + +} + +/* ---------------------------------------------------------------------- */ + +int KimInteractions::species_to_atomic_no(std::string const species) const +{ + if (species == "H") return 1; + else if (species == "He") return 2; + else if (species == "Li") return 3; + else if (species == "Be") return 4; + else if (species == "B") return 5; + else if (species == "C") return 6; + else if (species == "N") return 7; + else if (species == "O") return 8; + else if (species == "F") return 9; + else if (species == "Ne") return 10; + else if (species == "Na") return 11; + else if (species == "Mg") return 12; + else if (species == "Al") return 13; + else if (species == "Si") return 14; + else if (species == "P") return 15; + else if (species == "S") return 16; + else if (species == "Cl") return 17; + else if (species == "Ar") return 18; + else if (species == "K") return 19; + else if (species == "Ca") return 20; + else if (species == "Sc") return 21; + else if (species == "Ti") return 22; + else if (species == "V") return 23; + else if (species == "Cr") return 24; + else if (species == "Mn") return 25; + else if (species == "Fe") return 26; + else if (species == "Co") return 27; + else if (species == "Ni") return 28; + else if (species == "Cu") return 29; + else if (species == "Zn") return 30; + else if (species == "Ga") return 31; + else if (species == "Ge") return 32; + else if (species == "As") return 33; + else if (species == "Se") return 34; + else if (species == "Br") return 35; + else if (species == "Kr") return 36; + else if (species == "Rb") return 37; + else if (species == "Sr") return 38; + else if (species == "Y") return 39; + else if (species == "Zr") return 40; + else if (species == "Nb") return 41; + else if (species == "Mo") return 42; + else if (species == "Tc") return 43; + else if (species == "Ru") return 44; + else if (species == "Rh") return 45; + else if (species == "Pd") return 46; + else if (species == "Ag") return 47; + else if (species == "Cd") return 48; + else if (species == "In") return 49; + else if (species == "Sn") return 50; + else if (species == "Sb") return 51; + else if (species == "Te") return 52; + else if (species == "I") return 53; + else if (species == "Xe") return 54; + else if (species == "Cs") return 55; + else if (species == "Ba") return 56; + else if (species == "La") return 57; + else if (species == "Ce") return 58; + else if (species == "Pr") return 59; + else if (species == "Nd") return 60; + else if (species == "Pm") return 61; + else if (species == "Sm") return 62; + else if (species == "Eu") return 63; + else if (species == "Gd") return 64; + else if (species == "Tb") return 65; + else if (species == "Dy") return 66; + else if (species == "Ho") return 67; + else if (species == "Er") return 68; + else if (species == "Tm") return 69; + else if (species == "Yb") return 70; + else if (species == "Lu") return 71; + else if (species == "Hf") return 72; + else if (species == "Ta") return 73; + else if (species == "W") return 74; + else if (species == "Re") return 75; + else if (species == "Os") return 76; + else if (species == "Ir") return 77; + else if (species == "Pt") return 78; + else if (species == "Au") return 79; + else if (species == "Hg") return 80; + else if (species == "Tl") return 81; + else if (species == "Pb") return 82; + else if (species == "Bi") return 83; + else if (species == "Po") return 84; + else if (species == "At") return 85; + else if (species == "Rn") return 86; + else if (species == "Fr") return 87; + else if (species == "Ra") return 88; + else if (species == "Ac") return 89; + else if (species == "Th") return 90; + else if (species == "Pa") return 91; + else if (species == "U") return 92; + else if (species == "Np") return 93; + else if (species == "Pu") return 94; + else if (species == "Am") return 95; + else if (species == "Cm") return 96; + else if (species == "Bk") return 97; + else if (species == "Cf") return 98; + else if (species == "Es") return 99; + else if (species == "Fm") return 100; + else if (species == "Md") return 101; + else if (species == "No") return 102; + else if (species == "Lr") return 103; + else if (species == "Rf") return 104; + else if (species == "Db") return 105; + else if (species == "Sg") return 106; + else if (species == "Bh") return 107; + else if (species == "Hs") return 108; + else if (species == "Mt") return 109; + else if (species == "Ds") return 110; + else if (species == "Rg") return 111; + else if (species == "Cn") return 112; + else if (species == "Nh") return 113; + else if (species == "Fl") return 114; + else if (species == "Mc") return 115; + else if (species == "Lv") return 116; + else if (species == "Ts") return 117; + else if (species == "Og") return 118; + else return -1; +} diff --git a/src/KIM/kim_interactions.h b/src/KIM/kim_interactions.h new file mode 100644 index 0000000000..6da1880f84 --- /dev/null +++ b/src/KIM/kim_interactions.h @@ -0,0 +1,116 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Contributing authors: Axel Kohlmeyer (Temple U), + Ryan S. Elliott (UMN) + Ellad B. Tadmor (UMN) +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + 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 2 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 . + + Linking LAMMPS statically or dynamically with other modules is making a + combined work based on LAMMPS. Thus, the terms and conditions of the GNU + General Public License cover the whole combination. + + In addition, as a special exception, the copyright holders of LAMMPS give + you permission to combine LAMMPS with free software programs or libraries + that are released under the GNU LGPL and with code included in the standard + release of the "kim-api" under the CDDL (or modified versions of such code, + with unchanged license). You may copy and distribute such a system following + the terms of the GNU GPL for LAMMPS and the licenses of the other code + concerned, provided that you include the source code of that other code + when and as the GNU GPL requires distribution of source code. + + Note that people who make modified versions of LAMMPS are not obligated to + grant this special exception for their modified versions; it is their choice + whether to do so. The GNU General Public License gives permission to release + a modified version without this exception; this exception also makes it + possible to release a modified version which carries forward this exception. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + Designed for use with the kim-api-2.1.0 (and newer) package +------------------------------------------------------------------------- */ + +#ifdef COMMAND_CLASS + +CommandStyle(kim_interactions,KimInteractions) + +#else + +#ifndef LMP_KIM_INTERACTIONS_H +#define LMP_KIM_INTERACTIONS_H + +#include "pointers.h" + +namespace LAMMPS_NS { + +class KimInteractions : protected Pointers { + public: + KimInteractions(class LAMMPS *lmp) : Pointers(lmp) {}; + void command(int, char **); + private: + void do_setup(int, char **); + int species_to_atomic_no(std::string const species) const; + void kim_interactions_log_delimiter(std::string const begin_end) const; +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal kim_interactions command + +Incorrect number or kind of arguments to kim_interactions. + +E: Must use 'kim_interactions' command after simulation box is defined + +Self-explanatory. + +E: Must use 'kim_init' command before 'kim_interactions' + +Self-explanatory. + +E: Species XXX is not supported by this KIM Simulator Model + +The kim_interactions command was referencing a species that is not +present in the requested KIM Simulator Model. + +E: Incompatible units for KIM Simulator Model + +The selected unit style is not compatible with the requested KIM +Simulator Model. + +E: KIM Simulator Model has no Model definition + +There is no model definition (key: model-defn) in the KIM Simulator +Model. Please contact the OpenKIM database maintainers to verify +and potentially correct this. + +*/ -- GitLab From 17fa2f787b58cb4c17bc6aa04b1015a9b2778a93 Mon Sep 17 00:00:00 2001 From: Ellad Tadmor Date: Sat, 22 Jun 2019 15:25:21 -0500 Subject: [PATCH 067/627] Added kim_command documentation structure --- doc/src/Commands_all.txt | 5 +- doc/src/commands_list.txt | 3 +- doc/src/kim_commands.txt | 108 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 112 insertions(+), 4 deletions(-) create mode 100644 doc/src/kim_commands.txt diff --git a/doc/src/Commands_all.txt b/doc/src/Commands_all.txt index d76ffac14c..a201fd3f2d 100644 --- a/doc/src/Commands_all.txt +++ b/doc/src/Commands_all.txt @@ -68,8 +68,9 @@ An alphabetic list of all general LAMMPS commands. "improper_style"_improper_style.html, "include"_include.html, "jump"_jump.html, -"kim_query"_kim_query.html, -"kim_style"_kim_style.html, +"kim_init"_kim_commands.html, +"kim_interactions"_kim_commands.html, +"kim_query"_kim_commands.html, "kspace_modify"_kspace_modify.html, "kspace_style"_kspace_style.html, "label"_label.html, diff --git a/doc/src/commands_list.txt b/doc/src/commands_list.txt index 39d2f7c7d0..a5c9b568ed 100644 --- a/doc/src/commands_list.txt +++ b/doc/src/commands_list.txt @@ -53,8 +53,7 @@ Commands :h1 include info jump - kim_query - kim_style + kim_commands kspace_modify kspace_style label diff --git a/doc/src/kim_commands.txt b/doc/src/kim_commands.txt new file mode 100644 index 0000000000..4c53746317 --- /dev/null +++ b/doc/src/kim_commands.txt @@ -0,0 +1,108 @@ +"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c + +:link(lws,http://lammps.sandia.gov) +:link(ld,Manual.html) +:link(lc,Commands_all.html) + +:line + +kim_commands :h3 + +[Syntax:] + +kim_init model user_units :pre +kim_interactions typeargs :pre + +mode = {init model} or {define typeargs} or no mode chosen +model = name of the KIM model (KIM potential or KIM simulator model) +typeargs = atom type to species mapping (one entry per atom type) +args = {unit_variables unit_style} or {unit_from unit_style} (optional):ul + +[Examples:] + +kim_style init ex_sim_model_Si_mod_tersoff unit_variables metal +kim_style define Si Si +kim_style unit_variables real +kim_style init LennardJones_Ar unit_variables metal +kim_style unit_variables real unit_from metal +kim_style define Ar :pre + +[Description:] + +The kim_style command is a high-level wrapper around the +"Knowledge Base for Interatomic Models (OpenKIM)"_https://openkim.org +repository of interatomic potentials, so that they can be used by +LAMMPS scripts. It does not implement any computations directly, but +rather will generate LAMMPS input commands based on the information +retrieved from the OpenKIM repository. It is able to realize so-called +"KIM Simulator Models", which are OpenKIM repository entries of models +using native features of the simulation engine in use, i.e. LAMMPS +in this case, but it also supports realizing conventional KIM models +implicitly via generating a "pair_style kim"_pair_kim.html command +followed by a suitable "pair_coeff"_pair_coeff.html command. + +The kim_style command has two modes, {init} and {define}, indicated by +the first argument to the kim_style command. An {init} mode command +must be issued [before] the simulation box is created, while the {define} +mode version may only be used [after] the simulation box exists. Both +are required. The {init} mode version sets the model name and may issue +additional commands changing LAMMPS default settings that are required +for using a selected simulator model. If needed, those settings can be +overridden. The second argument to the {kim_style init} command is the +KIM model ID. + +In both modes, the keywords {unit_variables} and {unit_from} may be +added. They control the values of a set of +"internal style variables"_variable.html that can be used to convert +between different unit styles in LAMMPS. The argument to +each keyword is a LAMMPS unit style or NULL, which means to look up +the unit style from what was set with the "units"_units.html command. +Please note, that KIM simulator models will set their preferred unit style. +By default all conversion variables are set to 1.0. Converting to or +from the "lj" unit style is not supported. The following variables are defined: + +_u_length +_u_mass +_u_time :ul + + +The {kim_style define} command will issue commands that will realize +the selected model (through generating pair_style and pair_coeff commands, +but also other commands, as required). It has to be issued [after] the +the simulation box is defined. The {kim_style define} command allows a +varying number of additional arguments. Those are used to map the atom +types in LAMMPS to the available species in the KIM model. This is +equivalent to the arguments following "pair_coeff * *" in a +"kim"_pair_kim.html pair style. Thus the commands: + +kim_style init LennardJones_Ar +kim_style define Ar :pre + +will generate the LAMMPS input commands: + +pair_style kim LennardJones_Ar +pair_coeff * * Ar :pre + +For simulator models, the generated input commands may be more complex +and require that LAMMPS is built with the required packages included. +The commands generated by the kim_style command, can be copied to the +screen or log file, through the "echo"_echo.html command. +The kim_style command will also validate, that a selected simulator +model was generated for the LAMMPS MD code and not some other software. +In addition, the version strings for LAMMPS version used for defining +the simulator model and the LAMMPS version being currently run are +printed, so that it can be tracked down, if there are any incompatible +changes to input script or command syntax between the two LAMMPS versions. + +[Restrictions:] + +This command is part of the KIM package. It is only enabled if +LAMMPS was built with that package. Furthermore, its correct +functioning depends on compiling LAMMPS with all required packages +installed that are required by the commands embedded in any KIM +simulator models used. +See the "Build package"_Build_package.html doc page for more info. + +[Related commands:] + +"pair_style kim"_pair_kim.html, "kim_query"_kim_query.html -- GitLab From 33be7f259be9446edf9f75e17309d8bfe7f05e84 Mon Sep 17 00:00:00 2001 From: Ellad Tadmor Date: Sat, 22 Jun 2019 21:49:29 -0500 Subject: [PATCH 068/627] Working on kim_commands documentation --- doc/src/kim_commands.txt | 232 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 221 insertions(+), 11 deletions(-) diff --git a/doc/src/kim_commands.txt b/doc/src/kim_commands.txt index 4c53746317..06ad841240 100644 --- a/doc/src/kim_commands.txt +++ b/doc/src/kim_commands.txt @@ -10,25 +10,235 @@ kim_commands :h3 [Syntax:] -kim_init model user_units :pre -kim_interactions typeargs :pre +kim_init model user_units unitarg +kim_interactions typeargs +kim_query variable query_function web_query_flags :pre -mode = {init model} or {define typeargs} or no mode chosen -model = name of the KIM model (KIM potential or KIM simulator model) +model = designation of the KIM interatomic model (the KIM ID for models archived in OpenKIM) +user_units = the LAMMPS "units"_units.html style assumed in the user input script +unitarg = {unit_conversion_mode} (optional) typeargs = atom type to species mapping (one entry per atom type) -args = {unit_variables unit_style} or {unit_from unit_style} (optional):ul +variable = name of a (string style) variable where the result of the query is stored +query_function = name of the OpenKIM web API query function to be used +web_query_flags = a series of keyword=value pairs that represent the web query; supported keywords depend on query function :ul + [Examples:] -kim_style init ex_sim_model_Si_mod_tersoff unit_variables metal -kim_style define Si Si -kim_style unit_variables real -kim_style init LennardJones_Ar unit_variables metal -kim_style unit_variables real unit_from metal -kim_style define Ar :pre +kim_init SW_StillingerWeber_1985_Si__MO_405512056662_005 metal +kim_interactions Si +kim_init Sim_LAMMPS_ReaxFF_StrachanVanDuinChakraborty_2003_CHNO__SM_107643900657_000 real +kim_init Sim_LAMMPS_ReaxFF_StrachanVanDuinChakraborty_2003_CHNO__SM_107643900657_000 metal unit_conversion_mode +kim_interactions C H O +kim_query NEED EXAMPLES :pre [Description:] +The "Open Knowledgebase for Interatomic Models (OpenKIM)"_https://openkim.org +archives interatomic models (IMs) (potentials and force fields) in a format +that can be directly used with LAMMPS using the commands documented on this +page. + +Benefits of Using OpenKIM IMs :h4 + +Employing OpenKIM IMs provides LAMMPS users with multiple benefits: + +Reliability :h5 + +All content archived in OpenKIM is subject to quality control by the "KIM Editor"_https://openkim.org/governance/. +IMs in OpenKIM are archived with full provenance control. Each is associated with a maintainer responsible for the integrity of the content. All changes are tracked and recorded. +IMs in OpenKIM are exhaustively tested using "KIM Tests"_https://openkim.org/getting-started/kim-tests/ that compute a host of material properties, and "KIM Verification Checks"_https://openkim.org/about-verification-checks/ that provide the user with information on various aspects of the IM behavior and coding correctness. This information is displayed on the IM's page on "OpenKIM"_https://openkim.org. :ul + +Reproducibility :h5 + +Each IM in OpenKIM is issued a unique identifier ("KIM ID"_https://openkim.org/about-kim-ids/), which includes a version number (last three digits). Any changes that can result in different numerical values lead to a version increment in the KIM ID. This makes it possible to reproduce simulations since the specific version of a specific IM used can be retrieved using its KIM ID. +OpenKIM is a member organization of "DataCite"_https://datacite.org/ and issues digitial object identifiers (DOIs) to all IMs archived in OpenKIM. This makes it possible to cite the IM code used in a simulation in a publications to give credit to the developers and further facilitate reproducibility. :ul + +Convenience :h5 + +IMs in OpenKIM are distributed in binary form along with LAMMPS and can be used in a LAMMPS input script simply by providing their KIM ID in the {kim_init} command documented on this page. (For more on using KIM with LAMMPS, see the KIM section of the "Packages details"_Packages_details.html doc page.) +The {kim_query} web query tool provides the ability to use the predictions of IMs for supported material properties (computed via "KIM Tests"https://openkim.org/getting-started/kim-tests/) as part of a LAMMPS input script setup and analysis. +Support is provided for unit conversion between the "units"_units.html system used in the LAMMPS input script and the OpenKIM IM. This makes it possible to use a single input script with IMs using different units without change and minimizes the liklihood of errors due to incompatible units. :ul + +Types of KIM IMs :h4 + +There are two types of IMs archived in OpenKIM: + +The first type is called a {KIM Model}. A KIM Model is an independent computer implemention of an IM written in one of the languages supported by KIM (C, C++, Fortran, Python), which conforms to the KIM Application Programming Interface ("KIM API"_https://openkim.org/kim-api/). A KIM Model will work seamlessly with any simulation code that support the KIM API (including LAMMPS; see "complete list of supported code"_https://openkim.org/projects-using-kim/). +The second type is called a {KIM Simulator Model} (SM). In this case, the IM is implemented natively within the simulation code ({simulator}), i.e. LAMMPS. A separate SM package is archived in OpenKIM for each parameterization of the IM, which includes all of the necessary parameter files, LAMMPS commands, and metadata (supported species, units, etc.) needed to run the IM in LAMMPS. :ol + +With these two IM tpes, OpenKIM can archive and test almost all IMs that +can be used by LAMMPS. (It is easy to contribute new IMs to OpenKIM, see +the "upload instructions"_https://openkim.org/getting-started/adding-content/.) + +OpenKIM IMs are uniquely identified by a +"KIM ID"_https://openkim.org/about-kim-ids/. The extended KIM ID consists of +a human-readable prefix identifying the type of IM, authors, publication year, +and supported species, separated by two underscores from the KIM ID itself, +which begins with an IM code +({MO} for a KIM Model, and {SM} for a KIM Simulator Model) +followed by a unique 12-digit code and a 3-digit version identifier. +By convension SM prefixes begin with {SM} to readily identify them. + +SW_StillingerWeber_1985_Si__MO_405512056662_005 +Sim_LAMMPS_ReaxFF_StrachanVanDuinChakraborty_2003_CHNO__SM_107643900657_000 :pre + +NOTE: It is also possible to locally install IMs not archived in OpenKIM, +in which case their designation does not have to conform to the KIM ID format. + +Using OpenKIM IMs with LAMMPS :h4 + +Two commands are employed when using OpenKIM IMs, one to select the +IM and perform necessary initializations ({kim_init}), and the second +to set up the IM for use by executing any necessary LAMMPS commands +({kim_interactions}). + +OpenKIM IM Initialization :h5 + +The kim_init command must be located at the top of the input script +before any other commands. Input scripts containing a kim_init command +shoud {not} include a "units"_units.html command or an +"atom_style"_atom_style.html command. These are set by the kim_init +command based on its arguments. + +The required arguments of kim_init are the {model} designation of the +IM to be used in the simulation (for an IM archived in OpenKIM this is +its "extended KIM ID"_https://openkim.org/about-kim-ids/), and +the {user_units}, which are the LAMMPS "units"_units.html system used +in the input script. (Any numerical values in the input script and values +read in from files are expected to be in the {user_units} system.) + +Based on the selected model kim_init may modify "atom_style"_atom_style.html. +Some SMs have requirements for this variable. If this is the case, then +atom_style will be set to the required style. Otherwise, the value is left +unchanged (which in the absence of an atom_style command in the input script +is the default LAMMPS value). + +Regarding units, the kim_init command behaves in different ways depending +on whether or not "unit conversion mode" is activated as indicated by the +optional {unitarg} argument. +If unit conversion mode is {not} active, then {user_units} must +either match the required units of the IM or the IM must be able +to adjust its units to match. (The latter is only possible with some KIM Models; +SMs can never adjust their units.) If a match is possible, the LAMMPS +"units"_units.html command is called to set the units to +{user_units}. If the match fails, the simulation is terminated with +an error. + +If unit conversion mode {is} active, then the LAMMPS "units"_units.html +command is called to set the units to the IM's required or preferred units. +Conversion factors between the IM's units and the {user_units} are +defined for all "physical quantities"_units.html (mass, distance, etc.). +These factors are stored as internal "variables"_variable.html with +standard names: + +_u_mass +_u_distance +_u_time +_u_energy +_u_velocity +_u_force +_u_torque +_u_temperature +_u_pressure +_u_viscosity +_u_charge +_u_dipole +_u_efield +_u_density :pre + +If desired, the input script can be designed to work with these conversion +factors so that the script will work without change with any OpenKIM IM. +(This approach is used in the +"OpenKIM Testing Framework"_https://openkim.org/getting-started/kim-tests/.) +For example, the following simple script constructs an fcc lattice with +a lattice parameter defined in meters, computes the total energy, +and prints the cohesive energy in Joules regardless of the units of the IM. + +kim_init EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005 si unit_conversion_mode +boundary p p p +lattice fcc 4.032e-10*$\{_u_distance\} +region simbox block 0 1 0 1 0 1 units lattice +create_box 1 simbox +create_atoms 1 box +mass 1 4.480134e-26*$\{_u_mass\} +kim_interactions Al +run 0 +variable Ec_in_J equal (pe/count(all))/$\{_u_energy\} +print "Cohesive Energy = $\{Ec_in_J\} J" :pre + +Note the multiplication by $\{_u_distance\} and $\{_u_mass\} to convert +from SI units (specified in the kim_init command) to whatever units the +IM uses (metal in this case), and the division by $\{_u_energy\} +to convert from the IM's energy units to SI units (Joule). This script +will work correctly for any IM for Al (KIM Model or SM) selected by the +kim_init command. + +Care must be taken to apply unit conversion to dimensional variables read in +from a file. For example if a configuration of atoms is read in from a +dump file using the "read_dump"_read_dump.html command, the following can +be done to convert the box and all atomic positions to the correct units: + +change_box all x scale $\{_u_distance\} y scale $\{_u_distance\} z scale $\{_u_distance\} remap :pre + +NOTE: Unit conversion will only work if the conversion factors are placed in +all appropriate places in the input script. It is up to the user to do this +correctly. + +OpenKIM IM Execution :h5 + +The second and final step in using an OpenKIM IM is to execute the +kim_interaction command. This command must be preceded by a kim_init +command and must follow the "create_box"_create_box.html command, +which defines the number of atom types {N}. +The kim_interaction command has one argument {typeargs}, which contains +a list of {N} chemical species that are mapped to the atom types. + +For example, imagine the OpenKIM IM supports Si and C species. +If the LAMMPS simulation has 4 atom types and you want the first three to be Si, +and the fourth to be C, you would use the following kim_interaction command: + +kim_interaction Si Si Si C :pre + +The kim_interaction command performs all the necessary steps to set up +the OpenKIM IM set in the kim_init command. The specific actions depend +on whether the IM is a KIM Model or a KIM SM. For a KIM Model, +a "pair_style kim"_pair_kim.html command will be executed followed by +the appropriate pair_coeff command. + +For a KIM SM, the set of commands defined in the SM speficiation file +will be executed. For example, consider the ReaxFF SM due to +Strachan et al. (2003) executed by the following commands: + +kim_init Sim_LAMMPS_ReaxFF_StrachanVanDuinChakraborty_2003_CHNO__SM_107643900657_000 real +... +... box specification lines skipped +... +kim_interactions C H N O :pre + +The kim_interactions command executes the following commands defined for this +SM: + +pair_style reax/c lmp_control safezone 2.0 mincap 100 +pair_coeff * * ffield.reax.rdx C H N O +fix reaxqeq all qeq/reax 1 0.0 10.0 1.0e-6 param.qeq :pre + +Note that the files lmp_control, ffield.reax.rdx and param.qeq are specific +to Strachan et al. (2003) ReaxFF parameterization and are archived as part +of the SM package in OpenKIM. Note also that parameters like cutoff radii +and charge tolerances that have an effect on IM predictions are also +included in the SM definition ensuring reproducibility. + +NOTE: Clearly when using using kim_init and kim_interactions to select +and set up an OpenKIM IM, other LAMMPS commands +for the same functions (such as pair_style, pair_coeff, bond_style, +bond_coeff, fixes related to charge equilibration, etc.) should not +appear in the input script. + +Using OpenKIM Web Queries in LAMMPS :h4 + +@@@@@@@@@ + The kim_style command is a high-level wrapper around the "Knowledge Base for Interatomic Models (OpenKIM)"_https://openkim.org repository of interatomic potentials, so that they can be used by -- GitLab From c11caf45095d96aeb2a1477ce78d6e0c03ea7505 Mon Sep 17 00:00:00 2001 From: "Ryan S. Elliott" Date: Sun, 23 Jun 2019 10:34:43 -0500 Subject: [PATCH 069/627] update kim examples to temp. current state of code --- examples/kim/data.VOH | 118 ---------------------- examples/kim/in.kim.VOH.simulator_model | 23 ----- examples/kim/in.kim.ex_si.simulator_model | 69 ------------- examples/kim/in.kim.lj.simulator_model | 10 +- 4 files changed, 2 insertions(+), 218 deletions(-) delete mode 100644 examples/kim/data.VOH delete mode 100644 examples/kim/in.kim.VOH.simulator_model delete mode 100644 examples/kim/in.kim.ex_si.simulator_model diff --git a/examples/kim/data.VOH b/examples/kim/data.VOH deleted file mode 100644 index c093705adc..0000000000 --- a/examples/kim/data.VOH +++ /dev/null @@ -1,118 +0,0 @@ -# VOH example - -100 atoms -4 atom types - -0 25.000 xlo xhi -0 25.000 ylo yhi -0 25.000 zlo zhi - -Masses - -1 1.0080 -2 12.0107 -3 15.9994 -4 50.9415 - -Atoms - - 1 2 0.0 12.35333 12.56112 11.08925 - 2 4 0.0 12.32916 12.62071 13.13099 - 3 3 0.0 14.09425 12.56218 13.76130 - 4 3 0.0 11.42814 11.10330 13.76732 - 5 3 0.0 11.63260 13.89286 13.64097 - 6 1 0.0 10.61647 11.29221 14.30535 - 7 1 0.0 14.38026 13.34626 14.29055 - 8 1 0.0 11.32479 12.58820 10.70253 - 9 1 0.0 12.90918 13.42567 10.69612 - 10 1 0.0 12.84043 11.63643 10.74688 - 11 2 0.0 0.93670 23.74637 24.45218 - 12 4 0.0 2.18151 24.36876 0.94725 - 13 3 0.0 3.93452 24.44779 0.28384 - 14 3 0.0 2.13668 23.10529 2.33362 - 15 3 0.0 1.76108 0.74666 1.48323 - 16 1 0.0 1.82070 23.45305 3.20745 - 17 1 0.0 4.35555 0.34186 0.31083 - 18 1 0.0 24.90472 23.68735 24.82586 - 19 1 0.0 0.97611 24.45631 23.61244 - 20 1 0.0 1.24583 22.75250 24.09589 - 21 2 0.0 2.25730 12.18969 18.74792 - 22 4 0.0 0.67140 13.31162 19.37385 - 23 3 0.0 0.71106 13.43250 21.24545 - 24 3 0.0 24.08603 12.44025 18.87949 - 25 3 0.0 0.70486 14.71920 18.75808 - 26 1 0.0 23.49516 12.95430 18.26686 - 27 1 0.0 0.79723 14.34808 21.60818 - 28 1 0.0 2.24383 12.10285 17.65239 - 29 1 0.0 3.19860 12.66607 19.06030 - 30 1 0.0 2.20214 11.18299 19.18774 - 31 2 0.0 9.32237 8.16220 23.74501 - 32 4 0.0 9.41775 7.26178 21.91463 - 33 3 0.0 8.54752 8.34565 20.65588 - 34 3 0.0 8.50942 5.62151 22.00137 - 35 3 0.0 10.87539 7.02683 21.48455 - 36 1 0.0 9.06507 4.82324 21.80615 - 37 1 0.0 9.11458 8.67119 19.91477 - 38 1 0.0 9.82196 7.53487 24.49616 - 39 1 0.0 9.81855 9.14254 23.70532 - 40 1 0.0 8.27176 8.30387 24.03831 - 41 2 0.0 9.10113 13.98748 23.44281 - 42 4 0.0 8.84954 12.89163 21.73780 - 43 3 0.0 10.01387 13.54293 20.42005 - 44 3 0.0 7.08992 13.11522 21.12954 - 45 3 0.0 9.12937 11.39982 21.99065 - 46 1 0.0 6.55309 12.28287 21.08224 - 47 1 0.0 10.67858 12.89258 20.08249 - 48 1 0.0 8.42108 13.62252 24.22498 - 49 1 0.0 10.13926 13.89766 23.79639 - 50 1 0.0 8.88118 15.04646 23.24289 - 51 2 0.0 17.73225 3.40708 8.28945 - 52 4 0.0 18.49877 5.29835 8.37599 - 53 3 0.0 19.48472 5.62627 6.81505 - 54 3 0.0 19.66498 5.40961 9.84118 - 55 3 0.0 17.38120 6.34466 8.51889 - 56 1 0.0 19.41208 6.07779 10.52927 - 57 1 0.0 19.15960 6.37609 6.25924 - 58 1 0.0 17.15579 3.19557 9.20103 - 59 1 0.0 17.07197 3.31049 7.41454 - 60 1 0.0 18.54903 2.67524 8.20436 - 61 2 0.0 5.18346 20.97409 24.28840 - 62 4 0.0 7.06396 20.17968 24.34847 - 63 3 0.0 7.63220 19.82889 22.59578 - 64 3 0.0 7.00272 18.55243 0.28036 - 65 3 0.0 8.05085 21.13715 0.03620 - 66 1 0.0 7.56109 18.51690 1.09952 - 67 1 0.0 8.44257 20.31624 22.30833 - 68 1 0.0 4.83239 21.17976 0.30904 - 69 1 0.0 5.19182 21.91237 23.71419 - 70 1 0.0 4.49282 20.26573 23.80772 - 71 2 0.0 21.82701 12.79861 20.63056 - 72 4 0.0 21.27646 11.09990 19.63611 - 73 3 0.0 19.52930 10.64327 20.13923 - 74 3 0.0 22.41924 9.70346 20.14638 - 75 3 0.0 21.34556 11.30206 18.11274 - 76 1 0.0 22.94464 9.30084 19.40876 - 77 1 0.0 18.86743 10.62817 19.40629 - 78 1 0.0 22.85378 13.07853 20.35349 - 79 1 0.0 21.14666 13.62206 20.37063 - 80 1 0.0 21.78702 12.62668 21.71522 - 81 2 0.0 4.84801 10.63893 5.85720 - 82 4 0.0 2.99668 11.06158 5.10490 - 83 3 0.0 3.09505 11.09458 3.23258 - 84 3 0.0 2.48053 12.76555 5.69567 - 85 3 0.0 1.96195 10.01780 5.55634 - 86 1 0.0 1.65323 12.78746 6.24245 - 87 1 0.0 2.52753 10.43264 2.76734 - 88 1 0.0 4.80984 10.62196 6.95551 - 89 1 0.0 5.18492 9.65688 5.49273 - 90 1 0.0 5.56737 11.40648 5.53568 - 91 2 0.0 13.58126 9.47098 19.40329 - 92 4 0.0 14.17691 10.17243 21.22692 - 93 3 0.0 14.44428 12.02521 21.10583 - 94 3 0.0 15.81206 9.37183 21.67632 - 95 3 0.0 13.12907 9.86545 22.30960 - 96 1 0.0 15.80034 8.83149 22.50703 - 97 1 0.0 13.87232 12.57457 21.69672 - 98 1 0.0 13.42563 8.38456 19.45392 - 99 1 0.0 12.63978 9.95672 19.10431 - 100 1 0.0 14.35123 9.68789 18.64825 diff --git a/examples/kim/in.kim.VOH.simulator_model b/examples/kim/in.kim.VOH.simulator_model deleted file mode 100644 index 8696cf265a..0000000000 --- a/examples/kim/in.kim.VOH.simulator_model +++ /dev/null @@ -1,23 +0,0 @@ -# REAX potential for VOH system -# ..... - -units real -atom_style charge - -kim_style init Sim_LAMMPS_ReaxFF_ChenowethVanDuinPersson_2008_CHOV__SM_429148913211_000 - -read_data data.VOH - -kim_style define H C O V - -neighbor 2 bin -neigh_modify every 10 delay 0 check no - -fix 1 all nve -fix 3 all temp/berendsen 500.0 500.0 100.0 - -timestep 0.25 - -#dump 1 all atom 30 dump.reax.voh - -run 300 diff --git a/examples/kim/in.kim.ex_si.simulator_model b/examples/kim/in.kim.ex_si.simulator_model deleted file mode 100644 index 2f9e79ef4e..0000000000 --- a/examples/kim/in.kim.ex_si.simulator_model +++ /dev/null @@ -1,69 +0,0 @@ - -units metal -kim_style init ex_sim_model_Si_mod_tersoff - -atom_style atomic -atom_modify map array -boundary p p p - -# temperatures -variable tlo equal 1800.0 -variable thi equal 2400.0 - -# coordination number cutoff - -variable r equal 2.835 - -# minimization parameters - -variable etol equal 1.0e-5 -variable ftol equal 1.0e-5 -variable maxiter equal 100 -variable maxeval equal 100 -variable dmax equal 1.0e-1 - -# diamond unit cell - -variable a equal 5.431 -lattice custom $a & - a1 1.0 0.0 0.0 & - a2 0.0 1.0 0.0 & - a3 0.0 0.0 1.0 & - basis 0.0 0.0 0.0 & - basis 0.0 0.5 0.5 & - basis 0.5 0.0 0.5 & - basis 0.5 0.5 0.0 & - basis 0.25 0.25 0.25 & - basis 0.25 0.75 0.75 & - basis 0.75 0.25 0.75 & - basis 0.75 0.75 0.25 - -region myreg block 0 4 & - 0 4 & - 0 4 -create_box 1 myreg -create_atoms 1 region myreg - -mass 1 28.06 - -group Si type 1 - -velocity all create ${thi} 5287286 mom yes rot yes dist gaussian - -# make a vacancy - -group del id 300 -delete_atoms group del -kim_style define Si - -thermo 10 - -fix 1 all nve -fix 2 all langevin ${thi} ${thi} 0.1 48278 - -timestep 1.0e-3 -neighbor 1.0 bin -neigh_modify every 1 delay 10 check yes - -run 100 - diff --git a/examples/kim/in.kim.lj.simulator_model b/examples/kim/in.kim.lj.simulator_model index 01ee5aa64c..cb7a2e14ed 100644 --- a/examples/kim/in.kim.lj.simulator_model +++ b/examples/kim/in.kim.lj.simulator_model @@ -14,9 +14,7 @@ variable xx equal 20*$x variable yy equal 20*$y variable zz equal 20*$z -echo both -#kim_style model LennardJones_Ar metal -kim_style model Sim_LAMMPS_LJcut_AkersonElliott_Alchemy_PbAu real unit_conversion_mode +kim_init Sim_LAMMPS_LJcut_AkersonElliott_Alchemy_PbAu real unit_conversion_mode newton on lattice fcc 4.4300 @@ -24,10 +22,7 @@ region box block 0 ${xx} 0 ${yy} 0 ${zz} create_box 1 box create_atoms 1 box -#pair_style lj/cut 8.1500 -#pair_coeff 1 1 0.0104 3.4000 - -kim_style setup Au +kim_interactions Au mass 1 39.95 velocity all create 200.0 232345 loop geom @@ -36,6 +31,5 @@ neighbor 0.3 bin neigh_modify delay 0 every 1 check yes fix 1 all nve -#fix 1 all npt temp 1.0 1.0 1.0 iso 1.0 1.0 3.0 run 100 -- GitLab From d08867ce0a05e090056f9dea1e3bbdd2fc4c6afa Mon Sep 17 00:00:00 2001 From: Ellad Tadmor Date: Sun, 23 Jun 2019 11:39:06 -0500 Subject: [PATCH 070/627] Completed first version of kim_commands documentation --- doc/src/kim_commands.txt | 318 +++++++++++++++++++++++---------------- 1 file changed, 189 insertions(+), 129 deletions(-) diff --git a/doc/src/kim_commands.txt b/doc/src/kim_commands.txt index 06ad841240..c3ab799821 100644 --- a/doc/src/kim_commands.txt +++ b/doc/src/kim_commands.txt @@ -12,15 +12,15 @@ kim_commands :h3 kim_init model user_units unitarg kim_interactions typeargs -kim_query variable query_function web_query_flags :pre +kim_query variable query_function queryargs :pre -model = designation of the KIM interatomic model (the KIM ID for models archived in OpenKIM) -user_units = the LAMMPS "units"_units.html style assumed in the user input script +model = name of the KIM interatomic model (the KIM ID for models archived in OpenKIM) +user_units = the LAMMPS "units"_units.html style assumed in the LAMMPS input script unitarg = {unit_conversion_mode} (optional) typeargs = atom type to species mapping (one entry per atom type) variable = name of a (string style) variable where the result of the query is stored query_function = name of the OpenKIM web API query function to be used -web_query_flags = a series of keyword=value pairs that represent the web query; supported keywords depend on query function :ul +queryargs = a series of {keyword=value} pairs that represent the web query; supported keywords depend on the query function :ul [Examples:] @@ -30,14 +30,20 @@ kim_interactions Si kim_init Sim_LAMMPS_ReaxFF_StrachanVanDuinChakraborty_2003_CHNO__SM_107643900657_000 real kim_init Sim_LAMMPS_ReaxFF_StrachanVanDuinChakraborty_2003_CHNO__SM_107643900657_000 metal unit_conversion_mode kim_interactions C H O -kim_query NEED EXAMPLES :pre +kim_query a0 get_lattice_constant_fcc units=\["angstrom"\] :pre + [Description:] -The "Open Knowledgebase for Interatomic Models (OpenKIM)"_https://openkim.org -archives interatomic models (IMs) (potentials and force fields) in a format -that can be directly used with LAMMPS using the commands documented on this -page. +The set of {kim_commands} provide a high-level wrapper around the +"Open Knowledgebase of Interatomic Models (OpenKIM)"_https://openkim.org +repository of interatomic models (IMs) (potentials and force fields), +so that they can be used by LAMMPS scripts. These commands do not implement +any computations directly, but rather generate LAMMPS input commands based +on the information retrieved from the OpenKIM repository to initialize and +activate OpenKIM IMs and query their predictions for use in the LAMMPS script. +All LAMMPS input commands executed by {kim_commands} are echoed to the +LAMMPS log file. Benefits of Using OpenKIM IMs :h4 @@ -52,22 +58,23 @@ IMs in OpenKIM are exhaustively tested using "KIM Tests"_https://openkim.org/get Reproducibility :h5 Each IM in OpenKIM is issued a unique identifier ("KIM ID"_https://openkim.org/about-kim-ids/), which includes a version number (last three digits). Any changes that can result in different numerical values lead to a version increment in the KIM ID. This makes it possible to reproduce simulations since the specific version of a specific IM used can be retrieved using its KIM ID. -OpenKIM is a member organization of "DataCite"_https://datacite.org/ and issues digitial object identifiers (DOIs) to all IMs archived in OpenKIM. This makes it possible to cite the IM code used in a simulation in a publications to give credit to the developers and further facilitate reproducibility. :ul +OpenKIM is a member organization of "DataCite"_https://datacite.org/ and issues digital object identifiers (DOIs) to all IMs archived in OpenKIM. This makes it possible to cite the IM code used in a simulation in a publications to give credit to the developers and further facilitate reproducibility. :ul Convenience :h5 -IMs in OpenKIM are distributed in binary form along with LAMMPS and can be used in a LAMMPS input script simply by providing their KIM ID in the {kim_init} command documented on this page. (For more on using KIM with LAMMPS, see the KIM section of the "Packages details"_Packages_details.html doc page.) +IMs in OpenKIM are distributed in binary form along with LAMMPS and can be used in a LAMMPS input script simply by providing their KIM ID in the {kim_init} command documented on this page. The {kim_query} web query tool provides the ability to use the predictions of IMs for supported material properties (computed via "KIM Tests"https://openkim.org/getting-started/kim-tests/) as part of a LAMMPS input script setup and analysis. -Support is provided for unit conversion between the "units"_units.html system used in the LAMMPS input script and the OpenKIM IM. This makes it possible to use a single input script with IMs using different units without change and minimizes the liklihood of errors due to incompatible units. :ul +Support is provided for unit conversion between the "units style"_units.html used in the LAMMPS input script and the units required by the OpenKIM IM. This makes it possible to use a single input script with IMs using different units without change and minimizes the likelihood of errors due to incompatible units. :ul +:link(IM_types) Types of KIM IMs :h4 There are two types of IMs archived in OpenKIM: -The first type is called a {KIM Model}. A KIM Model is an independent computer implemention of an IM written in one of the languages supported by KIM (C, C++, Fortran, Python), which conforms to the KIM Application Programming Interface ("KIM API"_https://openkim.org/kim-api/). A KIM Model will work seamlessly with any simulation code that support the KIM API (including LAMMPS; see "complete list of supported code"_https://openkim.org/projects-using-kim/). +The first type is called a {KIM Model}. A KIM Model is an independent computer implementation of an IM written in one of the languages supported by KIM (C, C++, Fortran, Python), which conforms to the KIM Application Programming Interface ("KIM API"_https://openkim.org/kim-api/). A KIM Model will work seamlessly with any simulation code that support the KIM API (including LAMMPS; see "complete list of supported code"_https://openkim.org/projects-using-kim/). The second type is called a {KIM Simulator Model} (SM). In this case, the IM is implemented natively within the simulation code ({simulator}), i.e. LAMMPS. A separate SM package is archived in OpenKIM for each parameterization of the IM, which includes all of the necessary parameter files, LAMMPS commands, and metadata (supported species, units, etc.) needed to run the IM in LAMMPS. :ol -With these two IM tpes, OpenKIM can archive and test almost all IMs that +With these two IM types, OpenKIM can archive and test almost all IMs that can be used by LAMMPS. (It is easy to contribute new IMs to OpenKIM, see the "upload instructions"_https://openkim.org/getting-started/adding-content/.) @@ -78,46 +85,59 @@ and supported species, separated by two underscores from the KIM ID itself, which begins with an IM code ({MO} for a KIM Model, and {SM} for a KIM Simulator Model) followed by a unique 12-digit code and a 3-digit version identifier. -By convension SM prefixes begin with {SM} to readily identify them. +By convention SM prefixes begin with {Sim_} to readily identify them. SW_StillingerWeber_1985_Si__MO_405512056662_005 Sim_LAMMPS_ReaxFF_StrachanVanDuinChakraborty_2003_CHNO__SM_107643900657_000 :pre NOTE: It is also possible to locally install IMs not archived in OpenKIM, -in which case their designation does not have to conform to the KIM ID format. +in which case their names do not have to conform to the KIM ID format. Using OpenKIM IMs with LAMMPS :h4 Two commands are employed when using OpenKIM IMs, one to select the IM and perform necessary initializations ({kim_init}), and the second to set up the IM for use by executing any necessary LAMMPS commands -({kim_interactions}). +({kim_interactions}). Both are required. -OpenKIM IM Initialization :h5 +OpenKIM IM Initialization ({kim_init}) :h5 -The kim_init command must be located at the top of the input script -before any other commands. Input scripts containing a kim_init command -shoud {not} include a "units"_units.html command or an -"atom_style"_atom_style.html command. These are set by the kim_init -command based on its arguments. +The {kim_init} mode command must be issued [before] +the simulation box is created (normally at the top of the file). +This command sets the OpenKIM IM that will be used and may issue +additional commands changing LAMMPS default settings that are required +for using the selected IM (such as "units"_units.html or +"atom_style"_atom_style.html). If needed, those settings can be overridden, +however, typically a script containing a {kim_init} command +would not include {units} and {atom_style} commands. -The required arguments of kim_init are the {model} designation of the +The required arguments of {kim_init} are the {model} name of the IM to be used in the simulation (for an IM archived in OpenKIM this is its "extended KIM ID"_https://openkim.org/about-kim-ids/), and -the {user_units}, which are the LAMMPS "units"_units.html system used -in the input script. (Any numerical values in the input script and values -read in from files are expected to be in the {user_units} system.) - -Based on the selected model kim_init may modify "atom_style"_atom_style.html. +the {user_units}, which are the LAMMPS "units style"_units.html used +in the input script. (Any dimensioned numerical values in the input +script and values read in from files are expected to be in the +{user_units} system.) + +The selected IM can be either a "KIM Model or a KIM SM"_#IM_types. +For a KIM SM, the {kim_init} command verifies that the SM is designed +to work with LAMMPS (and not another simulation code). +In addition, the version strings for the LAMMPS version used for defining +the SM and the LAMMPS version being currently run are +printed, to help diagnose any incompatible changes to input script or +command syntax between the two LAMMPS versions. + +Based on the selected model {kim_init} may modify the +"atom_style"_atom_style.html. Some SMs have requirements for this variable. If this is the case, then -atom_style will be set to the required style. Otherwise, the value is left -unchanged (which in the absence of an atom_style command in the input script -is the default LAMMPS value). +{atom_style} will be set to the required style. Otherwise, the value is left +unchanged (which in the absence of an {atom_style} command in the input script +is the "default atom_style value"_atom_style.html). -Regarding units, the kim_init command behaves in different ways depending -on whether or not "unit conversion mode" is activated as indicated by the +Regarding units, the {kim_init} command behaves in different ways depending +on whether or not {unit conversion mode} is activated as indicated by the optional {unitarg} argument. -If unit conversion mode is {not} active, then {user_units} must +If unit conversion mode is [not] active, then {user_units} must either match the required units of the IM or the IM must be able to adjust its units to match. (The latter is only possible with some KIM Models; SMs can never adjust their units.) If a match is possible, the LAMMPS @@ -129,7 +149,8 @@ If unit conversion mode {is} active, then the LAMMPS "units"_units.html command is called to set the units to the IM's required or preferred units. Conversion factors between the IM's units and the {user_units} are defined for all "physical quantities"_units.html (mass, distance, etc.). -These factors are stored as internal "variables"_variable.html with +(Note that converting to or from the "lj" unit style is not supported.) +These factors are stored as "internal style variables"_variable.html with standard names: _u_mass @@ -168,11 +189,11 @@ variable Ec_in_J equal (pe/count(all))/$\{_u_energy\} print "Cohesive Energy = $\{Ec_in_J\} J" :pre Note the multiplication by $\{_u_distance\} and $\{_u_mass\} to convert -from SI units (specified in the kim_init command) to whatever units the +from SI units (specified in the {kim_init} command) to whatever units the IM uses (metal in this case), and the division by $\{_u_energy\} to convert from the IM's energy units to SI units (Joule). This script will work correctly for any IM for Al (KIM Model or SM) selected by the -kim_init command. +{kim_init} command. Care must be taken to apply unit conversion to dimensional variables read in from a file. For example if a configuration of atoms is read in from a @@ -185,30 +206,47 @@ NOTE: Unit conversion will only work if the conversion factors are placed in all appropriate places in the input script. It is up to the user to do this correctly. -OpenKIM IM Execution :h5 +OpenKIM IM Execution ({kim_interactions}) :h5 The second and final step in using an OpenKIM IM is to execute the -kim_interaction command. This command must be preceded by a kim_init -command and must follow the "create_box"_create_box.html command, +{kim_interaction} command. This command must be preceded by a {kim_init} +command and a "create_box"_create_box.html command, which defines the number of atom types {N}. -The kim_interaction command has one argument {typeargs}, which contains -a list of {N} chemical species that are mapped to the atom types. +The {kim_interaction} command has one argument {typeargs}. This argument +contains a list of {N} chemical species, which defines a mapping between +atom types in LAMMPS to the available species in the OpenKIM IM. -For example, imagine the OpenKIM IM supports Si and C species. -If the LAMMPS simulation has 4 atom types and you want the first three to be Si, -and the fourth to be C, you would use the following kim_interaction command: +For example, consider an OpenKIM IM that supports Si and C species. +If the LAMMPS simulation has four atom types, where the first three are Si, +and the fourth is C, the following {kim_interaction} command would be used: kim_interaction Si Si Si C :pre -The kim_interaction command performs all the necessary steps to set up -the OpenKIM IM set in the kim_init command. The specific actions depend +The {kim_interaction} command performs all the necessary steps to set up +the OpenKIM IM selected in the {kim_init} command. The specific actions depend on whether the IM is a KIM Model or a KIM SM. For a KIM Model, -a "pair_style kim"_pair_kim.html command will be executed followed by -the appropriate pair_coeff command. +a "pair_style kim"_pair_kim.html command is executed followed by +the appropriate {pair_coeff} command. For example, for the +Ercolessi and Adams (1994) KIM Model for Al set by the following commands: + +kim_init EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005 metal +... +... box specification lines skipped +... +kim_interactions Al :pre + +the {kim_interactions} command executes the following LAMMPS input commands: -For a KIM SM, the set of commands defined in the SM speficiation file -will be executed. For example, consider the ReaxFF SM due to -Strachan et al. (2003) executed by the following commands: +pair_style kim EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005 +pair_coeff * * Al :pre + +For a KIM SM, the generated input commands may be more complex +and require that LAMMPS is built with the required packages included +for the type of potential being used. The set of commands to be executed +is defined in the SM specification file, which is part of the SM package +on "OpenKIM"_https://openkim.org. +For example, for the Strachan et al. (2003) ReaxFF SM +set by the following commands: kim_init Sim_LAMMPS_ReaxFF_StrachanVanDuinChakraborty_2003_CHNO__SM_107643900657_000 real ... @@ -216,103 +254,125 @@ kim_init Sim_LAMMPS_ReaxFF_StrachanVanDuinChakraborty_2003_CHNO__SM_107643900657 ... kim_interactions C H N O :pre -The kim_interactions command executes the following commands defined for this -SM: +the {kim_interactions} command executes the following LAMMPS input commands: pair_style reax/c lmp_control safezone 2.0 mincap 100 pair_coeff * * ffield.reax.rdx C H N O fix reaxqeq all qeq/reax 1 0.0 10.0 1.0e-6 param.qeq :pre -Note that the files lmp_control, ffield.reax.rdx and param.qeq are specific -to Strachan et al. (2003) ReaxFF parameterization and are archived as part -of the SM package in OpenKIM. Note also that parameters like cutoff radii -and charge tolerances that have an effect on IM predictions are also -included in the SM definition ensuring reproducibility. +Note that the files {lmp_control}, {ffield.reax.rdx} and {param.qeq} +are specific to the Strachan et al. (2003) ReaxFF parameterization +and are archived as part of the SM package in OpenKIM. +Note also that parameters like cutoff radii and charge tolerances, +which have an effect on IM predictions, are also included in the +SM definition ensuring reproducibility. -NOTE: Clearly when using using kim_init and kim_interactions to select +NOTE: When using using {kim_init} and {kim_interactions} to select and set up an OpenKIM IM, other LAMMPS commands for the same functions (such as pair_style, pair_coeff, bond_style, -bond_coeff, fixes related to charge equilibration, etc.) should not -appear in the input script. - -Using OpenKIM Web Queries in LAMMPS :h4 - -@@@@@@@@@ - -The kim_style command is a high-level wrapper around the -"Knowledge Base for Interatomic Models (OpenKIM)"_https://openkim.org -repository of interatomic potentials, so that they can be used by -LAMMPS scripts. It does not implement any computations directly, but -rather will generate LAMMPS input commands based on the information -retrieved from the OpenKIM repository. It is able to realize so-called -"KIM Simulator Models", which are OpenKIM repository entries of models -using native features of the simulation engine in use, i.e. LAMMPS -in this case, but it also supports realizing conventional KIM models -implicitly via generating a "pair_style kim"_pair_kim.html command -followed by a suitable "pair_coeff"_pair_coeff.html command. - -The kim_style command has two modes, {init} and {define}, indicated by -the first argument to the kim_style command. An {init} mode command -must be issued [before] the simulation box is created, while the {define} -mode version may only be used [after] the simulation box exists. Both -are required. The {init} mode version sets the model name and may issue -additional commands changing LAMMPS default settings that are required -for using a selected simulator model. If needed, those settings can be -overridden. The second argument to the {kim_style init} command is the -KIM model ID. - -In both modes, the keywords {unit_variables} and {unit_from} may be -added. They control the values of a set of -"internal style variables"_variable.html that can be used to convert -between different unit styles in LAMMPS. The argument to -each keyword is a LAMMPS unit style or NULL, which means to look up -the unit style from what was set with the "units"_units.html command. -Please note, that KIM simulator models will set their preferred unit style. -By default all conversion variables are set to 1.0. Converting to or -from the "lj" unit style is not supported. The following variables are defined: - -_u_length -_u_mass -_u_time :ul +bond_coeff, fixes related to charge equilibration, etc.) should normally +not appear in the input script. + +Using OpenKIM Web Queries in LAMMPS ({kim_query}) :h5 +The {kim_query} command performs a web query to retrieve the predictions +of the IM set by {kim_init} for material properties archived in +"OpenKIM"_https://openkim.org. The {kim_query} command must be preceded +by a {kim_init} command. The result of the query is stored in a +"string style variable"_variable.html, the name of which is given as the first +argument of the {kim_query command}. The second required argument +{query_function} is the name of the query function to be called +(e.g. {get_lattice_constant_fcc}). +All following arguments are parameters handed over to the web query +in the format {keyword=value}. The list of supported keywords and +and the type and format of their values depend on the query function +used. -The {kim_style define} command will issue commands that will realize -the selected model (through generating pair_style and pair_coeff commands, -but also other commands, as required). It has to be issued [after] the -the simulation box is defined. The {kim_style define} command allows a -varying number of additional arguments. Those are used to map the atom -types in LAMMPS to the available species in the KIM model. This is -equivalent to the arguments following "pair_coeff * *" in a -"kim"_pair_kim.html pair style. Thus the commands: +NOTE: The current list of supported query functions is available on the OpenKIM +webpage at "https://query.openkim.org"_https://query.openkim.org/ -kim_style init LennardJones_Ar -kim_style define Ar :pre +The data obtained by {kim_query} commands can be used as part of the setup +or analysis phases of LAMMPS simulations. Some examples are given below. -will generate the LAMMPS input commands: +[Define a crystal at its equilibrium lattice constant] -pair_style kim LennardJones_Ar -pair_coeff * * Ar :pre +kim_init EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005 metal +boundary p p p +kim_query a0 get_lattice_constant_fcc units=\["angstrom"\] +lattice fcc $\{a0\} +... :pre + +The {kim_query} command retrieves from "OpenKIM"_https://openkim.org +the equilibrium lattice constant predicted by the Ercolessi and Adams (1994) +potential for the face-centered cubic (fcc) structure and places it in +variable {a0}. This variable is then used on the next line to set up the +crystal. By using {kim_query}, the user is saved the trouble and possible +error of tracking this value down, or of having to perform an energy +minimization to find the equilibrium lattice constant. + +[Define a crystal at finite temperature accounting for thermal expansion] + +kim_init EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005 metal +boundary p p p +kim_query a0 get_lattice_constant_fcc units=\["angstrom"\] +kim_query alpha get_linear_thermal_expansion_fcc +variable DeltaT equal 300 +lattice fcc $\{a0\}*$\{alpha\}*$\{DeltaT\} +... :pre + +As in the previous example, the equilibrium lattice constant is obtained +for the Ercolessi and Adams (1994) potential. However, in this case the +crystal is scaled to the appropriate lattice constant at 300 K by using +the linear thermal expansion coefficient predicted by the potential. + +[Compute defect formation energy] + +kim_init EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005 metal +... +... Build fcc crystal containing some defect and compute the total energy +... which is stored in the variable {Etot} +... +kim_query Ec get_cohesive_energy_fcc units=\["eV"\] +variable Eform equal $\{Etot\} - count(all)*$\{Ec\} +... :pre + +The defect formation energy {Eform} is computed by subtracting from {Etot} the +ideal fcc cohesive energy of the atoms in the system obtained from +"OpenKIM"_https://openkim.org for the Ercolessi and Adams (1994) potential. + +Citation of OpenKIM IMs :h4 + +When publishing results obtained using OpenKIM IMs researchers are requested +to cite the OpenKIM project "(Tadmor)"_#kim-mainpaper and KIM API +"(Elliott)"_#kim-api as well as the specific IM codes used in the simulations. +The citation format for an IM is displayed on its page on +"OpenKIM"_https://openkim.org along with the corresponding BibTex file. + +Citing the codes used in the simulation gives credit +to the researchers who developed them and enables open source efforts like +OpenKIM to function. -For simulator models, the generated input commands may be more complex -and require that LAMMPS is built with the required packages included. -The commands generated by the kim_style command, can be copied to the -screen or log file, through the "echo"_echo.html command. -The kim_style command will also validate, that a selected simulator -model was generated for the LAMMPS MD code and not some other software. -In addition, the version strings for LAMMPS version used for defining -the simulator model and the LAMMPS version being currently run are -printed, so that it can be tracked down, if there are any incompatible -changes to input script or command syntax between the two LAMMPS versions. [Restrictions:] -This command is part of the KIM package. It is only enabled if +The set of {kim_commands} is part of the KIM package. It is only enabled if LAMMPS was built with that package. Furthermore, its correct functioning depends on compiling LAMMPS with all required packages installed that are required by the commands embedded in any KIM -simulator models used. +SM used. See the "Build package"_Build_package.html doc page for more info. [Related commands:] -"pair_style kim"_pair_kim.html, "kim_query"_kim_query.html +"pair_style kim"_pair_kim.html + +:line + +:link(kim-mainpaper) +[(Tadmor)] Tadmor, Elliott, Sethna, Miller and Becker, JOM, 63, 17 (2011). +doi: "https://doi.org/10.1007/s11837-011-0102-6"_https://doi.org/10.1007/s11837-011-0102-6 + +:link(kim-api) +[(Elliott)] Elliott, Tadmor and Bernstein, "https://openkim.org/kim-api"_https://openkim.org/kim-api (2011) +doi: "https://doi.org/10.25950/FF8F563A"_https://doi.org/10.25950/FF8F563A + -- GitLab From a6f6c9bed0c804f039e83943cb9c22a1a66d1429 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 23 Jun 2019 12:41:29 -0400 Subject: [PATCH 071/627] fix up links, spelling issues, and inconsistent names in kim commands docs --- doc/src/Build_extras.txt | 2 +- doc/src/Packages_details.txt | 14 ++++----- doc/src/kim_commands.txt | 34 +++++++++++---------- doc/src/pair_kim.txt | 4 +-- doc/utils/sphinx-config/false_positives.txt | 6 ++++ 5 files changed, 34 insertions(+), 26 deletions(-) diff --git a/doc/src/Build_extras.txt b/doc/src/Build_extras.txt index 17d18243f2..220e9420fc 100644 --- a/doc/src/Build_extras.txt +++ b/doc/src/Build_extras.txt @@ -173,7 +173,7 @@ KIM package :h4,link(kim) To build with this package, the KIM library with API v2 must be downloaded and built on your system. It must include the KIM models that you want to -use with LAMMPS. If you want to use the "kim_query"_kim_query.html +use with LAMMPS. If you want to use the "kim_query"_kim_commands.html command, you also need to have libcurl installed with the matching development headers and the curl-config tool. diff --git a/doc/src/Packages_details.txt b/doc/src/Packages_details.txt index 19c7e96fe9..d6e8f8639f 100644 --- a/doc/src/Packages_details.txt +++ b/doc/src/Packages_details.txt @@ -341,11 +341,11 @@ KIM package :link(PKG-KIM),h4 A "pair_style kim"_pair_kim.html command which is a wrapper on the Knowledge Base for Interatomic Models (KIM) repository of interatomic potentials, enabling any of them to be used in LAMMPS simulations. -Also a "kim_query"_kim_query.html command, which allows to query -the OpenKIM database for stored properties, and a -"kim_style"_kim_style.html command, which serves as a front end to -generating LAMMPS input on-the-fly for KIM simulator models and native -KIM models. +Also a "kim_query"_kim_commands.html command, which allows to query +the OpenKIM database for stored properties, and the commands +"kim_init and kim_interactions"_kim_commands.html, which serve as +front end to generating LAMMPS input on-the-fly for KIM simulator +models and native KIM models. To use this package you must have the KIM library available on your system. @@ -357,8 +357,8 @@ Elliott (U Minnesota). [Authors:] Ryan Elliott (U Minnesota) is the main developer for the KIM API which the "pair_style kim"_pair_kim.html command uses. He developed the pair style. Axel Kohlmeyer (Temple U) contributed the -"kim_query"_kim_query.html and "kim_style"_kim_style.html commands in -close collaboration with Ryan. +"kim_query"_kim_commands.html and "kim_init"_kim_commands.html commands +in close collaboration with Ryan. [Install:] diff --git a/doc/src/kim_commands.txt b/doc/src/kim_commands.txt index 06ad841240..7377c0186c 100644 --- a/doc/src/kim_commands.txt +++ b/doc/src/kim_commands.txt @@ -30,7 +30,8 @@ kim_interactions Si kim_init Sim_LAMMPS_ReaxFF_StrachanVanDuinChakraborty_2003_CHNO__SM_107643900657_000 real kim_init Sim_LAMMPS_ReaxFF_StrachanVanDuinChakraborty_2003_CHNO__SM_107643900657_000 metal unit_conversion_mode kim_interactions C H O -kim_query NEED EXAMPLES :pre +kim_query latconst get_test_result test=TE_156715955670 model=MO_800509458712 & + prop=structure-cubic-crystal-npt species=\["Al"\] keys=\["a"\] units=\["angstrom"\] :pre [Description:] @@ -52,22 +53,22 @@ IMs in OpenKIM are exhaustively tested using "KIM Tests"_https://openkim.org/get Reproducibility :h5 Each IM in OpenKIM is issued a unique identifier ("KIM ID"_https://openkim.org/about-kim-ids/), which includes a version number (last three digits). Any changes that can result in different numerical values lead to a version increment in the KIM ID. This makes it possible to reproduce simulations since the specific version of a specific IM used can be retrieved using its KIM ID. -OpenKIM is a member organization of "DataCite"_https://datacite.org/ and issues digitial object identifiers (DOIs) to all IMs archived in OpenKIM. This makes it possible to cite the IM code used in a simulation in a publications to give credit to the developers and further facilitate reproducibility. :ul +OpenKIM is a member organization of "DataCite"_https://datacite.org/ and issues digital object identifiers (DOIs) to all IMs archived in OpenKIM. This makes it possible to cite the IM code used in a simulation in a publications to give credit to the developers and further facilitate reproducibility. :ul Convenience :h5 IMs in OpenKIM are distributed in binary form along with LAMMPS and can be used in a LAMMPS input script simply by providing their KIM ID in the {kim_init} command documented on this page. (For more on using KIM with LAMMPS, see the KIM section of the "Packages details"_Packages_details.html doc page.) The {kim_query} web query tool provides the ability to use the predictions of IMs for supported material properties (computed via "KIM Tests"https://openkim.org/getting-started/kim-tests/) as part of a LAMMPS input script setup and analysis. -Support is provided for unit conversion between the "units"_units.html system used in the LAMMPS input script and the OpenKIM IM. This makes it possible to use a single input script with IMs using different units without change and minimizes the liklihood of errors due to incompatible units. :ul +Support is provided for unit conversion between the "units"_units.html system used in the LAMMPS input script and the OpenKIM IM. This makes it possible to use a single input script with IMs using different units without change and minimizes the likelihood of errors due to incompatible units. :ul Types of KIM IMs :h4 There are two types of IMs archived in OpenKIM: -The first type is called a {KIM Model}. A KIM Model is an independent computer implemention of an IM written in one of the languages supported by KIM (C, C++, Fortran, Python), which conforms to the KIM Application Programming Interface ("KIM API"_https://openkim.org/kim-api/). A KIM Model will work seamlessly with any simulation code that support the KIM API (including LAMMPS; see "complete list of supported code"_https://openkim.org/projects-using-kim/). +The first type is called a {KIM Model}. A KIM Model is an independent computer implementation of an IM written in one of the languages supported by KIM (C, C++, Fortran, Python), which conforms to the KIM Application Programming Interface ("KIM API"_https://openkim.org/kim-api/). A KIM Model will work seamlessly with any simulation code that support the KIM API (including LAMMPS; see "complete list of supported code"_https://openkim.org/projects-using-kim/). The second type is called a {KIM Simulator Model} (SM). In this case, the IM is implemented natively within the simulation code ({simulator}), i.e. LAMMPS. A separate SM package is archived in OpenKIM for each parameterization of the IM, which includes all of the necessary parameter files, LAMMPS commands, and metadata (supported species, units, etc.) needed to run the IM in LAMMPS. :ol -With these two IM tpes, OpenKIM can archive and test almost all IMs that +With these two IM types, OpenKIM can archive and test almost all IMs that can be used by LAMMPS. (It is easy to contribute new IMs to OpenKIM, see the "upload instructions"_https://openkim.org/getting-started/adding-content/.) @@ -78,7 +79,7 @@ and supported species, separated by two underscores from the KIM ID itself, which begins with an IM code ({MO} for a KIM Model, and {SM} for a KIM Simulator Model) followed by a unique 12-digit code and a 3-digit version identifier. -By convension SM prefixes begin with {SM} to readily identify them. +By convention SM prefixes begin with {SM} to readily identify them. SW_StillingerWeber_1985_Si__MO_405512056662_005 Sim_LAMMPS_ReaxFF_StrachanVanDuinChakraborty_2003_CHNO__SM_107643900657_000 :pre @@ -89,7 +90,7 @@ in which case their designation does not have to conform to the KIM ID format. Using OpenKIM IMs with LAMMPS :h4 Two commands are employed when using OpenKIM IMs, one to select the -IM and perform necessary initializations ({kim_init}), and the second +IM and perform necessary initialization ({kim_init}), and the second to set up the IM for use by executing any necessary LAMMPS commands ({kim_interactions}). @@ -97,7 +98,7 @@ OpenKIM IM Initialization :h5 The kim_init command must be located at the top of the input script before any other commands. Input scripts containing a kim_init command -shoud {not} include a "units"_units.html command or an +should {not} include a "units"_units.html command or an "atom_style"_atom_style.html command. These are set by the kim_init command based on its arguments. @@ -188,25 +189,26 @@ correctly. OpenKIM IM Execution :h5 The second and final step in using an OpenKIM IM is to execute the -kim_interaction command. This command must be preceded by a kim_init +kim_interactions command. This command must be preceded by a kim_init command and must follow the "create_box"_create_box.html command, which defines the number of atom types {N}. -The kim_interaction command has one argument {typeargs}, which contains +The kim_interactions command has one argument {typeargs}, which contains a list of {N} chemical species that are mapped to the atom types. For example, imagine the OpenKIM IM supports Si and C species. If the LAMMPS simulation has 4 atom types and you want the first three to be Si, -and the fourth to be C, you would use the following kim_interaction command: +and the fourth to be C, you would use the following kim_interactions command: -kim_interaction Si Si Si C :pre +kim_interactions Si Si Si C +:pre -The kim_interaction command performs all the necessary steps to set up +The kim_interactions command performs all the necessary steps to set up the OpenKIM IM set in the kim_init command. The specific actions depend on whether the IM is a KIM Model or a KIM SM. For a KIM Model, a "pair_style kim"_pair_kim.html command will be executed followed by the appropriate pair_coeff command. -For a KIM SM, the set of commands defined in the SM speficiation file +For a KIM SM, the set of commands defined in the SM specification file will be executed. For example, consider the ReaxFF SM due to Strachan et al. (2003) executed by the following commands: @@ -306,7 +308,7 @@ changes to input script or command syntax between the two LAMMPS versions. [Restrictions:] -This command is part of the KIM package. It is only enabled if +These commands are part of the KIM package. It is only enabled if LAMMPS was built with that package. Furthermore, its correct functioning depends on compiling LAMMPS with all required packages installed that are required by the commands embedded in any KIM @@ -315,4 +317,4 @@ See the "Build package"_Build_package.html doc page for more info. [Related commands:] -"pair_style kim"_pair_kim.html, "kim_query"_kim_query.html +"pair_style kim"_pair_kim.html, "units"_units.html diff --git a/doc/src/pair_kim.txt b/doc/src/pair_kim.txt index 523bd89d7c..7e399b7ce0 100644 --- a/doc/src/pair_kim.txt +++ b/doc/src/pair_kim.txt @@ -112,7 +112,7 @@ kim-api package version 2.0.0 and higher. [Related commands:] -"pair_coeff"_pair_coeff.html, "kim_style"_kim_style.html, -"kim_query"_kim_query.html +"pair_coeff"_pair_coeff.html, "kim_init"_kim_commands.html, +"kim_interactions"_kim_commands, "kim_query"_kim_commands.html [Default:] none diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index a8bfa8f193..6a75f0555a 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -1606,6 +1606,7 @@ meso mesoparticle mesoscale mesoscopic +metadata metadynamics Metadynamics Methfessel @@ -2271,6 +2272,7 @@ rcutfac rdc rdf RDideal +rdx README realtime reamin @@ -2297,6 +2299,8 @@ Rensselaer reparameterizing repo representable +Reproducibility +reproducibility repuls rescale rescaled @@ -2585,6 +2589,7 @@ Stoll stopstep Stouch Straatsma +Strachan Stratford Strathclyde Straub @@ -2822,6 +2827,7 @@ undump uniaxial uniaxially unimodal +unitarg unitless Universite unix -- GitLab From c9cb6e3658e66f4cf9086e9ed50232e477f7ed3e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 23 Jun 2019 13:12:23 -0400 Subject: [PATCH 072/627] remove obsolete files --- doc/src/kim_query.txt | 47 ------------------- doc/src/kim_style.txt | 107 ------------------------------------------ 2 files changed, 154 deletions(-) delete mode 100644 doc/src/kim_query.txt delete mode 100644 doc/src/kim_style.txt diff --git a/doc/src/kim_query.txt b/doc/src/kim_query.txt deleted file mode 100644 index 84eca6e676..0000000000 --- a/doc/src/kim_query.txt +++ /dev/null @@ -1,47 +0,0 @@ -"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c - -:link(lws,http://lammps.sandia.gov) -:link(ld,Manual.html) -:link(lc,Commands_all.html) - -:line - -kim_query command :h3 - -[Syntax:] - -kim_query variable query_function web_query_flags :pre - -variable = name of a (string style) variable where the result of the query is stored -query_function = name of the OpenKIM web API query function to be used -web_query_flags = a series of keyword=value pairs that represent the web query; supported keywords depend on query function :ul - -[Examples:] - -kim_query latconst get_test_result test=TE_156715955670 model=MO_800509458712 & - prop=structure-cubic-crystal-npt species=\["Al"\] keys=\["a"\] units=\["angstrom"\] :pre - -[Description:] - -The kim_query command allows to retrieve properties from the OpenKIM -through a web query. The result is stored in a string style -"variable"_variable.html, the name of which must be given as the first -argument of the kim_query command. The second required argument is the -name of the actual query function (e.g. {get_test_result}). All following -arguments are parameters handed over to the web query in the format -{keyword=value}. The list of supported keywords and the type of how -the value has to be encoded depends on the query function used. This -mirrors the functionality available on the OpenKIM webpage at -"https://query.openkim.org"_https://query.openkim.org/ - -[Restrictions:] - -This command is part of the KIM package. It is only enabled if -LAMMPS was built with that package. Furthermore, its correct -functioning depends on compiling LAMMPS with libcurl support. -See the "Build package"_Build_package.html doc page for more info. - -[Related commands:] - -"pair_style kim"_pair_kim.html, "kim_style"_kim_style.html, -"variable"_variable.html diff --git a/doc/src/kim_style.txt b/doc/src/kim_style.txt deleted file mode 100644 index c24cfe8581..0000000000 --- a/doc/src/kim_style.txt +++ /dev/null @@ -1,107 +0,0 @@ -"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c - -:link(lws,http://lammps.sandia.gov) -:link(ld,Manual.html) -:link(lc,Commands_all.html) - -:line - -kim_style command :h3 - -[Syntax:] - -kim_style mode args :pre - -mode = {init model} or {define typeargs} or no mode chosen -model = name of the KIM model (KIM potential or KIM simulator model) -typeargs = atom type to species mapping (one entry per atom type) -args = {unit_variables unit_style} or {unit_from unit_style} (optional):ul - -[Examples:] - -kim_style init ex_sim_model_Si_mod_tersoff unit_variables metal -kim_style define Si Si -kim_style unit_variables real -kim_style init LennardJones_Ar unit_variables metal -kim_style unit_variables real unit_from metal -kim_style define Ar :pre - -[Description:] - -The kim_style command is a high-level wrapper around the -"Knowledge Base for Interatomic Models (OpenKIM)"_https://openkim.org -repository of interatomic potentials, so that they can be used by -LAMMPS scripts. It does not implement any computations directly, but -rather will generate LAMMPS input commands based on the information -retrieved from the OpenKIM repository. It is able to realize so-called -"KIM Simulator Models", which are OpenKIM repository entries of models -using native features of the simulation engine in use, i.e. LAMMPS -in this case, but it also supports realizing conventional KIM models -implicitly via generating a "pair_style kim"_pair_kim.html command -followed by a suitable "pair_coeff"_pair_coeff.html command. - -The kim_style command has two modes, {init} and {define}, indicated by -the first argument to the kim_style command. An {init} mode command -must be issued [before] the simulation box is created, while the {define} -mode version may only be used [after] the simulation box exists. Both -are required. The {init} mode version sets the model name and may issue -additional commands changing LAMMPS default settings that are required -for using a selected simulator model. If needed, those settings can be -overridden. The second argument to the {kim_style init} command is the -KIM model ID. - -In both modes, the keywords {unit_variables} and {unit_from} may be -added. They control the values of a set of -"internal style variables"_variable.html that can be used to convert -between different unit styles in LAMMPS. The argument to -each keyword is a LAMMPS unit style or NULL, which means to look up -the unit style from what was set with the "units"_units.html command. -Please note, that KIM simulator models will set their preferred unit style. -By default all conversion variables are set to 1.0. Converting to or -from the "lj" unit style is not supported. The following variables are defined: - -_u_length -_u_mass -_u_time :ul - - -The {kim_style define} command will issue commands that will realize -the selected model (through generating pair_style and pair_coeff commands, -but also other commands, as required). It has to be issued [after] the -the simulation box is defined. The {kim_style define} command allows a -varying number of additional arguments. Those are used to map the atom -types in LAMMPS to the available species in the KIM model. This is -equivalent to the arguments following "pair_coeff * *" in a -"kim"_pair_kim.html pair style. Thus the commands: - -kim_style init LennardJones_Ar -kim_style define Ar :pre - -will generate the LAMMPS input commands: - -pair_style kim LennardJones_Ar -pair_coeff * * Ar :pre - -For simulator models, the generated input commands may be more complex -and require that LAMMPS is built with the required packages included. -The commands generated by the kim_style command, can be copied to the -screen or log file, through the "echo"_echo.html command. -The kim_style command will also validate, that a selected simulator -model was generated for the LAMMPS MD code and not some other software. -In addition, the version strings for LAMMPS version used for defining -the simulator model and the LAMMPS version being currently run are -printed, so that it can be tracked down, if there are any incompatible -changes to input script or command syntax between the two LAMMPS versions. - -[Restrictions:] - -This command is part of the KIM package. It is only enabled if -LAMMPS was built with that package. Furthermore, its correct -functioning depends on compiling LAMMPS with all required packages -installed that are required by the commands embedded in any KIM -simulator models used. -See the "Build package"_Build_package.html doc page for more info. - -[Related commands:] - -"pair_style kim"_pair_kim.html, "kim_query"_kim_query.html -- GitLab From ac82aa754b583886e193471bc042635c9c82955c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 23 Jun 2019 13:13:05 -0400 Subject: [PATCH 073/627] correct off-by-one error and simplify code by using std::string instead of std::stringstream --- src/KIM/kim_init.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/KIM/kim_init.cpp b/src/KIM/kim_init.cpp index 695db0aa0d..6339f7397e 100644 --- a/src/KIM/kim_init.cpp +++ b/src/KIM/kim_init.cpp @@ -246,7 +246,7 @@ void KimInit::determine_model_type_and_units(char * model_name, if (*sim_field == "units") { kim_SM->GetSimulatorFieldLine(i,0,&sim_value); - int len=(*sim_value).length(); + int len=(*sim_value).length()+1; *model_units = new char[len]; strcpy(*model_units,sim_value->c_str()); break; } @@ -414,15 +414,16 @@ void KimInit::do_variables(char *user_units, char *model_units) (char *)"density"}; if (comm->me == 0) { - std::stringstream mesg; - mesg << "# Conversion factors from " << from << " to " << to - << ":" << std::endl; - if (screen) fputs(mesg.str().c_str(),screen); - if (logfile) fputs(mesg.str().c_str(),logfile); + std::string mesg("# Conversion factors from "); + mesg += from; + mesg += " to "; + mesg += to; + mesg += ":\n"; + if (screen) fputs(mesg.c_str(),screen); + if (logfile) fputs(mesg.c_str(),logfile); } - for (int i = 0; i < nunits; i++) - { + for (int i = 0; i < nunits; i++) { var_str = std::string("_u_") + std::string(units[i]); args[0] = (char *)var_str.c_str(); v_unit = variable->find(args[0]); -- GitLab From c557c7492b4ce0ab90ca80e2ba6c100b9a83c825 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 23 Jun 2019 13:31:12 -0400 Subject: [PATCH 074/627] adapt names of stored properties to code that uses fix STORE/KIM --- src/KIM/fix_store_kim.cpp | 43 ++++++++++++++++++--------------------- src/KIM/fix_store_kim.h | 4 ++-- 2 files changed, 22 insertions(+), 25 deletions(-) diff --git a/src/KIM/fix_store_kim.cpp b/src/KIM/fix_store_kim.cpp index 6423a57e18..8209a6d13e 100644 --- a/src/KIM/fix_store_kim.cpp +++ b/src/KIM/fix_store_kim.cpp @@ -66,7 +66,7 @@ using namespace FixConst; FixStoreKIM::FixStoreKIM(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg), simulator_model(NULL), model_name(NULL), - units_from(NULL), units_to(NULL) + model_units(NULL), user_units(NULL) { if (narg != 3) error->all(FLERR,"Illegal fix STORE/KIM command"); } @@ -89,16 +89,15 @@ FixStoreKIM::~FixStoreKIM() model_name = NULL; } - if (units_from) { - char *uf = (char *)units_from; - delete[] uf; - units_from = NULL; + if (model_units) { + char *mu = (char *)model_units; + delete[] mu; + model_units = NULL; } - - if (units_to) { - char *ut = (char *)units_to; - delete[] ut; - units_to = NULL; + if (user_units) { + char *uu = (char *)user_units; + delete[] uu; + user_units = NULL; } } @@ -127,19 +126,17 @@ void FixStoreKIM::setptr(const char *name, void *ptr) delete[] mn; } model_name = ptr; - } else if (strcmp(name,"units_from") == 0) { - if (units_from) { - char *uf = (char *)units_from; - delete[] uf; + } else if (strcmp(name,"model_units") == 0) { + if (model_units) { + char *mu = (char *)model_units; + delete[] mu; } - units_from = ptr; - } else if (strcmp(name,"units_to") == 0) { - if (units_to) { - char *ut = (char *)units_to; - delete[] ut; + } else if (strcmp(name,"user_units") == 0) { + if (user_units) { + char *uu = (char *)user_units; + delete[] uu; } - units_to = ptr; - } + } else error->all(FLERR,"Unknown property in fix STORE/KIM"); } /* ---------------------------------------------------------------------- */ @@ -148,7 +145,7 @@ void *FixStoreKIM::getptr(const char *name) { if (strcmp(name,"simulator_model") == 0) return simulator_model; else if (strcmp(name,"model_name") == 0) return model_name; - else if (strcmp(name,"units_from") == 0) return units_from; - else if (strcmp(name,"units_to") == 0) return units_to; + else if (strcmp(name,"model_units") == 0) return model_units; + else if (strcmp(name,"user_units") == 0) return user_units; else return NULL; } diff --git a/src/KIM/fix_store_kim.h b/src/KIM/fix_store_kim.h index 5bca2a3dd0..655be83ad0 100644 --- a/src/KIM/fix_store_kim.h +++ b/src/KIM/fix_store_kim.h @@ -80,8 +80,8 @@ class FixStoreKIM : public Fix { private: void *simulator_model; // pointer to KIM simulator model class void *model_name; // string of KIM model name - void *units_from; // string of unit conversion origin or NULL - void *units_to; // string of unit conversion target or NULL + void *model_units; // string of unit conversion origin or NULL + void *user_units; // string of unit conversion target or NULL }; } -- GitLab From 065638edba999ab91b078e089b807d58c205b6ae Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 23 Jun 2019 13:31:43 -0400 Subject: [PATCH 075/627] remove unused macro and reformat to closer match LAMMPS programming style --- src/KIM/kim_init.cpp | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/KIM/kim_init.cpp b/src/KIM/kim_init.cpp index 6339f7397e..0d8849c51c 100644 --- a/src/KIM/kim_init.cpp +++ b/src/KIM/kim_init.cpp @@ -79,10 +79,6 @@ extern "C" { #include "KIM_SimulatorModel.hpp" //@@@@@ -#define SNUM(x) \ - static_cast(std::ostringstream() \ - << std::dec << x).str() - using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ @@ -187,14 +183,11 @@ void KimInit::determine_model_type_and_units(char * model_name, model_type = MO; KIM_Model_Destroy(&kim_MO); - if (units_accepted) - { + if (units_accepted) { int len=strlen(user_units); *model_units = new char[len]; strcpy(*model_units,user_units); return; - } - else if (unit_conversion_mode) - { + } else if (unit_conversion_mode) { int const num_systems = 5; char const * const systems[num_systems] = {"metal", "real", "si", "cgs", "electron"}; -- GitLab From 27d1f79fe37e5ba2153590731092997d0bdf9890 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 23 Jun 2019 13:39:12 -0400 Subject: [PATCH 076/627] simplify another case of stringstream to use plain std::string --- src/KIM/kim_init.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/KIM/kim_init.cpp b/src/KIM/kim_init.cpp index 0d8849c51c..1ca55d7adc 100644 --- a/src/KIM/kim_init.cpp +++ b/src/KIM/kim_init.cpp @@ -246,12 +246,11 @@ void KimInit::determine_model_type_and_units(char * model_name, } KIM::SimulatorModel::Destroy(&kim_SM); - if ((! unit_conversion_mode) && (strcmp(*model_units, user_units)!=0)) - { - std::stringstream mesg; - mesg << "Incompatible units for KIM Simulator Model, required units = " - << *model_units; - error->all(FLERR,mesg.str().c_str()); + if ((! unit_conversion_mode) && (strcmp(*model_units, user_units)!=0)) { + std::string mesg("Incompatible units for KIM Simulator Model, " + "required units = "); + mesg += *model_units; + error->all(FLERR,mesg.c_str()); } } -- GitLab From c6d0f807b569bdf6ab6e9ed0665ca81d80f1d3d5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 23 Jun 2019 14:13:24 -0400 Subject: [PATCH 077/627] output messages that would otherwise only show up in logs only when logs are enable for screen or logfile --- src/KIM/kim_init.cpp | 16 ++++++++-------- src/KIM/kim_interactions.cpp | 4 ++-- src/input.h | 6 ++++-- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/KIM/kim_init.cpp b/src/KIM/kim_init.cpp index 1ca55d7adc..ce1b944792 100644 --- a/src/KIM/kim_init.cpp +++ b/src/KIM/kim_init.cpp @@ -363,8 +363,8 @@ void KimInit::kim_init_log_delimiter(std::string const begin_end) const mesg = "#=== END kim-init ============================================\n\n"; - if (screen) fputs(mesg.c_str(),screen); - if (logfile) fputs(mesg.c_str(),logfile); + if ((screen) && (input->echo_screen)) fputs(mesg.c_str(),screen); + if ((logfile) && (input->echo_log)) fputs(mesg.c_str(),logfile); } } @@ -411,8 +411,8 @@ void KimInit::do_variables(char *user_units, char *model_units) mesg += " to "; mesg += to; mesg += ":\n"; - if (screen) fputs(mesg.c_str(),screen); - if (logfile) fputs(mesg.c_str(),logfile); + if ((screen) && (input->echo_screen)) fputs(mesg.c_str(),screen); + if ((logfile) && (input->echo_log)) fputs(mesg.c_str(),logfile); } for (int i = 0; i < nunits; i++) { @@ -441,12 +441,12 @@ void KimInit::do_variables(char *user_units, char *model_units) << " internal " << std::setprecision(12) << std::scientific << conversion_factor << std::endl; - if (screen) fputs(mesg.str().c_str(),screen); - if (logfile) fputs(mesg.str().c_str(),logfile); + if ((screen) && (input->echo_screen)) fputs(mesg.str().c_str(),screen); + if ((logfile) && (input->echo_log)) fputs(mesg.str().c_str(),logfile); } } if (comm->me == 0) { - if (screen) fputs("#\n",screen); - if (logfile) fputs("#\n",logfile); + if ((screen) && (input->echo_screen)) fputs("#\n",screen); + if ((logfile) && (input->echo_log)) fputs("#\n",logfile); } } diff --git a/src/KIM/kim_interactions.cpp b/src/KIM/kim_interactions.cpp index 491d406ae6..4771272ff8 100644 --- a/src/KIM/kim_interactions.cpp +++ b/src/KIM/kim_interactions.cpp @@ -109,8 +109,8 @@ void KimInteractions::kim_interactions_log_delimiter( mesg = "#=== END kim_interactions ====================================\n\n"; - if (screen) fputs(mesg.c_str(),screen); - if (logfile) fputs(mesg.c_str(),logfile); + if ((screen) && (input->echo_screen)) fputs(mesg.c_str(),screen); + if ((logfile) && (input->echo_log)) fputs(mesg.c_str(),logfile); } } diff --git a/src/input.h b/src/input.h index 47ad7779f1..ebd015619c 100644 --- a/src/input.h +++ b/src/input.h @@ -25,6 +25,8 @@ class Input : protected Pointers { friend class Info; friend class Error; friend class Deprecated; + friend class KimInit; + friend class KimInteractions; public: int narg; // # of command args @@ -42,14 +44,14 @@ class Input : protected Pointers { protected: char *command; // ptr to current command + int echo_screen; // 0 = no, 1 = yes + int echo_log; // 0 = no, 1 = yes private: int me; // proc ID int maxarg; // max # of args in arg char *line,*copy,*work; // input line & copy and work string int maxline,maxcopy,maxwork; // max lengths of char strings - int echo_screen; // 0 = no, 1 = yes - int echo_log; // 0 = no, 1 = yes int nfile,maxfile; // current # and max # of open input files int label_active; // 0 = no label, 1 = looking for label char *labelstr; // label string being looked for -- GitLab From 493269431c354d5177a10acaec2b94c3aed18b67 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 23 Jun 2019 14:16:38 -0400 Subject: [PATCH 078/627] add a few more false positives --- doc/utils/sphinx-config/false_positives.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index 6a75f0555a..5ea7388cd6 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -570,6 +570,7 @@ Dihedrals dihydride Dij dimdim +dimensioned dimensionality dimgray dipolar @@ -599,6 +600,7 @@ Dobson Dodds dodgerblue dof +doi Donadio dotc Doty @@ -749,6 +751,7 @@ equilibrating equilibration Equilibria equilization +Ercolessi eradius erate erc @@ -2243,6 +2246,7 @@ quati quatj quatk quatw +queryargs Queteschiner qw qx -- GitLab From b2ba0550d70d6829fa3b2b40a86025e2faf95a2e Mon Sep 17 00:00:00 2001 From: "Ryan S. Elliott" Date: Sun, 23 Jun 2019 13:18:57 -0500 Subject: [PATCH 079/627] Some minor typo fixes in kim_commands.txt --- doc/src/kim_commands.txt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/doc/src/kim_commands.txt b/doc/src/kim_commands.txt index 2e94271763..e51aec5dc7 100644 --- a/doc/src/kim_commands.txt +++ b/doc/src/kim_commands.txt @@ -71,7 +71,7 @@ Types of KIM IMs :h4 There are two types of IMs archived in OpenKIM: -The first type is called a {KIM Model}. A KIM Model is an independent computer implementation of an IM written in one of the languages supported by KIM (C, C++, Fortran, Python), which conforms to the KIM Application Programming Interface ("KIM API"_https://openkim.org/kim-api/). A KIM Model will work seamlessly with any simulation code that support the KIM API (including LAMMPS; see "complete list of supported code"_https://openkim.org/projects-using-kim/). +The first type is called a {KIM Model}. A KIM Model is an independent computer implementation of an IM written in one of the languages supported by KIM (C, C++, Fortran), which conforms to the KIM Application Programming Interface ("KIM API"_https://openkim.org/kim-api/). A KIM Model will work seamlessly with any simulation code that supports the KIM API (including LAMMPS; see "complete list of supported code"_https://openkim.org/projects-using-kim/). The second type is called a {KIM Simulator Model} (SM). In this case, the IM is implemented natively within the simulation code ({simulator}), i.e. LAMMPS. A separate SM package is archived in OpenKIM for each parameterization of the IM, which includes all of the necessary parameter files, LAMMPS commands, and metadata (supported species, units, etc.) needed to run the IM in LAMMPS. :ol With these two IM types, OpenKIM can archive and test almost all IMs that @@ -212,13 +212,13 @@ The second and final step in using an OpenKIM IM is to execute the {kim_interactions} command. This command must be preceded by a {kim_init} command and a "create_box"_create_box.html command, which defines the number of atom types {N}. -The {kim_interaction} command has one argument {typeargs}. This argument +The {kim_interactions} command has one argument {typeargs}. This argument contains a list of {N} chemical species, which defines a mapping between atom types in LAMMPS to the available species in the OpenKIM IM. For example, consider an OpenKIM IM that supports Si and C species. If the LAMMPS simulation has four atom types, where the first three are Si, -and the fourth is C, the following {kim_interaction} command would be used: +and the fourth is C, the following {kim_interactions} command would be used: kim_interactions Si Si Si C :pre @@ -376,4 +376,3 @@ doi: "https://doi.org/10.1007/s11837-011-0102-6"_https://doi.org/10.1007/s11837- :link(kim-api) [(Elliott)] Elliott, Tadmor and Bernstein, "https://openkim.org/kim-api"_https://openkim.org/kim-api (2011) doi: "https://doi.org/10.25950/FF8F563A"_https://doi.org/10.25950/FF8F563A - -- GitLab From e42e1e64a894e7b52c3c75a8b830918819cfdafa Mon Sep 17 00:00:00 2001 From: Ellad Tadmor Date: Sun, 23 Jun 2019 14:50:52 -0500 Subject: [PATCH 080/627] Added explanation on Model and SM pages --- doc/src/kim_commands.txt | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/doc/src/kim_commands.txt b/doc/src/kim_commands.txt index e51aec5dc7..5a50a76879 100644 --- a/doc/src/kim_commands.txt +++ b/doc/src/kim_commands.txt @@ -90,6 +90,24 @@ By convention SM prefixes begin with {Sim_} to readily identify them. SW_StillingerWeber_1985_Si__MO_405512056662_005 Sim_LAMMPS_ReaxFF_StrachanVanDuinChakraborty_2003_CHNO__SM_107643900657_000 :pre +Each OpenKIM IM has a dedicated page on "OpenKIM"_https://openkim.org +providing all the information on the IM including a title, description, +authorship and citation information, test and verification check results, +visualizations of results, a wiki with documentation and user comments, and +access to raw files, and other information. +This is referred to as the "Model Page" or "SM Page". +The URL for such a page is constructed from the +"extended KIM ID"_https://openkim.org/about-kim-ids/ of the IM: + +https://openkim.org/id/extended_KIM_ID +:pre + +For example for the Stillinger-Weber potential +listed above the Model Page is located at: + +"https://openkim.org/id/SW_StillingerWeber_1985_Si__MO_405512056662_005"_https://openkim.org/id/SW_StillingerWeber_1985_Si__MO_405512056662_005 +:pre + NOTE: It is also possible to locally install IMs not archived in OpenKIM, in which case their names do not have to conform to the KIM ID format. -- GitLab From 36649f0534d3b20211953c1dbecedc33e7dd3857 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 23 Jun 2019 16:47:12 -0400 Subject: [PATCH 081/627] add workaround for handline include files --- src/input.cpp | 7 +++++++ src/input.h | 1 + 2 files changed, 8 insertions(+) diff --git a/src/input.cpp b/src/input.cpp index f88c8ca0c0..dd445b10f3 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -77,6 +77,7 @@ Input::Input(LAMMPS *lmp, int argc, char **argv) : Pointers(lmp) echo_screen = 0; echo_log = 1; + eof_return = 0; label_active = 0; labelstr = NULL; @@ -205,6 +206,7 @@ void Input::file() MPI_Bcast(&n,1,MPI_INT,0,world); if (n == 0) { if (label_active) error->all(FLERR,"Label wasn't found in input script"); + if (eof_return) break; if (me == 0) { if (infile != stdin) { fclose(infile); @@ -1051,6 +1053,11 @@ void Input::include() error->one(FLERR,str); } infiles[nfile++] = infile; + eof_return = 1; + file(); + eof_return = 0; + nfile--; + infile = infiles[nfile-1]; } } diff --git a/src/input.h b/src/input.h index ebd015619c..7fb125ffb5 100644 --- a/src/input.h +++ b/src/input.h @@ -46,6 +46,7 @@ class Input : protected Pointers { char *command; // ptr to current command int echo_screen; // 0 = no, 1 = yes int echo_log; // 0 = no, 1 = yes + int eof_return; // if 1: at EOF return from parsing in file() private: int me; // proc ID -- GitLab From bfe6cc29e81b84c6dada9bc9cbd942b3d0a21c93 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 23 Jun 2019 17:52:43 -0400 Subject: [PATCH 082/627] fix bug of not storing pointers --- src/KIM/fix_store_kim.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/KIM/fix_store_kim.cpp b/src/KIM/fix_store_kim.cpp index 8209a6d13e..c9a99acca9 100644 --- a/src/KIM/fix_store_kim.cpp +++ b/src/KIM/fix_store_kim.cpp @@ -131,11 +131,13 @@ void FixStoreKIM::setptr(const char *name, void *ptr) char *mu = (char *)model_units; delete[] mu; } + model_units = ptr; } else if (strcmp(name,"user_units") == 0) { if (user_units) { char *uu = (char *)user_units; delete[] uu; } + user_units = ptr; } else error->all(FLERR,"Unknown property in fix STORE/KIM"); } -- GitLab From 6d54cf6a07d38d97be5157d4977ea831c10d9f48 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 23 Jun 2019 17:53:12 -0400 Subject: [PATCH 083/627] programming style changes --- src/KIM/kim_init.cpp | 39 +++++++++++++++------------------------ 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/src/KIM/kim_init.cpp b/src/KIM/kim_init.cpp index ce1b944792..080e3dac3f 100644 --- a/src/KIM/kim_init.cpp +++ b/src/KIM/kim_init.cpp @@ -90,10 +90,10 @@ void KimInit::command(int narg, char **arg) if (domain->box_exist) error->all(FLERR,"Must use 'kim_init' command before " "simulation box is defined"); - int len0 = strlen(arg[0])+1; - int len1 = strlen(arg[1])+1; - char *model_name = new char[len0]; strcpy(model_name,arg[0]); - char *user_units = new char[len1]; strcpy(user_units,arg[1]); + char *model_name = new char[strlen(arg[0])+1]; + strcpy(model_name,arg[0]); + char *user_units = new char[strlen(arg[1])+1]; + strcpy(user_units,arg[1]); if (narg == 3) { if (strcmp(arg[2],"unit_conversion_mode")==0) unit_conversion_mode = true; else { error->all(FLERR,"Illegal kim_init command"); } @@ -178,21 +178,19 @@ void KimInit::determine_model_type_and_units(char * model_name, &units_accepted, &kim_MO); - if (!kim_error) // model is an MO - { + if (!kim_error) { // model is an MO model_type = MO; KIM_Model_Destroy(&kim_MO); if (units_accepted) { - int len=strlen(user_units); - *model_units = new char[len]; strcpy(*model_units,user_units); + *model_units = new char[strlen(user_units)+1]; + strcpy(*model_units,user_units); return; } else if (unit_conversion_mode) { int const num_systems = 5; char const * const systems[num_systems] = {"metal", "real", "si", "cgs", "electron"}; - for (int i=0; i < num_systems; ++i) - { + for (int i=0; i < num_systems; ++i) { get_kim_unit_names(systems[i], lengthUnit, energyUnit, chargeUnit, temperatureUnit, timeUnit, error); kim_error = KIM_Model_Create(KIM_NUMBERING_zeroBased, @@ -205,17 +203,13 @@ void KimInit::determine_model_type_and_units(char * model_name, &units_accepted, &kim_MO); KIM_Model_Destroy(&kim_MO); - if (units_accepted) - { - int len=strlen(systems[i]); - *model_units = new char[len]; strcpy(*model_units,systems[i]); + if (units_accepted) { + *model_units = new char[strlen(systems[i])+1]; + strcpy(*model_units,systems[i]); return; } - } - error->all(FLERR,"KIM Model does not support any lammps unit system"); - } - else - { + } error->all(FLERR,"KIM Model does not support any lammps unit system"); + } else { error->all(FLERR,"KIM Model does not support the requested unit system"); } } @@ -223,9 +217,7 @@ void KimInit::determine_model_type_and_units(char * model_name, KIM::SimulatorModel * kim_SM; kim_error = KIM::SimulatorModel::Create(model_name, &kim_SM); if (kim_error) - { error->all(FLERR,"KIM model name not found"); - } model_type = SM; int sim_fields; @@ -257,7 +249,7 @@ void KimInit::determine_model_type_and_units(char * model_name, /* ---------------------------------------------------------------------- */ -void KimInit::do_init(char *model_name, char *user_units, char* model_units) +void KimInit::do_init(char *model_name, char *user_units, char *model_units) { // create storage proxy fix. delete existing fix, if needed. @@ -322,8 +314,7 @@ void KimInit::do_init(char *model_name, char *user_units, char* model_units) cmd += model_units; input->one(cmd.c_str()); - if (model_type == SM) - { + if (model_type == SM) { int sim_fields, sim_lines; const std::string *sim_field, *sim_value; simulatorModel->GetNumberOfSimulatorFields(&sim_fields); -- GitLab From d10fdda6765c6cbe905509bf3eae7888cadb00ad Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 23 Jun 2019 17:53:52 -0400 Subject: [PATCH 084/627] simplify nested include file handling --- src/input.cpp | 17 ++--------------- src/input.h | 1 - 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/src/input.cpp b/src/input.cpp index dd445b10f3..268be5b774 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -77,7 +77,6 @@ Input::Input(LAMMPS *lmp, int argc, char **argv) : Pointers(lmp) echo_screen = 0; echo_log = 1; - eof_return = 0; label_active = 0; labelstr = NULL; @@ -206,18 +205,7 @@ void Input::file() MPI_Bcast(&n,1,MPI_INT,0,world); if (n == 0) { if (label_active) error->all(FLERR,"Label wasn't found in input script"); - if (eof_return) break; - if (me == 0) { - if (infile != stdin) { - fclose(infile); - infile = NULL; - } - nfile--; - } - MPI_Bcast(&nfile,1,MPI_INT,0,world); - if (nfile == 0) break; - if (me == 0) infile = infiles[nfile-1]; - continue; + break; } if (n > maxline) reallocate(line,maxline,n); @@ -1053,9 +1041,8 @@ void Input::include() error->one(FLERR,str); } infiles[nfile++] = infile; - eof_return = 1; file(); - eof_return = 0; + fclose(infile); nfile--; infile = infiles[nfile-1]; } diff --git a/src/input.h b/src/input.h index 7fb125ffb5..ebd015619c 100644 --- a/src/input.h +++ b/src/input.h @@ -46,7 +46,6 @@ class Input : protected Pointers { char *command; // ptr to current command int echo_screen; // 0 = no, 1 = yes int echo_log; // 0 = no, 1 = yes - int eof_return; // if 1: at EOF return from parsing in file() private: int me; // proc ID -- GitLab From b5d4cf4bfdff3b33a76198bcdb070798bbe908ab Mon Sep 17 00:00:00 2001 From: Ellad Tadmor Date: Sun, 23 Jun 2019 17:23:21 -0500 Subject: [PATCH 085/627] Updated KIM package information --- doc/src/Packages_details.txt | 51 ++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/doc/src/Packages_details.txt b/doc/src/Packages_details.txt index d6e8f8639f..bf71e058f5 100644 --- a/doc/src/Packages_details.txt +++ b/doc/src/Packages_details.txt @@ -338,27 +338,37 @@ KIM package :link(PKG-KIM),h4 [Contents:] -A "pair_style kim"_pair_kim.html command which is a wrapper on the -Knowledge Base for Interatomic Models (KIM) repository of interatomic -potentials, enabling any of them to be used in LAMMPS simulations. -Also a "kim_query"_kim_commands.html command, which allows to query -the OpenKIM database for stored properties, and the commands -"kim_init and kim_interactions"_kim_commands.html, which serve as -front end to generating LAMMPS input on-the-fly for KIM simulator -models and native KIM models. - -To use this package you must have the KIM library available on your -system. +This package contains a set of commands that serve as a wrapper on the +"Open Knowledgebase of Interatomic Models (OpenKIM)"_https://openkim.org +repository of interatomic models (IMs) +enabling compatible ones to be used in LAMMPS simulations. +This includes "kim_init and kim_interactions"_kim_commands.html +commands to select, initialize and instantiate the IM, and a +"kim_query"_kim_commands.html command to perform web queries +for material property predictions of OpenKIM IMs. +Support for KIM IMs that conform to the +"KIM Application Programming Interface (API)"_https://openkim.org/kim-api/ +is provided by the "pair_style kim"_pair_kim.html command. + +NOTE: The command {pair_style kim} is called by {kim_interactions} and +is not recommended to be directly used in input scripts. + +To use this package you must have the KIM API library available on your +system. The KIM API is available for download on the +"OpenKIM website"_https://openkim.org/kim-api/. +When installing LAMMPS from binary, the kim-api package +is a dependency that is automatically downloaded and installed. Information about the KIM project can be found at its website: -https://openkim.org. The KIM project is led by Ellad Tadmor and Ryan -Elliott (U Minnesota). +"https://openkim.org"_https://openkim.org. +The KIM project is led by Ellad Tadmor and Ryan Elliott (U Minnesota) +and is funded by the "National Science Foundation"_https://www.nsf.gov/. [Authors:] Ryan Elliott (U Minnesota) is the main developer for the KIM -API which the "pair_style kim"_pair_kim.html command uses. He developed -the pair style. Axel Kohlmeyer (Temple U) contributed the -"kim_query"_kim_commands.html and "kim_init"_kim_commands.html commands -in close collaboration with Ryan. +API and the {pair_style kim} command. Axel Kohlmeyer (Temple U) and +Ellad Tadmor (U Minnesota) contributed to the "kim_commands"_kim_commands.html +interface in close collaboration with Ryan Elliott. + [Install:] @@ -368,10 +378,11 @@ extras"_Build_extras.html doc page. [Supporting info:] +"kim_commands"_kim_commands.html +"pair_style kim"_pair_kim.html src/KIM: filenames -> commands src/KIM/README lib/kim/README -"pair_style kim"_pair_kim.html examples/kim :ul :line @@ -987,9 +998,9 @@ USER-ADIOS package :link(PKG-USER-ADIOS),h4 [Contents:] -ADIOS is a high-performance I/O library. This package implements the +ADIOS is a high-performance I/O library. This package implements the dump "atom/adios" and dump "custom/adios" commands to write data using -the ADIOS library. +the ADIOS library. [Authors:] Norbert Podhorszki (ORNL) from the ADIOS developer team. -- GitLab From 881f9ff04337c6e743f2fa9a7e0b71af28e85107 Mon Sep 17 00:00:00 2001 From: Ellad Tadmor Date: Sun, 23 Jun 2019 17:36:10 -0500 Subject: [PATCH 086/627] Updated the pair_kim docs --- doc/src/pair_kim.txt | 85 ++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 46 deletions(-) diff --git a/doc/src/pair_kim.txt b/doc/src/pair_kim.txt index 7e399b7ce0..86d13808b0 100644 --- a/doc/src/pair_kim.txt +++ b/doc/src/pair_kim.txt @@ -12,76 +12,71 @@ pair_style kim command :h3 pair_style kim model :pre -model = name of KIM model (potential) +model = name of a KIM model (the KIM ID for models archived in OpenKIM) [Examples:] -pair_style kim ex_model_Ar_P_LJ -pair_coeff * * Ar Ar :pre +pair_style kim SW_StillingerWeber_1985_Si__MO_405512056662_005 +pair_coeff * * Si :pre [Description:] -This pair style is a wrapper on the "Knowledge Base for Interatomic +This pair style is a wrapper on the "Open Knowledgebase of Interatomic Models (OpenKIM)"_https://openkim.org repository of interatomic -potentials, so that they can be used by LAMMPS scripts. +potentials to enable their use in LAMMPS scripts. -Note that in LAMMPS lingo, a KIM model driver is a pair style -(e.g. EAM or Tersoff). A KIM model is a pair style for a particular -element or alloy and set of parameters, e.g. EAM for Cu with a -specific EAM potential file. +The preferred interface for using interatomic models archived in +OpenKIM is the "kim_commands interface"_kim_commands.html. That +interface supports both "KIM Models" that conform to the KIM API +and can be used by any KIM-compliant simulation code, and +"KIM Simulator Models" that are natively implemented within a single +simulation code (like LAMMPS) and can only be used with it. +The {pair_style kim} command is limited to KIM Models. It is +used by the "kim_commands interface"_kim_commands.html as needed. -See the current list of "KIM model -drivers"_https://openkim.org/browse/model-drivers/alphabetical. +NOTE: Since {pair_style kim} is called by {kim_interactions} as needed, +is not recommended to be directly used in input scripts. -See the current list of all "KIM -models"_https://openkim.org/browse/models/by-model-drivers - -To use this pair style, you must first download and install the KIM -API library from the "OpenKIM website"_https://openkim.org. The KIM -section of the "Packages details"_Packages_details.html doc page has -instructions on how to do this with a simple make command, when -building LAMMPS. - -See the examples/kim dir for an input script that uses a KIM model -(potential) for Lennard-Jones. - :line The argument {model} is the name of the KIM model for a specific -potential as KIM defines it. In principle, LAMMPS can invoke any KIM -model. You should get an error or warning message from either LAMMPS -or KIM if there is an incompatibility. - -Only a single pair_coeff command is used with the {kim} style which -specifies the mapping of LAMMPS atom types to KIM elements. This is -done by specifying N additional arguments after the * * in the -pair_coeff command, where N is the number of LAMMPS atom types: +potential as KIM defines it. For potentials archived in OpenKIM +this is the extended KIM ID (see "kim_commands"_kim_commands.html +for details). LAMMPS can invoke any KIM Model, however there can +be incompatibilities (for example unit matching issues). +In the event of an incompatibility, the code will terminate with +an error message. Check both the LAMMPS and KIM log files for details. + +Only a single {pair_coeff} command is used with the {kim} style, which +specifies the mapping of LAMMPS atom types to the species supported by +the KIM Model. This is done by specifying {N} additional arguments +after the * * in the {pair_coeff} command, where {N} is the number of +LAMMPS atom types: N element names = mapping of KIM elements to atom types :ul -As an example, imagine the KIM model supports Si and C atoms. If your -LAMMPS simulation has 4 atom types and you want the 1st 3 to be Si, -and the 4th to be C, you would use the following pair_coeff command: +For example, consider a KIM Model that supports Si and C species. +If the LAMMPS simulation has four atom types, where the first three are Si, +and the fourth is C, the following {pair_coeff} command would be used: pair_coeff * * Si Si Si C :pre -The 1st 2 arguments must be * * so as to span all LAMMPS atom types. -The first three Si arguments map LAMMPS atom types 1,2,3 to Si as -defined within KIM. The final C argument maps LAMMPS atom type 4 to C -as defined within KIM. +The first two arguments must be * * so as to span all LAMMPS atom types. +The first three Si arguments map LAMMPS atom types 1, 2, and 3 to Si as +defined within KIM Model. The final C argument maps LAMMPS atom type 4 to C. :line In addition to the usual LAMMPS error messages, the KIM library itself may generate errors, which should be printed to the screen. In this -case it is also useful to check the kim.log file for additional error +case it is also useful to check the {kim.log} file for additional error information. The file kim.log should be generated in the same directory where LAMMPS is running. To download, build, and install the KIM library on your system, see -the lib/kim/README file. Once you have done this and built LAMMPS +the {lib/kim/README} file. Once you have done this and built LAMMPS with the KIM package installed you can run the example input scripts -in examples/kim. +in {examples/kim}. :line @@ -103,16 +98,14 @@ This pair style can only be used via the {pair} keyword of the [Restrictions:] -This pair style is part of the KIM package. It is only enabled if -LAMMPS was built with that package. See the "Build -package"_Build_package.html doc page for more info. +This pair style is part of the KIM package. See details on +restrictions in "kim_commands"_kim_commands.html. This current version of pair_style kim is compatible with the kim-api package version 2.0.0 and higher. [Related commands:] -"pair_coeff"_pair_coeff.html, "kim_init"_kim_commands.html, -"kim_interactions"_kim_commands, "kim_query"_kim_commands.html +"pair_coeff"_pair_coeff.html, "kim_commands"_kim_commands.html [Default:] none -- GitLab From 94e1f87cb81ecd3b6f0d89e457ab94ae82f2641b Mon Sep 17 00:00:00 2001 From: Ellad Tadmor Date: Sun, 23 Jun 2019 17:36:36 -0500 Subject: [PATCH 087/627] Moved some content from pair_kim docs to kim_commands --- doc/src/kim_commands.txt | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/doc/src/kim_commands.txt b/doc/src/kim_commands.txt index 5a50a76879..99ed068c44 100644 --- a/doc/src/kim_commands.txt +++ b/doc/src/kim_commands.txt @@ -67,7 +67,7 @@ The {kim_query} web query tool provides the ability to use the predictions of IM Support is provided for unit conversion between the "unit style"_units.html used in the LAMMPS input script and the units required by the OpenKIM IM. This makes it possible to use a single input script with IMs using different units without change and minimizes the likelihood of errors due to incompatible units. :ul :link(IM_types) -Types of KIM IMs :h4 +Types of IMs in OpenKIM :h4 There are two types of IMs archived in OpenKIM: @@ -108,6 +108,10 @@ listed above the Model Page is located at: "https://openkim.org/id/SW_StillingerWeber_1985_Si__MO_405512056662_005"_https://openkim.org/id/SW_StillingerWeber_1985_Si__MO_405512056662_005 :pre +See the "current list of KIM Models and SMs archived in OpenKIM"_https://openkim.org/browse/models/by-species. +This list is sorted by species and can be filtered to display only +IMs for certain species combinations. + NOTE: It is also possible to locally install IMs not archived in OpenKIM, in which case their names do not have to conform to the KIM ID format. @@ -118,6 +122,9 @@ IM and perform necessary initialization ({kim_init}), and the second to set up the IM for use by executing any necessary LAMMPS commands ({kim_interactions}). Both are required. +See the {examples/kim} directory for example input scripts that use KIM Models +and KIM SMs. + OpenKIM IM Initialization ({kim_init}) :h5 The {kim_init} mode command must be issued [before] @@ -375,11 +382,16 @@ OpenKIM to function. [Restrictions:] The set of {kim_commands} is part of the KIM package. It is only enabled if -LAMMPS was built with that package. Furthermore, its correct -functioning depends on compiling LAMMPS with all required packages -installed that are required by the commands embedded in any KIM -SM used. -See the "Build package"_Build_package.html doc page for more info. +LAMMPS is built with that package. A requirement for the KIM package, +is the KIM API library that must be downloaded from the +"OpenKIM website"_https://openkim.org/kim-api/ and installed before +LAMMPS is compiled. When installing LAMMPS from binary, the kim-api package +is a dependency that is automatically downloaded and installed. See the KIM +section of the "Packages details"_Packages_details.html for details. + +Furthermore, when using {kim_commands} to run KIM SMs, any packages required +by the native potential being used or other commands or fixes that it invokes +must be installed. [Related commands:] -- GitLab From d150feb41aa7c13858d56d8dd7ac18212e626492 Mon Sep 17 00:00:00 2001 From: Ellad Tadmor Date: Sun, 23 Jun 2019 17:46:00 -0500 Subject: [PATCH 088/627] Small change to KIM package build --- doc/src/Build_extras.txt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/src/Build_extras.txt b/doc/src/Build_extras.txt index 220e9420fc..38d50522bb 100644 --- a/doc/src/Build_extras.txt +++ b/doc/src/Build_extras.txt @@ -177,11 +177,12 @@ use with LAMMPS. If you want to use the "kim_query"_kim_commands.html command, you also need to have libcurl installed with the matching development headers and the curl-config tool. -Note that in LAMMPS lingo, a KIM model driver is a pair style +Note that in LAMMPS jargon, a KIM model driver is a pair style (e.g. EAM or Tersoff). A KIM model is a pair style for a particular element or alloy and set of parameters, e.g. EAM for Cu with a -specific EAM potential file. Also note that downloading and installing -the KIM API library with all its models, may take a long time (10s of +specific EAM potential file. Also note that when downloading and +installing from source +the KIM API library with all its models, may take a long time (tens of minutes to hours) to build. Of course you only need to do that once. See the list of KIM model drivers here: -- GitLab From cf008c163def0bf64d77c8602b092cf4268261ed Mon Sep 17 00:00:00 2001 From: Ellad Tadmor Date: Sun, 23 Jun 2019 18:01:35 -0500 Subject: [PATCH 089/627] Corrected box rescaling --- doc/src/kim_commands.txt | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/doc/src/kim_commands.txt b/doc/src/kim_commands.txt index 99ed068c44..f039202e4e 100644 --- a/doc/src/kim_commands.txt +++ b/doc/src/kim_commands.txt @@ -225,7 +225,16 @@ from a file. For example if a configuration of atoms is read in from a dump file using the "read_dump"_read_dump.html command, the following can be done to convert the box and all atomic positions to the correct units: -change_box all x scale $\{_u_distance\} y scale $\{_u_distance\} z scale $\{_u_distance\} remap :pre +variable xyfinal equal xy*$\{_u_distance\} +variable xzfinal equal xz*$\{_u_distance\} +variable yzfinal equal yz*$\{_u_distance\} +change_box all x scale $\{_u_distance\} & +               y scale $\{_u_distance\} & +               z scale $\{_u_distance\} & +               xy final $\{xyfinal\} & +               xz final $\{xzfinal\} & +               yz final $\{yzfinal\} & +               remap :pre NOTE: Unit conversion will only work if the conversion factors are placed in all appropriate places in the input script. It is up to the user to do this -- GitLab From bfd0c4228d3505da1fad1028cb1629cab68375a6 Mon Sep 17 00:00:00 2001 From: Ellad Tadmor Date: Sun, 23 Jun 2019 18:29:59 -0500 Subject: [PATCH 090/627] Added text that ADP potentials are available in KIM as well as NIST --- doc/src/pair_adp.txt | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/doc/src/pair_adp.txt b/doc/src/pair_adp.txt index fc888ffbff..d5b07e8431 100644 --- a/doc/src/pair_adp.txt +++ b/doc/src/pair_adp.txt @@ -42,16 +42,18 @@ the ADP potential files themselves. Likewise, the ADP potential files list atomic masses; thus you do not need to use the "mass"_mass.html command to specify them. -The NIST WWW site distributes and documents ADP potentials: +[ADP potentials are available from:] -http://www.ctcms.nist.gov/potentials :pre +The NIST WWW site at http://www.ctcms.nist.gov/potentials. +Note that ADP potentials obtained from NIST must be converted +into the extended DYNAMO {setfl} format discussed below. +:l -Note that these must be converted into the extended DYNAMO {setfl} -format discussed below. +The OpenKIM Project at https://openkim.org provides ADP potentials +as Simulator Models that can be used directly in LAMMPS with +the "kim_commands interface"_kim_commands.html. +:l -The NIST site is maintained by Chandler Becker (cbecker at nist.gov) -who is good resource for info on interatomic potentials and file -formats. :line -- GitLab From 7afcfccf48fb06deccf9d185cabc377a5124d437 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 24 Jun 2019 13:51:41 -0400 Subject: [PATCH 091/627] follow convention to list all commands in a file as header --- doc/src/kim_commands.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/src/kim_commands.txt b/doc/src/kim_commands.txt index f039202e4e..2aa705b483 100644 --- a/doc/src/kim_commands.txt +++ b/doc/src/kim_commands.txt @@ -6,7 +6,9 @@ :line -kim_commands :h3 +kim_init command :h3 +kim_interactions command :h3 +kim_query command :h3 [Syntax:] -- GitLab From 826a14f54ab8bef2472ef16876706ee2f95897e5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 24 Jun 2019 14:16:00 -0400 Subject: [PATCH 092/627] add workaround for handline include files # Conflicts: # src/input.h --- src/input.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/input.cpp b/src/input.cpp index 0111cb5738..32b6b697b1 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -78,6 +78,7 @@ Input::Input(LAMMPS *lmp, int argc, char **argv) : Pointers(lmp) echo_screen = 0; echo_log = 1; + eof_return = 0; label_active = 0; labelstr = NULL; @@ -206,6 +207,7 @@ void Input::file() MPI_Bcast(&n,1,MPI_INT,0,world); if (n == 0) { if (label_active) error->all(FLERR,"Label wasn't found in input script"); + if (eof_return) break; if (me == 0) { if (infile != stdin) { fclose(infile); @@ -1057,6 +1059,11 @@ void Input::include() error->one(FLERR,str); } infiles[nfile++] = infile; + eof_return = 1; + file(); + eof_return = 0; + nfile--; + infile = infiles[nfile-1]; } } -- GitLab From 7f26862f9841ebaab34961288eca4a5ba1187e9c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 24 Jun 2019 14:16:51 -0400 Subject: [PATCH 093/627] simplify nested include file handling # Conflicts: # src/input.h --- src/input.cpp | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/src/input.cpp b/src/input.cpp index 32b6b697b1..e5fbec6d5a 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -78,7 +78,6 @@ Input::Input(LAMMPS *lmp, int argc, char **argv) : Pointers(lmp) echo_screen = 0; echo_log = 1; - eof_return = 0; label_active = 0; labelstr = NULL; @@ -207,18 +206,7 @@ void Input::file() MPI_Bcast(&n,1,MPI_INT,0,world); if (n == 0) { if (label_active) error->all(FLERR,"Label wasn't found in input script"); - if (eof_return) break; - if (me == 0) { - if (infile != stdin) { - fclose(infile); - infile = NULL; - } - nfile--; - } - MPI_Bcast(&nfile,1,MPI_INT,0,world); - if (nfile == 0) break; - if (me == 0) infile = infiles[nfile-1]; - continue; + break; } if (n > maxline) reallocate(line,maxline,n); @@ -1059,9 +1047,8 @@ void Input::include() error->one(FLERR,str); } infiles[nfile++] = infile; - eof_return = 1; file(); - eof_return = 0; + fclose(infile); nfile--; infile = infiles[nfile-1]; } -- GitLab From 13237155c8f3d01be9a7b9375672d56bd2e787d5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 24 Jun 2019 14:24:54 -0400 Subject: [PATCH 094/627] make processing of Input::file(const char* filename) more like processing an include file --- src/input.cpp | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/src/input.cpp b/src/input.cpp index e5fbec6d5a..644446710f 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -240,8 +240,8 @@ void Input::file() } /* ---------------------------------------------------------------------- - process all input from filename - called from library interface + process all input from file at filename + mostly called from library interface ------------------------------------------------------------------------- */ void Input::file(const char *filename) @@ -251,21 +251,30 @@ void Input::file(const char *filename) // call to file() will close filename and decrement nfile if (me == 0) { - if (nfile > 1) - error->one(FLERR,"Invalid use of library file() function"); + if (nfile == maxfile) { + maxfile++; + infiles = (FILE **) + memory->srealloc(infiles,maxfile*sizeof(FILE *),"input:infiles"); + } - if (infile && infile != stdin) fclose(infile); infile = fopen(filename,"r"); if (infile == NULL) { char str[128]; snprintf(str,128,"Cannot open input script %s",filename); error->one(FLERR,str); } - infiles[0] = infile; - nfile = 1; + infiles[nfile++] = infile; } + // process contents of file + file(); + + if (me == 0) { + fclose(infile); + nfile--; + infile = infiles[nfile-1]; + } } /* ---------------------------------------------------------------------- @@ -1047,7 +1056,13 @@ void Input::include() error->one(FLERR,str); } infiles[nfile++] = infile; - file(); + } + + // process contents of file + + file(); + + if (me == 0) { fclose(infile); nfile--; infile = infiles[nfile-1]; -- GitLab From f2380a24ef90945f421a90e5d482c58e0bef49b5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 24 Jun 2019 14:27:05 -0400 Subject: [PATCH 095/627] fix parallel processing input include bug --- src/input.cpp | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/src/input.cpp b/src/input.cpp index 268be5b774..2f617d2cd0 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -239,8 +239,8 @@ void Input::file() } /* ---------------------------------------------------------------------- - process all input from filename - called from library interface + process all input from file at filename + mostly called from library interface ------------------------------------------------------------------------- */ void Input::file(const char *filename) @@ -250,21 +250,30 @@ void Input::file(const char *filename) // call to file() will close filename and decrement nfile if (me == 0) { - if (nfile > 1) - error->one(FLERR,"Invalid use of library file() function"); + if (nfile == maxfile) { + maxfile++; + infiles = (FILE **) + memory->srealloc(infiles,maxfile*sizeof(FILE *),"input:infiles"); + } - if (infile && infile != stdin) fclose(infile); infile = fopen(filename,"r"); if (infile == NULL) { char str[128]; snprintf(str,128,"Cannot open input script %s",filename); error->one(FLERR,str); } - infiles[0] = infile; - nfile = 1; + infiles[nfile++] = infile; } + // process contents of file + file(); + + if (me == 0) { + fclose(infile); + nfile--; + infile = infiles[nfile-1]; + } } /* ---------------------------------------------------------------------- @@ -1041,7 +1050,13 @@ void Input::include() error->one(FLERR,str); } infiles[nfile++] = infile; - file(); + } + + // process contents of file + + file(); + + if (me == 0) { fclose(infile); nfile--; infile = infiles[nfile-1]; -- GitLab From 0ddcc023a5074e10b7e5974011e15542a2c5b105 Mon Sep 17 00:00:00 2001 From: Ellad Tadmor Date: Mon, 24 Jun 2019 13:54:55 -0500 Subject: [PATCH 096/627] Improvements and additions to kim_commands doc --- doc/src/kim_commands.txt | 54 +++++++++++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 9 deletions(-) diff --git a/doc/src/kim_commands.txt b/doc/src/kim_commands.txt index f039202e4e..68306ad6b7 100644 --- a/doc/src/kim_commands.txt +++ b/doc/src/kim_commands.txt @@ -170,10 +170,30 @@ SMs can never adjust their units.) If a match is possible, the LAMMPS {user_units}. If the match fails, the simulation is terminated with an error. -If unit conversion mode {is} active, then the LAMMPS "units"_units.html -command is called to set the units to the IM's required or preferred units. -Conversion factors between the IM's units and the {user_units} are -defined for all "physical quantities"_units.html (mass, distance, etc.). +Here is an example of a LAMMPS script to compute the cohesive energy +of a face-centered cubic (fcc) lattice for the Ercolessi and Adams (1994) +potential for Al: + +kim_init EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005 metal +boundary p p p +lattice fcc 4.032 +region simbox block 0 1 0 1 0 1 units lattice +create_box 1 simbox +create_atoms 1 box +mass 1 26.981539 +kim_interactions Al +run 0 +variable Ec equal (pe/count(all))/$\{_u_energy\} +print "Cohesive Energy = $\{EcJ\} eV" +:pre + +The above script will end with an error in the {kim_init} line if the +IM is changed to another potential for Al that does not work with {metal} +units. To address this {kim_init} offers the {unit_conversion_mode}. +If unit conversion mode {is} active, then {kim_init} calls the LAMMPS +"units"_units.html command to set the units to the IM's required or +preferred units. Conversion factors between the IM's units and the {user_units} +are defined for all "physical quantities"_units.html (mass, distance, etc.). (Note that converting to or from the "lj" unit style is not supported.) These factors are stored as "internal style variables"_variable.html with standard names: @@ -197,9 +217,11 @@ If desired, the input script can be designed to work with these conversion factors so that the script will work without change with any OpenKIM IM. (This approach is used in the "OpenKIM Testing Framework"_https://openkim.org/getting-started/kim-tests/.) -For example, the following simple script constructs an fcc lattice with -a lattice parameter defined in meters, computes the total energy, -and prints the cohesive energy in Joules regardless of the units of the IM. +For example, the script given above for the cohesive energy of fcc Al +can be rewritten to work with any IM regardless of units. The following +script constructs an fcc lattice with a lattice parameter defined in +meters, computes the total energy, and prints the cohesive energy in +Joules regardless of the units of the IM. kim_init EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005 si unit_conversion_mode boundary p p p @@ -339,18 +361,23 @@ lattice fcc $\{a0\} The {kim_query} command retrieves from "OpenKIM"_https://openkim.org the equilibrium lattice constant predicted by the Ercolessi and Adams (1994) -potential for the face-centered cubic (fcc) structure and places it in +potential for the fcc structure and places it in variable {a0}. This variable is then used on the next line to set up the crystal. By using {kim_query}, the user is saved the trouble and possible error of tracking this value down, or of having to perform an energy minimization to find the equilibrium lattice constant. +Note that in {unit_conversion_mode} the results obtained from a +{kim_query} would need to be converted to the appropriate units system. +For example, in the above script, the lattice command would need to be +changed to: "lattice fcc $\{a0\}*$\{_u_distance\}". + [Define a crystal at finite temperature accounting for thermal expansion] kim_init EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005 metal boundary p p p kim_query a0 get_lattice_constant_fcc units=\["angstrom"\] -kim_query alpha get_linear_thermal_expansion_fcc +kim_query alpha get_linear_thermal_expansion_fcc units=\{"1/K"\} variable DeltaT equal 300 lattice fcc $\{a0\}*$\{alpha\}*$\{DeltaT\} ... :pre @@ -375,6 +402,15 @@ The defect formation energy {Eform} is computed by subtracting from {Etot} the ideal fcc cohesive energy of the atoms in the system obtained from "OpenKIM"_https://openkim.org for the Ercolessi and Adams (1994) potential. +NOTE: {kim_query} commands return results archived in +"OpenKIM"_https://openkim.org. These results are obtained +using programs for computing material properties +(KIM Tests and KIM Test Drivers) that were contributed to OpenKIM. +In order to give credit to Test developers, the number of times results +from these programs are queried is tracked. No other information about +the nature of the query or its source is recorded. + + Citation of OpenKIM IMs :h4 When publishing results obtained using OpenKIM IMs researchers are requested -- GitLab From 1047d8f80e10a8c267eb4b022720da8f61f844c0 Mon Sep 17 00:00:00 2001 From: Ellad Tadmor Date: Mon, 24 Jun 2019 14:32:40 -0500 Subject: [PATCH 097/627] Change of terminology to "KIM Portable Model" and streamlining --- doc/src/kim_commands.txt | 55 ++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/doc/src/kim_commands.txt b/doc/src/kim_commands.txt index d42b509449..9be4a79db5 100644 --- a/doc/src/kim_commands.txt +++ b/doc/src/kim_commands.txt @@ -44,8 +44,8 @@ so that they can be used by LAMMPS scripts. These commands do not implement any computations directly, but rather generate LAMMPS input commands based on the information retrieved from the OpenKIM repository to initialize and activate OpenKIM IMs and query their predictions for use in the LAMMPS script. -All LAMMPS input commands executed by {kim_commands} are echoed to the -LAMMPS log file. +All LAMMPS input commands generated and executed by {kim_commands} are +echoed to the LAMMPS log file. Benefits of Using OpenKIM IMs :h4 @@ -65,7 +65,7 @@ OpenKIM is a member organization of "DataCite"_https://datacite.org/ and issues Convenience :h5 IMs in OpenKIM are distributed in binary form along with LAMMPS and can be used in a LAMMPS input script simply by providing their KIM ID in the {kim_init} command documented on this page. -The {kim_query} web query tool provides the ability to use the predictions of IMs for supported material properties (computed via "KIM Tests"https://openkim.org/getting-started/kim-tests/) as part of a LAMMPS input script setup and analysis. +The {kim_query} web query tool provides the ability to use the predictions of IMs for supported material properties (computed via "KIM Tests"_https://openkim.org/getting-started/kim-tests/) as part of a LAMMPS input script setup and analysis. Support is provided for unit conversion between the "unit style"_units.html used in the LAMMPS input script and the units required by the OpenKIM IM. This makes it possible to use a single input script with IMs using different units without change and minimizes the likelihood of errors due to incompatible units. :ul :link(IM_types) @@ -73,8 +73,8 @@ Types of IMs in OpenKIM :h4 There are two types of IMs archived in OpenKIM: -The first type is called a {KIM Model}. A KIM Model is an independent computer implementation of an IM written in one of the languages supported by KIM (C, C++, Fortran), which conforms to the KIM Application Programming Interface ("KIM API"_https://openkim.org/kim-api/). A KIM Model will work seamlessly with any simulation code that supports the KIM API (including LAMMPS; see "complete list of supported code"_https://openkim.org/projects-using-kim/). -The second type is called a {KIM Simulator Model} (SM). In this case, the IM is implemented natively within the simulation code ({simulator}), i.e. LAMMPS. A separate SM package is archived in OpenKIM for each parameterization of the IM, which includes all of the necessary parameter files, LAMMPS commands, and metadata (supported species, units, etc.) needed to run the IM in LAMMPS. :ol +The first type is called a {KIM Portable Model} (PM). A KIM PM is an independent computer implementation of an IM written in one of the languages supported by KIM (C, C++, Fortran), which conforms to the KIM Application Programming Interface ("KIM API"_https://openkim.org/kim-api/) Portable Model Interface (PMI) standard. A KIM PM will work seamlessly with any simulation code that supports the KIM API/PMI standard (including LAMMPS; see "complete list of supported codes"_https://openkim.org/projects-using-kim/). +The second type is called a {KIM Simulator Model} (SM). A KIM SM is an IM that is implemented natively within a simulation code ({simulator}) that supports the KIM API/SMI (Simulator Model Interface); in this case LAMMPS. A separate SM package is archived in OpenKIM for each parameterization of the IM, which includes all of the necessary parameter files, LAMMPS commands, and metadata (supported species, units, etc.) needed to run the IM in LAMMPS. :ol With these two IM types, OpenKIM can archive and test almost all IMs that can be used by LAMMPS. (It is easy to contribute new IMs to OpenKIM, see @@ -85,7 +85,7 @@ OpenKIM IMs are uniquely identified by a a human-readable prefix identifying the type of IM, authors, publication year, and supported species, separated by two underscores from the KIM ID itself, which begins with an IM code -({MO} for a KIM Model, and {SM} for a KIM Simulator Model) +({MO} for a KIM Portable Model, and {SM} for a KIM Simulator Model) followed by a unique 12-digit code and a 3-digit version identifier. By convention SM prefixes begin with {Sim_} to readily identify them. @@ -97,7 +97,7 @@ providing all the information on the IM including a title, description, authorship and citation information, test and verification check results, visualizations of results, a wiki with documentation and user comments, and access to raw files, and other information. -This is referred to as the "Model Page" or "SM Page". +This is referred to as the "PM Page" or "SM Page". The URL for such a page is constructed from the "extended KIM ID"_https://openkim.org/about-kim-ids/ of the IM: @@ -110,7 +110,7 @@ listed above the Model Page is located at: "https://openkim.org/id/SW_StillingerWeber_1985_Si__MO_405512056662_005"_https://openkim.org/id/SW_StillingerWeber_1985_Si__MO_405512056662_005 :pre -See the "current list of KIM Models and SMs archived in OpenKIM"_https://openkim.org/browse/models/by-species. +See the "current list of KIM PMs and SMs archived in OpenKIM"_https://openkim.org/browse/models/by-species. This list is sorted by species and can be filtered to display only IMs for certain species combinations. @@ -124,7 +124,7 @@ IM and perform necessary initialization ({kim_init}), and the second to set up the IM for use by executing any necessary LAMMPS commands ({kim_interactions}). Both are required. -See the {examples/kim} directory for example input scripts that use KIM Models +See the {examples/kim} directory for example input scripts that use KIM PMs and KIM SMs. OpenKIM IM Initialization ({kim_init}) :h5 @@ -146,17 +146,17 @@ in the input script. (Any dimensioned numerical values in the input script and values read in from files are expected to be in the {user_units} system.) -The selected IM can be either a "KIM Model or a KIM SM"_#IM_types. +The selected IM can be either a "KIM PM or a KIM SM"_#IM_types. For a KIM SM, the {kim_init} command verifies that the SM is designed to work with LAMMPS (and not another simulation code). -In addition, the version strings for the LAMMPS version used for defining +In addition, the LAMMPS version used for defining the SM and the LAMMPS version being currently run are -printed, to help diagnose any incompatible changes to input script or +printed to help diagnose any incompatible changes to input script or command syntax between the two LAMMPS versions. Based on the selected model {kim_init} may modify the "atom_style"_atom_style.html. -Some SMs have requirements for this variable. If this is the case, then +Some SMs have requirements for this setting. If this is the case, then {atom_style} will be set to the required style. Otherwise, the value is left unchanged (which in the absence of an {atom_style} command in the input script is the "default atom_style value"_atom_style.html). @@ -166,7 +166,7 @@ on whether or not {unit conversion mode} is activated as indicated by the optional {unitarg} argument. If unit conversion mode is [not] active, then {user_units} must either match the required units of the IM or the IM must be able -to adjust its units to match. (The latter is only possible with some KIM Models; +to adjust its units to match. (The latter is only possible with some KIM PMs; SMs can never adjust their units.) If a match is possible, the LAMMPS "units"_units.html command is called to set the units to {user_units}. If the match fails, the simulation is terminated with @@ -198,7 +198,7 @@ preferred units. Conversion factors between the IM's units and the {user_units} are defined for all "physical quantities"_units.html (mass, distance, etc.). (Note that converting to or from the "lj" unit style is not supported.) These factors are stored as "internal style variables"_variable.html with -standard names: +the following standard names: _u_mass _u_distance @@ -241,7 +241,7 @@ Note the multiplication by $\{_u_distance\} and $\{_u_mass\} to convert from SI units (specified in the {kim_init} command) to whatever units the IM uses (metal in this case), and the division by $\{_u_energy\} to convert from the IM's energy units to SI units (Joule). This script -will work correctly for any IM for Al (KIM Model or SM) selected by the +will work correctly for any IM for Al (KIM PM or SM) selected by the {kim_init} command. Care must be taken to apply unit conversion to dimensional variables read in @@ -283,10 +283,10 @@ kim_interactions Si Si Si C The {kim_interactions} command performs all the necessary steps to set up the OpenKIM IM selected in the {kim_init} command. The specific actions depend -on whether the IM is a KIM Model or a KIM SM. For a KIM Model, +on whether the IM is a KIM PM or a KIM SM. For a KIM PM, a "pair_style kim"_pair_kim.html command is executed followed by the appropriate {pair_coeff} command. For example, for the -Ercolessi and Adams (1994) KIM Model for Al set by the following commands: +Ercolessi and Adams (1994) KIM PM for Al set by the following commands: kim_init EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005 metal ... @@ -302,8 +302,7 @@ pair_coeff * * Al :pre For a KIM SM, the generated input commands may be more complex and require that LAMMPS is built with the required packages included for the type of potential being used. The set of commands to be executed -is defined in the SM specification file, which is part of the SM package -on "OpenKIM"_https://openkim.org. +is defined in the SM specification file, which is part of the SM package. For example, for the Strachan et al. (2003) ReaxFF SM set by the following commands: @@ -416,14 +415,16 @@ the nature of the query or its source is recorded. Citation of OpenKIM IMs :h4 When publishing results obtained using OpenKIM IMs researchers are requested -to cite the OpenKIM project "(Tadmor)"_#kim-mainpaper and KIM API -"(Elliott)"_#kim-api as well as the specific IM codes used in the simulations. +to cite the OpenKIM project "(Tadmor)"_#kim-mainpaper, KIM API +"(Elliott)"_#kim-api, and the specific IM codes used in the simulations, +in addition to the relevant scientific references for the IM. The citation format for an IM is displayed on its page on -"OpenKIM"_https://openkim.org along with the corresponding BibTex file. +"OpenKIM"_https://openkim.org along with the corresponding BibTex file, +and is automatically added to the LAMMPS {log.cite} file. -Citing the codes used in the simulation gives credit -to the researchers who developed them and enables open source efforts like -OpenKIM to function. +Citing the IM software (KIM infrastucture and specific PM or SM codes) +used in the simulation gives credit to the researchers who developed them +and enables open source efforts like OpenKIM to function. [Restrictions:] @@ -442,7 +443,7 @@ must be installed. [Related commands:] -"pair_style kim"_pair_kim.html, "units"_units.html +"pair_style kim"_pair_kim.html :line -- GitLab From b6535367501e4f9c3e85c32ade7cea6ef6cd6f9d Mon Sep 17 00:00:00 2001 From: Ellad Tadmor Date: Mon, 24 Jun 2019 14:38:44 -0500 Subject: [PATCH 098/627] Switched pair_style kim doc to "KIM Portable Model" terminology --- doc/src/pair_kim.txt | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/doc/src/pair_kim.txt b/doc/src/pair_kim.txt index 86d13808b0..41593675ba 100644 --- a/doc/src/pair_kim.txt +++ b/doc/src/pair_kim.txt @@ -27,11 +27,12 @@ potentials to enable their use in LAMMPS scripts. The preferred interface for using interatomic models archived in OpenKIM is the "kim_commands interface"_kim_commands.html. That -interface supports both "KIM Models" that conform to the KIM API -and can be used by any KIM-compliant simulation code, and +interface supports both "KIM Portable Models" (PMs) that conform to the +KIM API Portable Model Interface (PMI) and can be used by any +simulation code that conforms to the KIM API/PMI, and "KIM Simulator Models" that are natively implemented within a single simulation code (like LAMMPS) and can only be used with it. -The {pair_style kim} command is limited to KIM Models. It is +The {pair_style kim} command is limited to KIM PMs. It is used by the "kim_commands interface"_kim_commands.html as needed. NOTE: Since {pair_style kim} is called by {kim_interactions} as needed, @@ -39,23 +40,23 @@ is not recommended to be directly used in input scripts. :line -The argument {model} is the name of the KIM model for a specific -potential as KIM defines it. For potentials archived in OpenKIM +The argument {model} is the name of the KIM PM. +For potentials archived in OpenKIM this is the extended KIM ID (see "kim_commands"_kim_commands.html -for details). LAMMPS can invoke any KIM Model, however there can -be incompatibilities (for example unit matching issues). +for details). LAMMPS can invoke any KIM PM, however there can +be incompatibilities (for example due to unit matching issues). In the event of an incompatibility, the code will terminate with an error message. Check both the LAMMPS and KIM log files for details. Only a single {pair_coeff} command is used with the {kim} style, which specifies the mapping of LAMMPS atom types to the species supported by -the KIM Model. This is done by specifying {N} additional arguments +the KIM PM. This is done by specifying {N} additional arguments after the * * in the {pair_coeff} command, where {N} is the number of LAMMPS atom types: N element names = mapping of KIM elements to atom types :ul -For example, consider a KIM Model that supports Si and C species. +For example, consider a KIM PM that supports Si and C species. If the LAMMPS simulation has four atom types, where the first three are Si, and the fourth is C, the following {pair_coeff} command would be used: @@ -63,14 +64,14 @@ pair_coeff * * Si Si Si C :pre The first two arguments must be * * so as to span all LAMMPS atom types. The first three Si arguments map LAMMPS atom types 1, 2, and 3 to Si as -defined within KIM Model. The final C argument maps LAMMPS atom type 4 to C. +defined within KIM PM. The final C argument maps LAMMPS atom type 4 to C. :line In addition to the usual LAMMPS error messages, the KIM library itself may generate errors, which should be printed to the screen. In this case it is also useful to check the {kim.log} file for additional error -information. The file kim.log should be generated in the same +information. The file {kim.log} should be generated in the same directory where LAMMPS is running. To download, build, and install the KIM library on your system, see -- GitLab From 4284a4fac41a36d0d897ff9a3f079719f57973a0 Mon Sep 17 00:00:00 2001 From: Ellad Tadmor Date: Mon, 24 Jun 2019 14:51:35 -0500 Subject: [PATCH 099/627] Changed me to me_si and fixed some typos in comments --- src/KIM/kim_units.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/KIM/kim_units.cpp b/src/KIM/kim_units.cpp index fe90d58e9e..40f4917601 100644 --- a/src/KIM/kim_units.cpp +++ b/src/KIM/kim_units.cpp @@ -76,9 +76,9 @@ double const Nav = 6.022140857e23; // [unitless] Avogadro's number // (NIST value) // double const Nav = 6.02214076e23; // [unitless] Avogadro's number // (official value May 2019) -double const me = 9.10938356e-31; // [kg] electron rest mass +double const me_si = 9.10938356e-31; // [kg] electron rest mass // (NIST value) -// double me = 9.10938291e-31; // [kg] electron rest mass +// double me_si = 9.10938291e-31; // [kg] electron rest mass double const e_si = 1.6021766208e-19; // [C] elementary charge // (charge of an electron/proton) // (NIST value) @@ -114,8 +114,9 @@ double const attogram_si = 1e-21; // [kg[ attogram double const atu_si = 2.418884326509e-17; // [s] atomic time unit // ( = hbar/E_h where E_h is the // Hartree energy) (NIST value) -double const atu_electron_si = atu_si*sqrt(amu_si/me); // [s] atomic time unit - // used in electron system (see https://sourceforge.net/p/lammps/mailman/lammps-users/thread/BCA2BDB2-BA03-4280-896F-1E6120EF47B2%40caltech.edu/) +double const atu_electron_si = atu_si*sqrt(amu_si/me_si); + // [s] atomic time unit + // used in electron system (see https://sourceforge.net/p/lammps/mailman/lammps-users/thread/BCA2BDB2-BA03-4280-896F-1E6120EF47B2%40caltech.edu/) double const microsecond_si = 1e-6; // [s] microsecond double const nanosecond_si = 1e-9; // [s] nanosecond double const picosecond_si = 1e-12; // [s] picosecond @@ -130,13 +131,12 @@ double const amu_per_bohrcu_si = amu_si/pow(bohr_si,3); // [kg/m^3] amu/bohr^3 double const picogram_per_micrometercu_si = picogram_si/pow(micrometer_si,3); // [kg/m^3] picogram/micrometer^3 double const attogram_per_nanometercu_si = - attogram_si/pow(nanometer_si,3); // [kg/m^3] attogram/ - // nanomaterial^3 + attogram_si/pow(nanometer_si,3); // [kg/m^3] attogram/nanometer^3 /*---------------------- Energy/torque units ------------------------ */ -double const kcal_si = 4184.0; // [J] kilocalroie (heat energy +double const kcal_si = 4184.0; // [J] kilocalorie (heat energy // involved in warming up one // kilogram of water by one // degree Kelvin) @@ -155,8 +155,8 @@ double const erg_si = 1e-7; // [J] erg double const dyne_centimeter_si = 1e-7; // [J[ dyne*centimeter double const picogram_micrometersq_per_microsecondsq_si = picogram_si*pow(micrometer_si,2)/pow(microsecond_si,2); - // [J] pigogram*micrometer^2/ - // micorsecond^2 + // [J] picogram*micrometer^2/ + // microsecond^2 double const attogram_nanometersq_per_nanosecondsq_si = attogram_si*pow(nanometer_si,2)/pow(nanosecond_si,2); // [J] attogram*nanometer^2/ -- GitLab From 86d878a7eb4b73432eab53538a2c114571be63e0 Mon Sep 17 00:00:00 2001 From: Ellad Tadmor Date: Mon, 24 Jun 2019 15:26:41 -0500 Subject: [PATCH 100/627] Updated language on availability of ADP potentials in OpenKIM --- doc/src/pair_adp.txt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/doc/src/pair_adp.txt b/doc/src/pair_adp.txt index d5b07e8431..de6717a6c3 100644 --- a/doc/src/pair_adp.txt +++ b/doc/src/pair_adp.txt @@ -49,12 +49,11 @@ Note that ADP potentials obtained from NIST must be converted into the extended DYNAMO {setfl} format discussed below. :l -The OpenKIM Project at https://openkim.org provides ADP potentials -as Simulator Models that can be used directly in LAMMPS with -the "kim_commands interface"_kim_commands.html. +The OpenKIM Project at https://openkim.org/browse/models/by-type provides +ADP potentials that can be used directly in LAMMPS with the "kim_commands +interface"_kim_commands.html. :l - :line Only a single pair_coeff command is used with the {adp} style which -- GitLab From 6a6d08e18ef9f47e679dd79b841bdc1faf05d849 Mon Sep 17 00:00:00 2001 From: Julien Devemy Date: Tue, 25 Jun 2019 12:01:29 +0200 Subject: [PATCH 101/627] Better compute_pressure hybrid and doc --- doc/src/compute_pressure.txt | 8 ++++-- src/compute_pressure.cpp | 50 ++++++++++++++++++++++++++---------- 2 files changed, 42 insertions(+), 16 deletions(-) diff --git a/doc/src/compute_pressure.txt b/doc/src/compute_pressure.txt index bd6e38e392..fd9bfb7aff 100644 --- a/doc/src/compute_pressure.txt +++ b/doc/src/compute_pressure.txt @@ -16,12 +16,13 @@ ID, group-ID are documented in "compute"_compute.html command pressure = style name of this compute command temp-ID = ID of compute that calculates temperature, can be NULL if not needed zero or more keywords may be appended -keyword = {ke} or {pair} or {bond} or {angle} or {dihedral} or {improper} or {kspace} or {fix} or {virial} :ul +keyword = {ke} or {pair} or {bond} or {angle} or {dihedral} or {improper} or {kspace} or {fix} or {virial} or {hybridpair} :ul [Examples:] compute 1 all pressure thermo_temp -compute 1 all pressure NULL pair bond :pre +compute 1 all pressure NULL pair bond +compute 1 all pressure NULL hybridpair lj/cut :pre [Description:] @@ -67,6 +68,9 @@ extra keywords are listed, then only those components are summed to compute temperature or ke and/or the virial. The {virial} keyword means include all terms except the kinetic energy {ke}. +The {hybridpair} keyword means to only include contribution +from a subpair in a {hybrid} or {hybrid/overlay} pair style. + Details of how LAMMPS computes the virial efficiently for the entire system, including for many-body potentials and accounting for the effects of periodic boundary conditions are discussed in diff --git a/src/compute_pressure.cpp b/src/compute_pressure.cpp index 8381e04fa8..96f577219d 100644 --- a/src/compute_pressure.cpp +++ b/src/compute_pressure.cpp @@ -81,8 +81,37 @@ ComputePressure::ComputePressure(LAMMPS *lmp, int narg, char **arg) : int iarg = 4; while (iarg < narg) { if (strcmp(arg[iarg],"ke") == 0) keflag = 1; - else if (strcmp(arg[iarg],"hybridpair") == 0) - hybridpairflag = force->inumeric(FLERR, arg[++iarg]); + else if (strcmp(arg[iarg],"hybridpair") == 0) { + int n = strlen(arg[++iarg]) + 1; + if (lmp->suffix) n += strlen(lmp->suffix) + 1; + pstyle = new char[n]; + strcpy(pstyle,arg[iarg++]); + + nsub = 0; + + if (narg > iarg) { + if (isdigit(arg[iarg][0])) { + nsub = force->inumeric(FLERR,arg[iarg]); + ++iarg; + if (nsub <= 0) + error->all(FLERR,"Illegal compute pressure command"); + } + } + + // check if pair style with and without suffix exists + + hybridpair = (Pair *) force->pair_match(pstyle,1,nsub); + if (!hybridpair && lmp->suffix) { + strcat(pstyle,"/"); + strcat(pstyle,lmp->suffix); + hybridpair = (Pair *) force->pair_match(pstyle,1,nsub); + } + + if (!hybridpair) + error->all(FLERR,"Unrecognized pair style in compute pressure command"); + + hybridpairflag = 1; + } else if (strcmp(arg[iarg],"pair") == 0) pairflag = 1; else if (strcmp(arg[iarg],"bond") == 0) bondflag = 1; else if (strcmp(arg[iarg],"angle") == 0) angleflag = 1; @@ -144,12 +173,7 @@ void ComputePressure::init() nvirial = 0; vptr = NULL; - if (hybridpairflag > 0 && force->pair) { - if (strstr(force->pair_style, "hybrid")) { - PairHybrid *ph = (PairHybrid *) force->pair; - if (hybridpairflag <= ph->nstyles) nvirial++; - } - } + if (hybridpairflag && force->pair) nvirial++; if (pairflag && force->pair) nvirial++; if (bondflag && atom->molecular && force->bond) nvirial++; if (angleflag && atom->molecular && force->angle) nvirial++; @@ -162,12 +186,10 @@ void ComputePressure::init() if (nvirial) { vptr = new double*[nvirial]; nvirial = 0; - if (hybridpairflag > 0 && force->pair) { - if (strstr(force->pair_style, "hybrid")) { - PairHybrid *ph = (PairHybrid *) force->pair; - if (hybridpairflag <= ph->nstyles) - vptr[nvirial++] = ph->styles[hybridpairflag-1]->virial; - } + if (hybridpairflag && force->pair) { + PairHybrid *ph = (PairHybrid *) force->pair; + ph->no_virial_fdotr_compute = 1; + vptr[nvirial++] = hybridpair->virial; } if (pairflag && force->pair) vptr[nvirial++] = force->pair->virial; if (bondflag && force->bond) vptr[nvirial++] = force->bond->virial; -- GitLab From 61ddc98a5a9ef9d53dc7f3227262b755c20fb7f7 Mon Sep 17 00:00:00 2001 From: Julien Devemy Date: Tue, 25 Jun 2019 13:30:41 +0200 Subject: [PATCH 102/627] Missing compute_pressure.h --- src/compute_pressure.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/compute_pressure.h b/src/compute_pressure.h index 3259377bd8..31983e8e2c 100644 --- a/src/compute_pressure.h +++ b/src/compute_pressure.h @@ -42,10 +42,15 @@ class ComputePressure : public Compute { char *id_temp; double virial[6]; int hybridpairflag; + class Pair *hybridpair; int keflag,pairflag,bondflag,angleflag,dihedralflag,improperflag; int fixflag,kspaceflag; void virial_compute(int, int); + + private: + int nsub; + char *pstyle; }; } -- GitLab From 2fd924562b94c9fb4d1b6a933211416e07b3b869 Mon Sep 17 00:00:00 2001 From: Julien Devemy Date: Tue, 25 Jun 2019 15:15:30 +0200 Subject: [PATCH 103/627] Spell correction --- doc/src/compute_pressure.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/compute_pressure.txt b/doc/src/compute_pressure.txt index fd9bfb7aff..070376075e 100644 --- a/doc/src/compute_pressure.txt +++ b/doc/src/compute_pressure.txt @@ -69,7 +69,7 @@ compute temperature or ke and/or the virial. The {virial} keyword means include all terms except the kinetic energy {ke}. The {hybridpair} keyword means to only include contribution -from a subpair in a {hybrid} or {hybrid/overlay} pair style. +from a sub-style in a {hybrid} or {hybrid/overlay} pair style. Details of how LAMMPS computes the virial efficiently for the entire system, including for many-body potentials and accounting for the -- GitLab From e08146c31fa887300dbba54ee01e3f69782440e5 Mon Sep 17 00:00:00 2001 From: "Dan S. Bolintineanu" Date: Tue, 25 Jun 2019 12:06:18 -0600 Subject: [PATCH 104/627] Allow twisting torque to be used without rolling torque in pair granular --- src/GRANULAR/pair_granular.cpp | 39 +++++++++++++++++----------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/src/GRANULAR/pair_granular.cpp b/src/GRANULAR/pair_granular.cpp index 913f6f8b59..77b1981786 100644 --- a/src/GRANULAR/pair_granular.cpp +++ b/src/GRANULAR/pair_granular.cpp @@ -475,16 +475,12 @@ void PairGranular::compute(int eflag, int vflag) fs3 = -Ft*vtr3; } - //**************************************** - // rolling resistance - //**************************************** - - if (roll_model[itype][jtype] != ROLL_NONE) { + if (roll_model[itype][jtype] != ROLL_NONE || + twist_model[itype][jtype] != TWIST_NONE){ relrot1 = omega[i][0] - omega[j][0]; relrot2 = omega[i][1] - omega[j][1]; relrot3 = omega[i][2] - omega[j][2]; - - // rolling velocity, + // rolling velocity, // see eq. 31 of Wang et al, Particuology v 23, p 49 (2015) // this is different from the Marshall papers, // which use the Bagi/Kuhn formulation @@ -492,7 +488,12 @@ void PairGranular::compute(int eflag, int vflag) // - 0.5*((radj-radi)/radsum)*vtr1; // - 0.5*((radj-radi)/radsum)*vtr2; // - 0.5*((radj-radi)/radsum)*vtr3; + } + //**************************************** + // rolling resistance + //**************************************** + if (roll_model[itype][jtype] != ROLL_NONE) { vrl1 = Reff*(relrot2*nz - relrot3*ny); vrl2 = Reff*(relrot3*nx - relrot1*nz); vrl3 = Reff*(relrot1*ny - relrot2*nx); @@ -1231,10 +1232,10 @@ void PairGranular::write_restart(FILE *fp) fwrite(&tangential_model[i][j],sizeof(int),1,fp); fwrite(&roll_model[i][j],sizeof(int),1,fp); fwrite(&twist_model[i][j],sizeof(int),1,fp); - fwrite(&normal_coeffs[i][j],sizeof(double),4,fp); - fwrite(&tangential_coeffs[i][j],sizeof(double),3,fp); - fwrite(&roll_coeffs[i][j],sizeof(double),3,fp); - fwrite(&twist_coeffs[i][j],sizeof(double),3,fp); + fwrite(normal_coeffs[i][j],sizeof(double),4,fp); + fwrite(tangential_coeffs[i][j],sizeof(double),3,fp); + fwrite(roll_coeffs[i][j],sizeof(double),3,fp); + fwrite(twist_coeffs[i][j],sizeof(double),3,fp); fwrite(&cutoff_type[i][j],sizeof(double),1,fp); } } @@ -1261,10 +1262,10 @@ void PairGranular::read_restart(FILE *fp) fread(&tangential_model[i][j],sizeof(int),1,fp); fread(&roll_model[i][j],sizeof(int),1,fp); fread(&twist_model[i][j],sizeof(int),1,fp); - fread(&normal_coeffs[i][j],sizeof(double),4,fp); - fread(&tangential_coeffs[i][j],sizeof(double),3,fp); - fread(&roll_coeffs[i][j],sizeof(double),3,fp); - fread(&twist_coeffs[i][j],sizeof(double),3,fp); + fread(normal_coeffs[i][j],sizeof(double),4,fp); + fread(tangential_coeffs[i][j],sizeof(double),3,fp); + fread(roll_coeffs[i][j],sizeof(double),3,fp); + fread(twist_coeffs[i][j],sizeof(double),3,fp); fread(&cutoff_type[i][j],sizeof(double),1,fp); } MPI_Bcast(&normal_model[i][j],1,MPI_INT,0,world); @@ -1272,10 +1273,10 @@ void PairGranular::read_restart(FILE *fp) MPI_Bcast(&tangential_model[i][j],1,MPI_INT,0,world); MPI_Bcast(&roll_model[i][j],1,MPI_INT,0,world); MPI_Bcast(&twist_model[i][j],1,MPI_INT,0,world); - MPI_Bcast(&normal_coeffs[i][j],4,MPI_DOUBLE,0,world); - MPI_Bcast(&tangential_coeffs[i][j],3,MPI_DOUBLE,0,world); - MPI_Bcast(&roll_coeffs[i][j],3,MPI_DOUBLE,0,world); - MPI_Bcast(&twist_coeffs[i][j],3,MPI_DOUBLE,0,world); + MPI_Bcast(normal_coeffs[i][j],4,MPI_DOUBLE,0,world); + MPI_Bcast(tangential_coeffs[i][j],3,MPI_DOUBLE,0,world); + MPI_Bcast(roll_coeffs[i][j],3,MPI_DOUBLE,0,world); + MPI_Bcast(twist_coeffs[i][j],3,MPI_DOUBLE,0,world); MPI_Bcast(&cutoff_type[i][j],1,MPI_DOUBLE,0,world); } } -- GitLab From f6319146b04b04e4887fdfe44a47ebc45544d97a Mon Sep 17 00:00:00 2001 From: "Ryan S. Elliott" Date: Tue, 25 Jun 2019 15:03:24 -0500 Subject: [PATCH 105/627] Update kim_query to new interface --- src/KIM/kim_query.cpp | 24 ++++++++++++++++++++---- src/KIM/kim_query.h | 3 +-- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/KIM/kim_query.cpp b/src/KIM/kim_query.cpp index e4818abc94..2bb404ec26 100644 --- a/src/KIM/kim_query.cpp +++ b/src/KIM/kim_query.cpp @@ -51,7 +51,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Designed for use with the kim-api-2.0.2 (and newer) package + Designed for use with the kim-api-2.1.0 (and newer) package ------------------------------------------------------------------------- */ #include @@ -61,7 +61,9 @@ #include "comm.h" #include "error.h" #include "input.h" +#include "modify.h" #include "variable.h" +#include "fix_store_kim.h" #if defined(LMP_KIM_CURL) #include @@ -77,7 +79,7 @@ struct WriteBuf { size_t sizeleft; }; -static char *do_query(char *, int, char **, int, MPI_Comm); +static char *do_query(char *, char *, int, char **, int, MPI_Comm); static size_t write_callback(void *, size_t, size_t, void *); #endif @@ -90,12 +92,23 @@ void KimQuery::command(int narg, char **arg) if (narg < 2) error->all(FLERR,"Illegal kim_query command"); + // check if we had a kim_init command by finding fix STORE/KIM + // retrieve model name. + char * model_name; + + int ifix = modify->find_fix("KIM_MODEL_STORE"); + if (ifix >= 0) { + FixStoreKIM *fix_store = (FixStoreKIM *) modify->fix[ifix]; + model_name = (char *)fix_store->getptr("model_name"); + } else error->all(FLERR,"Must use 'kim_init' before 'kim_query'"); + + varname = arg[0]; function = arg[1]; #if defined(LMP_KIM_CURL) - value = do_query(function, narg-2, arg+2, comm->me, world); + value = do_query(function, model_name, narg-2, arg+2, comm->me, world); // check for valid result // on error the content of "value" is a '\0' byte @@ -147,7 +160,8 @@ size_t write_callback(void *data, size_t size, size_t nmemb, void *userp) return 0; // done } -char *do_query(char *qfunction, int narg, char **arg, int rank, MPI_Comm comm) +char *do_query(char *qfunction, char * model_name, int narg, char **arg, + int rank, MPI_Comm comm) { char value[512], *retval; @@ -173,6 +187,8 @@ char *do_query(char *qfunction, int narg, char **arg, int rank, MPI_Comm comm) url += qfunction; std::string query(arg[0]); + query += "&model="; + query += model_name; for (int i=1; i < narg; ++i) { query += '&'; query += arg[i]; diff --git a/src/KIM/kim_query.h b/src/KIM/kim_query.h index 3644e4519b..b5433def79 100644 --- a/src/KIM/kim_query.h +++ b/src/KIM/kim_query.h @@ -51,7 +51,7 @@ ------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- - Designed for use with the kim-api-2.0.2 (and newer) package + Designed for use with the kim-api-2.1.0 (and newer) package ------------------------------------------------------------------------- */ #ifdef COMMAND_CLASS @@ -71,7 +71,6 @@ class KimQuery : protected Pointers { public: KimQuery(class LAMMPS *lmp) : Pointers(lmp) {}; void command(int, char **); - }; } -- GitLab From f1dfcaf514948935724df4b0b754adecfca3cf04 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Tue, 25 Jun 2019 14:47:21 -0600 Subject: [PATCH 106/627] WIP --- src/KOKKOS/pair_snap_kokkos.h | 25 +- src/KOKKOS/pair_snap_kokkos_impl.h | 379 ++++--- src/KOKKOS/sna_kokkos.h | 51 +- src/KOKKOS/sna_kokkos_impl.h | 1465 +++++++++++++++++----------- 4 files changed, 1184 insertions(+), 736 deletions(-) diff --git a/src/KOKKOS/pair_snap_kokkos.h b/src/KOKKOS/pair_snap_kokkos.h index b2019879ed..8be0bf9afb 100644 --- a/src/KOKKOS/pair_snap_kokkos.h +++ b/src/KOKKOS/pair_snap_kokkos.h @@ -31,7 +31,10 @@ PairStyle(snap/kk/host,PairSNAPKokkos) namespace LAMMPS_NS { template -struct TagPairSNAP{}; +struct TagPairSNAPCompute{}; + +struct TagPairSNAPBeta{}; +struct TagPairSNAPBispectrum{}; template class PairSNAPKokkos : public PairSNAP { @@ -53,11 +56,17 @@ public: template KOKKOS_INLINE_FUNCTION - void operator() (TagPairSNAP,const typename Kokkos::TeamPolicy >::member_type& team) const; + void operator() (TagPairSNAPCompute,const typename Kokkos::TeamPolicy >::member_type& team) const; template KOKKOS_INLINE_FUNCTION - void operator() (TagPairSNAP,const typename Kokkos::TeamPolicy >::member_type& team, EV_FLOAT&) const; + void operator() (TagPairSNAPCompute,const typename Kokkos::TeamPolicy >::member_type& team, EV_FLOAT&) const; + + KOKKOS_INLINE_FUNCTION + void operator() (TagPairSNAPBeta,const typename Kokkos::TeamPolicy::member_type& team) const; + + KOKKOS_INLINE_FUNCTION + void operator() (TagPairSNAPBispectrum,const typename Kokkos::TeamPolicy::member_type& team) const; template KOKKOS_INLINE_FUNCTION @@ -82,10 +91,14 @@ protected: SNAKokkos snaKK; // How much parallelism to use within an interaction - int vector_length; + int vector_length,team_size; + int team_scratch_size; + int thread_scratch_size; int eflag,vflag; + void compute_beta(); + void compute_bispectrum(); void allocate(); //void read_files(char *, char *); /*template @@ -117,7 +130,9 @@ inline double dist2(double* x,double* y); Kokkos::View d_radelem; // element radii Kokkos::View d_wjelem; // elements weights Kokkos::View d_coeffelem; // element bispectrum coefficients - Kokkos::View d_map; // mapping from atom types to elements + Kokkos::View d_map; // mapping from atom types to elements + Kokkos::View d_beta; // betas for all atoms in list + Kokkos::View d_bispectrum; // bispectrum components for all atoms in list typedef Kokkos::DualView tdual_fparams; tdual_fparams k_cutsq; diff --git a/src/KOKKOS/pair_snap_kokkos_impl.h b/src/KOKKOS/pair_snap_kokkos_impl.h index 0ec4ed0995..687c9dc7cb 100644 --- a/src/KOKKOS/pair_snap_kokkos_impl.h +++ b/src/KOKKOS/pair_snap_kokkos_impl.h @@ -186,31 +186,45 @@ void PairSNAPKokkos::compute(int eflag_in, int vflag_in) snaKK.nmax = max_neighs; - T_INT team_scratch_size = snaKK.size_team_scratch_arrays(); - T_INT thread_scratch_size = snaKK.size_thread_scratch_arrays(); + team_scratch_size = snaKK.size_team_scratch_arrays(); + thread_scratch_size = snaKK.size_thread_scratch_arrays(); //printf("Sizes: %i %i\n",team_scratch_size/1024,thread_scratch_size/1024); int team_size_max = Kokkos::TeamPolicy::team_size_max(*this); - int vector_length = 8; + vector_length = 8; #ifdef KOKKOS_ENABLE_CUDA - int team_size = 32;//max_neighs; + team_size = 32;//max_neighs; if (team_size*vector_length > team_size_max) team_size = team_size_max/vector_length; #else - int team_size = 1; + team_size = 1; #endif + if (beta_max < list->inum) { // TODO: no init + d_beta = Kokkos::View("PairSNAPKokkos:beta", + list->inum,ncoeff); + d_bispectrum = Kokkos::View("PairSNAPKokkos:bispectrum", + list->inum,ncoeff); + beta_max = list->inum; + } + + // compute dE_i/dB_i = beta_i for all i in list + + if (quadraticflag || eflag) + compute_bispectrum(); + compute_beta(); + EV_FLOAT ev; if (eflag) { if (neighflag == HALF) { - typename Kokkos::TeamPolicy > policy(inum,team_size,vector_length); + typename Kokkos::TeamPolicy > policy(inum,team_size,vector_length); Kokkos::parallel_reduce(policy .set_scratch_size(1,Kokkos::PerThread(thread_scratch_size)) .set_scratch_size(1,Kokkos::PerTeam(team_scratch_size)) ,*this,ev); } else if (neighflag == HALFTHREAD) { - typename Kokkos::TeamPolicy > policy(inum,team_size,vector_length); + typename Kokkos::TeamPolicy > policy(inum,team_size,vector_length); Kokkos::parallel_reduce(policy .set_scratch_size(1,Kokkos::PerThread(thread_scratch_size)) .set_scratch_size(1,Kokkos::PerTeam(team_scratch_size)) @@ -218,13 +232,13 @@ void PairSNAPKokkos::compute(int eflag_in, int vflag_in) } } else { if (neighflag == HALF) { - typename Kokkos::TeamPolicy > policy(inum,team_size,vector_length); + typename Kokkos::TeamPolicy > policy(inum,team_size,vector_length); Kokkos::parallel_for(policy .set_scratch_size(1,Kokkos::PerThread(thread_scratch_size)) .set_scratch_size(1,Kokkos::PerTeam(team_scratch_size)) ,*this); } else if (neighflag == HALFTHREAD) { - typename Kokkos::TeamPolicy > policy(inum,team_size,vector_length); + typename Kokkos::TeamPolicy > policy(inum,team_size,vector_length); Kokkos::parallel_for(policy .set_scratch_size(1,Kokkos::PerThread(thread_scratch_size)) .set_scratch_size(1,Kokkos::PerTeam(team_scratch_size)) @@ -232,11 +246,6 @@ void PairSNAPKokkos::compute(int eflag_in, int vflag_in) } } -//static int step =0; -//step++; -//if (step%10==0) -// printf(" %e %e %e %e %e (%e %e): %e\n",t1,t2,t3,t4,t5,t6,t7,t1+t2+t3+t4+t5); - if (need_dup) Kokkos::Experimental::contribute(f, dup_f); @@ -275,6 +284,153 @@ void PairSNAPKokkos::compute(int eflag_in, int vflag_in) } } +/* ---------------------------------------------------------------------- + compute beta +------------------------------------------------------------------------- */ + +template +void PairSNAPKokkos::compute_beta() +{ + // TODO: use RangePolicy instead, or thread over ncoeff? + int inum = list->inum; + typename Kokkos::TeamPolicy policy(inum,team_size,vector_length); + Kokkos::parallel_for(policy + .set_scratch_size(1,Kokkos::PerThread(thread_scratch_size)) + .set_scratch_size(1,Kokkos::PerTeam(team_scratch_size)) + ,*this); +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void PairSNAPKokkos::operator() (TagPairSNAPBeta,const typename Kokkos::TeamPolicy::member_type& team) const { + + const int ii = team.league_rank(); + const int i = d_ilist[ii]; + const int itype = type[i]; + const int ielem = map[itype]; + Kokkos::View> + d_coeffi(d_coeffelem,ielem,Kokkos::ALL); + + for (int icoeff = 0; icoeff < ncoeff; icoeff++) + d_beta(ii,icoeff) = d_coeffi[icoeff+1]; + + if (quadraticflag) { + int k = ncoeff+1; + for (int icoeff = 0; icoeff < ncoeff; icoeff++) { + double bveci = d_bispectrum(ii,icoeff); + d_beta(ii,icoeff) += d_coeffi[k]*bveci; + k++; + for (int jcoeff = icoeff+1; jcoeff < ncoeff; jcoeff++) { + double bvecj = d_bispectrum(ii,jcoeff); + d_beta(ii,icoeff) += d_coeffi[k]*bvecj; + d_beta(ii,jcoeff) += d_coeffi[k]*bveci; + k++; + } + } + } +} + +/* ---------------------------------------------------------------------- + compute bispectrum +------------------------------------------------------------------------- */ + +template +void PairSNAPKokkos::compute_bispectrum() +{ + int inum = list->inum; + typename Kokkos::TeamPolicy policy(inum,team_size,vector_length); + Kokkos::parallel_for(policy + .set_scratch_size(1,Kokkos::PerThread(thread_scratch_size)) + .set_scratch_size(1,Kokkos::PerTeam(team_scratch_size)) + ,*this); +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void PairSNAPKokkos::operator() (TagPairSNAPBispectrum,const typename Kokkos::TeamPolicy::member_type& team) const { + + const int ii = team.league_rank(); + const int i = d_ilist[ii]; + SNAKokkos my_sna(snaKK,team); + const double xtmp = x(i,0); + const double ytmp = x(i,1); + const double ztmp = x(i,2); + const int itype = type[i]; + const int ielem = d_map[itype]; + const double radi = d_radelem[ielem]; + + const int num_neighs = d_numneigh[i]; + + // rij[][3] = displacements between atom I and those neighbors + // inside = indices of neighbors of I within cutoff + // wj = weights for neighbors of I within cutoff + // rcutij = cutoffs for neighbors of I within cutoff + // note Rij sign convention => dU/dRij = dU/dRj = -dU/dRi + + int ninside = 0; + Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team,num_neighs), + [&] (const int jj, int& count) { + Kokkos::single(Kokkos::PerThread(team), [&] (){ + T_INT j = d_neighbors(i,jj); + const F_FLOAT dx = x(j,0) - xtmp; + const F_FLOAT dy = x(j,1) - ytmp; + const F_FLOAT dz = x(j,2) - ztmp; + + const int jtype = type(j); + const F_FLOAT rsq = dx*dx + dy*dy + dz*dz; + const int elem_j = d_map[jtype]; + + if ( rsq < rnd_cutsq(itype,jtype) ) + count++; + }); + },ninside); + + if (team.team_rank() == 0) + Kokkos::parallel_scan(Kokkos::ThreadVectorRange(team,num_neighs), + [&] (const int jj, int& offset, bool final) { + //for (int jj = 0; jj < num_neighs; jj++) { + T_INT j = d_neighbors(i,jj); + const F_FLOAT dx = x(j,0) - xtmp; + const F_FLOAT dy = x(j,1) - ytmp; + const F_FLOAT dz = x(j,2) - ztmp; + + const int jtype = type(j); + const F_FLOAT rsq = dx*dx + dy*dy + dz*dz; + const int elem_j = d_map[jtype]; + + if ( rsq < rnd_cutsq(itype,jtype) ) { + if (final) { + my_sna.rij(offset,0) = dx; + my_sna.rij(offset,1) = dy; + my_sna.rij(offset,2) = dz; + my_sna.inside[offset] = j; + my_sna.wj[offset] = d_wjelem[elem_j]; + my_sna.rcutij[offset] = (radi + d_radelem[elem_j])*rcutfac; + } + offset++; + } + }); + team.team_barrier(); + + // compute Ui, Zi, and Bi for atom I + + my_sna.compute_ui(team,ninside); + team.team_barrier(); + + my_sna.compute_zi(team); + team.team_barrier(); + + my_sna.compute_bi(team); + team.team_barrier(); + + for (int icoeff = 0; icoeff < ncoeff; icoeff++) + d_bispectrum(ii,icoeff) = my_sna.blist[icoeff]; +} + /* ---------------------------------------------------------------------- allocate all arrays ------------------------------------------------------------------------- */ @@ -354,7 +510,7 @@ void PairSNAPKokkos::coeff(int narg, char **arg) template template KOKKOS_INLINE_FUNCTION -void PairSNAPKokkos::operator() (TagPairSNAP,const typename Kokkos::TeamPolicy >::member_type& team, EV_FLOAT& ev) const { +void PairSNAPKokkos::operator() (TagPairSNAPCompute,const typename Kokkos::TeamPolicy >::member_type& team, EV_FLOAT& ev) const { // The f array is duplicated for OpenMP, atomic for CUDA, and neither for Serial @@ -364,12 +520,12 @@ void PairSNAPKokkos::operator() (TagPairSNAP,const const int ii = team.league_rank(); const int i = d_ilist[ii]; SNAKokkos my_sna(snaKK,team); - const double x_i = x(i,0); - const double y_i = x(i,1); - const double z_i = x(i,2); - const int type_i = type[i]; - const int elem_i = d_map[type_i]; - const double radi = d_radelem[elem_i]; + const double xtmp = x(i,0); + const double ytmp = x(i,1); + const double ztmp = x(i,2); + const int itype = type[i]; + const int ielem = d_map[itype]; + const double radi = d_radelem[ielem]; const int num_neighs = d_numneigh[i]; @@ -379,41 +535,38 @@ void PairSNAPKokkos::operator() (TagPairSNAP,const // rcutij = cutoffs for neighbors of I within cutoff // note Rij sign convention => dU/dRij = dU/dRj = -dU/dRi - //Kokkos::Timer timer; int ninside = 0; Kokkos::parallel_reduce(Kokkos::TeamThreadRange(team,num_neighs), [&] (const int jj, int& count) { Kokkos::single(Kokkos::PerThread(team), [&] (){ T_INT j = d_neighbors(i,jj); - const F_FLOAT dx = x(j,0) - x_i; - const F_FLOAT dy = x(j,1) - y_i; - const F_FLOAT dz = x(j,2) - z_i; + const F_FLOAT dx = x(j,0) - xtmp; + const F_FLOAT dy = x(j,1) - ytmp; + const F_FLOAT dz = x(j,2) - ztmp; - const int type_j = type(j); + const int jtype = type(j); const F_FLOAT rsq = dx*dx + dy*dy + dz*dz; - const int elem_j = d_map[type_j]; + const int elem_j = d_map[jtype]; - if ( rsq < rnd_cutsq(type_i,type_j) ) + if ( rsq < rnd_cutsq(itype,jtype) ) count++; }); },ninside); - //t1 += timer.seconds(); timer.reset(); - if (team.team_rank() == 0) Kokkos::parallel_scan(Kokkos::ThreadVectorRange(team,num_neighs), - [&] (const int jj, int& offset, bool final){ + [&] (const int jj, int& offset, bool final) { //for (int jj = 0; jj < num_neighs; jj++) { T_INT j = d_neighbors(i,jj); - const F_FLOAT dx = x(j,0) - x_i; - const F_FLOAT dy = x(j,1) - y_i; - const F_FLOAT dz = x(j,2) - z_i; + const F_FLOAT dx = x(j,0) - xtmp; + const F_FLOAT dy = x(j,1) - ytmp; + const F_FLOAT dz = x(j,2) - ztmp; - const int type_j = type(j); + const int jtype = type(j); const F_FLOAT rsq = dx*dx + dy*dy + dz*dz; - const int elem_j = d_map[type_j]; + const int elem_j = d_map[jtype]; - if ( rsq < rnd_cutsq(type_i,type_j) ) { + if ( rsq < rnd_cutsq(itype,jtype) ) { if (final) { my_sna.rij(offset,0) = dx; my_sna.rij(offset,1) = dy; @@ -425,157 +578,85 @@ void PairSNAPKokkos::operator() (TagPairSNAP,const offset++; } }); + team.team_barrier(); - //t2 += timer.seconds(); timer.reset(); + // compute Ui, Yi for atom I - team.team_barrier(); - // compute Ui, Zi, and Bi for atom I my_sna.compute_ui(team,ninside); - //t3 += timer.seconds(); timer.reset(); team.team_barrier(); - my_sna.compute_zi(team); - //t4 += timer.seconds(); timer.reset(); - team.team_barrier(); - - if (quadraticflag) { - my_sna.compute_bi(team); - team.team_barrier(); - my_sna.copy_bi2bvec(team); - team.team_barrier(); - } // for neighbors of I within cutoff: - // compute dUi/drj and dBi/drj - // Fij = dEi/dRj = -dEi/dRi => add to Fi, subtract from Fj + // compute Fij = dEi/dRj = -dEi/dRi + // add to Fi, subtract from Fj + + my_sna.compute_yi(team,d_beta,ii); + team.team_barrier(); Kokkos::View> - d_coeffi(d_coeffelem,elem_i,Kokkos::ALL); + d_coeffi(d_coeffelem,ielem,Kokkos::ALL); Kokkos::parallel_for (Kokkos::TeamThreadRange(team,ninside), [&] (const int jj) { //for (int jj = 0; jj < ninside; jj++) { int j = my_sna.inside[jj]; - //Kokkos::Timer timer2; my_sna.compute_duidrj(team,&my_sna.rij(jj,0), my_sna.wj[jj],my_sna.rcutij[jj]); - //t6 += timer2.seconds(); timer2.reset(); - my_sna.compute_dbidrj(team); - //t7 += timer2.seconds(); timer2.reset(); - my_sna.copy_dbi2dbvec(team); Kokkos::single(Kokkos::PerThread(team), [&] (){ - F_FLOAT fij[3]; - - fij[0] = 0.0; - fij[1] = 0.0; - fij[2] = 0.0; - // linear contributions - - for (int k = 1; k <= ncoeff; k++) { - double bgb = d_coeffi[k]; - fij[0] += bgb*my_sna.dbvec(k-1,0); - fij[1] += bgb*my_sna.dbvec(k-1,1); - fij[2] += bgb*my_sna.dbvec(k-1,2); - } - - if (quadraticflag) { - - int k = ncoeff+1; - for (int icoeff = 0; icoeff < ncoeff; icoeff++) { - double bveci = my_sna.bvec[icoeff]; - double fack = d_coeffi[k]*bveci; - double dbvecix = my_sna.dbvec(icoeff,0); - double dbveciy = my_sna.dbvec(icoeff,1); - double dbveciz = my_sna.dbvec(icoeff,2); - fij[0] += fack*dbvecix; - fij[1] += fack*dbveciy; - fij[2] += fack*dbveciz; - k++; - for (int jcoeff = icoeff+1; jcoeff < ncoeff; jcoeff++) { - double facki = d_coeffi[k]*bveci; - double fackj = d_coeffi[k]*my_sna.bvec[jcoeff]; - fij[0] += facki*my_sna.dbvec(jcoeff,0)+fackj*dbvecix; - fij[1] += facki*my_sna.dbvec(jcoeff,1)+fackj*dbveciy; - fij[2] += facki*my_sna.dbvec(jcoeff,2)+fackj*dbveciz; - k++; + F_FLOAT fij[3]; + my_sna.compute_deidrj(team,fij); + + a_f(i,0) += fij[0]; + a_f(i,1) += fij[1]; + a_f(i,2) += fij[2]; + a_f(j,0) -= fij[0]; + a_f(j,1) -= fij[1]; + a_f(j,2) -= fij[2]; + + // tally global and per-atom virial contribution + + if (EVFLAG) { + if (vflag_either) { + v_tally_xyz(ev,i,j, + fij[0],fij[1],fij[2], + -my_sna.rij(jj,0),-my_sna.rij(jj,1), + -my_sna.rij(jj,2)); } } - } - - // Hard-coded ZBL potential - //const double dx = my_sna.rij(jj,0); - //const double dy = my_sna.rij(jj,1); - //const double dz = my_sna.rij(jj,2); - //const double fdivr = -1.5e6/pow(dx*dx + dy*dy + dz*dz,7.0); - //fij[0] += dx*fdivr; - //fij[1] += dy*fdivr; - //fij[2] += dz*fdivr; - - //OK - //printf("%lf %lf %lf %lf %lf %lf %lf %lf %lf SNAP-COMPARE: FIJ\n" - // ,x(i,0),x(i,1),x(i,2),x(j,0),x(j,1),x(j,2),fij[0],fij[1],fij[2] ); - a_f(i,0) += fij[0]; - a_f(i,1) += fij[1]; - a_f(i,2) += fij[2]; - a_f(j,0) -= fij[0]; - a_f(j,1) -= fij[1]; - a_f(j,2) -= fij[2]; - - // tally global and per-atom virial contribution - - if (EVFLAG) { - if (vflag_either) { - v_tally_xyz(ev,i,j, - fij[0],fij[1],fij[2], - -my_sna.rij(jj,0),-my_sna.rij(jj,1), - -my_sna.rij(jj,2)); - } - } - + }); }); - //t5 += timer.seconds(); timer.reset(); // tally energy contribution if (EVFLAG) { if (eflag_either) { - if (!quadraticflag) { - my_sna.compute_bi(team); - team.team_barrier(); - my_sna.copy_bi2bvec(team); - team.team_barrier(); - } - - // E = beta.B + 0.5*B^t.alpha.B - // coeff[k] = beta[k-1] or - // coeff[k] = alpha_ii or - // coeff[k] = alpha_ij = alpha_ji, j != i - Kokkos::single(Kokkos::PerTeam(team), [&] () { // evdwl = energy of atom I, sum over coeffs_k * Bi_k double evdwl = d_coeffi[0]; - + + // E = beta.B + 0.5*B^t.alpha.B + // linear contributions - // could use thread vector range on this loop - - for (int k = 1; k <= ncoeff; k++) - evdwl += d_coeffi[k]*my_sna.bvec[k-1]; - + + for (int icoeff = 0; icoeff < ncoeff; icoeff++) + evdwl += d_coeffi[icoeff+1]*d_bispectrum(ii,icoeff); + // quadratic contributions - + if (quadraticflag) { int k = ncoeff+1; for (int icoeff = 0; icoeff < ncoeff; icoeff++) { - double bveci = my_sna.bvec[icoeff]; + double bveci = d_bispectrum(ii,icoeff); evdwl += 0.5*d_coeffi[k++]*bveci*bveci; for (int jcoeff = icoeff+1; jcoeff < ncoeff; jcoeff++) { - evdwl += d_coeffi[k++]*bveci*my_sna.bvec[jcoeff]; + double bvecj = d_bispectrum(ii,jcoeff); + evdwl += d_coeffi[k++]*bveci*bvecj; } } } @@ -591,9 +672,9 @@ void PairSNAPKokkos::operator() (TagPairSNAP,const template template KOKKOS_INLINE_FUNCTION -void PairSNAPKokkos::operator() (TagPairSNAP,const typename Kokkos::TeamPolicy >::member_type& team) const { +void PairSNAPKokkos::operator() (TagPairSNAPCompute,const typename Kokkos::TeamPolicy >::member_type& team) const { EV_FLOAT ev; - this->template operator()(TagPairSNAP(), team, ev); + this->template operator()(TagPairSNAPCompute(), team, ev); } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/sna_kokkos.h b/src/KOKKOS/sna_kokkos.h index 40e5fe0ad4..ff2541dca3 100644 --- a/src/KOKKOS/sna_kokkos.h +++ b/src/KOKKOS/sna_kokkos.h @@ -25,7 +25,11 @@ namespace LAMMPS_NS { -struct SNAKK_LOOPINDICES { +struct SNAKK_ZINDICES { + int j1, j2, j, ma1min, ma2max, mb1min, mb2max, na, nb, jju; +}; + +struct SNAKK_BINDICES { int j1, j2, j; }; @@ -35,9 +39,9 @@ class SNAKokkos { public: typedef Kokkos::View t_sna_1i; typedef Kokkos::View t_sna_1d; + typedef Kokkos::View > t_sna_1d_atomic; typedef Kokkos::View t_sna_2d; typedef Kokkos::View t_sna_3d; - typedef Kokkos::View > t_sna_3d_atomic; typedef Kokkos::View t_sna_4d; typedef Kokkos::View t_sna_3d3; typedef Kokkos::View t_sna_5d; @@ -76,9 +80,10 @@ inline KOKKOS_INLINE_FUNCTION void compute_zi(const typename Kokkos::TeamPolicy::member_type& team); // ForceSNAP KOKKOS_INLINE_FUNCTION - void compute_bi(const typename Kokkos::TeamPolicy::member_type& team); // ForceSNAP + void compute_yi(const typename Kokkos::TeamPolicy::member_type& team, + const Kokkos::View &beta, const int ii); // ForceSNAP KOKKOS_INLINE_FUNCTION - void copy_bi2bvec(const typename Kokkos::TeamPolicy::member_type& team); //ForceSNAP + void compute_bi(const typename Kokkos::TeamPolicy::member_type& team); // ForceSNAP // functions for derivatives @@ -87,7 +92,7 @@ inline KOKKOS_INLINE_FUNCTION void compute_dbidrj(const typename Kokkos::TeamPolicy::member_type& team); //ForceSNAP KOKKOS_INLINE_FUNCTION - void copy_dbi2dbvec(const typename Kokkos::TeamPolicy::member_type& team); //ForceSNAP + void compute_deidrj(const typename Kokkos::TeamPolicy::member_type& team, double *); // ForceSNAP KOKKOS_INLINE_FUNCTION double compute_sfac(double, double); // add_uarraytot, compute_duarray KOKKOS_INLINE_FUNCTION @@ -114,37 +119,41 @@ inline int twojmax, diagonalstyle; // Per InFlight Particle - t_sna_3d barray; - t_sna_3d uarraytot_r, uarraytot_i; - t_sna_3d_atomic uarraytot_r_a, uarraytot_i_a; - t_sna_5d zarray_r, zarray_i; + t_sna_1d blist; + t_sna_1d ulisttot_r, ulisttot_i; + t_sna_1d_atomic ulisttot_r_a, ulisttot_i_a; + t_sna_1d zlist_r, zlist_i; // Per InFlight Interaction - t_sna_3d uarray_r, uarray_i; - - Kokkos::View bvec; + t_sna_1d ulist_r, ulist_i; + t_sna_1d ylist_r, ylist_i; // derivatives of data - Kokkos::View dbvec; - t_sna_4d duarray_r, duarray_i; - t_sna_4d dbarray; + t_sna_2d dulist_r, dulist_i; + t_sna_2d dblist; private: double rmin0, rfac0; //use indexlist instead of loops, constructor generates these - // Same accross all SNAKokkos - Kokkos::View idxj,idxj_full; - int idxj_max,idxj_full_max; + // Same across all SNAKokkos + Kokkos::View idxz; + Kokkos::View idxb; + int idxcg_max, idxu_max, idxz_max, idxb_max; + Kokkos::View idxcg_block; + Kokkos::View idxu_block; + Kokkos::View idxz_block; + Kokkos::View idxb_block; + // data for bispectrum coefficients // Same accross all SNAKokkos - t_sna_5d cgarray; + t_sna_1d cglist; t_sna_2d rootpqarray; - static const int nmaxfactorial = 167; - KOKKOS_INLINE_FUNCTION + static const double nfac_table[]; + inline double factorial(int); KOKKOS_INLINE_FUNCTION diff --git a/src/KOKKOS/sna_kokkos_impl.h b/src/KOKKOS/sna_kokkos_impl.h index c43003af97..4ca8ae4471 100644 --- a/src/KOKKOS/sna_kokkos_impl.h +++ b/src/KOKKOS/sna_kokkos_impl.h @@ -47,13 +47,13 @@ SNAKokkos::SNAKokkos(double rfac0_in, build_indexlist(); - int jdim = twojmax + 1; + int jdimpq = twojmax + 2; + rootpqarray = t_sna_2d("SNAKokkos::rootpqarray",jdimpq,jdimpq); - cgarray = t_sna_5d("SNAKokkos::cgarray",jdim,jdim,jdim,jdim,jdim); - rootpqarray = t_sna_2d("SNAKokkos::rootpqarray",jdim+1,jdim+1); + cglist = t_sna_1d("SNAKokkos::cglist",idxcg_max); if (bzero_flag) { - bzero = Kokkos::View("sna:bzero",jdim); + bzero = Kokkos::View("sna:bzero",twojmax+1); auto h_bzero = Kokkos::create_mirror_view(bzero); double www = wself*wself*wself; @@ -77,11 +77,17 @@ SNAKokkos::SNAKokkos(const SNAKokkos& sna, const typenam ncoeff = sna.ncoeff; nmax = sna.nmax; - idxj = sna.idxj; - idxj_max = sna.idxj_max; - idxj_full = sna.idxj_full; - idxj_full_max = sna.idxj_full_max; - cgarray = sna.cgarray; + idxz = sna.idxz; + idxb = sna.idxb; + idxcg_max = sna.idxcg_max; + idxu_max = sna.idxu_max; + idxz_max = sna.idxz_max; + idxb_max = sna.idxb_max; + idxcg_block = sna.idxcg_block; + idxu_block = sna.idxu_block; + idxz_block = sna.idxz_block; + idxb_block = sna.idxb_block; + cglist = sna.cglist; rootpqarray = sna.rootpqarray; bzero = sna.bzero; create_team_scratch_arrays(team); @@ -100,47 +106,133 @@ template inline void SNAKokkos::build_indexlist() { - int idxj_count = 0; - int idxj_full_count = 0; + // index list for cglist + + int jdim = twojmax + 1; + idxcg_block = Kokkos::View("SNAKokkos::idxcg_block",jdim,jdim,jdim); + auto h_idxcg_block = Kokkos::create_mirror_view(idxcg_block); + int idxcg_count = 0; for(int j1 = 0; j1 <= twojmax; j1++) for(int j2 = 0; j2 <= j1; j2++) - for(int j = abs(j1 - j2); j <= MIN(twojmax, j1 + j2); j += 2) { - if (j >= j1) idxj_count++; - idxj_full_count++; + for(int j = j1 - j2; j <= MIN(twojmax, j1 + j2); j += 2) { + h_idxcg_block(j1,j2,j) = idxcg_count; + for (int m1 = 0; m1 <= j1; m1++) + for (int m2 = 0; m2 <= j2; m2++) + idxcg_count++; } + idxcg_max = idxcg_count; + Kokkos::deep_copy(idxcg_block,h_idxcg_block); + + // index list for uarray + // need to include both halves + + idxu_block = Kokkos::View("SNAKokkos::idxu_block",jdim); + auto h_idxu_block = Kokkos::create_mirror_view(idxu_block); + + int idxu_count = 0; + + for(int j = 0; j <= twojmax; j++) { + h_idxu_block[j] = idxu_count; + for(int mb = 0; mb <= j; mb++) + for(int ma = 0; ma <= j; ma++) + idxu_count++; + } + idxu_max = idxu_count; + Kokkos::deep_copy(idxu_block,h_idxu_block); - // indexList can be changed here + // index list for beta and B - idxj = Kokkos::View("SNAKokkos::idxj",idxj_count); - idxj_full = Kokkos::View("SNAKokkos::idxj_full",idxj_full_count); - auto h_idxj = Kokkos::create_mirror_view(idxj); - auto h_idxj_full = Kokkos::create_mirror_view(idxj_full); + int idxb_count = 0; + for(int j1 = 0; j1 <= twojmax; j1++) + for(int j2 = 0; j2 <= j1; j2++) + for(int j = j1 - j2; j <= MIN(twojmax, j1 + j2); j += 2) + if (j >= j1) idxb_count++; + + idxb_max = idxb_count; + idxb = Kokkos::View("SNAKokkos::idxb",idxb_max); + auto h_idxb = Kokkos::create_mirror_view(idxb); + + idxb_count = 0; + for(int j1 = 0; j1 <= twojmax; j1++) + for(int j2 = 0; j2 <= j1; j2++) + for(int j = j1 - j2; j <= MIN(twojmax, j1 + j2); j += 2) + if (j >= j1) { + h_idxb[idxb_count].j1 = j1; + h_idxb[idxb_count].j2 = j2; + h_idxb[idxb_count].j = j; + idxb_count++; + } + Kokkos::deep_copy(idxb,h_idxb); - idxj_max = idxj_count; - idxj_full_max = idxj_full_count; + // reverse index list for beta and b - idxj_count = 0; - idxj_full_count = 0; + idxb_block = Kokkos::View("SNAKokkos::idxb_block",jdim,jdim,jdim); + auto h_idxb_block = Kokkos::create_mirror_view(idxb_block); + idxb_count = 0; for(int j1 = 0; j1 <= twojmax; j1++) for(int j2 = 0; j2 <= j1; j2++) - for(int j = abs(j1 - j2); j <= MIN(twojmax, j1 + j2); j += 2) { - if (j >= j1) { - h_idxj[idxj_count].j1 = j1; - h_idxj[idxj_count].j2 = j2; - h_idxj[idxj_count].j = j; - idxj_count++; - } - h_idxj_full[idxj_full_count].j1 = j1; - h_idxj_full[idxj_full_count].j2 = j2; - h_idxj_full[idxj_full_count].j = j; - idxj_full_count++; + for(int j = j1 - j2; j <= MIN(twojmax, j1 + j2); j += 2) { + if (j >= j1) { + h_idxb_block(j1,j2,j) = idxb_count; + idxb_count++; + } } - Kokkos::deep_copy(idxj,h_idxj); - Kokkos::deep_copy(idxj_full,h_idxj_full); + Kokkos::deep_copy(idxb_block,h_idxb_block); + + // index list for zlist + int idxz_count = 0; + + for(int j1 = 0; j1 <= twojmax; j1++) + for(int j2 = 0; j2 <= j1; j2++) + for(int j = j1 - j2; j <= MIN(twojmax, j1 + j2); j += 2) + for (int mb = 0; 2*mb <= j; mb++) + for (int ma = 0; ma <= j; ma++) + idxz_count++; + + idxz_max = idxz_count; + idxz = Kokkos::View("SNAKokkos::idxz",idxz_max); + auto h_idxz = Kokkos::create_mirror_view(idxz); + + idxz_block = Kokkos::View("SNAKokkos::idxz_block", jdim,jdim,jdim); + auto h_idxz_block = Kokkos::create_mirror_view(idxz_block); + + idxz_count = 0; + for(int j1 = 0; j1 <= twojmax; j1++) + for(int j2 = 0; j2 <= j1; j2++) + for(int j = j1 - j2; j <= MIN(twojmax, j1 + j2); j += 2) { + h_idxz_block(j1,j2,j) = idxz_count; + + // find right beta(ii,jjb) entry + // multiply and divide by j+1 factors + // account for multiplicity of 1, 2, or 3 + + for (int mb = 0; 2*mb <= j; mb++) + for (int ma = 0; ma <= j; ma++) { + h_idxz[idxz_count].j1 = j1; + h_idxz[idxz_count].j2 = j2; + h_idxz[idxz_count].j = j; + h_idxz[idxz_count].ma1min = MAX(0, (2 * ma - j - j2 + j1) / 2); + h_idxz[idxz_count].ma2max = (2 * ma - j - (2 * h_idxz[idxz_count].ma1min - j1) + j2) / 2; + h_idxz[idxz_count].na = MIN(j1, (2 * ma - j + j2 + j1) / 2) - h_idxz[idxz_count].ma1min + 1; + h_idxz[idxz_count].mb1min = MAX(0, (2 * mb - j - j2 + j1) / 2); + h_idxz[idxz_count].mb2max = (2 * mb - j - (2 * h_idxz[idxz_count].mb1min - j1) + j2) / 2; + h_idxz[idxz_count].nb = MIN(j1, (2 * mb - j + j2 + j1) / 2) - h_idxz[idxz_count].mb1min + 1; + + // apply to z(j1,j2,j,ma,mb) to unique element of y(j) + + const int jju = idxu_block[j] + (j+1)*mb + ma; + h_idxz[idxz_count].jju = jju; + + idxz_count++; + } + } + Kokkos::deep_copy(idxz,h_idxz); + Kokkos::deep_copy(idxz_block,h_idxz_block); } + /* ---------------------------------------------------------------------- */ template @@ -166,6 +258,7 @@ template KOKKOS_INLINE_FUNCTION void SNAKokkos::compute_ui(const typename Kokkos::TeamPolicy::member_type& team, int jnum) { + //printf("jnum %i\n",jnum); double rsq, r, x, y, z, z0, theta0; // utot(j,ma,mb) = 0 for all j,ma,ma @@ -211,93 +304,234 @@ template KOKKOS_INLINE_FUNCTION void SNAKokkos::compute_zi(const typename Kokkos::TeamPolicy::member_type& team) { - // for j1 = 0,...,twojmax - // for j2 = 0,twojmax - // for j = |j1-j2|,Min(twojmax,j1+j2),2 - // for ma = 0,...,j - // for mb = 0,...,jmid - // z(j1,j2,j,ma,mb) = 0 - // for ma1 = Max(0,ma+(j1-j2-j)/2),Min(j1,ma+(j1+j2-j)/2) - // sumb1 = 0 - // ma2 = ma-ma1+(j1+j2-j)/2; - // for mb1 = Max(0,mb+(j1-j2-j)/2),Min(j1,mb+(j1+j2-j)/2) - // mb2 = mb-mb1+(j1+j2-j)/2; - // sumb1 += cg(j1,mb1,j2,mb2,j) * - // u(j1,ma1,mb1) * u(j2,ma2,mb2) - // z(j1,j2,j,ma,mb) += sumb1*cg(j1,ma1,j2,ma2,j) - -#ifdef TIMING_INFO - clock_gettime(CLOCK_REALTIME, &starttime); -#endif - - // compute_dbidrj() requires full j1/j2/j chunk of z elements - // use zarray j1/j2 symmetry - - Kokkos::parallel_for(Kokkos::TeamThreadRange(team,idxj_full_max), - [&] (const int& idx) { - const int j1 = idxj_full(idx).j1; - const int j2 = idxj_full(idx).j2; - const int j = idxj_full(idx).j; + Kokkos::parallel_for(Kokkos::TeamThreadRange(team,idxz_max), + [&] (const int& jjz) { + //for(int jjz = 0; jjz < idxz_max; jjz++) { + const int j1 = idxz[jjz].j1; + const int j2 = idxz[jjz].j2; + const int j = idxz[jjz].j; + const int ma1min = idxz[jjz].ma1min; + const int ma2max = idxz[jjz].ma2max; + const int na = idxz[jjz].na; + const int mb1min = idxz[jjz].mb1min; + const int mb2max = idxz[jjz].mb2max; + const int nb = idxz[jjz].nb; + + const double* cgblock = cglist.data() + idxcg_block(j1,j2,j); + + zlist_r[jjz] = 0.0; + zlist_i[jjz] = 0.0; + + int jju1 = idxu_block[j1] + (j1+1)*mb1min; + int jju2 = idxu_block[j2] + (j2+1)*mb2max; + int icgb = mb1min*(j2+1) + mb2max; + for(int ib = 0; ib < nb; ib++) { + + double suma1_r = 0.0; + double suma1_i = 0.0; + + const double* u1_r = ulisttot_r.data() + jju1; + const double* u1_i = ulisttot_i.data() + jju1; + const double* u2_r = ulisttot_r.data() + jju2; + const double* u2_i = ulisttot_i.data() + jju2; + + int ma1 = ma1min; + int ma2 = ma2max; + int icga = ma1min*(j2+1) + ma2max; + for(int ia = 0; ia < na; ia++) { + suma1_r += cgblock[icga] * (u1_r[ma1] * u2_r[ma2] - u1_i[ma1] * u2_i[ma2]); + suma1_i += cgblock[icga] * (u1_r[ma1] * u2_i[ma2] + u1_i[ma1] * u2_r[ma2]); + ma1++; + ma2--; + icga += j2; + } // end loop over ia + + zlist_r[jjz] += cgblock[icgb] * suma1_r; + zlist_i[jjz] += cgblock[icgb] * suma1_i; + //printf("%i %i %i %g %g\n",j1,j2,j,cgblock[icgb],suma1_r); + jju1 += j1+1; + jju2 -= j2+1; + icgb += j2; + } // end loop over ib + + }); // end loop over jjz +} - const int bound = (j+2)/2; - Kokkos::parallel_for(Kokkos::ThreadVectorRange(team,(j+1)*bound), - [&] (const int mbma ) { - //for(int mb = 0; 2*mb <= j; mb++) - //for(int ma = 0; ma <= j; ma++) { - const int ma = mbma%(j+1); - const int mb = mbma/(j+1); - - //zarray_r(j1,j2,j,ma,mb) = 0.0; - //zarray_i(j1,j2,j,ma,mb) = 0.0; - double z_r = 0.0; - double z_i = 0.0; - - for(int ma1 = MAX(0, (2 * ma - j - j2 + j1) / 2); - ma1 <= MIN(j1, (2 * ma - j + j2 + j1) / 2); ma1++) { - double sumb1_r = 0.0; - double sumb1_i = 0.0; - - const int ma2 = (2 * ma - j - (2 * ma1 - j1) + j2) / 2; - - for(int mb1 = MAX( 0, (2 * mb - j - j2 + j1) / 2); - mb1 <= MIN(j1, (2 * mb - j + j2 + j1) / 2); mb1++) { - - const int mb2 = (2 * mb - j - (2 * mb1 - j1) + j2) / 2; - const double cga = cgarray(j1,j2,j,mb1,mb2); - const double uat1_r = uarraytot_r(j1,ma1,mb1); - const double uat1_i = uarraytot_i(j1,ma1,mb1); - const double uat2_r = uarraytot_r(j2,ma2,mb2); - const double uat2_i = uarraytot_i(j2,ma2,mb2); - sumb1_r += cga * (uat1_r * uat2_r - uat1_i * uat2_i); - sumb1_i += cga * (uat1_r * uat2_i + uat1_i * uat2_r); - /*sumb1_r += cgarray(j1,j2,j,mb1,mb2) * - (uarraytot_r(j1,ma1,mb1) * uarraytot_r(j2,ma2,mb2) - - uarraytot_i(j1,ma1,mb1) * uarraytot_i(j2,ma2,mb2)); - sumb1_i += cgarray(j1,j2,j,mb1,mb2) * - (uarraytot_r(j1,ma1,mb1) * uarraytot_i(j2,ma2,mb2) + - uarraytot_i(j1,ma1,mb1) * uarraytot_r(j2,ma2,mb2));*/ - } // end loop over mb1 - - const double cga = cgarray(j1,j2,j,ma1,ma2); - z_r += sumb1_r * cga;//rray(j1,j2,j,ma1,ma2); - z_i += sumb1_i * cga;//rray(j1,j2,j,ma1,ma2); - } // end loop over ma1 - zarray_r(j1,j2,j,mb,ma) = z_r; - zarray_i(j1,j2,j,mb,ma) = z_i; - }); // end loop over ma, mb - // } - //} - }); - //} // end loop over j - //} // end loop over j1, j2 +/* ---------------------------------------------------------------------- + compute Yi from Ui without storing Zi, looping over zlist indices +------------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void SNAKokkos::compute_yi(const typename Kokkos::TeamPolicy::member_type& team, + const Kokkos::View &beta, const int ii) +{ + int j; + int jjz; + int jju; + double betaj; + + { + double* const ptr = ylist_r.data(); + Kokkos::parallel_for(Kokkos::TeamThreadRange(team,ylist_r.span()), + [&] (const int& i) { + ptr[i] = 0.0; + }); + } + { + double* const ptr = ylist_i.data(); + Kokkos::parallel_for(Kokkos::TeamThreadRange(team,ylist_i.span()), + [&] (const int& i) { + ptr[i] = 0.0; + }); + } + + Kokkos::parallel_for(Kokkos::TeamThreadRange(team,idxz_max), + [&] (const int& jjz) { + //for(int jjz = 0; jjz < idxz_max; jjz++) { + const int j1 = idxz[jjz].j1; + const int j2 = idxz[jjz].j2; + const int j = idxz[jjz].j; + const int ma1min = idxz[jjz].ma1min; + const int ma2max = idxz[jjz].ma2max; + const int na = idxz[jjz].na; + const int mb1min = idxz[jjz].mb1min; + const int mb2max = idxz[jjz].mb2max; + const int nb = idxz[jjz].nb; + + const double* cgblock = cglist.data() + idxcg_block(j1,j2,j); + int mb = (2 * (mb1min+mb2max) - j1 - j2 + j) / 2; + int ma = (2 * (ma1min+ma2max) - j1 - j2 + j) / 2; + + double ztmp_r = 0.0; + double ztmp_i = 0.0; + + int jju1 = idxu_block[j1] + (j1+1)*mb1min; + int jju2 = idxu_block[j2] + (j2+1)*mb2max; + int icgb = mb1min*(j2+1) + mb2max; + for(int ib = 0; ib < nb; ib++) { + + double suma1_r = 0.0; + double suma1_i = 0.0; + + const double* u1_r = ulisttot_r.data() + jju1; + const double* u1_i = ulisttot_i.data() + jju1; + const double* u2_r = ulisttot_r.data() + jju2; + const double* u2_i = ulisttot_i.data() + jju2; + + int ma1 = ma1min; + int ma2 = ma2max; + int icga = ma1min*(j2+1) + ma2max; + + for(int ia = 0; ia < na; ia++) { + suma1_r += cgblock[icga] * (u1_r[ma1] * u2_r[ma2] - u1_i[ma1] * u2_i[ma2]); + suma1_i += cgblock[icga] * (u1_r[ma1] * u2_i[ma2] + u1_i[ma1] * u2_r[ma2]); ma1++; + ma2--; + icga += j2; + } // end loop over ia + + ztmp_r += cgblock[icgb] * suma1_r; + ztmp_i += cgblock[icgb] * suma1_i; + jju1 += j1+1; + jju2 -= j2+1; + icgb += j2; + } // end loop over ib + + // apply to z(j1,j2,j,ma,mb) to unique element of y(j) + // find right y_list[jju] and beta(ii,jjb) entries + // multiply and divide by j+1 factors + // account for multiplicity of 1, 2, or 3 + + const int jju = idxz[jjz].jju; + + // pick out right beta value + + if (j >= j1) { + const int jjb = idxb_block(j1,j2,j); + if (j1 == j) { + if (j2 == j) betaj = 3*beta(ii,jjb); + else betaj = 2*beta(ii,jjb); + } else betaj = beta(ii,jjb); + } else if (j >= j2) { + const int jjb = idxb_block(j,j2,j1); + if (j2 == j) betaj = 2*beta(ii,jjb)*(j1+1)/(j+1.0); + else betaj = beta(ii,jjb)*(j1+1)/(j+1.0); + } else { + const int jjb = idxb_block(j2,j,j1); + betaj = beta(ii,jjb)*(j1+1)/(j+1.0); + } + + ylist_r[jju] += betaj*ztmp_r; + ylist_i[jju] += betaj*ztmp_i; + //printf("yi %i %g %g\n",jju,ylist_r[jju],ylist_i[jju]); -#ifdef TIMING_INFO - clock_gettime(CLOCK_REALTIME, &endtime); - timers[1] += (endtime.tv_sec - starttime.tv_sec + 1.0 * - (endtime.tv_nsec - starttime.tv_nsec) / 1000000000); -#endif + }); // end loop over jjz } +/* ---------------------------------------------------------------------- + compute dEidRj +------------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void SNAKokkos::compute_deidrj(const typename Kokkos::TeamPolicy::member_type& team, double* dedr) +{ + + for(int k = 0; k < 3; k++) + dedr[k] = 0.0; + + // TODO: which loop is faster to parallelize? + Kokkos::parallel_for(Kokkos::ThreadVectorRange(team,twojmax+1), + [&] (const int& j) { + //for(int j = 0; j <= twojmax; j++) { + int jju = idxu_block[j]; + + for(int mb = 0; 2*mb < j; mb++) + for(int ma = 0; ma <= j; ma++) { + + double jjjmambyarray_r = ylist_r[jju]; + double jjjmambyarray_i = ylist_i[jju]; + + for(int k = 0; k < 3; k++) + dedr[k] += + dulist_r(jju,k) * jjjmambyarray_r + + dulist_i(jju,k) * jjjmambyarray_i; + jju++; + } //end loop over ma mb + + // For j even, handle middle column + + if (j%2 == 0) { + + int mb = j/2; + for(int ma = 0; ma < mb; ma++) { + double jjjmambyarray_r = ylist_r[jju]; + double jjjmambyarray_i = ylist_i[jju]; + + for(int k = 0; k < 3; k++) + dedr[k] += + dulist_r(jju,k) * jjjmambyarray_r + + dulist_i(jju,k) * jjjmambyarray_i; + jju++; + } + + int ma = mb; + double jjjmambyarray_r = ylist_r[jju]; + double jjjmambyarray_i = ylist_i[jju]; + + for(int k = 0; k < 3; k++) + dedr[k] += + (dulist_r(jju,k) * jjjmambyarray_r + + dulist_i(jju,k) * jjjmambyarray_i)*0.5; + } // end if jeven + + }); // end loop over j + + for(int k = 0; k < 3; k++) + dedr[k] *= 2.0; + + //printf("dedr %g %g %g\n",dedr[0],dedr[1],dedr[2]); +} /* ---------------------------------------------------------------------- compute Bi by summing conj(Ui)*Zi @@ -316,31 +550,33 @@ void SNAKokkos::compute_bi(const typename Kokkos::TeamPolicy::compute_bi(const typename Kokkos::TeamPolicy -KOKKOS_INLINE_FUNCTION -void SNAKokkos::copy_bi2bvec(const typename Kokkos::TeamPolicy::member_type& team) -{ - /* int ncount, j1, j2, j; - - ncount = 0; - - for(j1 = 0; j1 <= twojmax; j1++) { - for(j2 = 0; j2 <= j1; j2++) - for(j = abs(j1 - j2); - j <= MIN(twojmax, j1 + j2); j += 2) - if (j >= j1) {*/ - Kokkos::parallel_for(Kokkos::ThreadVectorRange(team,idxj_max), - [&] (const int& JJ) { - //for(int JJ = 0; JJ < idxj_max; JJ++) { - const int j1 = idxj[JJ].j1; - const int j2 = idxj[JJ].j2; - const int j = idxj[JJ].j; - bvec(JJ) = barray(j1,j2,j); - //ncount++; - }); -} - -/* ---------------------------------------------------------------------- - calculate derivative of Ui w.r.t. atom j -------------------------------------------------------------------------- */ - -template -KOKKOS_INLINE_FUNCTION -void SNAKokkos::compute_duidrj(const typename Kokkos::TeamPolicy::member_type& team, - double* rij, double wj, double rcut) -{ - double rsq, r, x, y, z, z0, theta0, cs, sn; - double dz0dr; - - x = rij[0]; - y = rij[1]; - z = rij[2]; - rsq = x * x + y * y + z * z; - r = sqrt(rsq); - double rscale0 = rfac0 * MY_PI / (rcut - rmin0); - theta0 = (r - rmin0) * rscale0; - cs = cos(theta0); - sn = sin(theta0); - z0 = r * cs / sn; - dz0dr = z0 / r - (r*rscale0) * (rsq + z0 * z0) / rsq; - -#ifdef TIMING_INFO - clock_gettime(CLOCK_REALTIME, &starttime); -#endif - - compute_duarray(team, x, y, z, z0, r, dz0dr, wj, rcut); - -#ifdef TIMING_INFO - clock_gettime(CLOCK_REALTIME, &endtime); - timers[3] += (endtime.tv_sec - starttime.tv_sec + 1.0 * - (endtime.tv_nsec - starttime.tv_nsec) / 1000000000); -#endif - } /* ---------------------------------------------------------------------- @@ -478,21 +649,18 @@ void SNAKokkos::compute_dbidrj(const typename Kokkos::TeamPolicy::compute_dbidrj(const typename Kokkos::TeamPolicy dbdr,sumzdu_r; // Sum terms Conj(dudr(j,ma,mb))*z(j1,j2,j,ma,mb) - // use zarray j1/j2 symmetry (optional) - - int j_,j1_,j2_; - if (j1 >= j2) { - //jjjzarray_r = &zarray_r(j1,j2,j); - //jjjzarray_i = &zarray_i(j1,j2,j); - j1_ = j1; - j2_ = j2; - j_ = j; - } else { - j1_ = j2; - j2_ = j1; - j_ = j; - //jjjzarray_r = &zarray_r(j2,j1,j); - //jjjzarray_i = &zarray_i(j2,j1,j); - } + int jjz = idxz_block(j1,j2,j); + int jju = idxu_block[j]; for(int mb = 0; 2*mb < j; mb++) for(int ma = 0; ma <= j; ma++) { - - dudr_r = &duarray_r(j,mb,ma,0); - dudr_i = &duarray_i(j,mb,ma,0); - jjjmambzarray_r = zarray_r(j1_,j2_,j_,mb,ma); - jjjmambzarray_i = zarray_i(j1_,j2_,j_,mb,ma); - sumzdu_r.x += (dudr_r[0] * jjjmambzarray_r + dudr_i[0] * jjjmambzarray_i); - sumzdu_r.y += (dudr_r[1] * jjjmambzarray_r + dudr_i[1] * jjjmambzarray_i); - sumzdu_r.z += (dudr_r[2] * jjjmambzarray_r + dudr_i[2] * jjjmambzarray_i); - + const int jju_index = jju+mb*(j+1)+ma; + const int jjz_index = jjz+mb*(j+1)+ma; + sumzdu_r.x += (dulist_r(jju_index,0) * zlist_r[jjz_index] + dulist_i(jju_index,0) * zlist_i[jjz_index]); + sumzdu_r.y += (dulist_r(jju_index,1) * zlist_r[jjz_index] + dulist_i(jju_index,1) * zlist_i[jjz_index]); + sumzdu_r.z += (dulist_r(jju_index,2) * zlist_r[jjz_index] + dulist_i(jju_index,2) * zlist_i[jjz_index]); } //end loop over ma mb // For j even, handle middle column @@ -535,14 +685,19 @@ void SNAKokkos::compute_dbidrj(const typename Kokkos::TeamPolicy::compute_dbidrj(const typename Kokkos::TeamPolicy= j2) { - j1_ = j; - j2_ = j2; - j_ = j1; - - //jjjzarray_r = zarray_r(j,j2,j1); - //jjjzarray_i = zarray_i(j,j2,j1); - } else { - j1_ = j2; - j2_ = j; - j_ = j1; - //jjjzarray_r = zarray_r(j2,j,j1); - //jjjzarray_i = zarray_i(j2,j,j1); - } - - for(int mb1 = 0; 2*mb1 < j1; mb1++) - for(int ma1 = 0; ma1 <= j1; ma1++) { + sumzdu_r.x = 0.0; sumzdu_r.y = 0.0; sumzdu_r.z = 0.0; - dudr_r = &duarray_r(j1,mb1,ma1,0); - dudr_i = &duarray_i(j1,mb1,ma1,0); - jjjmambzarray_r = zarray_r(j1_,j2_,j_,mb1,ma1); - jjjmambzarray_i = zarray_i(j1_,j2_,j_,mb1,ma1); - sumzdu_r.x += (dudr_r[0] * jjjmambzarray_r + dudr_i[0] * jjjmambzarray_i); - sumzdu_r.y += (dudr_r[1] * jjjmambzarray_r + dudr_i[1] * jjjmambzarray_i); - sumzdu_r.z += (dudr_r[2] * jjjmambzarray_r + dudr_i[2] * jjjmambzarray_i); + for(int mb = 0; 2*mb < j1; mb++) + for(int ma = 0; ma <= j1; ma++) { + const int jju_index = jju+mb*(j1+1)+ma; + const int jjz_index = jjz+mb*(j1+1)+ma; + sumzdu_r.x += (dulist_r(jju_index,0) * zlist_r[jjz_index] + dulist_i(jju_index,0) * zlist_i[jjz_index]); + sumzdu_r.y += (dulist_r(jju_index,1) * zlist_r[jjz_index] + dulist_i(jju_index,1) * zlist_i[jjz_index]); + sumzdu_r.z += (dulist_r(jju_index,2) * zlist_r[jjz_index] + dulist_i(jju_index,2) * zlist_i[jjz_index]); } //end loop over ma1 mb1 // For j1 even, handle middle column if (j1%2 == 0) { - const int mb1 = j1/2; - for(int ma1 = 0; ma1 <= mb1; ma1++) { - dudr_r = &duarray_r(j1,mb1,ma1,0); - dudr_i = &duarray_i(j1,mb1,ma1,0); - const double factor = ma1==mb1?0.5:1.0; - jjjmambzarray_r = zarray_r(j1_,j2_,j_,mb1,ma1) * factor; - jjjmambzarray_i = zarray_i(j1_,j2_,j_,mb1,ma1) * factor; - sumzdu_r.x += (dudr_r[0] * jjjmambzarray_r + dudr_i[0] * jjjmambzarray_i); - sumzdu_r.y += (dudr_r[1] * jjjmambzarray_r + dudr_i[1] * jjjmambzarray_i); - sumzdu_r.z += (dudr_r[2] * jjjmambzarray_r + dudr_i[2] * jjjmambzarray_i); + const int mb = j1/2; + for(int ma = 0; ma <= mb; ma++) { + const int jju_index = jju+(mb-1)*(j1+1)+(j1+1)+ma; + const int jjz_index = jjz+(mb-1)*(j1+1)+(j1+1)+ma; + sumzdu_r.x += (dulist_r(jju_index,0) * zlist_r[jjz_index] + dulist_i(jju_index,0) * zlist_i[jjz_index]); + sumzdu_r.y += (dulist_r(jju_index,1) * zlist_r[jjz_index] + dulist_i(jju_index,1) * zlist_i[jjz_index]); + sumzdu_r.z += (dulist_r(jju_index,2) * zlist_r[jjz_index] + dulist_i(jju_index,2) * zlist_i[jjz_index]); + } + int ma = mb; + const int jju_index = jju+(mb-1)*(j1+1)+(j1+1)+ma; + const int jjz_index = jjz+(mb-1)*(j1+1)+(j1+1)+ma; + for(int k = 0; k < 3; k++) { + sumzdu_r.x += (dulist_r(jju_index,0) * zlist_r[jjz] + dulist_i(jju_index,0) * zlist_i[jjz_index])*0.5; + sumzdu_r.y += (dulist_r(jju_index,1) * zlist_r[jjz] + dulist_i(jju_index,1) * zlist_i[jjz_index])*0.5; + sumzdu_r.z += (dulist_r(jju_index,2) * zlist_r[jjz] + dulist_i(jju_index,2) * zlist_i[jjz_index])*0.5; } } // end if j1even @@ -605,94 +748,74 @@ void SNAKokkos::compute_dbidrj(const typename Kokkos::TeamPolicy= j) { - j1_ = j1; - j2_ = j; - j_ = j2; - //jjjzarray_r = zarray_r(j1,j,j2); - //jjjzarray_i = zarray_i(j1,j,j2); - } else { - j1_ = j; - j2_ = j1; - j_ = j2; - //jjjzarray_r = zarray_r(j,j1,j2); - //jjjzarray_i = zarray_i(j,j1,j2); - } + jjz = idxz_block(j,j1,j2); + jju = idxu_block[j2]; - for(int mb2 = 0; 2*mb2 < j2; mb2++) - for(int ma2 = 0; ma2 <= j2; ma2++) { + sumzdu_r.x = 0.0; sumzdu_r.y = 0.0; sumzdu_r.z = 0.0; - dudr_r = &duarray_r(j2,mb2,ma2,0); - dudr_i = &duarray_i(j2,mb2,ma2,0); - jjjmambzarray_r = zarray_r(j1_,j2_,j_,mb2,ma2); - jjjmambzarray_i = zarray_i(j1_,j2_,j_,mb2,ma2); - sumzdu_r.x += (dudr_r[0] * jjjmambzarray_r + dudr_i[0] * jjjmambzarray_i); - sumzdu_r.y += (dudr_r[1] * jjjmambzarray_r + dudr_i[1] * jjjmambzarray_i); - sumzdu_r.z += (dudr_r[2] * jjjmambzarray_r + dudr_i[2] * jjjmambzarray_i); + for(int mb = 0; 2*mb < j2; mb++) + for(int ma = 0; ma <= j2; ma++) { + const int jju_index = jju+mb*(j2+1)+ma; + const int jjz_index = jjz+mb*(j2+1)+ma; + sumzdu_r.x += (dulist_r(jju_index,0) * zlist_r[jjz_index] + dulist_i(jju_index,0) * zlist_i[jjz_index]); + sumzdu_r.y += (dulist_r(jju_index,1) * zlist_r[jjz_index] + dulist_i(jju_index,1) * zlist_i[jjz_index]); + sumzdu_r.z += (dulist_r(jju_index,2) * zlist_r[jjz_index] + dulist_i(jju_index,2) * zlist_i[jjz_index]); } //end loop over ma2 mb2 // For j2 even, handle middle column if (j2%2 == 0) { - const int mb2 = j2/2; - for(int ma2 = 0; ma2 <= mb2; ma2++) { - dudr_r = &duarray_r(j2,mb2,ma2,0); - dudr_i = &duarray_i(j2,mb2,ma2,0); - const double factor = ma2==mb2?0.5:1.0; - jjjmambzarray_r = zarray_r(j1_,j2_,j_,mb2,ma2) * factor; - jjjmambzarray_i = zarray_i(j1_,j2_,j_,mb2,ma2) * factor; - sumzdu_r.x += (dudr_r[0] * jjjmambzarray_r + dudr_i[0] * jjjmambzarray_i); - sumzdu_r.y += (dudr_r[1] * jjjmambzarray_r + dudr_i[1] * jjjmambzarray_i); - sumzdu_r.z += (dudr_r[2] * jjjmambzarray_r + dudr_i[2] * jjjmambzarray_i); + const int mb = j2/2; + for(int ma = 0; ma <= mb; ma++) { + const int jju_index = jju+(mb-1)*(j2+1)+(j2+1)+ma; + const int jjz_index = jjz+(mb-1)*(j2+1)+(j2+1)+ma; + sumzdu_r.x += (dulist_r(jju_index,0) * zlist_r[jjz_index] + dulist_i(jju_index,0) * zlist_i[jjz_index]); + sumzdu_r.y += (dulist_r(jju_index,1) * zlist_r[jjz_index] + dulist_i(jju_index,1) * zlist_i[jjz_index]); + sumzdu_r.z += (dulist_r(jju_index,2) * zlist_r[jjz_index] + dulist_i(jju_index,2) * zlist_i[jjz_index]); + } + int ma = mb; + const int jju_index = jju+(mb-1)*(j2+1)+(j2+1)+ma; + const int jjz_index = jjz+(mb-1)*(j2+1)+(j2+1)+ma; + for(int k = 0; k < 3; k++) { + sumzdu_r.x += (dulist_r(jju_index,0) * zlist_r[jjz] + dulist_i(jju_index,0) * zlist_i[jjz_index])*0.5; + sumzdu_r.y += (dulist_r(jju_index,1) * zlist_r[jjz] + dulist_i(jju_index,1) * zlist_i[jjz_index])*0.5; + sumzdu_r.z += (dulist_r(jju_index,2) * zlist_r[jjz] + dulist_i(jju_index,2) * zlist_i[jjz_index])*0.5; } } // end if j2even dbdr += 2.0*sumzdu_r*j2fac; - dbarray(j1,j2,j,0) = dbdr.x; - dbarray(j1,j2,j,1) = dbdr.y; - dbarray(j1,j2,j,2) = dbdr.z; - }); //end loop over j1 j2 j - -#ifdef TIMING_INFO - clock_gettime(CLOCK_REALTIME, &endtime); - timers[4] += (endtime.tv_sec - starttime.tv_sec + 1.0 * - (endtime.tv_nsec - starttime.tv_nsec) / 1000000000); -#endif + dblist(jjb,0) = dbdr.x; + dblist(jjb,1) = dbdr.y; + dblist(jjb,2) = dbdr.z; + }); //end loop over j1 j2 j } /* ---------------------------------------------------------------------- - copy Bi derivatives into a vector + calculate derivative of Ui w.r.t. atom j ------------------------------------------------------------------------- */ template KOKKOS_INLINE_FUNCTION -void SNAKokkos::copy_dbi2dbvec(const typename Kokkos::TeamPolicy::member_type& team) +void SNAKokkos::compute_duidrj(const typename Kokkos::TeamPolicy::member_type& team, + double* rij, double wj, double rcut) { - /* int ncount, j1, j2, j; + double rsq, r, x, y, z, z0, theta0, cs, sn; + double dz0dr; - ncount = 0; + x = rij[0]; + y = rij[1]; + z = rij[2]; + rsq = x * x + y * y + z * z; + r = sqrt(rsq); + double rscale0 = rfac0 * MY_PI / (rcut - rmin0); + theta0 = (r - rmin0) * rscale0; + cs = cos(theta0); + sn = sin(theta0); + z0 = r * cs / sn; + dz0dr = z0 / r - (r*rscale0) * (rsq + z0 * z0) / rsq; - for(j1 = 0; j1 <= twojmax; j1++) { - for(j2 = 0; j2 <= j1; j2++) - for(j = abs(j1 - j2); - j <= MIN(twojmax, j1 + j2); j += 2) - if (j >= j1) {*/ - Kokkos::parallel_for(Kokkos::ThreadVectorRange(team,idxj_max), - [&] (const int& JJ) { - //for(int JJ = 0; JJ < idxj_max; JJ++) { - const int j1 = idxj[JJ].j1; - const int j2 = idxj[JJ].j2; - const int j = idxj[JJ].j; - dbvec(JJ,0) = dbarray(j1,j2,j,0); - dbvec(JJ,1) = dbarray(j1,j2,j,1); - dbvec(JJ,2) = dbarray(j1,j2,j,2); - //ncount++; - }); + compute_duarray(team, x, y, z, z0, r, dz0dr, wj, rcut); } /* ---------------------------------------------------------------------- */ @@ -702,15 +825,15 @@ KOKKOS_INLINE_FUNCTION void SNAKokkos::zero_uarraytot(const typename Kokkos::TeamPolicy::member_type& team) { { - double* const ptr = uarraytot_r.data(); - Kokkos::parallel_for(Kokkos::ThreadVectorRange(team,uarraytot_r.span()), + double* const ptr = ulisttot_r.data(); + Kokkos::parallel_for(Kokkos::ThreadVectorRange(team,ulisttot_r.span()), [&] (const int& i) { ptr[i] = 0.0; }); } { - double* const ptr = uarraytot_i.data(); - Kokkos::parallel_for(Kokkos::ThreadVectorRange(team,uarraytot_r.span()), + double* const ptr = ulisttot_i.data(); + Kokkos::parallel_for(Kokkos::ThreadVectorRange(team,ulisttot_i.span()), [&] (const int& i) { ptr[i] = 0.0; }); @@ -723,12 +846,14 @@ template KOKKOS_INLINE_FUNCTION void SNAKokkos::addself_uarraytot(const typename Kokkos::TeamPolicy::member_type& team, double wself_in) { - //for (int j = 0; j <= twojmax; j++) Kokkos::parallel_for(Kokkos::ThreadVectorRange(team,twojmax+1), [&] (const int& j) { + //for (int j = 0; j <= twojmax; j++) + int jju = idxu_block[j]; for (int ma = 0; ma <= j; ma++) { - uarraytot_r(j,ma,ma) = wself_in; - uarraytot_i(j,ma,ma) = 0.0; + ulisttot_r[jju] = wself_in; + ulisttot_i[jju] = 0.0; + jju += j+2; } }); } @@ -743,20 +868,11 @@ void SNAKokkos::add_uarraytot(const typename Kokkos::TeamPolicy::compute_uarray(const typename Kokkos::TeamPolicy::compute_duarray(const typename Kokkos::TeamPolicy::compute_duarray(const typename Kokkos::TeamPolicy KOKKOS_INLINE_FUNCTION void SNAKokkos::create_team_scratch_arrays(const typename Kokkos::TeamPolicy::member_type& team) { - int jdim = twojmax + 1; - uarraytot_r_a = uarraytot_r = t_sna_3d(team.team_scratch(1),jdim,jdim,jdim); - uarraytot_i_a = uarraytot_i = t_sna_3d(team.team_scratch(1),jdim,jdim,jdim); - zarray_r = t_sna_5d(team.team_scratch(1),jdim,jdim,jdim,jdim,jdim); - zarray_i = t_sna_5d(team.team_scratch(1),jdim,jdim,jdim,jdim,jdim); - bvec = Kokkos::View(team.team_scratch(1),ncoeff); - barray = t_sna_3d(team.team_scratch(1),jdim,jdim,jdim); + ulisttot_r_a = ulisttot_r = t_sna_1d(team.team_scratch(1),idxu_max); + ulisttot_i_a = ulisttot_i = t_sna_1d(team.team_scratch(1),idxu_max); + ylist_r = t_sna_1d(team.team_scratch(1),idxu_max); + ylist_i = t_sna_1d(team.team_scratch(1),idxu_max); + zlist_r = t_sna_1d(team.team_scratch(1),idxz_max); + zlist_i = t_sna_1d(team.team_scratch(1),idxz_max); + blist = t_sna_1d(team.team_scratch(1),idxb_max); + dblist = t_sna_2d(team.team_scratch(1),idxb_max,3); rij = t_sna_2d(team.team_scratch(1),nmax,3); rcutij = t_sna_1d(team.team_scratch(1),nmax); @@ -1043,19 +1184,16 @@ void SNAKokkos::create_team_scratch_arrays(const typename Kokkos::Te inside = t_sna_1i(team.team_scratch(1),nmax); } - template inline T_INT SNAKokkos::size_team_scratch_arrays() { T_INT size = 0; - int jdim = twojmax + 1; - size += t_sna_3d::shmem_size(jdim,jdim,jdim); // uarraytot_r_a - size += t_sna_3d::shmem_size(jdim,jdim,jdim); // uarraytot_i_a - size += t_sna_5d::shmem_size(jdim,jdim,jdim,jdim,jdim); // zarray_r - size += t_sna_5d::shmem_size(jdim,jdim,jdim,jdim,jdim); // zarray_i - size += Kokkos::View::shmem_size(ncoeff); // bvec - size += t_sna_3d::shmem_size(jdim,jdim,jdim); // barray + size += t_sna_1d::shmem_size(idxu_max)*2; // ulisttot + size += t_sna_1d::shmem_size(idxu_max)*2; // ylist + size += t_sna_1d::shmem_size(idxz_max)*2; // zlist + size += t_sna_1d::shmem_size(idxb_max); // blist + size += t_sna_2d::shmem_size(idxb_max,3); // dblist size += t_sna_2d::shmem_size(nmax,3); // rij size += t_sna_1d::shmem_size(nmax); // rcutij @@ -1071,53 +1209,225 @@ template KOKKOS_INLINE_FUNCTION void SNAKokkos::create_thread_scratch_arrays(const typename Kokkos::TeamPolicy::member_type& team) { - int jdim = twojmax + 1; - - dbvec = Kokkos::View(team.thread_scratch(1),ncoeff); - dbarray = t_sna_4d(team.thread_scratch(1),jdim,jdim,jdim); + dblist = t_sna_2d(team.thread_scratch(1),idxb_max,3); - uarray_r = t_sna_3d(team.thread_scratch(1),jdim,jdim,jdim); - uarray_i = t_sna_3d(team.thread_scratch(1),jdim,jdim,jdim); - duarray_r = t_sna_4d(team.thread_scratch(1),jdim,jdim,jdim); - duarray_i = t_sna_4d(team.thread_scratch(1),jdim,jdim,jdim); + ulist_r = t_sna_1d(team.thread_scratch(1),idxu_max); + ulist_i = t_sna_1d(team.thread_scratch(1),idxu_max); + dulist_r = t_sna_2d(team.thread_scratch(1),idxu_max,3); + dulist_i = t_sna_2d(team.thread_scratch(1),idxu_max,3); } template inline T_INT SNAKokkos::size_thread_scratch_arrays() { T_INT size = 0; - int jdim = twojmax + 1; - size += Kokkos::View::shmem_size(ncoeff); // dbvec - size += t_sna_4d::shmem_size(jdim,jdim,jdim); // dbarray + size += t_sna_2d::shmem_size(idxb_max,3); // dblist - size += t_sna_3d::shmem_size(jdim,jdim,jdim); // uarray_r - size += t_sna_3d::shmem_size(jdim,jdim,jdim); // uarray_i - size += t_sna_4d::shmem_size(jdim,jdim,jdim); // duarray_r - size += t_sna_4d::shmem_size(jdim,jdim,jdim); // duarray_i + size += t_sna_1d::shmem_size(idxu_max)*2; // ulist + size += t_sna_2d::shmem_size(idxu_max,3)*2; // dulist return size; } /* ---------------------------------------------------------------------- - factorial n + factorial n, wrapper for precomputed table ------------------------------------------------------------------------- */ template -KOKKOS_INLINE_FUNCTION +inline double SNAKokkos::factorial(int n) { - double result = 1.0; - for(int i=1; i<=n; i++) - result *= 1.0*i; - return result; + //if (n < 0 || n > nmaxfactorial) { + // char str[128]; + // sprintf(str, "Invalid argument to factorial %d", n); + // error->all(FLERR, str); + //} + + return nfac_table[n]; } +/* ---------------------------------------------------------------------- + factorial n table, size SNA::nmaxfactorial+1 +------------------------------------------------------------------------- */ + +template +const double SNAKokkos::nfac_table[] = { + 1, + 1, + 2, + 6, + 24, + 120, + 720, + 5040, + 40320, + 362880, + 3628800, + 39916800, + 479001600, + 6227020800, + 87178291200, + 1307674368000, + 20922789888000, + 355687428096000, + 6.402373705728e+15, + 1.21645100408832e+17, + 2.43290200817664e+18, + 5.10909421717094e+19, + 1.12400072777761e+21, + 2.5852016738885e+22, + 6.20448401733239e+23, + 1.5511210043331e+25, + 4.03291461126606e+26, + 1.08888694504184e+28, + 3.04888344611714e+29, + 8.8417619937397e+30, + 2.65252859812191e+32, + 8.22283865417792e+33, + 2.63130836933694e+35, + 8.68331761881189e+36, + 2.95232799039604e+38, + 1.03331479663861e+40, + 3.71993326789901e+41, + 1.37637530912263e+43, + 5.23022617466601e+44, + 2.03978820811974e+46, + 8.15915283247898e+47, + 3.34525266131638e+49, + 1.40500611775288e+51, + 6.04152630633738e+52, + 2.65827157478845e+54, + 1.1962222086548e+56, + 5.50262215981209e+57, + 2.58623241511168e+59, + 1.24139155925361e+61, + 6.08281864034268e+62, + 3.04140932017134e+64, + 1.55111875328738e+66, + 8.06581751709439e+67, + 4.27488328406003e+69, + 2.30843697339241e+71, + 1.26964033536583e+73, + 7.10998587804863e+74, + 4.05269195048772e+76, + 2.35056133128288e+78, + 1.3868311854569e+80, + 8.32098711274139e+81, + 5.07580213877225e+83, + 3.14699732603879e+85, + 1.98260831540444e+87, + 1.26886932185884e+89, + 8.24765059208247e+90, + 5.44344939077443e+92, + 3.64711109181887e+94, + 2.48003554243683e+96, + 1.71122452428141e+98, + 1.19785716699699e+100, + 8.50478588567862e+101, + 6.12344583768861e+103, + 4.47011546151268e+105, + 3.30788544151939e+107, + 2.48091408113954e+109, + 1.88549470166605e+111, + 1.45183092028286e+113, + 1.13242811782063e+115, + 8.94618213078297e+116, + 7.15694570462638e+118, + 5.79712602074737e+120, + 4.75364333701284e+122, + 3.94552396972066e+124, + 3.31424013456535e+126, + 2.81710411438055e+128, + 2.42270953836727e+130, + 2.10775729837953e+132, + 1.85482642257398e+134, + 1.65079551609085e+136, + 1.48571596448176e+138, + 1.3520015276784e+140, + 1.24384140546413e+142, + 1.15677250708164e+144, + 1.08736615665674e+146, + 1.03299784882391e+148, + 9.91677934870949e+149, + 9.61927596824821e+151, + 9.42689044888324e+153, + 9.33262154439441e+155, + 9.33262154439441e+157, + 9.42594775983835e+159, + 9.61446671503512e+161, + 9.90290071648618e+163, + 1.02990167451456e+166, + 1.08139675824029e+168, + 1.14628056373471e+170, + 1.22652020319614e+172, + 1.32464181945183e+174, + 1.44385958320249e+176, + 1.58824554152274e+178, + 1.76295255109024e+180, + 1.97450685722107e+182, + 2.23119274865981e+184, + 2.54355973347219e+186, + 2.92509369349301e+188, + 3.3931086844519e+190, + 3.96993716080872e+192, + 4.68452584975429e+194, + 5.5745857612076e+196, + 6.68950291344912e+198, + 8.09429852527344e+200, + 9.8750442008336e+202, + 1.21463043670253e+205, + 1.50614174151114e+207, + 1.88267717688893e+209, + 2.37217324288005e+211, + 3.01266001845766e+213, + 3.8562048236258e+215, + 4.97450422247729e+217, + 6.46685548922047e+219, + 8.47158069087882e+221, + 1.118248651196e+224, + 1.48727070609069e+226, + 1.99294274616152e+228, + 2.69047270731805e+230, + 3.65904288195255e+232, + 5.01288874827499e+234, + 6.91778647261949e+236, + 9.61572319694109e+238, + 1.34620124757175e+241, + 1.89814375907617e+243, + 2.69536413788816e+245, + 3.85437071718007e+247, + 5.5502938327393e+249, + 8.04792605747199e+251, + 1.17499720439091e+254, + 1.72724589045464e+256, + 2.55632391787286e+258, + 3.80892263763057e+260, + 5.71338395644585e+262, + 8.62720977423323e+264, + 1.31133588568345e+267, + 2.00634390509568e+269, + 3.08976961384735e+271, + 4.78914290146339e+273, + 7.47106292628289e+275, + 1.17295687942641e+278, + 1.85327186949373e+280, + 2.94670227249504e+282, + 4.71472363599206e+284, + 7.59070505394721e+286, + 1.22969421873945e+289, + 2.0044015765453e+291, + 3.28721858553429e+293, + 5.42391066613159e+295, + 9.00369170577843e+297, + 1.503616514865e+300, // nmaxfactorial = 167 +}; + /* ---------------------------------------------------------------------- the function delta given by VMK Eq. 8.2(1) ------------------------------------------------------------------------- */ template -KOKKOS_INLINE_FUNCTION +inline double SNAKokkos::deltacg(int j1, int j2, int j) { double sfaccg = factorial((j1 + j2 + j) / 2 + 1); @@ -1135,33 +1445,39 @@ template inline void SNAKokkos::init_clebsch_gordan() { + auto h_cglist = Kokkos::create_mirror_view(cglist); + double sum,dcg,sfaccg; int m, aa2, bb2, cc2; int ifac; - auto h_cgarray = Kokkos::create_mirror_view(cgarray); - for (int j1 = 0; j1 <= twojmax; j1++) - for (int j2 = 0; j2 <= twojmax; j2++) - for (int j = abs(j1 - j2); j <= MIN(twojmax, j1 + j2); j += 2) - for (int m1 = 0; m1 <= j1; m1 += 1) { + int idxcg_count = 0; + for(int j1 = 0; j1 <= twojmax; j1++) + for(int j2 = 0; j2 <= j1; j2++) + for(int j = j1 - j2; j <= MIN(twojmax, j1 + j2); j += 2) { + for (int m1 = 0; m1 <= j1; m1++) { aa2 = 2 * m1 - j1; - for (int m2 = 0; m2 <= j2; m2 += 1) { + for (int m2 = 0; m2 <= j2; m2++) { // -c <= cc <= c bb2 = 2 * m2 - j2; m = (aa2 + bb2 + j) / 2; - if(m < 0 || m > j) continue; + if(m < 0 || m > j) { + h_cglist[idxcg_count] = 0.0; + idxcg_count++; + continue; + } sum = 0.0; for (int z = MAX(0, MAX(-(j - j2 + aa2) - / 2, -(j - j1 - bb2) / 2)); - z <= MIN((j1 + j2 - j) / 2, - MIN((j1 - aa2) / 2, (j2 + bb2) / 2)); - z++) { + / 2, -(j - j1 - bb2) / 2)); + z <= MIN((j1 + j2 - j) / 2, + MIN((j1 - aa2) / 2, (j2 + bb2) / 2)); + z++) { ifac = z % 2 ? -1 : 1; sum += ifac / (factorial(z) * @@ -1175,18 +1491,19 @@ void SNAKokkos::init_clebsch_gordan() cc2 = 2 * m - j; dcg = deltacg(j1, j2, j); sfaccg = sqrt(factorial((j1 + aa2) / 2) * - factorial((j1 - aa2) / 2) * - factorial((j2 + bb2) / 2) * - factorial((j2 - bb2) / 2) * - factorial((j + cc2) / 2) * - factorial((j - cc2) / 2) * - (j + 1)); - - h_cgarray(j1,j2,j,m1,m2) = sum * dcg * sfaccg; - //printf("SNAP-COMPARE: CG: %i %i %i %i %i %e\n",j1,j2,j,m1,m2,cgarray(j1,j2,j,m1,m2)); + factorial((j1 - aa2) / 2) * + factorial((j2 + bb2) / 2) * + factorial((j2 - bb2) / 2) * + factorial((j + cc2) / 2) * + factorial((j - cc2) / 2) * + (j + 1)); + + h_cglist[idxcg_count] = sum * dcg * sfaccg; + idxcg_count++; } } - Kokkos::deep_copy(cgarray,h_cgarray); + } + Kokkos::deep_copy(cglist,h_cglist); } /* ---------------------------------------------------------------------- @@ -1207,6 +1524,7 @@ void SNAKokkos::init_rootpqarray() /* ---------------------------------------------------------------------- */ + template inline int SNAKokkos::compute_ncoeff() @@ -1217,9 +1535,10 @@ int SNAKokkos::compute_ncoeff() for (int j1 = 0; j1 <= twojmax; j1++) for (int j2 = 0; j2 <= j1; j2++) - for (int j = abs(j1 - j2); - j <= MIN(twojmax, j1 + j2); j += 2) - if (j >= j1) ncount++; + for (int j = j1 - j2; + j <= MIN(twojmax, j1 + j2); j += 2) + if (j >= j1) ncount++; + return ncount; } @@ -1266,15 +1585,39 @@ double SNAKokkos::compute_dsfac(double r, double rcut) template double SNAKokkos::memory_usage() { + int jdimpq = twojmax + 2; int jdim = twojmax + 1; double bytes; - bytes = jdim * jdim * jdim * jdim * jdim * sizeof(double); - bytes += 2 * jdim * jdim * jdim * sizeof(std::complex); - bytes += 2 * jdim * jdim * jdim * sizeof(double); - bytes += jdim * jdim * jdim * 3 * sizeof(std::complex); - bytes += jdim * jdim * jdim * 3 * sizeof(double); - bytes += ncoeff * sizeof(double); - bytes += jdim * jdim * jdim * jdim * jdim * sizeof(std::complex); + + bytes = 0; + + bytes += jdimpq*jdimpq * sizeof(double); // pqarray + bytes += idxcg_max * sizeof(double); // cglist + + bytes += idxu_max * sizeof(double) * 2; // ulist + bytes += idxu_max * sizeof(double) * 2; // ulisttot + bytes += idxu_max * 3 * sizeof(double) * 2; // dulist + + bytes += idxz_max * sizeof(double) * 2; // zlist + bytes += idxb_max * sizeof(double); // blist + bytes += idxb_max * 3 * sizeof(double); // dblist + bytes += idxu_max * sizeof(double) * 2; // ylist + + bytes += jdim * jdim * jdim * sizeof(int); // idxcg_block + bytes += jdim * sizeof(int); // idxu_block + bytes += jdim * jdim * jdim * sizeof(int); // idxz_block + bytes += jdim * jdim * jdim * sizeof(int); // idxb_block + + bytes += idxz_max * sizeof(SNAKK_ZINDICES); // idxz + bytes += idxb_max * sizeof(SNAKK_BINDICES); // idxb + + bytes += jdim * sizeof(double); // bzero + + bytes += nmax * 3 * sizeof(double); // rij + bytes += nmax * sizeof(int); // inside + bytes += nmax * sizeof(double); // wj + bytes += nmax * sizeof(double); // rcutij + return bytes; } -- GitLab From 8c3d18520dd40ee990252aff3e9fb1e5f120b9a0 Mon Sep 17 00:00:00 2001 From: Christoph Junghans Date: Wed, 26 Jun 2019 10:45:31 -0600 Subject: [PATCH 107/627] add missing include needed on ppc64le --- lib/gpu/lal_device.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/gpu/lal_device.cpp b/lib/gpu/lal_device.cpp index 5534d32e5f..9410cc5250 100644 --- a/lib/gpu/lal_device.cpp +++ b/lib/gpu/lal_device.cpp @@ -17,6 +17,7 @@ #include "lal_precision.h" #include #include +#include #ifdef _OPENMP #include #endif -- GitLab From 2be0fd61802b824363308985f415b40e8fb0e38a Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Wed, 26 Jun 2019 16:22:37 -0600 Subject: [PATCH 108/627] Fix GPU issues --- src/KOKKOS/pair_snap_kokkos_impl.h | 9 ++-- src/KOKKOS/sna_kokkos.h | 4 +- src/KOKKOS/sna_kokkos_impl.h | 78 ++++++++++-------------------- 3 files changed, 31 insertions(+), 60 deletions(-) diff --git a/src/KOKKOS/pair_snap_kokkos_impl.h b/src/KOKKOS/pair_snap_kokkos_impl.h index 687c9dc7cb..d56db05d19 100644 --- a/src/KOKKOS/pair_snap_kokkos_impl.h +++ b/src/KOKKOS/pair_snap_kokkos_impl.h @@ -309,7 +309,7 @@ void PairSNAPKokkos::operator() (TagPairSNAPBeta,const typename Kokk const int ii = team.league_rank(); const int i = d_ilist[ii]; const int itype = type[i]; - const int ielem = map[itype]; + const int ielem = d_map[itype]; Kokkos::View> d_coeffi(d_coeffelem,ielem,Kokkos::ALL); @@ -603,11 +603,10 @@ void PairSNAPKokkos::operator() (TagPairSNAPCompute::member_type& team, double, double, double, double, double); // compute_ui - KOKKOS_INLINE_FUNCTION + inline double deltacg(int, int, int); // init_clebsch_gordan inline diff --git a/src/KOKKOS/sna_kokkos_impl.h b/src/KOKKOS/sna_kokkos_impl.h index 4ca8ae4471..e3ce1626d9 100644 --- a/src/KOKKOS/sna_kokkos_impl.h +++ b/src/KOKKOS/sna_kokkos_impl.h @@ -223,7 +223,7 @@ void SNAKokkos::build_indexlist() // apply to z(j1,j2,j,ma,mb) to unique element of y(j) - const int jju = idxu_block[j] + (j+1)*mb + ma; + const int jju = h_idxu_block[j] + (j+1)*mb + ma; h_idxz[idxz_count].jju = jju; idxz_count++; @@ -258,7 +258,6 @@ template KOKKOS_INLINE_FUNCTION void SNAKokkos::compute_ui(const typename Kokkos::TeamPolicy::member_type& team, int jnum) { - //printf("jnum %i\n",jnum); double rsq, r, x, y, z, z0, theta0; // utot(j,ma,mb) = 0 for all j,ma,ma @@ -348,7 +347,7 @@ void SNAKokkos::compute_zi(const typename Kokkos::TeamPolicy::compute_yi(const typename Kokkos::TeamPolicy::member_type& team, const Kokkos::View &beta, const int ii) { - int j; - int jjz; - int jju; double betaj; { @@ -400,8 +396,8 @@ void SNAKokkos::compute_yi(const typename Kokkos::TeamPolicy::compute_yi(const typename Kokkos::TeamPolicy KOKKOS_INLINE_FUNCTION void SNAKokkos::compute_deidrj(const typename Kokkos::TeamPolicy::member_type& team, double* dedr) { - - for(int k = 0; k < 3; k++) - dedr[k] = 0.0; + t_scalar3 sum; // TODO: which loop is faster to parallelize? - Kokkos::parallel_for(Kokkos::ThreadVectorRange(team,twojmax+1), - [&] (const int& j) { + Kokkos::parallel_reduce(Kokkos::ThreadVectorRange(team,twojmax+1), + [&] (const int& j, t_scalar3& sum_tmp) { //for(int j = 0; j <= twojmax; j++) { int jju = idxu_block[j]; for(int mb = 0; 2*mb < j; mb++) for(int ma = 0; ma <= j; ma++) { - - double jjjmambyarray_r = ylist_r[jju]; - double jjjmambyarray_i = ylist_i[jju]; - - for(int k = 0; k < 3; k++) - dedr[k] += - dulist_r(jju,k) * jjjmambyarray_r + - dulist_i(jju,k) * jjjmambyarray_i; + sum_tmp.x += dulist_r(jju,0) * ylist_r[jju] + dulist_i(jju,0) * ylist_i[jju]; + sum_tmp.y += dulist_r(jju,1) * ylist_r[jju] + dulist_i(jju,1) * ylist_i[jju]; + sum_tmp.z += dulist_r(jju,2) * ylist_r[jju] + dulist_i(jju,2) * ylist_i[jju]; jju++; } //end loop over ma mb @@ -505,32 +495,26 @@ void SNAKokkos::compute_deidrj(const typename Kokkos::TeamPolicy::compute_bi(const typename Kokkos::TeamPolicy::compute_bi(const typename Kokkos::TeamPolicy::compute_uarray(const typename Kokkos::TeamPolicy::compute_uarray(const typename Kokkos::TeamPolicy::compute_duarray(const typename Kokkos::TeamPolicy::create_team_scratch_arrays(const typename Kokkos::Te zlist_r = t_sna_1d(team.team_scratch(1),idxz_max); zlist_i = t_sna_1d(team.team_scratch(1),idxz_max); blist = t_sna_1d(team.team_scratch(1),idxb_max); - dblist = t_sna_2d(team.team_scratch(1),idxb_max,3); rij = t_sna_2d(team.team_scratch(1),nmax,3); rcutij = t_sna_1d(team.team_scratch(1),nmax); @@ -1193,7 +1168,6 @@ T_INT SNAKokkos::size_team_scratch_arrays() { size += t_sna_1d::shmem_size(idxu_max)*2; // ylist size += t_sna_1d::shmem_size(idxz_max)*2; // zlist size += t_sna_1d::shmem_size(idxb_max); // blist - size += t_sna_2d::shmem_size(idxb_max,3); // dblist size += t_sna_2d::shmem_size(nmax,3); // rij size += t_sna_1d::shmem_size(nmax); // rcutij @@ -1210,7 +1184,6 @@ KOKKOS_INLINE_FUNCTION void SNAKokkos::create_thread_scratch_arrays(const typename Kokkos::TeamPolicy::member_type& team) { dblist = t_sna_2d(team.thread_scratch(1),idxb_max,3); - ulist_r = t_sna_1d(team.thread_scratch(1),idxu_max); ulist_i = t_sna_1d(team.thread_scratch(1),idxu_max); dulist_r = t_sna_2d(team.thread_scratch(1),idxu_max,3); @@ -1223,7 +1196,6 @@ T_INT SNAKokkos::size_thread_scratch_arrays() { T_INT size = 0; size += t_sna_2d::shmem_size(idxb_max,3); // dblist - size += t_sna_1d::shmem_size(idxu_max)*2; // ulist size += t_sna_2d::shmem_size(idxu_max,3)*2; // dulist return size; -- GitLab From ff36bad09964fecad2b6569fef6992b164e9b56d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2019 00:33:48 -0400 Subject: [PATCH 109/627] cleanup includes in variable.h --- src/variable.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/variable.h b/src/variable.h index 512195bd14..c5f501f266 100644 --- a/src/variable.h +++ b/src/variable.h @@ -14,9 +14,8 @@ #ifndef LMP_VARIABLE_H #define LMP_VARIABLE_H -#include +#include #include "pointers.h" -#include "input.h" namespace LAMMPS_NS { -- GitLab From f7507512b131e2c515db82751b1a793de66aa657 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2019 00:39:47 -0400 Subject: [PATCH 110/627] apply memory alignment settings from my_page.h to my_pool_chunk.h --- src/my_pool_chunk.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/my_pool_chunk.h b/src/my_pool_chunk.h index 8bf88d35bb..a313e45f05 100644 --- a/src/my_pool_chunk.h +++ b/src/my_pool_chunk.h @@ -43,6 +43,10 @@ public variables: #ifndef LAMMPS_MY_POOL_CHUNK_H #define LAMMPS_MY_POOL_CHUNK_H +#if defined(LMP_USER_INTEL) && !defined(LAMMPS_MEMALIGN) && !defined(_WIN32) +#define LAMMPS_MEMALIGN 64 +#endif + #include namespace LAMMPS_NS { @@ -190,9 +194,17 @@ class MyPoolChunk { for (int i = oldpage; i < npage; i++) { whichbin[i] = ibin; +#if defined(LAMMPS_MEMALIGN) + void *ptr; + if (posix_memalign(&ptr, LAMMPS_MEMALIGN, + chunkperpage*chunksize[ibin]*sizeof(T))) + errorflag = 2; + pages[i] = (T *) ptr; +#else pages[i] = (T *) malloc(chunkperpage*chunksize[ibin]*sizeof(T)); size += chunkperpage*chunksize[ibin]; if (!pages[i]) errorflag = 2; +#endif } // reset free list for unused chunks on new pages -- GitLab From 17602b4c26fa94e02e204b3e8e85a48cecc65569 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2019 01:02:17 -0400 Subject: [PATCH 111/627] some more include file cleanup. include cstdlib where functions like atoi() are used remove unneeded include statements from headers --- src/PYTHON/python_impl.cpp | 1 + src/USER-MEAMC/meam.h | 1 - src/compute_reduce_chunk.cpp | 3 ++- src/fix_vector.cpp | 1 + src/lammps.cpp | 1 + src/variable.cpp | 1 + 6 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/PYTHON/python_impl.cpp b/src/PYTHON/python_impl.cpp index aaa4f74c69..9c650330af 100644 --- a/src/PYTHON/python_impl.cpp +++ b/src/PYTHON/python_impl.cpp @@ -15,6 +15,7 @@ Contributing author: Richard Berger and Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include #include #include "lmppython.h" #include "force.h" diff --git a/src/USER-MEAMC/meam.h b/src/USER-MEAMC/meam.h index 42fd722e01..bb40202243 100644 --- a/src/USER-MEAMC/meam.h +++ b/src/USER-MEAMC/meam.h @@ -3,7 +3,6 @@ #include "memory.h" #include -#include #define maxelt 5 diff --git a/src/compute_reduce_chunk.cpp b/src/compute_reduce_chunk.cpp index f31672ef74..5eda71b21b 100644 --- a/src/compute_reduce_chunk.cpp +++ b/src/compute_reduce_chunk.cpp @@ -12,7 +12,8 @@ ------------------------------------------------------------------------- */ #include -#include +#include +#include #include "compute_reduce_chunk.h" #include "atom.h" #include "update.h" diff --git a/src/fix_vector.cpp b/src/fix_vector.cpp index 6387af7676..5657e59ab0 100644 --- a/src/fix_vector.cpp +++ b/src/fix_vector.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include #include #include "fix_vector.h" #include "update.h" diff --git a/src/lammps.cpp b/src/lammps.cpp index f8d04c9323..320d89ed52 100644 --- a/src/lammps.cpp +++ b/src/lammps.cpp @@ -13,6 +13,7 @@ #include #include +#include #include #include #include diff --git a/src/variable.cpp b/src/variable.cpp index ea7f3044d7..1416754073 100644 --- a/src/variable.cpp +++ b/src/variable.cpp @@ -26,6 +26,7 @@ #include "region.h" #include "modify.h" #include "compute.h" +#include "input.h" #include "fix.h" #include "fix_store.h" #include "force.h" -- GitLab From 08ac695a062079390a47d7115e10428493c5cf75 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2019 01:03:08 -0400 Subject: [PATCH 112/627] move include statements from headers to implementation files where possible in USER-REAXC --- src/USER-OMP/reaxc_multi_body_omp.cpp | 1 + src/USER-REAXC/pair_reaxc.cpp | 1 + src/USER-REAXC/reaxc_control.cpp | 2 ++ src/USER-REAXC/reaxc_ffield.cpp | 2 ++ src/USER-REAXC/reaxc_forces.cpp | 1 + src/USER-REAXC/reaxc_init_md.cpp | 1 + src/USER-REAXC/reaxc_io_tools.cpp | 3 ++- src/USER-REAXC/reaxc_multi_body.cpp | 1 + src/USER-REAXC/reaxc_reset_tools.cpp | 1 + src/USER-REAXC/reaxc_tool_box.cpp | 5 +++++ src/USER-REAXC/reaxc_traj.cpp | 1 + src/USER-REAXC/reaxc_types.h | 10 +--------- 12 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/USER-OMP/reaxc_multi_body_omp.cpp b/src/USER-OMP/reaxc_multi_body_omp.cpp index 7552e7a733..d791f945a8 100644 --- a/src/USER-OMP/reaxc_multi_body_omp.cpp +++ b/src/USER-OMP/reaxc_multi_body_omp.cpp @@ -26,6 +26,7 @@ . ----------------------------------------------------------------------*/ +#include #include "pair_reaxc_omp.h" #include "thr_data.h" diff --git a/src/USER-REAXC/pair_reaxc.cpp b/src/USER-REAXC/pair_reaxc.cpp index 8f8dcfb8fc..224f3e2568 100644 --- a/src/USER-REAXC/pair_reaxc.cpp +++ b/src/USER-REAXC/pair_reaxc.cpp @@ -20,6 +20,7 @@ Hybrid and hybrid/overlay compatibility added by Ray Shan (Sandia) ------------------------------------------------------------------------- */ +#include #include "pair_reaxc.h" #include "atom.h" #include "update.h" diff --git a/src/USER-REAXC/reaxc_control.cpp b/src/USER-REAXC/reaxc_control.cpp index 535226fff8..060c1a0342 100644 --- a/src/USER-REAXC/reaxc_control.cpp +++ b/src/USER-REAXC/reaxc_control.cpp @@ -24,6 +24,8 @@ . ----------------------------------------------------------------------*/ +#include +#include #include "pair_reaxc.h" #include "reaxc_control.h" #include "reaxc_tool_box.h" diff --git a/src/USER-REAXC/reaxc_ffield.cpp b/src/USER-REAXC/reaxc_ffield.cpp index 9534637645..2160d180cf 100644 --- a/src/USER-REAXC/reaxc_ffield.cpp +++ b/src/USER-REAXC/reaxc_ffield.cpp @@ -24,6 +24,8 @@ . ----------------------------------------------------------------------*/ +#include +#include #include "pair_reaxc.h" #include "error.h" #include "reaxc_ffield.h" diff --git a/src/USER-REAXC/reaxc_forces.cpp b/src/USER-REAXC/reaxc_forces.cpp index 186cde681a..79094ece43 100644 --- a/src/USER-REAXC/reaxc_forces.cpp +++ b/src/USER-REAXC/reaxc_forces.cpp @@ -24,6 +24,7 @@ . ----------------------------------------------------------------------*/ +#include #include "pair_reaxc.h" #include "reaxc_forces.h" #include "reaxc_bond_orders.h" diff --git a/src/USER-REAXC/reaxc_init_md.cpp b/src/USER-REAXC/reaxc_init_md.cpp index df5de49034..a0e15e98f5 100644 --- a/src/USER-REAXC/reaxc_init_md.cpp +++ b/src/USER-REAXC/reaxc_init_md.cpp @@ -24,6 +24,7 @@ . ----------------------------------------------------------------------*/ +#include #include "pair_reaxc.h" #include "reaxc_init_md.h" #include "reaxc_allocate.h" diff --git a/src/USER-REAXC/reaxc_io_tools.cpp b/src/USER-REAXC/reaxc_io_tools.cpp index 51aa8bca0f..f4a1486c48 100644 --- a/src/USER-REAXC/reaxc_io_tools.cpp +++ b/src/USER-REAXC/reaxc_io_tools.cpp @@ -24,6 +24,7 @@ . ----------------------------------------------------------------------*/ +#include #include "pair_reaxc.h" #include "update.h" #include "reaxc_io_tools.h" @@ -85,7 +86,7 @@ int Init_Output_Files( reax_system *system, control_params *control, /************************ close output files ************************/ -int Close_Output_Files( reax_system *system, control_params *control, +int Close_Output_Files( reax_system *system, control_params * /* control */, output_controls *out_control, mpi_datatypes * /*mpi_data*/ ) { if (out_control->write_steps > 0) diff --git a/src/USER-REAXC/reaxc_multi_body.cpp b/src/USER-REAXC/reaxc_multi_body.cpp index f7d72a2678..371b8ed65e 100644 --- a/src/USER-REAXC/reaxc_multi_body.cpp +++ b/src/USER-REAXC/reaxc_multi_body.cpp @@ -24,6 +24,7 @@ . ----------------------------------------------------------------------*/ +#include #include "pair_reaxc.h" #include "reaxc_multi_body.h" #include "reaxc_bond_orders.h" diff --git a/src/USER-REAXC/reaxc_reset_tools.cpp b/src/USER-REAXC/reaxc_reset_tools.cpp index e00656694c..c72ccbadcd 100644 --- a/src/USER-REAXC/reaxc_reset_tools.cpp +++ b/src/USER-REAXC/reaxc_reset_tools.cpp @@ -24,6 +24,7 @@ . ----------------------------------------------------------------------*/ +#include #include "pair_reaxc.h" #include "reaxc_reset_tools.h" #include "reaxc_list.h" diff --git a/src/USER-REAXC/reaxc_tool_box.cpp b/src/USER-REAXC/reaxc_tool_box.cpp index ffe42e37bb..2cf66d8655 100644 --- a/src/USER-REAXC/reaxc_tool_box.cpp +++ b/src/USER-REAXC/reaxc_tool_box.cpp @@ -24,9 +24,14 @@ . ----------------------------------------------------------------------*/ +#include #include "pair_reaxc.h" #include "reaxc_tool_box.h" +#if !defined(_MSC_VER) +#include +#endif + #include "error.h" struct timeval tim; diff --git a/src/USER-REAXC/reaxc_traj.cpp b/src/USER-REAXC/reaxc_traj.cpp index 356d7b6eeb..a536445113 100644 --- a/src/USER-REAXC/reaxc_traj.cpp +++ b/src/USER-REAXC/reaxc_traj.cpp @@ -24,6 +24,7 @@ . ----------------------------------------------------------------------*/ +#include #include "pair_reaxc.h" #include "reaxc_traj.h" #include "reaxc_list.h" diff --git a/src/USER-REAXC/reaxc_types.h b/src/USER-REAXC/reaxc_types.h index 0821c065cc..319c373927 100644 --- a/src/USER-REAXC/reaxc_types.h +++ b/src/USER-REAXC/reaxc_types.h @@ -27,19 +27,11 @@ #ifndef __REAX_TYPES_H_ #define __REAX_TYPES_H_ -#include #include "lmptype.h" - -#include -#include +#include #include -#include -#include -#include -#include #include "accelerator_kokkos.h" - namespace LAMMPS_NS { class Error;} #if defined LMP_USER_OMP -- GitLab From 312a1fa004bbec6f6e11e800f17c6e3038f0ecdc Mon Sep 17 00:00:00 2001 From: Ellad Tadmor Date: Thu, 27 Jun 2019 07:58:32 -0500 Subject: [PATCH 113/627] Added species to kim_queries in docs and some other edits --- doc/src/kim_commands.txt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/doc/src/kim_commands.txt b/doc/src/kim_commands.txt index 9be4a79db5..48637ae722 100644 --- a/doc/src/kim_commands.txt +++ b/doc/src/kim_commands.txt @@ -32,7 +32,7 @@ kim_interactions Si kim_init Sim_LAMMPS_ReaxFF_StrachanVanDuinChakraborty_2003_CHNO__SM_107643900657_000 real kim_init Sim_LAMMPS_ReaxFF_StrachanVanDuinChakraborty_2003_CHNO__SM_107643900657_000 metal unit_conversion_mode kim_interactions C H O -kim_query a0 get_lattice_constant_fcc units=\["angstrom"\] :pre +kim_query a0 get_lattice_constant_fcc species=\["Al"] units=\["angstrom"\] :pre [Description:] @@ -53,7 +53,7 @@ Employing OpenKIM IMs provides LAMMPS users with multiple benefits: Reliability :h5 -All content archived in OpenKIM is subject to quality control by the "KIM Editor"_https://openkim.org/governance/. +All content archived in OpenKIM is reviewed by the "KIM Editor"_https://openkim.org/governance/ for quality. IMs in OpenKIM are archived with full provenance control. Each is associated with a maintainer responsible for the integrity of the content. All changes are tracked and recorded. IMs in OpenKIM are exhaustively tested using "KIM Tests"_https://openkim.org/getting-started/kim-tests/ that compute a host of material properties, and "KIM Verification Checks"_https://openkim.org/about-verification-checks/ that provide the user with information on various aspects of the IM behavior and coding correctness. This information is displayed on the IM's page on "OpenKIM"_https://openkim.org. :ul @@ -73,8 +73,8 @@ Types of IMs in OpenKIM :h4 There are two types of IMs archived in OpenKIM: -The first type is called a {KIM Portable Model} (PM). A KIM PM is an independent computer implementation of an IM written in one of the languages supported by KIM (C, C++, Fortran), which conforms to the KIM Application Programming Interface ("KIM API"_https://openkim.org/kim-api/) Portable Model Interface (PMI) standard. A KIM PM will work seamlessly with any simulation code that supports the KIM API/PMI standard (including LAMMPS; see "complete list of supported codes"_https://openkim.org/projects-using-kim/). -The second type is called a {KIM Simulator Model} (SM). A KIM SM is an IM that is implemented natively within a simulation code ({simulator}) that supports the KIM API/SMI (Simulator Model Interface); in this case LAMMPS. A separate SM package is archived in OpenKIM for each parameterization of the IM, which includes all of the necessary parameter files, LAMMPS commands, and metadata (supported species, units, etc.) needed to run the IM in LAMMPS. :ol +The first type is called a {KIM Portable Model} (PM). A KIM PM is an independent computer implementation of an IM written in one of the languages supported by KIM (C, C++, Fortran) that conforms to the KIM Application Programming Interface ("KIM API"_https://openkim.org/kim-api/) Portable Model Interface (PMI) standard. A KIM PM will work seamlessly with any simulation code that supports the KIM API/PMI standard (including LAMMPS; see "complete list of supported codes"_https://openkim.org/projects-using-kim/). +The second type is called a {KIM Simulator Model} (SM). A KIM SM is an IM that is implemented natively within a simulation code ({simulator}) that supports the KIM API Simulator Model Interface (SMI); in this case LAMMPS. A separate SM package is archived in OpenKIM for each parameterization of the IM, which includes all of the necessary parameter files, LAMMPS commands, and metadata (supported species, units, etc.) needed to run the IM in LAMMPS. :ol With these two IM types, OpenKIM can archive and test almost all IMs that can be used by LAMMPS. (It is easy to contribute new IMs to OpenKIM, see @@ -356,7 +356,7 @@ or analysis phases of LAMMPS simulations. Some examples are given below. kim_init EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005 metal boundary p p p -kim_query a0 get_lattice_constant_fcc units=\["angstrom"\] +kim_query a0 get_lattice_constant_fcc species=\["Al"\] units=\["angstrom"\] lattice fcc $\{a0\} ... :pre @@ -377,8 +377,8 @@ changed to: "lattice fcc $\{a0\}*$\{_u_distance\}". kim_init EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005 metal boundary p p p -kim_query a0 get_lattice_constant_fcc units=\["angstrom"\] -kim_query alpha get_linear_thermal_expansion_fcc units=\{"1/K"\} +kim_query a0 get_lattice_constant_fcc species=\["Al"\] units=\["angstrom"\] +kim_query alpha get_linear_thermal_expansion_fcc species=\["Al"\] units=\{"1/K"\} variable DeltaT equal 300 lattice fcc $\{a0\}*$\{alpha\}*$\{DeltaT\} ... :pre @@ -395,7 +395,7 @@ kim_init EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005 metal ... Build fcc crystal containing some defect and compute the total energy ... which is stored in the variable {Etot} ... -kim_query Ec get_cohesive_energy_fcc units=\["eV"\] +kim_query Ec get_cohesive_energy_fcc species=\["Al"\] units=\["eV"\] variable Eform equal $\{Etot\} - count(all)*$\{Ec\} ... :pre -- GitLab From 84e156d380519a7091f657fb89387d4b866280be Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2019 09:14:36 -0400 Subject: [PATCH 114/627] first batch of changes suggested by using include-what-you-use tool --- src/angle.cpp | 1 - src/angle.h | 2 +- src/angle_deprecated.cpp | 1 + src/angle_hybrid.cpp | 3 +-- src/angle_zero.cpp | 3 +-- src/bond.h | 2 +- src/compute.h | 2 +- src/dihedral.h | 2 +- src/dump.h | 2 +- src/fix.h | 2 +- src/improper.h | 2 +- src/lmptype.h | 4 ---- src/main.cpp | 3 --- src/pair.h | 2 +- src/pointers.h | 9 +++++++-- 15 files changed, 18 insertions(+), 22 deletions(-) diff --git a/src/angle.cpp b/src/angle.cpp index 2a297990ac..1b9532ea32 100644 --- a/src/angle.cpp +++ b/src/angle.cpp @@ -11,7 +11,6 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include #include "angle.h" #include "atom.h" #include "comm.h" diff --git a/src/angle.h b/src/angle.h index 3d8371242e..6fc8a664c6 100644 --- a/src/angle.h +++ b/src/angle.h @@ -15,7 +15,7 @@ #define LMP_ANGLE_H #include -#include "pointers.h" +#include "pointers.h" // IWYU pragma: export namespace LAMMPS_NS { diff --git a/src/angle_deprecated.cpp b/src/angle_deprecated.cpp index b5af217b7b..73fcccc53a 100644 --- a/src/angle_deprecated.cpp +++ b/src/angle_deprecated.cpp @@ -16,6 +16,7 @@ ------------------------------------------------------------------------- */ #include +#include #include "angle_deprecated.h" #include "angle_hybrid.h" #include "comm.h" diff --git a/src/angle_hybrid.cpp b/src/angle_hybrid.cpp index 6afa7413b2..47baf770a5 100644 --- a/src/angle_hybrid.cpp +++ b/src/angle_hybrid.cpp @@ -11,13 +11,12 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include +#include #include #include #include "angle_hybrid.h" #include "atom.h" #include "neighbor.h" -#include "domain.h" #include "comm.h" #include "force.h" #include "memory.h" diff --git a/src/angle_zero.cpp b/src/angle_zero.cpp index 6eb127fa58..62eab85aee 100644 --- a/src/angle_zero.cpp +++ b/src/angle_zero.cpp @@ -15,8 +15,7 @@ Contributing author: Carsten Svaneborg (SDU) ------------------------------------------------------------------------- */ -#include -#include +#include #include #include "angle_zero.h" #include "atom.h" diff --git a/src/bond.h b/src/bond.h index 8fb7040832..f9fb9384ed 100644 --- a/src/bond.h +++ b/src/bond.h @@ -15,7 +15,7 @@ #define LMP_BOND_H #include -#include "pointers.h" +#include "pointers.h" // IWYU pragma: export namespace LAMMPS_NS { diff --git a/src/compute.h b/src/compute.h index a023834368..38d001db6f 100644 --- a/src/compute.h +++ b/src/compute.h @@ -14,7 +14,7 @@ #ifndef LMP_COMPUTE_H #define LMP_COMPUTE_H -#include "pointers.h" +#include "pointers.h" // IWYU pragma: export namespace LAMMPS_NS { diff --git a/src/dihedral.h b/src/dihedral.h index f1b42008bf..8654132ed5 100644 --- a/src/dihedral.h +++ b/src/dihedral.h @@ -15,7 +15,7 @@ #define LMP_DIHEDRAL_H #include -#include "pointers.h" +#include "pointers.h" // IWYU pragma: export namespace LAMMPS_NS { diff --git a/src/dump.h b/src/dump.h index 1c6a131f76..d42e7f1f39 100644 --- a/src/dump.h +++ b/src/dump.h @@ -16,7 +16,7 @@ #include #include -#include "pointers.h" +#include "pointers.h" // IWYU pragma: export namespace LAMMPS_NS { diff --git a/src/fix.h b/src/fix.h index 7eaff38bd3..7e55e96269 100644 --- a/src/fix.h +++ b/src/fix.h @@ -14,7 +14,7 @@ #ifndef LMP_FIX_H #define LMP_FIX_H -#include "pointers.h" +#include "pointers.h" // IWYU pragma: export namespace LAMMPS_NS { diff --git a/src/improper.h b/src/improper.h index d940b43a13..4af5ad4a35 100644 --- a/src/improper.h +++ b/src/improper.h @@ -15,7 +15,7 @@ #define LMP_IMPROPER_H #include -#include "pointers.h" +#include "pointers.h" // IWYU pragma: export namespace LAMMPS_NS { diff --git a/src/lmptype.h b/src/lmptype.h index 12fa6cc4fb..8a596e9f83 100644 --- a/src/lmptype.h +++ b/src/lmptype.h @@ -48,10 +48,6 @@ namespace LAMMPS_NS { -// enum used for KOKKOS host/device flags - -enum ExecutionSpace{Host,Device}; - // reserve 2 hi bits in molecular system neigh list for special bonds flag // max local + ghost atoms per processor = 2^30 - 1 diff --git a/src/main.cpp b/src/main.cpp index 8eb5e4e543..1be9c253eb 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -14,9 +14,6 @@ #include #include "lammps.h" #include "input.h" -#include "error.h" -#include -#include #if defined(LAMMPS_TRAP_FPE) && defined(_GNU_SOURCE) #include diff --git a/src/pair.h b/src/pair.h index 7481514dae..501f3af8f8 100644 --- a/src/pair.h +++ b/src/pair.h @@ -14,7 +14,7 @@ #ifndef LMP_PAIR_H #define LMP_PAIR_H -#include "pointers.h" +#include "pointers.h" // IWYU pragma: export namespace LAMMPS_NS { diff --git a/src/pointers.h b/src/pointers.h index 44967f5135..fc359a5667 100644 --- a/src/pointers.h +++ b/src/pointers.h @@ -21,9 +21,10 @@ #ifndef LMP_POINTERS_H #define LMP_POINTERS_H -#include "lmptype.h" +#include "lmptype.h" // IWYU pragma: export #include -#include "lammps.h" +#include +#include "lammps.h" // IWYU pragma: export namespace LAMMPS_NS { @@ -34,6 +35,10 @@ namespace LAMMPS_NS { #define MIN(A,B) ((A) < (B) ? (A) : (B)) #define MAX(A,B) ((A) > (B) ? (A) : (B)) +// enum used for KOKKOS host/device flags + +enum ExecutionSpace{Host,Device}; + class Pointers { public: Pointers(LAMMPS *ptr) : -- GitLab From 333bec0222ed2f68fa84dc208c0b2f738e5e9da2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2019 10:12:53 -0400 Subject: [PATCH 115/627] headers that directly or indirectly include pointers.h may assume is loaded, too. --- src/angle.h | 1 - src/angle_hybrid.h | 1 - src/angle_zero.h | 1 - src/atom.cpp | 4 ---- src/bond.h | 1 - src/dihedral.h | 1 - src/dump.h | 1 - src/improper.h | 1 - src/pointers.h | 2 +- 9 files changed, 1 insertion(+), 12 deletions(-) diff --git a/src/angle.h b/src/angle.h index 6fc8a664c6..7a008f7ca7 100644 --- a/src/angle.h +++ b/src/angle.h @@ -14,7 +14,6 @@ #ifndef LMP_ANGLE_H #define LMP_ANGLE_H -#include #include "pointers.h" // IWYU pragma: export namespace LAMMPS_NS { diff --git a/src/angle_hybrid.h b/src/angle_hybrid.h index 4fde71e43f..730d55b0e2 100644 --- a/src/angle_hybrid.h +++ b/src/angle_hybrid.h @@ -20,7 +20,6 @@ AngleStyle(hybrid,AngleHybrid) #ifndef LMP_ANGLE_HYBRID_H #define LMP_ANGLE_HYBRID_H -#include #include "angle.h" namespace LAMMPS_NS { diff --git a/src/angle_zero.h b/src/angle_zero.h index b91be5c8d7..bc1ce0725f 100644 --- a/src/angle_zero.h +++ b/src/angle_zero.h @@ -20,7 +20,6 @@ AngleStyle(zero,AngleZero) #ifndef LMP_ANGLE_ZERO_H #define LMP_ANGLE_ZERO_H -#include #include "angle.h" namespace LAMMPS_NS { diff --git a/src/atom.cpp b/src/atom.cpp index 1f5d5a80c4..8176039165 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -12,11 +12,9 @@ ------------------------------------------------------------------------- */ #include -#include #include #include #include -#include #include "atom.h" #include "style_atom.h" #include "atom_vec.h" @@ -28,14 +26,12 @@ #include "fix.h" #include "compute.h" #include "output.h" -#include "thermo.h" #include "update.h" #include "domain.h" #include "group.h" #include "input.h" #include "variable.h" #include "molecule.h" -#include "atom_masks.h" #include "math_const.h" #include "memory.h" #include "error.h" diff --git a/src/bond.h b/src/bond.h index f9fb9384ed..5c3b933083 100644 --- a/src/bond.h +++ b/src/bond.h @@ -14,7 +14,6 @@ #ifndef LMP_BOND_H #define LMP_BOND_H -#include #include "pointers.h" // IWYU pragma: export namespace LAMMPS_NS { diff --git a/src/dihedral.h b/src/dihedral.h index 8654132ed5..ed6c02c5b9 100644 --- a/src/dihedral.h +++ b/src/dihedral.h @@ -14,7 +14,6 @@ #ifndef LMP_DIHEDRAL_H #define LMP_DIHEDRAL_H -#include #include "pointers.h" // IWYU pragma: export namespace LAMMPS_NS { diff --git a/src/dump.h b/src/dump.h index d42e7f1f39..0173aa3112 100644 --- a/src/dump.h +++ b/src/dump.h @@ -15,7 +15,6 @@ #define LMP_DUMP_H #include -#include #include "pointers.h" // IWYU pragma: export namespace LAMMPS_NS { diff --git a/src/improper.h b/src/improper.h index 4af5ad4a35..234dc9cb20 100644 --- a/src/improper.h +++ b/src/improper.h @@ -14,7 +14,6 @@ #ifndef LMP_IMPROPER_H #define LMP_IMPROPER_H -#include #include "pointers.h" // IWYU pragma: export namespace LAMMPS_NS { diff --git a/src/pointers.h b/src/pointers.h index fc359a5667..f9ef229c90 100644 --- a/src/pointers.h +++ b/src/pointers.h @@ -23,7 +23,7 @@ #include "lmptype.h" // IWYU pragma: export #include -#include +#include // IWYU pragma: export #include "lammps.h" // IWYU pragma: export namespace LAMMPS_NS { -- GitLab From 60adaa24cb8f19d9effc6da6f1ea6967c736a947 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Thu, 27 Jun 2019 08:52:34 -0600 Subject: [PATCH 116/627] Remove redundant computation --- src/KOKKOS/sna_kokkos_impl.h | 22 ---------------------- src/SNAP/sna.cpp | 22 ---------------------- 2 files changed, 44 deletions(-) diff --git a/src/KOKKOS/sna_kokkos_impl.h b/src/KOKKOS/sna_kokkos_impl.h index e3ce1626d9..9b96cb8a16 100644 --- a/src/KOKKOS/sna_kokkos_impl.h +++ b/src/KOKKOS/sna_kokkos_impl.h @@ -1006,11 +1006,9 @@ void SNAKokkos::compute_duarray(const typename Kokkos::TeamPolicy::compute_duarray(const typename Kokkos::TeamPolicy::compute_duarray(const typename Kokkos::TeamPolicy::compute_duarray(const typename Kokkos::TeamPolicy::compute_duarray(const typename Kokkos::TeamPolicy Date: Thu, 27 Jun 2019 08:53:58 -0600 Subject: [PATCH 117/627] Remove no-op --- src/SNAP/sna.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/SNAP/sna.cpp b/src/SNAP/sna.cpp index 949e0ee071..ada3f528d2 100644 --- a/src/SNAP/sna.cpp +++ b/src/SNAP/sna.cpp @@ -610,8 +610,6 @@ void SNA::compute_bi() sumzu += 0.5*(ulisttot_r[jju]*zlist_r[jjz] + ulisttot_i[jju]*zlist_i[jjz]); - jjz++; - jju++; } // end if jeven blist[jjb] = 2.0*sumzu; -- GitLab From 48220b39b5813b8144a9ca8aa6dd37aa688b238f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2019 10:13:43 -0400 Subject: [PATCH 118/627] include explicitly in .cpp files, though --- src/angle_hybrid.cpp | 1 + src/atom.cpp | 2 +- src/atom_map.cpp | 2 ++ src/atom_vec.cpp | 1 + src/atom_vec.h | 3 +-- src/atom_vec_body.h | 1 - 6 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/angle_hybrid.cpp b/src/angle_hybrid.cpp index 47baf770a5..48bb241100 100644 --- a/src/angle_hybrid.cpp +++ b/src/angle_hybrid.cpp @@ -12,6 +12,7 @@ ------------------------------------------------------------------------- */ #include +#include #include #include #include "angle_hybrid.h" diff --git a/src/atom.cpp b/src/atom.cpp index 8176039165..b79febfc20 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -12,6 +12,7 @@ ------------------------------------------------------------------------- */ #include +#include #include #include #include @@ -25,7 +26,6 @@ #include "modify.h" #include "fix.h" #include "compute.h" -#include "output.h" #include "update.h" #include "domain.h" #include "group.h" diff --git a/src/atom_map.cpp b/src/atom_map.cpp index e9cd590624..35d7435ae2 100644 --- a/src/atom_map.cpp +++ b/src/atom_map.cpp @@ -11,6 +11,8 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include "lmptype.h" +#include #include #include "atom.h" #include "comm.h" diff --git a/src/atom_vec.cpp b/src/atom_vec.cpp index a7ca6fcb19..91e1980dd0 100644 --- a/src/atom_vec.cpp +++ b/src/atom_vec.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include #include #include #include "atom_vec.h" diff --git a/src/atom_vec.h b/src/atom_vec.h index 87fb35d9c7..26c181be1e 100644 --- a/src/atom_vec.h +++ b/src/atom_vec.h @@ -14,8 +14,7 @@ #ifndef LMP_ATOM_VEC_H #define LMP_ATOM_VEC_H -#include -#include "pointers.h" +#include "pointers.h" // IWYU pragma: export namespace LAMMPS_NS { diff --git a/src/atom_vec_body.h b/src/atom_vec_body.h index 4d02c4b3e0..09f03caca1 100644 --- a/src/atom_vec_body.h +++ b/src/atom_vec_body.h @@ -112,7 +112,6 @@ class AtomVecBody : public AtomVec { void grow_bonus(); void copy_bonus(int, int); - //void check(int); }; } -- GitLab From 121947e79d33d2d997bf705ec9b656da2c1edae3 Mon Sep 17 00:00:00 2001 From: Ellad Tadmor Date: Thu, 27 Jun 2019 12:52:20 -0500 Subject: [PATCH 119/627] Added hcp query example to kim_commands --- doc/src/kim_commands.txt | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/doc/src/kim_commands.txt b/doc/src/kim_commands.txt index 48637ae722..66319d7a08 100644 --- a/doc/src/kim_commands.txt +++ b/doc/src/kim_commands.txt @@ -352,7 +352,7 @@ webpage at "https://query.openkim.org"_https://query.openkim.org/ The data obtained by {kim_query} commands can be used as part of the setup or analysis phases of LAMMPS simulations. Some examples are given below. -[Define a crystal at its equilibrium lattice constant] +[Define an equilibrium fcc crystal] kim_init EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005 metal boundary p p p @@ -373,6 +373,26 @@ Note that in {unit_conversion_mode} the results obtained from a For example, in the above script, the lattice command would need to be changed to: "lattice fcc $\{a0\}*$\{_u_distance\}". +[Define an equilibrium hcp crystal] + +kim_init EAM_Dynamo_Mendelev_2007_Zr__MO_848899341753_000 metal +boundary p p p +kim_query latconst get_lattice_constant_hcp species=\["Zr"\] units=\["angstrom"\] +variable a0 equal latconst_1 +variable c0 equal latconst_2 +variable c_to_a equal $\{c0\}/$\{a0\} +lattice custom $\{a0\} a1 0.5 -0.866025 0 a2 0.5 0.866025 0 a3 0 0 $\{c_to_a\} & + basis 0.333333 0.666666 0.25 basis 0.666666 0.333333 0.75 +... :pre + +In this case the {kim_query} returns two arguments (since the hexagonal +close packed (hcp) structure has two independent lattice constants). +In the case where a query returns multiple results, the default behavior +for {kim_query} is to split these into individual variables of the form +{prefix_I}, where {prefix} is set to the the {kim_query} {variable} argument +and {I} ranges from 1 to the number of returned values. The number and order of +the returned values is determined by the type of query performed. + [Define a crystal at finite temperature accounting for thermal expansion] kim_init EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005 metal -- GitLab From 03099d6e54e8b5832e945b32b81afcfeb3a3440b Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2019 17:11:53 -0400 Subject: [PATCH 120/627] some more include file consistency changes --- src/atom_vec_body.cpp | 3 +-- src/atom_vec_body.h | 1 - src/atom_vec_ellipsoid.cpp | 2 +- src/atom_vec_line.cpp | 1 - src/atom_vec_sphere.cpp | 2 -- src/atom_vec_tri.cpp | 1 - src/balance.cpp | 3 --- src/balance.h | 1 - src/body.cpp | 3 --- src/body.h | 1 - src/bond.cpp | 2 +- src/bond_hybrid.cpp | 4 ++-- src/pointers.h | 5 +++++ 13 files changed, 10 insertions(+), 19 deletions(-) diff --git a/src/atom_vec_body.cpp b/src/atom_vec_body.cpp index d5f286c077..3e9528d6b9 100644 --- a/src/atom_vec_body.cpp +++ b/src/atom_vec_body.cpp @@ -11,17 +11,16 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include #include #include #include "atom_vec_body.h" +#include "my_pool_chunk.h" #include "style_body.h" #include "body.h" #include "atom.h" #include "comm.h" #include "domain.h" #include "modify.h" -#include "force.h" #include "fix.h" #include "memory.h" #include "error.h" diff --git a/src/atom_vec_body.h b/src/atom_vec_body.h index 09f03caca1..38309648fb 100644 --- a/src/atom_vec_body.h +++ b/src/atom_vec_body.h @@ -21,7 +21,6 @@ AtomStyle(body,AtomVecBody) #define LMP_ATOM_VEC_BODY_H #include "atom_vec.h" -#include "my_pool_chunk.h" namespace LAMMPS_NS { diff --git a/src/atom_vec_ellipsoid.cpp b/src/atom_vec_ellipsoid.cpp index 2bf3f683d0..ad167bef79 100644 --- a/src/atom_vec_ellipsoid.cpp +++ b/src/atom_vec_ellipsoid.cpp @@ -16,11 +16,11 @@ ------------------------------------------------------------------------- */ #include +#include #include "atom_vec_ellipsoid.h" #include "math_extra.h" #include "atom.h" #include "comm.h" -#include "force.h" #include "domain.h" #include "modify.h" #include "fix.h" diff --git a/src/atom_vec_line.cpp b/src/atom_vec_line.cpp index 020b622c93..6b197d2663 100644 --- a/src/atom_vec_line.cpp +++ b/src/atom_vec_line.cpp @@ -19,7 +19,6 @@ #include "comm.h" #include "domain.h" #include "modify.h" -#include "force.h" #include "fix.h" #include "math_const.h" #include "memory.h" diff --git a/src/atom_vec_sphere.cpp b/src/atom_vec_sphere.cpp index dec98e5200..b3f4bfe391 100644 --- a/src/atom_vec_sphere.cpp +++ b/src/atom_vec_sphere.cpp @@ -11,7 +11,6 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include #include #include #include "atom_vec_sphere.h" @@ -19,7 +18,6 @@ #include "comm.h" #include "domain.h" #include "modify.h" -#include "force.h" #include "fix.h" #include "fix_adapt.h" #include "math_const.h" diff --git a/src/atom_vec_tri.cpp b/src/atom_vec_tri.cpp index 8fbe0a92dc..b0b6eca19b 100644 --- a/src/atom_vec_tri.cpp +++ b/src/atom_vec_tri.cpp @@ -20,7 +20,6 @@ #include "comm.h" #include "domain.h" #include "modify.h" -#include "force.h" #include "fix.h" #include "math_const.h" #include "memory.h" diff --git a/src/balance.cpp b/src/balance.cpp index 61ac895467..04f342b69b 100644 --- a/src/balance.cpp +++ b/src/balance.cpp @@ -20,7 +20,6 @@ #include #include -#include #include #include "balance.h" #include "atom.h" @@ -30,7 +29,6 @@ #include "domain.h" #include "force.h" #include "update.h" -#include "group.h" #include "modify.h" #include "fix_store.h" #include "imbalance.h" @@ -39,7 +37,6 @@ #include "imbalance_neigh.h" #include "imbalance_store.h" #include "imbalance_var.h" -#include "timer.h" #include "memory.h" #include "error.h" diff --git a/src/balance.h b/src/balance.h index 420031502a..424da33757 100644 --- a/src/balance.h +++ b/src/balance.h @@ -20,7 +20,6 @@ CommandStyle(balance,Balance) #ifndef LMP_BALANCE_H #define LMP_BALANCE_H -#include #include "pointers.h" namespace LAMMPS_NS { diff --git a/src/body.cpp b/src/body.cpp index 78e2f5d71b..10f88bd43b 100644 --- a/src/body.cpp +++ b/src/body.cpp @@ -11,11 +11,8 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include -#include #include #include "body.h" -#include "error.h" using namespace LAMMPS_NS; diff --git a/src/body.h b/src/body.h index 59001620f8..44581b75f6 100644 --- a/src/body.h +++ b/src/body.h @@ -16,7 +16,6 @@ #include "pointers.h" #include "atom_vec_body.h" -#include "my_pool_chunk.h" namespace LAMMPS_NS { diff --git a/src/bond.cpp b/src/bond.cpp index edcd869425..0d50b7e3e5 100644 --- a/src/bond.cpp +++ b/src/bond.cpp @@ -11,7 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include +#include #include "bond.h" #include "atom.h" #include "comm.h" diff --git a/src/bond_hybrid.cpp b/src/bond_hybrid.cpp index 65609b4b6e..0fb23a3214 100644 --- a/src/bond_hybrid.cpp +++ b/src/bond_hybrid.cpp @@ -11,13 +11,13 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include +#include +#include #include #include #include "bond_hybrid.h" #include "atom.h" #include "neighbor.h" -#include "domain.h" #include "comm.h" #include "force.h" #include "memory.h" diff --git a/src/pointers.h b/src/pointers.h index f9ef229c90..5df5b72d47 100644 --- a/src/pointers.h +++ b/src/pointers.h @@ -39,6 +39,11 @@ namespace LAMMPS_NS { enum ExecutionSpace{Host,Device}; +// global forward declarations + +template class MyPoolChunk; +template class MyPage; + class Pointers { public: Pointers(LAMMPS *ptr) : -- GitLab From 2c0a66b7f8c21ea580dc7bb893461d3585969559 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2019 20:50:25 -0400 Subject: [PATCH 121/627] increase buffer size of fix tune/kspace. header cleanup. remove use of iostreams --- src/KSPACE/fix_tune_kspace.cpp | 41 +++++++++++++++++----------------- src/KSPACE/fix_tune_kspace.h | 9 ++++---- 2 files changed, 24 insertions(+), 26 deletions(-) diff --git a/src/KSPACE/fix_tune_kspace.cpp b/src/KSPACE/fix_tune_kspace.cpp index 0c726985dc..2b22b44340 100644 --- a/src/KSPACE/fix_tune_kspace.cpp +++ b/src/KSPACE/fix_tune_kspace.cpp @@ -15,13 +15,11 @@ Contributing author: Paul Crozier (SNL) ------------------------------------------------------------------------- */ +#include #include -#include +#include #include "fix_tune_kspace.h" #include "update.h" -#include "domain.h" -#include "atom.h" -#include "comm.h" #include "force.h" #include "kspace.h" #include "pair.h" @@ -31,9 +29,6 @@ #include "neighbor.h" #include "modify.h" #include "compute.h" -#include -#include -#include #define SWAP(a,b) {temp=(a);(a)=(b);(b)=temp;} #define SIGN(a,b) ((b) >= 0.0 ? fabs(a) : -fabs(a)) #define GOLD 1.618034 @@ -101,7 +96,7 @@ void FixTuneKspace::init() double old_acc = force->kspace->accuracy/force->kspace->two_charge_force; char old_acc_str[16]; snprintf(old_acc_str,16,"%g",old_acc); - strcpy(new_acc_str,old_acc_str); + strncpy(new_acc_str,old_acc_str,16); int itmp; double *p_cutoff = (double *) force->pair->extract("cut_coul",itmp); @@ -131,36 +126,37 @@ void FixTuneKspace::pre_exchange() // test Ewald store_old_kspace_settings(); strcpy(new_kspace_style,"ewald"); - sprintf(new_pair_style,"%s/long",base_pair_style); + snprintf(new_pair_style,64,"%s/long",base_pair_style); update_pair_style(new_pair_style,pair_cut_coul); update_kspace_style(new_kspace_style,new_acc_str); } else if (niter == 2) { // test PPPM store_old_kspace_settings(); strcpy(new_kspace_style,"pppm"); - sprintf(new_pair_style,"%s/long",base_pair_style); + snprintf(new_pair_style,64,"%s/long",base_pair_style); update_pair_style(new_pair_style,pair_cut_coul); update_kspace_style(new_kspace_style,new_acc_str); } else if (niter == 3) { // test MSM store_old_kspace_settings(); strcpy(new_kspace_style,"msm"); - sprintf(new_pair_style,"%s/msm",base_pair_style); + snprintf(new_pair_style,64,"%s/msm",base_pair_style); update_pair_style(new_pair_style,pair_cut_coul); update_kspace_style(new_kspace_style,new_acc_str); } else if (niter == 4) { store_old_kspace_settings(); - cout << "ewald_time = " << ewald_time << endl; - cout << "pppm_time = " << pppm_time << endl; - cout << "msm_time = " << msm_time << endl; + if (screen) fprintf(screen,"ewald_time = %g\npppm_time = %g\nmsm_time = %g", + ewald_time, pppm_time, msm_time); + if (logfile) fprintf(logfile,"ewald_time = %g\npppm_time = %g\nmsm_time = %g", + ewald_time, pppm_time, msm_time); // switch to fastest one strcpy(new_kspace_style,"ewald"); - sprintf(new_pair_style,"%s/long",base_pair_style); + snprintf(new_pair_style,64,"%s/long",base_pair_style); if (pppm_time < ewald_time && pppm_time < msm_time) strcpy(new_kspace_style,"pppm"); else if (msm_time < pppm_time && msm_time < ewald_time) { strcpy(new_kspace_style,"msm"); - sprintf(new_pair_style,"%s/msm",base_pair_style); + snprintf(new_pair_style,64,"%s/msm",base_pair_style); } update_pair_style(new_pair_style,pair_cut_coul); update_kspace_style(new_kspace_style,new_acc_str); @@ -243,8 +239,8 @@ void FixTuneKspace::update_pair_style(char *new_pair_style, p_pair_settings_file = tmpfile(); force->pair->write_restart(p_pair_settings_file); rewind(p_pair_settings_file); - - cout << "Creating new pair style: " << new_pair_style << endl; + if (screen) fprintf(screen,"Creating new pair style: %s\n",new_pair_style); + if (logfile) fprintf(logfile,"Creating new pair style: %s\n",new_pair_style); // delete old pair style and create new one force->create_pair(new_pair_style,1); @@ -253,7 +249,8 @@ void FixTuneKspace::update_pair_style(char *new_pair_style, double *pcutoff = (double *) force->pair->extract("cut_coul",itmp); double current_cutoff = *pcutoff; - cout << "Coulomb cutoff for real space: " << current_cutoff << endl; + if (screen) fprintf(screen,"Coulomb cutoff for real space: %g\n", current_cutoff); + if (logfile) fprintf(logfile,"Coulomb cutoff for real space: %g\n", current_cutoff); // close temporary file fclose(p_pair_settings_file); @@ -321,7 +318,8 @@ void FixTuneKspace::adjust_rcut(double time) int itmp; double *p_cutoff = (double *) force->pair->extract("cut_coul",itmp); double current_cutoff = *p_cutoff; - cout << "Old Coulomb cutoff for real space: " << current_cutoff << endl; + if (screen) fprintf(screen,"Old Coulomb cutoff for real space: %g\n",current_cutoff); + if (logfile) fprintf(logfile,"Old Coulomb cutoff for real space: %g\n",current_cutoff); // use Brent's method from Numerical Recipes to find optimal real space cutoff @@ -391,7 +389,8 @@ void FixTuneKspace::adjust_rcut(double time) // report the new cutoff double *new_cutoff = (double *) force->pair->extract("cut_coul",itmp); current_cutoff = *new_cutoff; - cout << "Adjusted Coulomb cutoff for real space: " << current_cutoff << endl; + if (screen) fprintf(screen,"Adjusted Coulomb cutoff for real space: %g\n", current_cutoff); + if (logfile) fprintf(logfile,"Adjusted Coulomb cutoff for real space: %g\n", current_cutoff); store_old_kspace_settings(); update_pair_style(new_pair_style,pair_cut_coul); diff --git a/src/KSPACE/fix_tune_kspace.h b/src/KSPACE/fix_tune_kspace.h index 6f40fc8711..1ccd735317 100644 --- a/src/KSPACE/fix_tune_kspace.h +++ b/src/KSPACE/fix_tune_kspace.h @@ -20,7 +20,6 @@ FixStyle(tune/kspace,FixTuneKspace) #ifndef LMP_FIX_TUNE_KSPACE_H #define LMP_FIX_TUNE_KSPACE_H -#include #include "fix.h" namespace LAMMPS_NS { @@ -52,10 +51,10 @@ class FixTuneKspace : public Fix { double ewald_time,pppm_time,msm_time; double pair_cut_coul; - char new_acc_str[12]; - char new_kspace_style[20]; - char new_pair_style[20]; - char base_pair_style[20]; + char new_acc_str[16]; + char new_kspace_style[64]; + char new_pair_style[64]; + char base_pair_style[64]; int old_differentiation_flag; int old_slabflag; -- GitLab From 932f052cbf0cf4e94a4df52bbe3414dfeca90959 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2019 20:52:23 -0400 Subject: [PATCH 122/627] more header cleanup --- src/GPU/pair_vashishta_gpu.cpp | 1 - src/angle_deprecated.cpp | 1 - src/angle_hybrid.cpp | 1 - src/atom.cpp | 1 - src/atom_map.cpp | 2 +- src/atom_vec.cpp | 1 - src/atom_vec_hybrid.h | 1 - src/bond_zero.cpp | 4 ++-- src/change_box.cpp | 1 - src/citeme.cpp | 3 +-- src/citeme.h | 3 +-- src/comm.cpp | 1 + src/comm_brick.cpp | 8 -------- src/hashlittle.cpp | 2 +- src/lammps.cpp | 1 + 15 files changed, 8 insertions(+), 23 deletions(-) diff --git a/src/GPU/pair_vashishta_gpu.cpp b/src/GPU/pair_vashishta_gpu.cpp index b496359b8a..5539653756 100644 --- a/src/GPU/pair_vashishta_gpu.cpp +++ b/src/GPU/pair_vashishta_gpu.cpp @@ -14,7 +14,6 @@ /* ---------------------------------------------------------------------- Contributing author: Anders Hafreager (UiO) ------------------------------------------------------------------------- */ -#include #include #include #include diff --git a/src/angle_deprecated.cpp b/src/angle_deprecated.cpp index 73fcccc53a..b5af217b7b 100644 --- a/src/angle_deprecated.cpp +++ b/src/angle_deprecated.cpp @@ -16,7 +16,6 @@ ------------------------------------------------------------------------- */ #include -#include #include "angle_deprecated.h" #include "angle_hybrid.h" #include "comm.h" diff --git a/src/angle_hybrid.cpp b/src/angle_hybrid.cpp index 48bb241100..47baf770a5 100644 --- a/src/angle_hybrid.cpp +++ b/src/angle_hybrid.cpp @@ -12,7 +12,6 @@ ------------------------------------------------------------------------- */ #include -#include #include #include #include "angle_hybrid.h" diff --git a/src/atom.cpp b/src/atom.cpp index b79febfc20..eab8a3063d 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -13,7 +13,6 @@ #include #include -#include #include #include #include "atom.h" diff --git a/src/atom_map.cpp b/src/atom_map.cpp index 35d7435ae2..b14ebdba68 100644 --- a/src/atom_map.cpp +++ b/src/atom_map.cpp @@ -11,7 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include "lmptype.h" +#include "pointers.h" #include #include #include "atom.h" diff --git a/src/atom_vec.cpp b/src/atom_vec.cpp index 91e1980dd0..a7ca6fcb19 100644 --- a/src/atom_vec.cpp +++ b/src/atom_vec.cpp @@ -11,7 +11,6 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include #include #include #include "atom_vec.h" diff --git a/src/atom_vec_hybrid.h b/src/atom_vec_hybrid.h index a027923a17..8129baccba 100644 --- a/src/atom_vec_hybrid.h +++ b/src/atom_vec_hybrid.h @@ -20,7 +20,6 @@ AtomStyle(hybrid,AtomVecHybrid) #ifndef LMP_ATOM_VEC_HYBRID_H #define LMP_ATOM_VEC_HYBRID_H -#include #include "atom_vec.h" namespace LAMMPS_NS { diff --git a/src/bond_zero.cpp b/src/bond_zero.cpp index 0847cf9e6b..3932846cb4 100644 --- a/src/bond_zero.cpp +++ b/src/bond_zero.cpp @@ -15,8 +15,8 @@ Contributing author: Carsten Svaneborg (SDU) ------------------------------------------------------------------------- */ -#include -#include +#include +#include #include #include "bond_zero.h" #include "atom.h" diff --git a/src/change_box.cpp b/src/change_box.cpp index b7d3cb245f..1fed65b430 100644 --- a/src/change_box.cpp +++ b/src/change_box.cpp @@ -13,7 +13,6 @@ #include #include -#include #include #include "change_box.h" #include "atom.h" diff --git a/src/citeme.cpp b/src/citeme.cpp index d021722671..24896b448c 100644 --- a/src/citeme.cpp +++ b/src/citeme.cpp @@ -11,10 +11,9 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include #include "citeme.h" -#include "version.h" #include "universe.h" -#include "error.h" using namespace LAMMPS_NS; diff --git a/src/citeme.h b/src/citeme.h index 262b284337..c383ec2227 100644 --- a/src/citeme.h +++ b/src/citeme.h @@ -15,7 +15,6 @@ #define LMP_CITEME_H #include "pointers.h" -#include #include namespace LAMMPS_NS { @@ -29,7 +28,7 @@ class CiteMe : protected Pointers { private: FILE *fp; // opaque pointer to log.cite file object typedef std::set citeset; - citeset *cs; // registered set of publications + citeset *cs; // registered set of publications }; } diff --git a/src/comm.cpp b/src/comm.cpp index 052de93793..5f846cf292 100644 --- a/src/comm.cpp +++ b/src/comm.cpp @@ -21,6 +21,7 @@ #include "force.h" #include "pair.h" #include "modify.h" +#include "neighbor.h" #include "fix.h" #include "compute.h" #include "domain.h" diff --git a/src/comm_brick.cpp b/src/comm_brick.cpp index 330551aaed..47f60a3da6 100644 --- a/src/comm_brick.cpp +++ b/src/comm_brick.cpp @@ -19,23 +19,15 @@ #include #include #include -#include #include "comm_brick.h" -#include "comm_tiled.h" -#include "universe.h" #include "atom.h" #include "atom_vec.h" -#include "force.h" #include "pair.h" #include "domain.h" #include "neighbor.h" -#include "group.h" -#include "modify.h" #include "fix.h" #include "compute.h" -#include "output.h" #include "dump.h" -#include "math_extra.h" #include "error.h" #include "memory.h" diff --git a/src/hashlittle.cpp b/src/hashlittle.cpp index f612be9eeb..42109abd24 100644 --- a/src/hashlittle.cpp +++ b/src/hashlittle.cpp @@ -3,7 +3,7 @@ // bob_jenkins@burtleburtle.net #include -#include +#include #include // if the system defines the __BYTE_ORDER__ define, diff --git a/src/lammps.cpp b/src/lammps.cpp index 320d89ed52..83a2f057ee 100644 --- a/src/lammps.cpp +++ b/src/lammps.cpp @@ -12,6 +12,7 @@ ------------------------------------------------------------------------- */ #include +#include #include #include #include -- GitLab From 9c53a5ca3f1c756601b091a97ea5020a7187d2e5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2019 21:40:28 -0400 Subject: [PATCH 123/627] add first draft of a summary of the rules for include files --- doc/include-file-conventions.md | 125 ++++++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 doc/include-file-conventions.md diff --git a/doc/include-file-conventions.md b/doc/include-file-conventions.md new file mode 100644 index 0000000000..5152051ba5 --- /dev/null +++ b/doc/include-file-conventions.md @@ -0,0 +1,125 @@ +# Outline of include file conventions in LAMMPS + +This purpose of this document is to provide a point of reference +for LAMMPS developers and contributors as to what include files +and definitions to put where into LAMMPS source. +Last change 2019-06-27 + +## Table of Contents + + * [Motivation](#motivation) + * [Rules](#rules) + * [Tools](#tools) + * [Legacy Code](#legacy-code) + +## Motivation + +The conventions outlined in this document are supposed to help making +maintenance of the LAMMPS software easier. By trying to achieve +consistency across files contributed by different developers, it will +become easier to modify and adjust files by the code maintainers, and +overall the chance for errors or portability issues will be reduced. +Also the rules employed are supposed to minimize naming conflicts and +simplify dependencies between files (and thus speed up compilation), as +well as make otherwise hidden dependencies visible. + +## Rules + +Below are the various rules that are applied. Not all a enforced +strictly and automatically. If there are no significant side effects, +exceptions may be possible for cases, where a full compliance to the +rules may require a large effort compared to the benefit. + +### Core Files Versus Package Files + +All rules listed below are most strictly observed for core LAMMPS files. +Which are the files that are not part of a package and files of the +packages MOLECULE, MANYBODY, KSPACE, and RIGID. On the other end of +the spectrum are USER packages and legacy packages that predate these +rules and thus may not be fully compliant. Also new contributions +will be checked more closely, while existing code is incrementally +adapted to the rules as time and required effort permits. + +### System Versus Local Header Files + +All system or library provided include files are included with angular +brackets (examples: `#include ` or `#include `) while +include files provided with LAMMPS are included with double quotes +(examples: `#include "pointers.h"` or `#include "compute_temp.h"`). + +For headers declaring functions of the C-library, the corresponding +C++ versions should be included (examples: `#include ` or +`#include `). However, those are limited to those defined +in the C++98 standard. Some files thus must use the older style unless +the minimum C++ standard requirement of LAMMPS is lifted to C++11 or +even beyond (examples: `#include ` versus `#include ` +or `#include ` versus `#include `). + +### C++ Standard Compliance + +LAMMPS core files currently correspond to the C++98 standard. Files +requiring C++11 or later are only permitted in (optional) packages +and particularly packages that are not part of the list of commonly +used packages like MOLECULE, KSPACE, MANYBODY, or RIGID. + +Also, LAMMPS uses the C-style stdio library for I/O instead of iostreams. +Since using both at the same time can cause problems, iostreams should +be avoided where possible. + +### Lean Header Files + +Header files will typically contain the definition of a (single) class. +These header files should have as few include statements as possible. +This is particularly important for classes that implement a "style" and +thus use a macro of the kind `SomeStyle(some/name,SomeName)`. These will +be all included in the auto-generated `"some_style.h"` files which will +result in a high potential for direct or indirect symbol name clashes. + +In the ideal case, the header would only include one file defining the +parent class. That would typically be either `#include "pointers.h"` for +the `Pointers` class, or a header of a class derived from it like +`#include "pair.h"` for the `Pair` class and so on. Referenced to other +classes inside the class should be make through pointers, for which forward +declarations (inside the `LAMMPS_NS` or the new class'es namespace) can +be employed. The full definition will then be included into the corresponding +implementation file. In the given example from above, the header file +would be called `some_name.h` and the implementation `some_name.cpp` (all +lower case with underscores, while the class itself would be in camel case +and no underscores, and the style name with lower case names separated by +a forward slash). + +### Implementation Files + +In the implementation files (typically, those would have the same base name +as the corresponding header with a .cpp extension instead of .h) include +statments should follow the "include what you use" principle. + +### Special Cases and Exceptions + +#### pointers.h + +The `pointer.h` header file also includes `cstdio` and `lmptype.h` +(and throught it `stdint.h`, `intttypes.h`, and `climits`). +This means any header including `pointers.h` can assume that `FILE`, +`NULL`, `INT_MAX` are defined. + +## Tools + +The [Include What You Use tool](https://include-what-you-use.org/) +can be used to provide supporting information about compliance with +the rules listed here. There are some limitations and the IWWU tool +may give incorrect advice. The tools is activated by setting the +CMake variable `CMAKE_CXX_INCLUDE_WHAT_YOU_USE` variable to the +path of the `include-what-you-use` command. When activated, the +tool will be run after each compilation and provide suggestions for +which include files should be added or removed. + +## Legacy Code + +A lot of code predates the application of the rules in this document, +and those rules are a moving target as well. So there is going to be +significant chunks of code, that does not fully comply. This applies +for example to the USER-REAXC, or the USER-ATC package. The LAMMPS +developers are dedicated to make an effort to improve the compliance +and welcome volunteers wanting to help with the process. + -- GitLab From 86a9e4fca24a7cefc832333a3ff75a057763e370 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2019 21:40:50 -0400 Subject: [PATCH 124/627] make body package compile again --- src/BODY/body_nparticle.cpp | 1 + src/BODY/body_rounded_polygon.cpp | 1 + src/BODY/body_rounded_polyhedron.cpp | 1 + 3 files changed, 3 insertions(+) diff --git a/src/BODY/body_nparticle.cpp b/src/BODY/body_nparticle.cpp index 10529ad3af..21070107f5 100644 --- a/src/BODY/body_nparticle.cpp +++ b/src/BODY/body_nparticle.cpp @@ -13,6 +13,7 @@ #include #include "body_nparticle.h" +#include "my_pool_chunk.h" #include "math_extra.h" #include "atom_vec_body.h" #include "atom.h" diff --git a/src/BODY/body_rounded_polygon.cpp b/src/BODY/body_rounded_polygon.cpp index d352c789d7..f7741ada88 100644 --- a/src/BODY/body_rounded_polygon.cpp +++ b/src/BODY/body_rounded_polygon.cpp @@ -17,6 +17,7 @@ #include #include "body_rounded_polygon.h" +#include "my_pool_chunk.h" #include "atom_vec_body.h" #include "atom.h" #include "force.h" diff --git a/src/BODY/body_rounded_polyhedron.cpp b/src/BODY/body_rounded_polyhedron.cpp index 99a380a932..34d918f1f6 100644 --- a/src/BODY/body_rounded_polyhedron.cpp +++ b/src/BODY/body_rounded_polyhedron.cpp @@ -17,6 +17,7 @@ #include #include "body_rounded_polyhedron.h" +#include "my_pool_chunk.h" #include "atom_vec_body.h" #include "atom.h" #include "force.h" -- GitLab From 4ec3a508fc1731e5d6d3708005515ff0addace9f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2019 21:54:07 -0400 Subject: [PATCH 125/627] bulk removal of #include from header files --- src/CLASS2/angle_class2.h | 1 - src/CLASS2/bond_class2.h | 1 - src/CLASS2/dihedral_class2.h | 1 - src/CLASS2/improper_class2.h | 1 - src/GPU/pair_eam_gpu.h | 1 - src/KOKKOS/atom_vec_hybrid_kokkos.h | 1 - src/KOKKOS/pair_eam_alloy_kokkos.h | 1 - src/KOKKOS/pair_eam_fs_kokkos.h | 1 - src/KOKKOS/pair_eam_kokkos.h | 1 - src/KOKKOS/pair_hybrid_kokkos.h | 1 - src/KOKKOS/pair_reaxc_kokkos.h | 1 - src/KOKKOS/pair_tersoff_kokkos.h | 1 - src/KOKKOS/pair_tersoff_mod_kokkos.h | 1 - src/KOKKOS/pair_tersoff_zbl_kokkos.h | 1 - src/MANYBODY/fix_qeq_comb.h | 1 - src/MANYBODY/pair_eam.h | 1 - src/MANYBODY/pair_eim.h | 1 - src/MC/fix_atom_swap.h | 1 - src/MC/fix_gcmc.h | 1 - src/MISC/fix_deposit.h | 1 - src/MOLECULE/angle_charmm.h | 1 - src/MOLECULE/angle_cosine.h | 1 - src/MOLECULE/angle_cosine_delta.h | 1 - src/MOLECULE/angle_cosine_periodic.h | 1 - src/MOLECULE/angle_cosine_squared.h | 1 - src/MOLECULE/angle_harmonic.h | 1 - src/MOLECULE/angle_table.h | 1 - src/MOLECULE/bond_fene.h | 1 - src/MOLECULE/bond_fene_expand.h | 1 - src/MOLECULE/bond_gromos.h | 1 - src/MOLECULE/bond_harmonic.h | 1 - src/MOLECULE/bond_morse.h | 1 - src/MOLECULE/bond_nonlinear.h | 1 - src/MOLECULE/bond_quartic.h | 1 - src/MOLECULE/bond_table.h | 1 - src/MOLECULE/dihedral_charmm.h | 1 - src/MOLECULE/dihedral_charmmfsw.h | 1 - src/MOLECULE/dihedral_harmonic.h | 1 - src/MOLECULE/dihedral_helix.h | 1 - src/MOLECULE/dihedral_multi_harmonic.h | 1 - src/MOLECULE/dihedral_opls.h | 1 - src/MOLECULE/improper_cvff.h | 1 - src/MOLECULE/improper_harmonic.h | 1 - src/MOLECULE/improper_umbrella.h | 1 - src/REPLICA/neb.h | 1 - src/SPIN/neb_spin.h | 1 - src/USER-CGDNA/mf_oxdna.h | 1 - src/USER-CGSDK/angle_sdk.h | 1 - src/USER-DIFFRACTION/fix_saed_vtk.h | 1 - src/USER-INTEL/angle_charmm_intel.h | 1 - src/USER-INTEL/angle_harmonic_intel.h | 1 - src/USER-INTEL/bond_fene_intel.h | 1 - src/USER-INTEL/bond_harmonic_intel.h | 1 - src/USER-INTEL/improper_cvff_intel.h | 1 - src/USER-INTEL/improper_harmonic_intel.h | 1 - src/USER-INTEL/intel_simd.h | 1 - src/USER-INTEL/pair_eam_intel.h | 1 - src/USER-MANIFOLD/manifold_thylakoid.h | 1 - src/USER-MGPT/mgpt_readpot.h | 1 - src/USER-MGPT/pair_mgpt.h | 1 - src/USER-MISC/angle_cosine_shift.h | 1 - src/USER-MISC/angle_cosine_shift_exp.h | 1 - src/USER-MISC/angle_dipole.h | 1 - src/USER-MISC/angle_fourier.h | 1 - src/USER-MISC/angle_fourier_simple.h | 1 - src/USER-MISC/angle_quartic.h | 1 - src/USER-MISC/bond_harmonic_shift.h | 1 - src/USER-MISC/bond_harmonic_shift_cut.h | 1 - src/USER-MISC/dihedral_cosine_shift_exp.h | 1 - src/USER-MISC/dihedral_fourier.h | 1 - src/USER-MISC/dihedral_nharmonic.h | 1 - src/USER-MISC/dihedral_quadratic.h | 1 - src/USER-MISC/dihedral_spherical.h | 1 - src/USER-MISC/fix_ave_correlate_long.h | 1 - src/USER-MISC/fix_srp.h | 1 - src/USER-MISC/improper_cossq.h | 1 - src/USER-MISC/improper_distance.h | 1 - src/USER-MISC/improper_fourier.h | 1 - src/USER-MISC/improper_ring.h | 1 - src/USER-MOFFF/angle_class2_p6.h | 1 - src/USER-MOFFF/angle_cosine_buck6d.h | 1 - src/USER-MOFFF/improper_inversion_harmonic.h | 1 - src/USER-REAXC/fix_reaxc_bonds.h | 1 - src/bond_hybrid.h | 1 - src/bond_zero.h | 1 - src/citeme.cpp | 1 - src/comm_brick.cpp | 1 - src/comm_tiled.cpp | 5 +---- src/comm_tiled.h | 1 + src/compute.cpp | 4 ---- src/compute_adf.h | 1 - src/compute_rdf.h | 1 - src/dihedral_hybrid.h | 1 - src/dihedral_zero.h | 1 - src/fix_ave_atom.h | 1 - src/fix_ave_chunk.h | 1 - src/fix_ave_correlate.h | 1 - src/fix_ave_histo.h | 1 - src/fix_ave_histo_weight.h | 1 - src/fix_ave_time.h | 1 - src/fix_balance.h | 1 - src/fix_halt.h | 1 - src/fix_move.h | 1 - src/fix_print.h | 1 - src/fix_store.h | 1 - src/fix_tmd.h | 1 - src/force.h | 1 - src/group.h | 1 - src/image.h | 1 - src/imbalance.h | 1 - src/improper_hybrid.h | 1 - src/improper_zero.h | 1 - src/input.h | 1 - src/lammps.h | 1 - src/modify.h | 1 - src/pair_hybrid.h | 1 - src/read_data.h | 1 - src/read_dump.h | 1 - src/read_restart.h | 1 - src/universe.h | 1 - src/variable.h | 1 - src/write_coeff.h | 1 - src/write_data.h | 1 - src/write_restart.h | 1 - 124 files changed, 2 insertions(+), 129 deletions(-) diff --git a/src/CLASS2/angle_class2.h b/src/CLASS2/angle_class2.h index 8444ada057..cc155747ac 100644 --- a/src/CLASS2/angle_class2.h +++ b/src/CLASS2/angle_class2.h @@ -20,7 +20,6 @@ AngleStyle(class2,AngleClass2) #ifndef LMP_ANGLE_CLASS2_H #define LMP_ANGLE_CLASS2_H -#include #include "angle.h" namespace LAMMPS_NS { diff --git a/src/CLASS2/bond_class2.h b/src/CLASS2/bond_class2.h index 89d930b548..f0fcc6825e 100644 --- a/src/CLASS2/bond_class2.h +++ b/src/CLASS2/bond_class2.h @@ -20,7 +20,6 @@ BondStyle(class2,BondClass2) #ifndef LMP_BOND_CLASS2_H #define LMP_BOND_CLASS2_H -#include #include "bond.h" namespace LAMMPS_NS { diff --git a/src/CLASS2/dihedral_class2.h b/src/CLASS2/dihedral_class2.h index a4ea9e4bd9..32cd289137 100644 --- a/src/CLASS2/dihedral_class2.h +++ b/src/CLASS2/dihedral_class2.h @@ -20,7 +20,6 @@ DihedralStyle(class2,DihedralClass2) #ifndef LMP_DIHEDRAL_CLASS2_H #define LMP_DIHEDRAL_CLASS2_H -#include #include "dihedral.h" namespace LAMMPS_NS { diff --git a/src/CLASS2/improper_class2.h b/src/CLASS2/improper_class2.h index 1cc3417731..cac805046a 100644 --- a/src/CLASS2/improper_class2.h +++ b/src/CLASS2/improper_class2.h @@ -20,7 +20,6 @@ ImproperStyle(class2,ImproperClass2) #ifndef LMP_IMPROPER_CLASS2_H #define LMP_IMPROPER_CLASS2_H -#include #include "improper.h" namespace LAMMPS_NS { diff --git a/src/GPU/pair_eam_gpu.h b/src/GPU/pair_eam_gpu.h index 099529f3df..e4742a3bef 100644 --- a/src/GPU/pair_eam_gpu.h +++ b/src/GPU/pair_eam_gpu.h @@ -20,7 +20,6 @@ PairStyle(eam/gpu,PairEAMGPU) #ifndef LMP_PAIR_EAM_GPU_H #define LMP_PAIR_EAM_GPU_H -#include #include "pair_eam.h" namespace LAMMPS_NS { diff --git a/src/KOKKOS/atom_vec_hybrid_kokkos.h b/src/KOKKOS/atom_vec_hybrid_kokkos.h index 1bbbd26319..4cfb186b17 100644 --- a/src/KOKKOS/atom_vec_hybrid_kokkos.h +++ b/src/KOKKOS/atom_vec_hybrid_kokkos.h @@ -20,7 +20,6 @@ AtomStyle(hybrid/kk,AtomVecHybridKokkos) #ifndef LMP_ATOM_VEC_HYBRID_KOKKOS_H #define LMP_ATOM_VEC_HYBRID_KOKKOS_H -#include #include "atom_vec_kokkos.h" #include "kokkos_type.h" diff --git a/src/KOKKOS/pair_eam_alloy_kokkos.h b/src/KOKKOS/pair_eam_alloy_kokkos.h index 6593ccae73..e1dd9ab47d 100644 --- a/src/KOKKOS/pair_eam_alloy_kokkos.h +++ b/src/KOKKOS/pair_eam_alloy_kokkos.h @@ -23,7 +23,6 @@ PairStyle(eam/alloy/kk/host,PairEAMAlloyKokkos) #ifndef LMP_PAIR_EAM_ALLOY_KOKKOS_H #define LMP_PAIR_EAM_ALLOY_KOKKOS_H -#include #include "kokkos_base.h" #include "pair_kokkos.h" #include "pair_eam.h" diff --git a/src/KOKKOS/pair_eam_fs_kokkos.h b/src/KOKKOS/pair_eam_fs_kokkos.h index f75605ff6d..e93977869e 100644 --- a/src/KOKKOS/pair_eam_fs_kokkos.h +++ b/src/KOKKOS/pair_eam_fs_kokkos.h @@ -23,7 +23,6 @@ PairStyle(eam/fs/kk/host,PairEAMFSKokkos) #ifndef LMP_PAIR_EAM_FS_KOKKOS_H #define LMP_PAIR_EAM_FS_KOKKOS_H -#include #include "kokkos_base.h" #include "pair_kokkos.h" #include "pair_eam.h" diff --git a/src/KOKKOS/pair_eam_kokkos.h b/src/KOKKOS/pair_eam_kokkos.h index 4040eba858..3bf89c549a 100644 --- a/src/KOKKOS/pair_eam_kokkos.h +++ b/src/KOKKOS/pair_eam_kokkos.h @@ -23,7 +23,6 @@ PairStyle(eam/kk/host,PairEAMKokkos) #ifndef LMP_PAIR_EAM_KOKKOS_H #define LMP_PAIR_EAM_KOKKOS_H -#include #include "kokkos_base.h" #include "pair_kokkos.h" #include "pair_eam.h" diff --git a/src/KOKKOS/pair_hybrid_kokkos.h b/src/KOKKOS/pair_hybrid_kokkos.h index 94e034f875..799354cf01 100644 --- a/src/KOKKOS/pair_hybrid_kokkos.h +++ b/src/KOKKOS/pair_hybrid_kokkos.h @@ -20,7 +20,6 @@ PairStyle(hybrid/kk,PairHybridKokkos) #ifndef LMP_PAIR_HYBRID_KOKKOS_H #define LMP_PAIR_HYBRID_KOKKOS_H -#include #include "pair_hybrid.h" #include "pair_kokkos.h" #include "kokkos_type.h" diff --git a/src/KOKKOS/pair_reaxc_kokkos.h b/src/KOKKOS/pair_reaxc_kokkos.h index 89dfc4d884..783ea33c4e 100644 --- a/src/KOKKOS/pair_reaxc_kokkos.h +++ b/src/KOKKOS/pair_reaxc_kokkos.h @@ -23,7 +23,6 @@ PairStyle(reax/c/kk/host,PairReaxCKokkos) #ifndef LMP_PAIR_REAXC_KOKKOS_H #define LMP_PAIR_REAXC_KOKKOS_H -#include #include "pair_kokkos.h" #include "pair_reaxc.h" #include "neigh_list_kokkos.h" diff --git a/src/KOKKOS/pair_tersoff_kokkos.h b/src/KOKKOS/pair_tersoff_kokkos.h index f73d4fe2d8..7d41fe2346 100644 --- a/src/KOKKOS/pair_tersoff_kokkos.h +++ b/src/KOKKOS/pair_tersoff_kokkos.h @@ -23,7 +23,6 @@ PairStyle(tersoff/kk/host,PairTersoffKokkos) #ifndef LMP_PAIR_TERSOFF_KOKKOS_H #define LMP_PAIR_TERSOFF_KOKKOS_H -#include #include "pair_kokkos.h" #include "pair_tersoff.h" #include "neigh_list_kokkos.h" diff --git a/src/KOKKOS/pair_tersoff_mod_kokkos.h b/src/KOKKOS/pair_tersoff_mod_kokkos.h index d7c94ffc93..889e1eadfa 100644 --- a/src/KOKKOS/pair_tersoff_mod_kokkos.h +++ b/src/KOKKOS/pair_tersoff_mod_kokkos.h @@ -23,7 +23,6 @@ PairStyle(tersoff/mod/kk/host,PairTersoffMODKokkos) #ifndef LMP_PAIR_TERSOFF_MOD_KOKKOS_H #define LMP_PAIR_TERSOFF_MOD_KOKKOS_H -#include #include "pair_kokkos.h" #include "pair_tersoff_mod.h" #include "neigh_list_kokkos.h" diff --git a/src/KOKKOS/pair_tersoff_zbl_kokkos.h b/src/KOKKOS/pair_tersoff_zbl_kokkos.h index 3af4e0d8eb..0c7fa2e963 100644 --- a/src/KOKKOS/pair_tersoff_zbl_kokkos.h +++ b/src/KOKKOS/pair_tersoff_zbl_kokkos.h @@ -23,7 +23,6 @@ PairStyle(tersoff/zbl/kk/host,PairTersoffZBLKokkos) #ifndef LMP_PAIR_TERSOFF_ZBL_KOKKOS_H #define LMP_PAIR_TERSOFF_ZBL_KOKKOS_H -#include #include "pair_kokkos.h" #include "pair_tersoff_zbl.h" #include "neigh_list_kokkos.h" diff --git a/src/MANYBODY/fix_qeq_comb.h b/src/MANYBODY/fix_qeq_comb.h index dd4c9f7290..c3a0ac08f3 100644 --- a/src/MANYBODY/fix_qeq_comb.h +++ b/src/MANYBODY/fix_qeq_comb.h @@ -20,7 +20,6 @@ FixStyle(qeq/comb,FixQEQComb) #ifndef LMP_FIX_QEQ_COMB_H #define LMP_FIX_QEQ_COMB_H -#include #include "fix.h" namespace LAMMPS_NS { diff --git a/src/MANYBODY/pair_eam.h b/src/MANYBODY/pair_eam.h index 234552157b..8bcb44c347 100644 --- a/src/MANYBODY/pair_eam.h +++ b/src/MANYBODY/pair_eam.h @@ -20,7 +20,6 @@ PairStyle(eam,PairEAM) #ifndef LMP_PAIR_EAM_H #define LMP_PAIR_EAM_H -#include #include "pair.h" namespace LAMMPS_NS { diff --git a/src/MANYBODY/pair_eim.h b/src/MANYBODY/pair_eim.h index 50f9934c44..f9fb2d5a77 100644 --- a/src/MANYBODY/pair_eim.h +++ b/src/MANYBODY/pair_eim.h @@ -20,7 +20,6 @@ PairStyle(eim,PairEIM) #ifndef LMP_PAIR_EIM_H #define LMP_PAIR_EIM_H -#include #include "pair.h" namespace LAMMPS_NS { diff --git a/src/MC/fix_atom_swap.h b/src/MC/fix_atom_swap.h index 19895704f1..a5ce89b16b 100644 --- a/src/MC/fix_atom_swap.h +++ b/src/MC/fix_atom_swap.h @@ -20,7 +20,6 @@ FixStyle(atom/swap,FixAtomSwap) #ifndef LMP_FIX_MCSWAP_H #define LMP_FIX_MCSWAP_H -#include #include "fix.h" namespace LAMMPS_NS { diff --git a/src/MC/fix_gcmc.h b/src/MC/fix_gcmc.h index 5d0b7aab8f..da4232d19b 100644 --- a/src/MC/fix_gcmc.h +++ b/src/MC/fix_gcmc.h @@ -20,7 +20,6 @@ FixStyle(gcmc,FixGCMC) #ifndef LMP_FIX_GCMC_H #define LMP_FIX_GCMC_H -#include #include "fix.h" namespace LAMMPS_NS { diff --git a/src/MISC/fix_deposit.h b/src/MISC/fix_deposit.h index 38958b80e7..e3104c890d 100644 --- a/src/MISC/fix_deposit.h +++ b/src/MISC/fix_deposit.h @@ -20,7 +20,6 @@ FixStyle(deposit,FixDeposit) #ifndef LMP_FIX_DEPOSIT_H #define LMP_FIX_DEPOSIT_H -#include #include "fix.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/angle_charmm.h b/src/MOLECULE/angle_charmm.h index 2228ad8732..444c833d37 100644 --- a/src/MOLECULE/angle_charmm.h +++ b/src/MOLECULE/angle_charmm.h @@ -20,7 +20,6 @@ AngleStyle(charmm,AngleCharmm) #ifndef LMP_ANGLE_CHARMM_H #define LMP_ANGLE_CHARMM_H -#include #include "angle.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/angle_cosine.h b/src/MOLECULE/angle_cosine.h index f2406bc5dd..ca1f4178f8 100644 --- a/src/MOLECULE/angle_cosine.h +++ b/src/MOLECULE/angle_cosine.h @@ -20,7 +20,6 @@ AngleStyle(cosine,AngleCosine) #ifndef LMP_ANGLE_COSINE_H #define LMP_ANGLE_COSINE_H -#include #include "angle.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/angle_cosine_delta.h b/src/MOLECULE/angle_cosine_delta.h index 1e19ecaf79..70b574b234 100644 --- a/src/MOLECULE/angle_cosine_delta.h +++ b/src/MOLECULE/angle_cosine_delta.h @@ -20,7 +20,6 @@ AngleStyle(cosine/delta,AngleCosineDelta) #ifndef LMP_ANGLE_COSINE_DELTA_H #define LMP_ANGLE_COSINE_DELTA_H -#include #include "angle_cosine_squared.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/angle_cosine_periodic.h b/src/MOLECULE/angle_cosine_periodic.h index e131e85101..f0188b6c17 100644 --- a/src/MOLECULE/angle_cosine_periodic.h +++ b/src/MOLECULE/angle_cosine_periodic.h @@ -20,7 +20,6 @@ AngleStyle(cosine/periodic, AngleCosinePeriodic) #ifndef LMP_ANGLE_PERIODIC_H #define LMP_ANGLE_PERIODIC_H -#include #include "angle.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/angle_cosine_squared.h b/src/MOLECULE/angle_cosine_squared.h index 8e8c84c0f9..a19a923850 100644 --- a/src/MOLECULE/angle_cosine_squared.h +++ b/src/MOLECULE/angle_cosine_squared.h @@ -20,7 +20,6 @@ AngleStyle(cosine/squared,AngleCosineSquared) #ifndef LMP_ANGLE_COSINE_SQUARED_H #define LMP_ANGLE_COSINE_SQUARED_H -#include #include "angle.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/angle_harmonic.h b/src/MOLECULE/angle_harmonic.h index e0c067653b..f371178d58 100644 --- a/src/MOLECULE/angle_harmonic.h +++ b/src/MOLECULE/angle_harmonic.h @@ -20,7 +20,6 @@ AngleStyle(harmonic,AngleHarmonic) #ifndef LMP_ANGLE_HARMONIC_H #define LMP_ANGLE_HARMONIC_H -#include #include "angle.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/angle_table.h b/src/MOLECULE/angle_table.h index 0088ace39b..46633d28cc 100644 --- a/src/MOLECULE/angle_table.h +++ b/src/MOLECULE/angle_table.h @@ -20,7 +20,6 @@ AngleStyle(table,AngleTable) #ifndef LMP_ANGLE_TABLE_H #define LMP_ANGLE_TABLE_H -#include #include "angle.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/bond_fene.h b/src/MOLECULE/bond_fene.h index 58cd6ce289..1963e3ca22 100644 --- a/src/MOLECULE/bond_fene.h +++ b/src/MOLECULE/bond_fene.h @@ -20,7 +20,6 @@ BondStyle(fene,BondFENE) #ifndef LMP_BOND_FENE_H #define LMP_BOND_FENE_H -#include #include "bond.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/bond_fene_expand.h b/src/MOLECULE/bond_fene_expand.h index cb316ac5f2..8cfc17dc68 100644 --- a/src/MOLECULE/bond_fene_expand.h +++ b/src/MOLECULE/bond_fene_expand.h @@ -20,7 +20,6 @@ BondStyle(fene/expand,BondFENEExpand) #ifndef LMP_BOND_FENE_EXPAND_H #define LMP_BOND_FENE_EXPAND_H -#include #include "bond.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/bond_gromos.h b/src/MOLECULE/bond_gromos.h index c26ad64b3d..966b914437 100644 --- a/src/MOLECULE/bond_gromos.h +++ b/src/MOLECULE/bond_gromos.h @@ -20,7 +20,6 @@ BondStyle(gromos,BondGromos) #ifndef LMP_BOND_GROMOS_H #define LMP_BOND_GROMOS_H -#include #include "bond.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/bond_harmonic.h b/src/MOLECULE/bond_harmonic.h index 5c692b2a8e..576e63629b 100644 --- a/src/MOLECULE/bond_harmonic.h +++ b/src/MOLECULE/bond_harmonic.h @@ -20,7 +20,6 @@ BondStyle(harmonic,BondHarmonic) #ifndef LMP_BOND_HARMONIC_H #define LMP_BOND_HARMONIC_H -#include #include "bond.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/bond_morse.h b/src/MOLECULE/bond_morse.h index c4d60bc217..030a94a8da 100644 --- a/src/MOLECULE/bond_morse.h +++ b/src/MOLECULE/bond_morse.h @@ -20,7 +20,6 @@ BondStyle(morse,BondMorse) #ifndef LMP_BOND_MORSE_H #define LMP_BOND_MORSE_H -#include #include "bond.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/bond_nonlinear.h b/src/MOLECULE/bond_nonlinear.h index 175421264b..7782b93778 100644 --- a/src/MOLECULE/bond_nonlinear.h +++ b/src/MOLECULE/bond_nonlinear.h @@ -20,7 +20,6 @@ BondStyle(nonlinear,BondNonlinear) #ifndef LMP_BOND_NONLINEAR_H #define LMP_BOND_NONLINEAR_H -#include #include "bond.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/bond_quartic.h b/src/MOLECULE/bond_quartic.h index 2aaa76e2c3..60ccf307b9 100644 --- a/src/MOLECULE/bond_quartic.h +++ b/src/MOLECULE/bond_quartic.h @@ -20,7 +20,6 @@ BondStyle(quartic,BondQuartic) #ifndef LMP_BOND_QUARTIC_H #define LMP_BOND_QUARTIC_H -#include #include "bond.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/bond_table.h b/src/MOLECULE/bond_table.h index 5766239167..3db3ade3ab 100644 --- a/src/MOLECULE/bond_table.h +++ b/src/MOLECULE/bond_table.h @@ -20,7 +20,6 @@ BondStyle(table,BondTable) #ifndef LMP_BOND_TABLE_H #define LMP_BOND_TABLE_H -#include #include "bond.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/dihedral_charmm.h b/src/MOLECULE/dihedral_charmm.h index 8f51b398db..4be3925dad 100644 --- a/src/MOLECULE/dihedral_charmm.h +++ b/src/MOLECULE/dihedral_charmm.h @@ -20,7 +20,6 @@ DihedralStyle(charmm,DihedralCharmm) #ifndef LMP_DIHEDRAL_CHARMM_H #define LMP_DIHEDRAL_CHARMM_H -#include #include "dihedral.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/dihedral_charmmfsw.h b/src/MOLECULE/dihedral_charmmfsw.h index dd31067a8d..b33250004b 100644 --- a/src/MOLECULE/dihedral_charmmfsw.h +++ b/src/MOLECULE/dihedral_charmmfsw.h @@ -20,7 +20,6 @@ DihedralStyle(charmmfsw,DihedralCharmmfsw) #ifndef LMP_DIHEDRAL_CHARMMFSW_H #define LMP_DIHEDRAL_CHARMMFSW_H -#include #include "dihedral.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/dihedral_harmonic.h b/src/MOLECULE/dihedral_harmonic.h index 2031261256..938e59918b 100644 --- a/src/MOLECULE/dihedral_harmonic.h +++ b/src/MOLECULE/dihedral_harmonic.h @@ -20,7 +20,6 @@ DihedralStyle(harmonic,DihedralHarmonic) #ifndef LMP_DIHEDRAL_HARMONIC_H #define LMP_DIHEDRAL_HARMONIC_H -#include #include "dihedral.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/dihedral_helix.h b/src/MOLECULE/dihedral_helix.h index 745ab84115..0213c59e8a 100644 --- a/src/MOLECULE/dihedral_helix.h +++ b/src/MOLECULE/dihedral_helix.h @@ -20,7 +20,6 @@ DihedralStyle(helix,DihedralHelix) #ifndef LMP_DIHEDRAL_HELIX_H #define LMP_DIHEDRAL_HELIX_H -#include #include "dihedral.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/dihedral_multi_harmonic.h b/src/MOLECULE/dihedral_multi_harmonic.h index 32f17e75ae..bb3d7183f7 100644 --- a/src/MOLECULE/dihedral_multi_harmonic.h +++ b/src/MOLECULE/dihedral_multi_harmonic.h @@ -20,7 +20,6 @@ DihedralStyle(multi/harmonic,DihedralMultiHarmonic) #ifndef LMP_DIHEDRAL_MULTI_HARMONIC_H #define LMP_DIHEDRAL_MULTI_HARMONIC_H -#include #include "dihedral.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/dihedral_opls.h b/src/MOLECULE/dihedral_opls.h index c1e64ada1e..01878173cd 100644 --- a/src/MOLECULE/dihedral_opls.h +++ b/src/MOLECULE/dihedral_opls.h @@ -20,7 +20,6 @@ DihedralStyle(opls,DihedralOPLS) #ifndef LMP_DIHEDRAL_OPLS_H #define LMP_DIHEDRAL_OPLS_H -#include #include "dihedral.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/improper_cvff.h b/src/MOLECULE/improper_cvff.h index d4c30cc2ee..055d2ca9b8 100644 --- a/src/MOLECULE/improper_cvff.h +++ b/src/MOLECULE/improper_cvff.h @@ -20,7 +20,6 @@ ImproperStyle(cvff,ImproperCvff) #ifndef LMP_IMPROPER_CVFF_H #define LMP_IMPROPER_CVFF_H -#include #include "improper.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/improper_harmonic.h b/src/MOLECULE/improper_harmonic.h index fbbb8d33d6..5949c6911e 100644 --- a/src/MOLECULE/improper_harmonic.h +++ b/src/MOLECULE/improper_harmonic.h @@ -20,7 +20,6 @@ ImproperStyle(harmonic,ImproperHarmonic) #ifndef LMP_IMPROPER_HARMONIC_H #define LMP_IMPROPER_HARMONIC_H -#include #include "improper.h" namespace LAMMPS_NS { diff --git a/src/MOLECULE/improper_umbrella.h b/src/MOLECULE/improper_umbrella.h index dc2262d01c..da9d6c8f4b 100644 --- a/src/MOLECULE/improper_umbrella.h +++ b/src/MOLECULE/improper_umbrella.h @@ -20,7 +20,6 @@ ImproperStyle(umbrella,ImproperUmbrella) #ifndef LMP_IMPROPER_UMBRELLA_H #define LMP_IMPROPER_UMBRELLA_H -#include #include "improper.h" namespace LAMMPS_NS { diff --git a/src/REPLICA/neb.h b/src/REPLICA/neb.h index f585a0c8a7..b53992711c 100644 --- a/src/REPLICA/neb.h +++ b/src/REPLICA/neb.h @@ -20,7 +20,6 @@ CommandStyle(neb,NEB) #ifndef LMP_NEB_H #define LMP_NEB_H -#include #include "pointers.h" namespace LAMMPS_NS { diff --git a/src/SPIN/neb_spin.h b/src/SPIN/neb_spin.h index c128eaffa4..568eca0957 100644 --- a/src/SPIN/neb_spin.h +++ b/src/SPIN/neb_spin.h @@ -20,7 +20,6 @@ CommandStyle(neb/spin,NEBSpin) #ifndef LMP_NEB_SPIN_H #define LMP_NEB_SPIN_H -#include #include "pointers.h" namespace LAMMPS_NS { diff --git a/src/USER-CGDNA/mf_oxdna.h b/src/USER-CGDNA/mf_oxdna.h index c63a37cde2..e4ed1bbd03 100644 --- a/src/USER-CGDNA/mf_oxdna.h +++ b/src/USER-CGDNA/mf_oxdna.h @@ -14,7 +14,6 @@ #ifndef MF_OXDNA_H #define MF_OXDNA_H -#include #include "math_extra.h" namespace MFOxdna { diff --git a/src/USER-CGSDK/angle_sdk.h b/src/USER-CGSDK/angle_sdk.h index 293004ad4d..2e94b44470 100644 --- a/src/USER-CGSDK/angle_sdk.h +++ b/src/USER-CGSDK/angle_sdk.h @@ -20,7 +20,6 @@ AngleStyle(sdk,AngleSDK) #ifndef LMP_ANGLE_SDK_H #define LMP_ANGLE_SDK_H -#include #include "angle.h" namespace LAMMPS_NS { diff --git a/src/USER-DIFFRACTION/fix_saed_vtk.h b/src/USER-DIFFRACTION/fix_saed_vtk.h index 2fc09c781c..94abbf0194 100644 --- a/src/USER-DIFFRACTION/fix_saed_vtk.h +++ b/src/USER-DIFFRACTION/fix_saed_vtk.h @@ -20,7 +20,6 @@ FixStyle(saed/vtk,FixSAEDVTK) #ifndef LMP_FIX_SAED_VTK_H #define LMP_FIX_SAED_VTK_H -#include #include "fix.h" namespace LAMMPS_NS { diff --git a/src/USER-INTEL/angle_charmm_intel.h b/src/USER-INTEL/angle_charmm_intel.h index 5d173ee6a9..155ecfaff9 100644 --- a/src/USER-INTEL/angle_charmm_intel.h +++ b/src/USER-INTEL/angle_charmm_intel.h @@ -24,7 +24,6 @@ AngleStyle(charmm/intel,AngleCharmmIntel) #ifndef LMP_ANGLE_CHARMM_INTEL_H #define LMP_ANGLE_CHARMM_INTEL_H -#include #include "angle_charmm.h" #include "fix_intel.h" diff --git a/src/USER-INTEL/angle_harmonic_intel.h b/src/USER-INTEL/angle_harmonic_intel.h index e7768542a1..c00292f7ce 100644 --- a/src/USER-INTEL/angle_harmonic_intel.h +++ b/src/USER-INTEL/angle_harmonic_intel.h @@ -24,7 +24,6 @@ AngleStyle(harmonic/intel,AngleHarmonicIntel) #ifndef LMP_ANGLE_HARMONIC_INTEL_H #define LMP_ANGLE_HARMONIC_INTEL_H -#include #include "angle_harmonic.h" #include "fix_intel.h" diff --git a/src/USER-INTEL/bond_fene_intel.h b/src/USER-INTEL/bond_fene_intel.h index afe3b85470..58fcdb8669 100644 --- a/src/USER-INTEL/bond_fene_intel.h +++ b/src/USER-INTEL/bond_fene_intel.h @@ -24,7 +24,6 @@ BondStyle(fene/intel,BondFENEIntel) #ifndef LMP_BOND_FENE_INTEL_H #define LMP_BOND_FENE_INTEL_H -#include #include "bond_fene.h" #include "fix_intel.h" diff --git a/src/USER-INTEL/bond_harmonic_intel.h b/src/USER-INTEL/bond_harmonic_intel.h index b86a560d6e..3c1d050a3b 100644 --- a/src/USER-INTEL/bond_harmonic_intel.h +++ b/src/USER-INTEL/bond_harmonic_intel.h @@ -24,7 +24,6 @@ BondStyle(harmonic/intel,BondHarmonicIntel) #ifndef LMP_BOND_HARMONIC_INTEL_H #define LMP_BOND_HARMONIC_INTEL_H -#include #include "bond_harmonic.h" #include "fix_intel.h" diff --git a/src/USER-INTEL/improper_cvff_intel.h b/src/USER-INTEL/improper_cvff_intel.h index e815fa75c9..812b49d50c 100644 --- a/src/USER-INTEL/improper_cvff_intel.h +++ b/src/USER-INTEL/improper_cvff_intel.h @@ -24,7 +24,6 @@ ImproperStyle(cvff/intel,ImproperCvffIntel) #ifndef LMP_IMPROPER_CVFF_INTEL_H #define LMP_IMPROPER_CVFF_INTEL_H -#include #include "improper_cvff.h" #include "fix_intel.h" diff --git a/src/USER-INTEL/improper_harmonic_intel.h b/src/USER-INTEL/improper_harmonic_intel.h index ce38e8fc31..6d7c829961 100644 --- a/src/USER-INTEL/improper_harmonic_intel.h +++ b/src/USER-INTEL/improper_harmonic_intel.h @@ -24,7 +24,6 @@ ImproperStyle(harmonic/intel,ImproperHarmonicIntel) #ifndef LMP_IMPROPER_HARMONIC_INTEL_H #define LMP_IMPROPER_HARMONIC_INTEL_H -#include #include "improper_harmonic.h" #include "fix_intel.h" diff --git a/src/USER-INTEL/intel_simd.h b/src/USER-INTEL/intel_simd.h index 75fc9828b9..9022f439c4 100644 --- a/src/USER-INTEL/intel_simd.h +++ b/src/USER-INTEL/intel_simd.h @@ -29,7 +29,6 @@ authors for more details. #ifndef INTEL_SIMD_H #define INTEL_SIMD_H -#include #include "intel_preprocess.h" #include "immintrin.h" diff --git a/src/USER-INTEL/pair_eam_intel.h b/src/USER-INTEL/pair_eam_intel.h index 83b1fbf6a1..a9590f6b3d 100644 --- a/src/USER-INTEL/pair_eam_intel.h +++ b/src/USER-INTEL/pair_eam_intel.h @@ -20,7 +20,6 @@ PairStyle(eam/intel,PairEAMIntel) #ifndef LMP_PAIR_EAM_INTEL_H #define LMP_PAIR_EAM_INTEL_H -#include #include "pair_eam.h" #include "fix_intel.h" diff --git a/src/USER-MANIFOLD/manifold_thylakoid.h b/src/USER-MANIFOLD/manifold_thylakoid.h index 5e5d3b9c41..d8ebe2e94f 100644 --- a/src/USER-MANIFOLD/manifold_thylakoid.h +++ b/src/USER-MANIFOLD/manifold_thylakoid.h @@ -3,7 +3,6 @@ #include "manifold.h" #include -#include #include "manifold_thylakoid_shared.h" diff --git a/src/USER-MGPT/mgpt_readpot.h b/src/USER-MGPT/mgpt_readpot.h index c19ea40774..62f66883b6 100644 --- a/src/USER-MGPT/mgpt_readpot.h +++ b/src/USER-MGPT/mgpt_readpot.h @@ -19,7 +19,6 @@ #ifndef READPOT__ #define READPOT__ -#include #include "mgpt_splinetab.h" diff --git a/src/USER-MGPT/pair_mgpt.h b/src/USER-MGPT/pair_mgpt.h index 94c66fb603..70b36364b1 100644 --- a/src/USER-MGPT/pair_mgpt.h +++ b/src/USER-MGPT/pair_mgpt.h @@ -32,7 +32,6 @@ PairStyle(mgpt,PairMGPT) #include #include -#include #include #include "pair.h" diff --git a/src/USER-MISC/angle_cosine_shift.h b/src/USER-MISC/angle_cosine_shift.h index 030709a0e2..febabcc090 100644 --- a/src/USER-MISC/angle_cosine_shift.h +++ b/src/USER-MISC/angle_cosine_shift.h @@ -20,7 +20,6 @@ AngleStyle(cosine/shift,AngleCosineShift) #ifndef LMP_ANGLE_COSINE_SHIFT_H #define LMP_ANGLE_COSINE_SHIFT_H -#include #include "angle.h" namespace LAMMPS_NS { diff --git a/src/USER-MISC/angle_cosine_shift_exp.h b/src/USER-MISC/angle_cosine_shift_exp.h index 8b8e389380..9614ddcc19 100644 --- a/src/USER-MISC/angle_cosine_shift_exp.h +++ b/src/USER-MISC/angle_cosine_shift_exp.h @@ -18,7 +18,6 @@ AngleStyle(cosine/shift/exp,AngleCosineShiftExp) #ifndef LMP_ANGLE_COSINE_SHIFT_EXP_H #define LMP_ANGLE_COSINE_SHIFT_EXP_H -#include #include "angle.h" namespace LAMMPS_NS { diff --git a/src/USER-MISC/angle_dipole.h b/src/USER-MISC/angle_dipole.h index 6c5dccb803..187822d0d4 100644 --- a/src/USER-MISC/angle_dipole.h +++ b/src/USER-MISC/angle_dipole.h @@ -20,7 +20,6 @@ AngleStyle(dipole,AngleDipole) #ifndef LMP_ANGLE_DIPOLE_H #define LMP_ANGLE_DIPOLE_H -#include #include "angle.h" namespace LAMMPS_NS { diff --git a/src/USER-MISC/angle_fourier.h b/src/USER-MISC/angle_fourier.h index 14b4eedf57..53eeea98da 100644 --- a/src/USER-MISC/angle_fourier.h +++ b/src/USER-MISC/angle_fourier.h @@ -20,7 +20,6 @@ AngleStyle(fourier,AngleFourier) #ifndef ANGLE_FOURIER_H #define ANGLE_FOURIER_H -#include #include "angle.h" namespace LAMMPS_NS { diff --git a/src/USER-MISC/angle_fourier_simple.h b/src/USER-MISC/angle_fourier_simple.h index 3a7bd37750..df2253317f 100644 --- a/src/USER-MISC/angle_fourier_simple.h +++ b/src/USER-MISC/angle_fourier_simple.h @@ -20,7 +20,6 @@ AngleStyle(fourier/simple,AngleFourierSimple) #ifndef ANGLE_FOURIER_SIMPLE_H #define ANGLE_FOURIER_SIMPLE_H -#include #include "angle.h" namespace LAMMPS_NS { diff --git a/src/USER-MISC/angle_quartic.h b/src/USER-MISC/angle_quartic.h index 7043cab064..b916a5f89f 100644 --- a/src/USER-MISC/angle_quartic.h +++ b/src/USER-MISC/angle_quartic.h @@ -20,7 +20,6 @@ AngleStyle(quartic,AngleQuartic) #ifndef LMP_ANGLE_QUARTIC_H #define LMP_ANGLE_QUARTIC_H -#include #include "angle.h" namespace LAMMPS_NS { diff --git a/src/USER-MISC/bond_harmonic_shift.h b/src/USER-MISC/bond_harmonic_shift.h index ff0d358243..b77cefb4af 100644 --- a/src/USER-MISC/bond_harmonic_shift.h +++ b/src/USER-MISC/bond_harmonic_shift.h @@ -20,7 +20,6 @@ BondStyle(harmonic/shift,BondHarmonicShift) #ifndef LMP_BOND_HARMONIC_SHIFT_H #define LMP_BOND_HARMONIC_SHIFT_H -#include #include "bond.h" namespace LAMMPS_NS { diff --git a/src/USER-MISC/bond_harmonic_shift_cut.h b/src/USER-MISC/bond_harmonic_shift_cut.h index 5db76d51aa..ad2bcd61ad 100644 --- a/src/USER-MISC/bond_harmonic_shift_cut.h +++ b/src/USER-MISC/bond_harmonic_shift_cut.h @@ -20,7 +20,6 @@ BondStyle(harmonic/shift/cut,BondHarmonicShiftCut) #ifndef LMP_BOND_HARMONIC_SHIFT_CUT_H #define LMP_BOND_HARMONIC_SHIFT_CUT_H -#include #include "bond.h" namespace LAMMPS_NS { diff --git a/src/USER-MISC/dihedral_cosine_shift_exp.h b/src/USER-MISC/dihedral_cosine_shift_exp.h index fc4be5049b..4d180f42de 100644 --- a/src/USER-MISC/dihedral_cosine_shift_exp.h +++ b/src/USER-MISC/dihedral_cosine_shift_exp.h @@ -20,7 +20,6 @@ DihedralStyle(cosine/shift/exp,DihedralCosineShiftExp) #ifndef LMP_DIHEDRAL_COSINE_SHIFT_EXP_H #define LMP_DIHEDRAL_COSINE_SHIFT_EXP_H -#include #include "dihedral.h" namespace LAMMPS_NS { diff --git a/src/USER-MISC/dihedral_fourier.h b/src/USER-MISC/dihedral_fourier.h index c1ed843c34..8b6291fc4c 100644 --- a/src/USER-MISC/dihedral_fourier.h +++ b/src/USER-MISC/dihedral_fourier.h @@ -20,7 +20,6 @@ DihedralStyle(fourier,DihedralFourier) #ifndef LMP_DIHEDRAL_FOURIER_H #define LMP_DIHEDRAL_FOURIER_H -#include #include "dihedral.h" namespace LAMMPS_NS { diff --git a/src/USER-MISC/dihedral_nharmonic.h b/src/USER-MISC/dihedral_nharmonic.h index 7c6a35b200..6fd1da3b8b 100644 --- a/src/USER-MISC/dihedral_nharmonic.h +++ b/src/USER-MISC/dihedral_nharmonic.h @@ -20,7 +20,6 @@ DihedralStyle(nharmonic,DihedralNHarmonic) #ifndef DIHEDRAL_NHARMONIC_H #define DIHEDRAL_NHARMONIC_H -#include #include "dihedral.h" namespace LAMMPS_NS { diff --git a/src/USER-MISC/dihedral_quadratic.h b/src/USER-MISC/dihedral_quadratic.h index edc29c3cf8..0b99cbc4f7 100644 --- a/src/USER-MISC/dihedral_quadratic.h +++ b/src/USER-MISC/dihedral_quadratic.h @@ -20,7 +20,6 @@ DihedralStyle(quadratic,DihedralQuadratic) #ifndef LMP_DIHEDRAL_QUADRATIC_H #define LMP_DIHEDRAL_QUADRATIC_H -#include #include "dihedral.h" namespace LAMMPS_NS { diff --git a/src/USER-MISC/dihedral_spherical.h b/src/USER-MISC/dihedral_spherical.h index ae0ece189a..472db36f33 100644 --- a/src/USER-MISC/dihedral_spherical.h +++ b/src/USER-MISC/dihedral_spherical.h @@ -20,7 +20,6 @@ DihedralStyle(spherical,DihedralSpherical) #ifndef LMP_DIHEDRAL_SPHERICAL_H #define LMP_DIHEDRAL_SPHERICAL_H -#include #include "dihedral.h" namespace LAMMPS_NS { diff --git a/src/USER-MISC/fix_ave_correlate_long.h b/src/USER-MISC/fix_ave_correlate_long.h index 548a0e7183..a0c5863e99 100644 --- a/src/USER-MISC/fix_ave_correlate_long.h +++ b/src/USER-MISC/fix_ave_correlate_long.h @@ -20,7 +20,6 @@ FixStyle(ave/correlate/long,FixAveCorrelateLong) #ifndef LMP_FIX_AVE_CORRELATE_LONG_H #define LMP_FIX_AVE_CORRELATE_LONG_H -#include #include "fix.h" namespace LAMMPS_NS { diff --git a/src/USER-MISC/fix_srp.h b/src/USER-MISC/fix_srp.h index 7dbf044bda..f8343df8a6 100644 --- a/src/USER-MISC/fix_srp.h +++ b/src/USER-MISC/fix_srp.h @@ -20,7 +20,6 @@ FixStyle(SRP,FixSRP) #ifndef LMP_FIX_SRP_H #define LMP_FIX_SRP_H -#include #include "fix.h" namespace LAMMPS_NS { diff --git a/src/USER-MISC/improper_cossq.h b/src/USER-MISC/improper_cossq.h index ea880adfaf..9e430bfa1a 100644 --- a/src/USER-MISC/improper_cossq.h +++ b/src/USER-MISC/improper_cossq.h @@ -20,7 +20,6 @@ ImproperStyle(cossq,ImproperCossq) #ifndef LMP_IMPROPER_COSSQ_H #define LMP_IMPROPER_COSSQ_H -#include #include "improper.h" namespace LAMMPS_NS { diff --git a/src/USER-MISC/improper_distance.h b/src/USER-MISC/improper_distance.h index 57e4d671e9..d7575c3585 100644 --- a/src/USER-MISC/improper_distance.h +++ b/src/USER-MISC/improper_distance.h @@ -20,7 +20,6 @@ ImproperStyle(distance,ImproperDistance) #ifndef LMP_IMPROPER_DISTANCE_H #define LMP_IMPROPER_DISTANCE_H -#include #include "improper.h" namespace LAMMPS_NS { diff --git a/src/USER-MISC/improper_fourier.h b/src/USER-MISC/improper_fourier.h index 0525c45494..91dfacfd8e 100644 --- a/src/USER-MISC/improper_fourier.h +++ b/src/USER-MISC/improper_fourier.h @@ -20,7 +20,6 @@ ImproperStyle(fourier,ImproperFourier) #ifndef LMP_IMPROPER_FOURIER_H #define LMP_IMPROPER_FOURIER_H -#include #include "improper.h" namespace LAMMPS_NS { diff --git a/src/USER-MISC/improper_ring.h b/src/USER-MISC/improper_ring.h index c31329816f..7c53c6f59f 100644 --- a/src/USER-MISC/improper_ring.h +++ b/src/USER-MISC/improper_ring.h @@ -20,7 +20,6 @@ ImproperStyle(ring,ImproperRing) #ifndef LMP_IMPROPER_RING_H #define LMP_IMPROPER_RING_H -#include #include "improper.h" namespace LAMMPS_NS { diff --git a/src/USER-MOFFF/angle_class2_p6.h b/src/USER-MOFFF/angle_class2_p6.h index b583a45b19..f2f324c0c6 100644 --- a/src/USER-MOFFF/angle_class2_p6.h +++ b/src/USER-MOFFF/angle_class2_p6.h @@ -20,7 +20,6 @@ AngleStyle(class2/p6,AngleClass2P6) #ifndef LMP_ANGLE_CLASS2_P6_H #define LMP_ANGLE_CLASS2_P6_H -#include #include "angle.h" namespace LAMMPS_NS { diff --git a/src/USER-MOFFF/angle_cosine_buck6d.h b/src/USER-MOFFF/angle_cosine_buck6d.h index 689b1634e0..1d0df10228 100644 --- a/src/USER-MOFFF/angle_cosine_buck6d.h +++ b/src/USER-MOFFF/angle_cosine_buck6d.h @@ -20,7 +20,6 @@ AngleStyle(cosine/buck6d, AngleCosineBuck6d) #ifndef LMP_ANGLE_COSINE_BUCK6D_H #define LMP_ANGLE_COSINE_BUCK6D_H -#include #include "angle.h" namespace LAMMPS_NS { diff --git a/src/USER-MOFFF/improper_inversion_harmonic.h b/src/USER-MOFFF/improper_inversion_harmonic.h index 201c9e358d..206b40aebf 100644 --- a/src/USER-MOFFF/improper_inversion_harmonic.h +++ b/src/USER-MOFFF/improper_inversion_harmonic.h @@ -20,7 +20,6 @@ ImproperStyle(inversion/harmonic,ImproperInversionHarmonic) #ifndef LMP_IMPROPER_INVERSION_HARMONIC_H #define LMP_IMPROPER_INVERSION_HARMONIC_H -#include #include "improper.h" namespace LAMMPS_NS { diff --git a/src/USER-REAXC/fix_reaxc_bonds.h b/src/USER-REAXC/fix_reaxc_bonds.h index d72f5446b5..60f41beb02 100644 --- a/src/USER-REAXC/fix_reaxc_bonds.h +++ b/src/USER-REAXC/fix_reaxc_bonds.h @@ -20,7 +20,6 @@ FixStyle(reax/c/bonds,FixReaxCBonds) #ifndef LMP_FIX_REAXC_BONDS_H #define LMP_FIX_REAXC_BONDS_H -#include #include "fix.h" #include "pointers.h" diff --git a/src/bond_hybrid.h b/src/bond_hybrid.h index e51d467ac1..19e4debfed 100644 --- a/src/bond_hybrid.h +++ b/src/bond_hybrid.h @@ -20,7 +20,6 @@ BondStyle(hybrid,BondHybrid) #ifndef LMP_BOND_HYBRID_H #define LMP_BOND_HYBRID_H -#include #include "bond.h" namespace LAMMPS_NS { diff --git a/src/bond_zero.h b/src/bond_zero.h index 9443ff0784..7cbd2b9a96 100644 --- a/src/bond_zero.h +++ b/src/bond_zero.h @@ -20,7 +20,6 @@ BondStyle(zero,BondZero) #ifndef LMP_BOND_ZERO_H #define LMP_BOND_ZERO_H -#include #include "bond.h" namespace LAMMPS_NS { diff --git a/src/citeme.cpp b/src/citeme.cpp index 24896b448c..c8745891cf 100644 --- a/src/citeme.cpp +++ b/src/citeme.cpp @@ -11,7 +11,6 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include #include "citeme.h" #include "universe.h" diff --git a/src/comm_brick.cpp b/src/comm_brick.cpp index 47f60a3da6..dcf30807f5 100644 --- a/src/comm_brick.cpp +++ b/src/comm_brick.cpp @@ -18,7 +18,6 @@ #include #include #include -#include #include "comm_brick.h" #include "atom.h" #include "atom_vec.h" diff --git a/src/comm_tiled.cpp b/src/comm_tiled.cpp index d1d625445a..a85520ed45 100644 --- a/src/comm_tiled.cpp +++ b/src/comm_tiled.cpp @@ -11,19 +11,16 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include #include #include "comm_tiled.h" -#include "comm_brick.h" #include "atom.h" #include "atom_vec.h" #include "domain.h" -#include "force.h" #include "pair.h" #include "neighbor.h" -#include "modify.h" #include "fix.h" #include "compute.h" -#include "output.h" #include "dump.h" #include "memory.h" #include "error.h" diff --git a/src/comm_tiled.h b/src/comm_tiled.h index 13ecbc4b01..5a9beb28f7 100644 --- a/src/comm_tiled.h +++ b/src/comm_tiled.h @@ -14,6 +14,7 @@ #ifndef LMP_COMM_TILED_H #define LMP_COMM_TILED_H +#include #include "comm.h" namespace LAMMPS_NS { diff --git a/src/compute.cpp b/src/compute.cpp index 207f825ec8..8ff8487104 100644 --- a/src/compute.cpp +++ b/src/compute.cpp @@ -11,15 +11,11 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include -#include #include #include #include "compute.h" -#include "atom.h" #include "domain.h" #include "force.h" -#include "comm.h" #include "group.h" #include "modify.h" #include "fix.h" diff --git a/src/compute_adf.h b/src/compute_adf.h index a7983b7173..f768013207 100644 --- a/src/compute_adf.h +++ b/src/compute_adf.h @@ -20,7 +20,6 @@ ComputeStyle(adf,ComputeADF) #ifndef LMP_COMPUTE_ADF_H #define LMP_COMPUTE_ADF_H -#include #include "compute.h" namespace LAMMPS_NS { diff --git a/src/compute_rdf.h b/src/compute_rdf.h index 52a93a38dd..85f6ce6ad2 100644 --- a/src/compute_rdf.h +++ b/src/compute_rdf.h @@ -20,7 +20,6 @@ ComputeStyle(rdf,ComputeRDF) #ifndef LMP_COMPUTE_RDF_H #define LMP_COMPUTE_RDF_H -#include #include "compute.h" namespace LAMMPS_NS { diff --git a/src/dihedral_hybrid.h b/src/dihedral_hybrid.h index 0839fdfc61..2804060af4 100644 --- a/src/dihedral_hybrid.h +++ b/src/dihedral_hybrid.h @@ -20,7 +20,6 @@ DihedralStyle(hybrid,DihedralHybrid) #ifndef LMP_DIHEDRAL_HYBRID_H #define LMP_DIHEDRAL_HYBRID_H -#include #include "dihedral.h" namespace LAMMPS_NS { diff --git a/src/dihedral_zero.h b/src/dihedral_zero.h index e7dbb0d3a5..e97f8f6641 100644 --- a/src/dihedral_zero.h +++ b/src/dihedral_zero.h @@ -24,7 +24,6 @@ DihedralStyle(zero,DihedralZero) #ifndef LMP_DIHEDRAL_ZERO_H #define LMP_DIHEDRAL_ZERO_H -#include #include "dihedral.h" namespace LAMMPS_NS { diff --git a/src/fix_ave_atom.h b/src/fix_ave_atom.h index e4baf6bda1..42aa282d53 100644 --- a/src/fix_ave_atom.h +++ b/src/fix_ave_atom.h @@ -20,7 +20,6 @@ FixStyle(ave/atom,FixAveAtom) #ifndef LMP_FIX_AVE_ATOM_H #define LMP_FIX_AVE_ATOM_H -#include #include "fix.h" namespace LAMMPS_NS { diff --git a/src/fix_ave_chunk.h b/src/fix_ave_chunk.h index 4dc1c1c246..dac5761ae8 100644 --- a/src/fix_ave_chunk.h +++ b/src/fix_ave_chunk.h @@ -20,7 +20,6 @@ FixStyle(ave/chunk,FixAveChunk) #ifndef LMP_FIX_AVE_CHUNK_H #define LMP_FIX_AVE_CHUNK_H -#include #include "fix.h" namespace LAMMPS_NS { diff --git a/src/fix_ave_correlate.h b/src/fix_ave_correlate.h index ff20e8ba94..05fd6b6576 100644 --- a/src/fix_ave_correlate.h +++ b/src/fix_ave_correlate.h @@ -20,7 +20,6 @@ FixStyle(ave/correlate,FixAveCorrelate) #ifndef LMP_FIX_AVE_CORRELATE_H #define LMP_FIX_AVE_CORRELATE_H -#include #include "fix.h" namespace LAMMPS_NS { diff --git a/src/fix_ave_histo.h b/src/fix_ave_histo.h index 3616959c61..35bdfcfa7f 100644 --- a/src/fix_ave_histo.h +++ b/src/fix_ave_histo.h @@ -20,7 +20,6 @@ FixStyle(ave/histo,FixAveHisto) #ifndef LMP_FIX_AVE_HISTO_H #define LMP_FIX_AVE_HISTO_H -#include #include "fix.h" namespace LAMMPS_NS { diff --git a/src/fix_ave_histo_weight.h b/src/fix_ave_histo_weight.h index e5638e1215..6ec3ba5721 100644 --- a/src/fix_ave_histo_weight.h +++ b/src/fix_ave_histo_weight.h @@ -20,7 +20,6 @@ FixStyle(ave/histo/weight,FixAveHistoWeight) #ifndef LMP_FIX_AVE_HISTO_WEIGHT_H #define LMP_FIX_AVE_HISTO_WEIGHT_H -#include #include "fix_ave_histo.h" namespace LAMMPS_NS { diff --git a/src/fix_ave_time.h b/src/fix_ave_time.h index 62dfbad296..01228f9e55 100644 --- a/src/fix_ave_time.h +++ b/src/fix_ave_time.h @@ -20,7 +20,6 @@ FixStyle(ave/time,FixAveTime) #ifndef LMP_FIX_AVE_TIME_H #define LMP_FIX_AVE_TIME_H -#include #include "fix.h" namespace LAMMPS_NS { diff --git a/src/fix_balance.h b/src/fix_balance.h index 64383b5950..76cbea258a 100644 --- a/src/fix_balance.h +++ b/src/fix_balance.h @@ -20,7 +20,6 @@ FixStyle(balance,FixBalance) #ifndef LMP_FIX_BALANCE_H #define LMP_FIX_BALANCE_H -#include #include "fix.h" namespace LAMMPS_NS { diff --git a/src/fix_halt.h b/src/fix_halt.h index 372c915a7f..93c5e95078 100644 --- a/src/fix_halt.h +++ b/src/fix_halt.h @@ -20,7 +20,6 @@ FixStyle(halt,FixHalt) #ifndef LMP_FIX_HALT_H #define LMP_FIX_HALT_H -#include #include "fix.h" namespace LAMMPS_NS { diff --git a/src/fix_move.h b/src/fix_move.h index 5993d7d6e8..740b051be0 100644 --- a/src/fix_move.h +++ b/src/fix_move.h @@ -20,7 +20,6 @@ FixStyle(move,FixMove) #ifndef LMP_FIX_MOVE_H #define LMP_FIX_MOVE_H -#include #include "fix.h" namespace LAMMPS_NS { diff --git a/src/fix_print.h b/src/fix_print.h index 37b6680aee..5644160220 100644 --- a/src/fix_print.h +++ b/src/fix_print.h @@ -20,7 +20,6 @@ FixStyle(print,FixPrint) #ifndef LMP_FIX_PRINT_H #define LMP_FIX_PRINT_H -#include #include "fix.h" namespace LAMMPS_NS { diff --git a/src/fix_store.h b/src/fix_store.h index 5524770a97..437c14f0f7 100644 --- a/src/fix_store.h +++ b/src/fix_store.h @@ -20,7 +20,6 @@ FixStyle(STORE,FixStore) #ifndef LMP_FIX_STORE_H #define LMP_FIX_STORE_H -#include #include "fix.h" namespace LAMMPS_NS { diff --git a/src/fix_tmd.h b/src/fix_tmd.h index b6db41dd5a..f23a64a027 100644 --- a/src/fix_tmd.h +++ b/src/fix_tmd.h @@ -20,7 +20,6 @@ FixStyle(tmd,FixTMD) #ifndef LMP_FIX_TMD_H #define LMP_FIX_TMD_H -#include #include "fix.h" namespace LAMMPS_NS { diff --git a/src/force.h b/src/force.h index 227b9427c0..26a3ecdfb8 100644 --- a/src/force.h +++ b/src/force.h @@ -15,7 +15,6 @@ #define LMP_FORCE_H #include "pointers.h" -#include #include #include diff --git a/src/group.h b/src/group.h index 962d37b32a..ec913f98bc 100644 --- a/src/group.h +++ b/src/group.h @@ -14,7 +14,6 @@ #ifndef LMP_GROUP_H #define LMP_GROUP_H -#include #include "pointers.h" #include diff --git a/src/image.h b/src/image.h index 5672bf85c5..7df81425d9 100644 --- a/src/image.h +++ b/src/image.h @@ -15,7 +15,6 @@ #define LMP_IMAGE_H #include -#include #include "pointers.h" namespace LAMMPS_NS { diff --git a/src/imbalance.h b/src/imbalance.h index d3c3b9a642..5f43c2e51d 100644 --- a/src/imbalance.h +++ b/src/imbalance.h @@ -14,7 +14,6 @@ #ifndef LMP_IMBALANCE_H #define LMP_IMBALANCE_H -#include #include "pointers.h" namespace LAMMPS_NS { diff --git a/src/improper_hybrid.h b/src/improper_hybrid.h index 89595ccfc4..3e5423b173 100644 --- a/src/improper_hybrid.h +++ b/src/improper_hybrid.h @@ -20,7 +20,6 @@ ImproperStyle(hybrid,ImproperHybrid) #ifndef LMP_IMPROPER_HYBRID_H #define LMP_IMPROPER_HYBRID_H -#include #include "improper.h" namespace LAMMPS_NS { diff --git a/src/improper_zero.h b/src/improper_zero.h index 0a2290b6f7..1a70059070 100644 --- a/src/improper_zero.h +++ b/src/improper_zero.h @@ -20,7 +20,6 @@ ImproperStyle(zero,ImproperZero) #ifndef LMP_IMPROPER_ZERO_H #define LMP_IMPROPER_ZERO_H -#include #include "improper.h" namespace LAMMPS_NS { diff --git a/src/input.h b/src/input.h index 33e83bfb06..9573b569bc 100644 --- a/src/input.h +++ b/src/input.h @@ -14,7 +14,6 @@ #ifndef LMP_INPUT_H #define LMP_INPUT_H -#include #include "pointers.h" #include #include diff --git a/src/lammps.h b/src/lammps.h index e02d0c764a..5820f25591 100644 --- a/src/lammps.h +++ b/src/lammps.h @@ -14,7 +14,6 @@ #ifndef LMP_LAMMPS_H #define LMP_LAMMPS_H -#include namespace LAMMPS_NS { diff --git a/src/modify.h b/src/modify.h index 5ff81855fe..b736485196 100644 --- a/src/modify.h +++ b/src/modify.h @@ -14,7 +14,6 @@ #ifndef LMP_MODIFY_H #define LMP_MODIFY_H -#include #include "pointers.h" #include #include diff --git a/src/pair_hybrid.h b/src/pair_hybrid.h index e313e16f18..074517a859 100644 --- a/src/pair_hybrid.h +++ b/src/pair_hybrid.h @@ -20,7 +20,6 @@ PairStyle(hybrid,PairHybrid) #ifndef LMP_PAIR_HYBRID_H #define LMP_PAIR_HYBRID_H -#include #include "pair.h" namespace LAMMPS_NS { diff --git a/src/read_data.h b/src/read_data.h index 26ab6ff381..98de607f6b 100644 --- a/src/read_data.h +++ b/src/read_data.h @@ -20,7 +20,6 @@ CommandStyle(read_data,ReadData) #ifndef LMP_READ_DATA_H #define LMP_READ_DATA_H -#include #include "pointers.h" namespace LAMMPS_NS { diff --git a/src/read_dump.h b/src/read_dump.h index 3ee13f779c..6fb4f11ed1 100644 --- a/src/read_dump.h +++ b/src/read_dump.h @@ -23,7 +23,6 @@ CommandStyle(read_dump,ReadDump) #define LMP_READ_DUMP_H #include -#include #include "pointers.h" namespace LAMMPS_NS { diff --git a/src/read_restart.h b/src/read_restart.h index 23d6ec3fba..63adf37b22 100644 --- a/src/read_restart.h +++ b/src/read_restart.h @@ -20,7 +20,6 @@ CommandStyle(read_restart,ReadRestart) #ifndef LMP_READ_RESTART_H #define LMP_READ_RESTART_H -#include #include "pointers.h" namespace LAMMPS_NS { diff --git a/src/universe.h b/src/universe.h index 3073409b86..fd6655c749 100644 --- a/src/universe.h +++ b/src/universe.h @@ -14,7 +14,6 @@ #ifndef LMP_UNIVERSE_H #define LMP_UNIVERSE_H -#include #include "pointers.h" namespace LAMMPS_NS { diff --git a/src/variable.h b/src/variable.h index c5f501f266..a504da14ec 100644 --- a/src/variable.h +++ b/src/variable.h @@ -14,7 +14,6 @@ #ifndef LMP_VARIABLE_H #define LMP_VARIABLE_H -#include #include "pointers.h" namespace LAMMPS_NS { diff --git a/src/write_coeff.h b/src/write_coeff.h index 569a615e6e..b995e60d63 100644 --- a/src/write_coeff.h +++ b/src/write_coeff.h @@ -20,7 +20,6 @@ CommandStyle(write_coeff,WriteCoeff) #ifndef LMP_WRITE_COEFF_H #define LMP_WRITE_COEFF_H -#include #include "pointers.h" namespace LAMMPS_NS { diff --git a/src/write_data.h b/src/write_data.h index 6f1bb2ec47..1c0f6b2a7c 100644 --- a/src/write_data.h +++ b/src/write_data.h @@ -20,7 +20,6 @@ CommandStyle(write_data,WriteData) #ifndef LMP_WRITE_DATA_H #define LMP_WRITE_DATA_H -#include #include "pointers.h" namespace LAMMPS_NS { diff --git a/src/write_restart.h b/src/write_restart.h index c6202acbfd..e7cdc6a501 100644 --- a/src/write_restart.h +++ b/src/write_restart.h @@ -20,7 +20,6 @@ CommandStyle(write_restart,WriteRestart) #ifndef LMP_WRITE_RESTART_H #define LMP_WRITE_RESTART_H -#include #include "pointers.h" namespace LAMMPS_NS { -- GitLab From 123bd57376066ade0dc92c891bd97de152afd2ad Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2019 21:59:05 -0400 Subject: [PATCH 126/627] try to make KOKKOS compile again --- src/KOKKOS/kokkos_type.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/KOKKOS/kokkos_type.h b/src/KOKKOS/kokkos_type.h index 942c2af241..e900bbd6d1 100644 --- a/src/KOKKOS/kokkos_type.h +++ b/src/KOKKOS/kokkos_type.h @@ -14,7 +14,7 @@ #ifndef LMP_LMPTYPE_KOKKOS_H #define LMP_LMPTYPE_KOKKOS_H -#include "lmptype.h" +#include "pointers.h" #include #include -- GitLab From 2c119551f7af4eb6dfe1d0424debdec0d6089f80 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2019 22:13:42 -0400 Subject: [PATCH 127/627] add statement about order of include files --- doc/include-file-conventions.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/include-file-conventions.md b/doc/include-file-conventions.md index 5152051ba5..8d70d6cdec 100644 --- a/doc/include-file-conventions.md +++ b/doc/include-file-conventions.md @@ -94,6 +94,14 @@ In the implementation files (typically, those would have the same base name as the corresponding header with a .cpp extension instead of .h) include statments should follow the "include what you use" principle. +### Order of Include Statements + +Include files should be included in this order: +* lmptype.h (should only be included if `MPI_LMP_XXX` data types are used) +* mpi.h +* system and library headers (anything that is using angular brackets; C-library headers first, then C++) +* LAMMPS local headers (first the header matching the implementation file, the rest in mostly alphabetical order) + ### Special Cases and Exceptions #### pointers.h -- GitLab From a5cb6ddd4a798e4618e2e506ad9d14021f0c4670 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 27 Jun 2019 22:14:06 -0400 Subject: [PATCH 128/627] lammps.h must include cstdio and mpi.h --- src/lammps.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/lammps.h b/src/lammps.h index 5820f25591..dc2916f214 100644 --- a/src/lammps.h +++ b/src/lammps.h @@ -14,6 +14,8 @@ #ifndef LMP_LAMMPS_H #define LMP_LAMMPS_H +#include +#include namespace LAMMPS_NS { -- GitLab From 378474c4e642f34614d471953bb3758c04c8754a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 28 Jun 2019 02:01:08 -0400 Subject: [PATCH 129/627] more include file cleanup suggested by IWYU --- src/atom_map.cpp | 1 - src/atom_vec_body.cpp | 1 + src/bond_hybrid.cpp | 1 - src/bond_zero.cpp | 1 - src/comm.h | 2 +- src/comm_tiled.cpp | 1 + src/compute_adf.cpp | 3 --- src/compute_aggregate_atom.cpp | 1 + src/compute_angle.cpp | 2 +- src/compute_angmom_chunk.cpp | 1 + src/compute_bond.cpp | 2 +- src/compute_centro_atom.cpp | 1 - src/compute_chunk_atom.cpp | 6 ++++-- src/compute_cluster_atom.cpp | 2 +- src/compute_cna_atom.cpp | 2 +- src/compute_com_chunk.cpp | 1 + src/compute_contact_atom.cpp | 3 --- src/compute_coord_atom.cpp | 1 - src/compute_dihedral.cpp | 2 +- src/compute_dihedral_local.cpp | 2 -- src/compute_dipole_chunk.cpp | 2 ++ src/compute_displace_atom.cpp | 1 - src/compute_erotate_sphere.cpp | 3 --- src/compute_fragment_atom.cpp | 1 + src/compute_global_atom.cpp | 4 ---- src/compute_group_group.cpp | 1 - src/compute_gyration.cpp | 2 +- src/compute_gyration_chunk.cpp | 1 + src/compute_heat_flux.cpp | 3 +-- src/compute_hexorder_atom.cpp | 4 ++-- src/compute_improper.cpp | 2 +- src/compute_improper_local.cpp | 1 - src/compute_inertia_chunk.cpp | 1 + src/compute_ke.cpp | 2 -- src/compute_msd.cpp | 1 + src/compute_msd_chunk.cpp | 1 + src/compute_omega_chunk.cpp | 1 + src/compute_pair_local.cpp | 1 - src/compute_pe_atom.cpp | 1 - src/compute_pressure.cpp | 1 - src/compute_property_chunk.cpp | 1 + src/compute_rdf.cpp | 1 - src/compute_reduce.cpp | 2 -- src/compute_reduce_region.cpp | 3 +-- 44 files changed, 30 insertions(+), 47 deletions(-) diff --git a/src/atom_map.cpp b/src/atom_map.cpp index b14ebdba68..6af3b9c288 100644 --- a/src/atom_map.cpp +++ b/src/atom_map.cpp @@ -11,7 +11,6 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include "pointers.h" #include #include #include "atom.h" diff --git a/src/atom_vec_body.cpp b/src/atom_vec_body.cpp index 3e9528d6b9..fad5b3eae0 100644 --- a/src/atom_vec_body.cpp +++ b/src/atom_vec_body.cpp @@ -13,6 +13,7 @@ #include #include +#include #include "atom_vec_body.h" #include "my_pool_chunk.h" #include "style_body.h" diff --git a/src/bond_hybrid.cpp b/src/bond_hybrid.cpp index 0fb23a3214..9028886758 100644 --- a/src/bond_hybrid.cpp +++ b/src/bond_hybrid.cpp @@ -12,7 +12,6 @@ ------------------------------------------------------------------------- */ #include -#include #include #include #include "bond_hybrid.h" diff --git a/src/bond_zero.cpp b/src/bond_zero.cpp index 3932846cb4..c473abbe4b 100644 --- a/src/bond_zero.cpp +++ b/src/bond_zero.cpp @@ -16,7 +16,6 @@ ------------------------------------------------------------------------- */ #include -#include #include #include "bond_zero.h" #include "atom.h" diff --git a/src/comm.h b/src/comm.h index 30360b1059..6d5592585f 100644 --- a/src/comm.h +++ b/src/comm.h @@ -14,7 +14,7 @@ #ifndef LMP_COMM_H #define LMP_COMM_H -#include "pointers.h" +#include "pointers.h" // IWYU pragma: export namespace LAMMPS_NS { diff --git a/src/comm_tiled.cpp b/src/comm_tiled.cpp index a85520ed45..385b7fdf22 100644 --- a/src/comm_tiled.cpp +++ b/src/comm_tiled.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include #include #include #include "comm_tiled.h" diff --git a/src/compute_adf.cpp b/src/compute_adf.cpp index e9f9ba2b6f..a17561ff54 100644 --- a/src/compute_adf.cpp +++ b/src/compute_adf.cpp @@ -17,18 +17,15 @@ #include #include -#include #include #include "compute_adf.h" #include "atom.h" #include "update.h" #include "force.h" #include "pair.h" -#include "domain.h" #include "neighbor.h" #include "neigh_request.h" #include "neigh_list.h" -#include "group.h" #include "math_const.h" #include "memory.h" #include "error.h" diff --git a/src/compute_aggregate_atom.cpp b/src/compute_aggregate_atom.cpp index 6c8c8e5d9a..9a797124bd 100644 --- a/src/compute_aggregate_atom.cpp +++ b/src/compute_aggregate_atom.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include #include #include #include "compute_aggregate_atom.h" diff --git a/src/compute_angle.cpp b/src/compute_angle.cpp index 59945f5832..c1c02a1cc4 100644 --- a/src/compute_angle.cpp +++ b/src/compute_angle.cpp @@ -12,8 +12,8 @@ ------------------------------------------------------------------------- */ #include -#include #include "compute_angle.h" +#include "angle.h" #include "update.h" #include "force.h" #include "angle_hybrid.h" diff --git a/src/compute_angmom_chunk.cpp b/src/compute_angmom_chunk.cpp index a70eaaf49f..ec42015527 100644 --- a/src/compute_angmom_chunk.cpp +++ b/src/compute_angmom_chunk.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include #include #include "compute_angmom_chunk.h" #include "atom.h" diff --git a/src/compute_bond.cpp b/src/compute_bond.cpp index 896aaec9bd..4fd3bbef30 100644 --- a/src/compute_bond.cpp +++ b/src/compute_bond.cpp @@ -12,8 +12,8 @@ ------------------------------------------------------------------------- */ #include -#include #include "compute_bond.h" +#include "bond.h" #include "update.h" #include "force.h" #include "bond_hybrid.h" diff --git a/src/compute_centro_atom.cpp b/src/compute_centro_atom.cpp index 5096879b32..7df94271fc 100644 --- a/src/compute_centro_atom.cpp +++ b/src/compute_centro_atom.cpp @@ -16,7 +16,6 @@ ------------------------------------------------------------------------- */ #include -#include #include "compute_centro_atom.h" #include "atom.h" #include "update.h" diff --git a/src/compute_chunk_atom.cpp b/src/compute_chunk_atom.cpp index 61b653b375..fd9204f1cb 100644 --- a/src/compute_chunk_atom.cpp +++ b/src/compute_chunk_atom.cpp @@ -14,8 +14,11 @@ // NOTE: allow for bin center to be variables for sphere/cylinder #include +#include #include #include +#include +#include #include "compute_chunk_atom.h" #include "atom.h" #include "update.h" @@ -24,6 +27,7 @@ #include "region.h" #include "lattice.h" #include "modify.h" +#include "fix.h" #include "fix_store.h" #include "comm.h" #include "group.h" @@ -33,8 +37,6 @@ #include "memory.h" #include "error.h" -#include - using namespace LAMMPS_NS; using namespace MathConst; diff --git a/src/compute_cluster_atom.cpp b/src/compute_cluster_atom.cpp index 0c34b42671..febe0658a0 100644 --- a/src/compute_cluster_atom.cpp +++ b/src/compute_cluster_atom.cpp @@ -11,9 +11,9 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include #include #include -#include #include "compute_cluster_atom.h" #include "atom.h" #include "update.h" diff --git a/src/compute_cna_atom.cpp b/src/compute_cna_atom.cpp index b8ad3f0f64..d764e739b3 100644 --- a/src/compute_cna_atom.cpp +++ b/src/compute_cna_atom.cpp @@ -15,8 +15,8 @@ Contributing author: Wan Liang (Chinese Academy of Sciences) ------------------------------------------------------------------------- */ +#include #include -#include #include #include "compute_cna_atom.h" #include "atom.h" diff --git a/src/compute_com_chunk.cpp b/src/compute_com_chunk.cpp index ec66767245..7b4c960cf4 100644 --- a/src/compute_com_chunk.cpp +++ b/src/compute_com_chunk.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include #include #include "compute_com_chunk.h" #include "atom.h" diff --git a/src/compute_contact_atom.cpp b/src/compute_contact_atom.cpp index e60a51832a..e4afc1d761 100644 --- a/src/compute_contact_atom.cpp +++ b/src/compute_contact_atom.cpp @@ -11,9 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include #include -#include #include "compute_contact_atom.h" #include "atom.h" #include "update.h" @@ -22,7 +20,6 @@ #include "neigh_list.h" #include "neigh_request.h" #include "force.h" -#include "pair.h" #include "comm.h" #include "memory.h" #include "error.h" diff --git a/src/compute_coord_atom.cpp b/src/compute_coord_atom.cpp index 54f4c70c71..8cedcbc027 100644 --- a/src/compute_coord_atom.cpp +++ b/src/compute_coord_atom.cpp @@ -13,7 +13,6 @@ #include #include -#include #include "compute_coord_atom.h" #include "compute_orientorder_atom.h" #include "atom.h" diff --git a/src/compute_dihedral.cpp b/src/compute_dihedral.cpp index 3595b2eda3..16823050da 100644 --- a/src/compute_dihedral.cpp +++ b/src/compute_dihedral.cpp @@ -12,10 +12,10 @@ ------------------------------------------------------------------------- */ #include -#include #include "compute_dihedral.h" #include "update.h" #include "force.h" +#include "dihedral.h" #include "dihedral_hybrid.h" #include "error.h" diff --git a/src/compute_dihedral_local.cpp b/src/compute_dihedral_local.cpp index 9efdd61cb8..784ae9c607 100644 --- a/src/compute_dihedral_local.cpp +++ b/src/compute_dihedral_local.cpp @@ -20,10 +20,8 @@ #include "update.h" #include "domain.h" #include "force.h" -#include "dihedral.h" #include "input.h" #include "variable.h" - #include "math_const.h" #include "memory.h" #include "error.h" diff --git a/src/compute_dipole_chunk.cpp b/src/compute_dipole_chunk.cpp index b0474b6359..090bc5df94 100644 --- a/src/compute_dipole_chunk.cpp +++ b/src/compute_dipole_chunk.cpp @@ -11,6 +11,8 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include +#include #include #include "compute_dipole_chunk.h" #include "atom.h" diff --git a/src/compute_displace_atom.cpp b/src/compute_displace_atom.cpp index d8f279058e..3773159143 100644 --- a/src/compute_displace_atom.cpp +++ b/src/compute_displace_atom.cpp @@ -19,7 +19,6 @@ #include "group.h" #include "domain.h" #include "modify.h" -#include "fix.h" #include "fix_store.h" #include "input.h" #include "variable.h" diff --git a/src/compute_erotate_sphere.cpp b/src/compute_erotate_sphere.cpp index 31ed0aaba5..65bb8a9770 100644 --- a/src/compute_erotate_sphere.cpp +++ b/src/compute_erotate_sphere.cpp @@ -14,11 +14,8 @@ #include #include "compute_erotate_sphere.h" #include "atom.h" -#include "atom_vec.h" #include "update.h" #include "force.h" -#include "domain.h" -#include "group.h" #include "error.h" using namespace LAMMPS_NS; diff --git a/src/compute_fragment_atom.cpp b/src/compute_fragment_atom.cpp index bb273f3bdb..d59b519d09 100644 --- a/src/compute_fragment_atom.cpp +++ b/src/compute_fragment_atom.cpp @@ -15,6 +15,7 @@ Contributing author: Axel Kohlmeyer (Temple U) ------------------------------------------------------------------------- */ +#include #include #include "compute_fragment_atom.h" #include "atom.h" diff --git a/src/compute_global_atom.cpp b/src/compute_global_atom.cpp index dc9ab52f49..6685f746a1 100644 --- a/src/compute_global_atom.cpp +++ b/src/compute_global_atom.cpp @@ -16,12 +16,8 @@ #include "compute_global_atom.h" #include "atom.h" #include "update.h" -#include "domain.h" #include "modify.h" #include "fix.h" -#include "force.h" -#include "comm.h" -#include "group.h" #include "input.h" #include "variable.h" #include "memory.h" diff --git a/src/compute_group_group.cpp b/src/compute_group_group.cpp index e55f679b2e..11e1aac720 100644 --- a/src/compute_group_group.cpp +++ b/src/compute_group_group.cpp @@ -33,7 +33,6 @@ #include "comm.h" #include "domain.h" #include "math_const.h" -#include "utils.h" using namespace LAMMPS_NS; using namespace MathConst; diff --git a/src/compute_gyration.cpp b/src/compute_gyration.cpp index f8d19853e0..3c5656a5af 100644 --- a/src/compute_gyration.cpp +++ b/src/compute_gyration.cpp @@ -11,7 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include +#include #include "compute_gyration.h" #include "update.h" #include "atom.h" diff --git a/src/compute_gyration_chunk.cpp b/src/compute_gyration_chunk.cpp index 6a23398aca..f3db37d62f 100644 --- a/src/compute_gyration_chunk.cpp +++ b/src/compute_gyration_chunk.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include #include #include #include "compute_gyration_chunk.h" diff --git a/src/compute_heat_flux.cpp b/src/compute_heat_flux.cpp index e402da7842..9bd827c713 100644 --- a/src/compute_heat_flux.cpp +++ b/src/compute_heat_flux.cpp @@ -16,14 +16,13 @@ Mario Pinto (Computational Research Lab, Pune, India) ------------------------------------------------------------------------- */ -#include +#include #include #include "compute_heat_flux.h" #include "atom.h" #include "update.h" #include "modify.h" #include "force.h" -#include "group.h" #include "error.h" using namespace LAMMPS_NS; diff --git a/src/compute_hexorder_atom.cpp b/src/compute_hexorder_atom.cpp index 6d17ae15bd..c54f4b1aae 100644 --- a/src/compute_hexorder_atom.cpp +++ b/src/compute_hexorder_atom.cpp @@ -15,9 +15,9 @@ Contributing author: Aidan Thompson (SNL) ------------------------------------------------------------------------- */ -#include +#include #include -#include +#include #include "compute_hexorder_atom.h" #include "atom.h" #include "update.h" diff --git a/src/compute_improper.cpp b/src/compute_improper.cpp index ac2a23e727..2f068dfb74 100644 --- a/src/compute_improper.cpp +++ b/src/compute_improper.cpp @@ -12,10 +12,10 @@ ------------------------------------------------------------------------- */ #include -#include #include "compute_improper.h" #include "update.h" #include "force.h" +#include "improper.h" #include "improper_hybrid.h" #include "error.h" diff --git a/src/compute_improper_local.cpp b/src/compute_improper_local.cpp index 2861850c79..ec1734cd96 100644 --- a/src/compute_improper_local.cpp +++ b/src/compute_improper_local.cpp @@ -20,7 +20,6 @@ #include "update.h" #include "domain.h" #include "force.h" -#include "improper.h" #include "math_const.h" #include "memory.h" #include "error.h" diff --git a/src/compute_inertia_chunk.cpp b/src/compute_inertia_chunk.cpp index a33073c35a..d1a7cb9fc1 100644 --- a/src/compute_inertia_chunk.cpp +++ b/src/compute_inertia_chunk.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include #include #include "compute_inertia_chunk.h" #include "atom.h" diff --git a/src/compute_ke.cpp b/src/compute_ke.cpp index fb3c5a9695..3418cc678f 100644 --- a/src/compute_ke.cpp +++ b/src/compute_ke.cpp @@ -16,8 +16,6 @@ #include "atom.h" #include "update.h" #include "force.h" -#include "domain.h" -#include "group.h" #include "error.h" using namespace LAMMPS_NS; diff --git a/src/compute_msd.cpp b/src/compute_msd.cpp index fc47b2609a..d2e17eff9e 100644 --- a/src/compute_msd.cpp +++ b/src/compute_msd.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include #include #include "compute_msd.h" #include "atom.h" diff --git a/src/compute_msd_chunk.cpp b/src/compute_msd_chunk.cpp index 1f974cc06c..8520b36993 100644 --- a/src/compute_msd_chunk.cpp +++ b/src/compute_msd_chunk.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include #include #include "compute_msd_chunk.h" #include "atom.h" diff --git a/src/compute_omega_chunk.cpp b/src/compute_omega_chunk.cpp index 23447da602..360255e908 100644 --- a/src/compute_omega_chunk.cpp +++ b/src/compute_omega_chunk.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include #include #include "compute_omega_chunk.h" #include "atom.h" diff --git a/src/compute_pair_local.cpp b/src/compute_pair_local.cpp index c356a08be9..1ab46a0297 100644 --- a/src/compute_pair_local.cpp +++ b/src/compute_pair_local.cpp @@ -22,7 +22,6 @@ #include "neighbor.h" #include "neigh_request.h" #include "neigh_list.h" -#include "group.h" #include "memory.h" #include "error.h" diff --git a/src/compute_pe_atom.cpp b/src/compute_pe_atom.cpp index 2f1dc5650e..b3ace2d419 100644 --- a/src/compute_pe_atom.cpp +++ b/src/compute_pe_atom.cpp @@ -24,7 +24,6 @@ #include "improper.h" #include "kspace.h" #include "modify.h" -#include "fix.h" #include "memory.h" #include "error.h" diff --git a/src/compute_pressure.cpp b/src/compute_pressure.cpp index dde02a5aed..431f039de3 100644 --- a/src/compute_pressure.cpp +++ b/src/compute_pressure.cpp @@ -13,7 +13,6 @@ #include #include -#include #include "compute_pressure.h" #include "atom.h" #include "update.h" diff --git a/src/compute_property_chunk.cpp b/src/compute_property_chunk.cpp index 489890e1cc..089e867598 100644 --- a/src/compute_property_chunk.cpp +++ b/src/compute_property_chunk.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include #include #include "compute_property_chunk.h" #include "atom.h" diff --git a/src/compute_rdf.cpp b/src/compute_rdf.cpp index d49485b4ea..b1fa8bb2a3 100644 --- a/src/compute_rdf.cpp +++ b/src/compute_rdf.cpp @@ -17,7 +17,6 @@ #include #include -#include #include #include "compute_rdf.h" #include "atom.h" diff --git a/src/compute_reduce.cpp b/src/compute_reduce.cpp index 16dc84628a..e7692b0797 100644 --- a/src/compute_reduce.cpp +++ b/src/compute_reduce.cpp @@ -20,8 +20,6 @@ #include "domain.h" #include "modify.h" #include "fix.h" -#include "force.h" -#include "comm.h" #include "group.h" #include "input.h" #include "variable.h" diff --git a/src/compute_reduce_region.cpp b/src/compute_reduce_region.cpp index 8e91a299e8..30a5c6393f 100644 --- a/src/compute_reduce_region.cpp +++ b/src/compute_reduce_region.cpp @@ -11,8 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include -#include +#include #include "compute_reduce_region.h" #include "atom.h" #include "update.h" -- GitLab From df7c56d88160add5ce3492c1f5b9e757b34ebace Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 28 Jun 2019 05:28:54 -0400 Subject: [PATCH 130/627] use suffix compatible pair style matching when looking for ReaxFF pair style --- src/QEQ/fix_qeq_shielded.cpp | 2 +- src/USER-REAXC/fix_qeq_reax.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/QEQ/fix_qeq_shielded.cpp b/src/QEQ/fix_qeq_shielded.cpp index a74eee7d29..6367feacc5 100644 --- a/src/QEQ/fix_qeq_shielded.cpp +++ b/src/QEQ/fix_qeq_shielded.cpp @@ -80,7 +80,7 @@ void FixQEqShielded::init() void FixQEqShielded::extract_reax() { - Pair *pair = force->pair_match("reax/c",1); + Pair *pair = force->pair_match("^reax/c",0); if (pair == NULL) error->all(FLERR,"No pair reax/c for fix qeq/shielded"); int tmp; chi = (double *) pair->extract("chi",tmp); diff --git a/src/USER-REAXC/fix_qeq_reax.cpp b/src/USER-REAXC/fix_qeq_reax.cpp index b37c8fff83..faa0632608 100644 --- a/src/USER-REAXC/fix_qeq_reax.cpp +++ b/src/USER-REAXC/fix_qeq_reax.cpp @@ -124,7 +124,7 @@ FixQEqReax::FixQEqReax(LAMMPS *lmp, int narg, char **arg) : // register with Atom class reaxc = NULL; - reaxc = (PairReaxC *) force->pair_match("reax/c",0); + reaxc = (PairReaxC *) force->pair_match("^reax/c",0); s_hist = t_hist = NULL; grow_arrays(atom->nmax); -- GitLab From 557a1274e48fdb950a998c28f2e5eba6a996065d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 28 Jun 2019 02:12:47 -0400 Subject: [PATCH 131/627] even more include file cleanup --- src/compute_slice.cpp | 2 +- src/compute_stress_atom.cpp | 1 - src/compute_temp.cpp | 2 -- src/compute_temp_chunk.cpp | 1 + src/compute_temp_com.cpp | 3 --- src/compute_temp_partial.cpp | 1 - src/compute_temp_profile.cpp | 2 -- src/compute_temp_ramp.cpp | 2 -- src/compute_temp_sphere.cpp | 2 -- src/compute_torque_chunk.cpp | 1 + src/compute_vacf.cpp | 1 + src/compute_vcm_chunk.cpp | 2 +- src/create_atoms.cpp | 5 +---- src/create_bonds.cpp | 2 +- src/create_box.cpp | 2 -- src/delete_atoms.cpp | 3 ++- src/delete_bonds.cpp | 1 - src/deprecated.cpp | 1 - src/dihedral.cpp | 3 --- 19 files changed, 9 insertions(+), 28 deletions(-) diff --git a/src/compute_slice.cpp b/src/compute_slice.cpp index ac70e7dd15..6e509c24d4 100644 --- a/src/compute_slice.cpp +++ b/src/compute_slice.cpp @@ -11,13 +11,13 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include #include #include #include "compute_slice.h" #include "update.h" #include "modify.h" #include "fix.h" -#include "group.h" #include "input.h" #include "variable.h" #include "memory.h" diff --git a/src/compute_stress_atom.cpp b/src/compute_stress_atom.cpp index 5211f015ab..f84c977bdb 100644 --- a/src/compute_stress_atom.cpp +++ b/src/compute_stress_atom.cpp @@ -11,7 +11,6 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include #include #include "compute_stress_atom.h" #include "atom.h" diff --git a/src/compute_temp.cpp b/src/compute_temp.cpp index f7d3a890ec..c330249a7e 100644 --- a/src/compute_temp.cpp +++ b/src/compute_temp.cpp @@ -12,13 +12,11 @@ ------------------------------------------------------------------------- */ #include -#include #include "compute_temp.h" #include "atom.h" #include "update.h" #include "force.h" #include "domain.h" -#include "comm.h" #include "group.h" #include "error.h" diff --git a/src/compute_temp_chunk.cpp b/src/compute_temp_chunk.cpp index 920515e05c..229e98e258 100644 --- a/src/compute_temp_chunk.cpp +++ b/src/compute_temp_chunk.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include #include #include "compute_temp_chunk.h" #include "atom.h" diff --git a/src/compute_temp_com.cpp b/src/compute_temp_com.cpp index f2ad40ea43..21814e1940 100644 --- a/src/compute_temp_com.cpp +++ b/src/compute_temp_com.cpp @@ -12,15 +12,12 @@ ------------------------------------------------------------------------- */ #include -#include -#include #include "compute_temp_com.h" #include "atom.h" #include "update.h" #include "force.h" #include "group.h" #include "domain.h" -#include "lattice.h" #include "error.h" using namespace LAMMPS_NS; diff --git a/src/compute_temp_partial.cpp b/src/compute_temp_partial.cpp index 4425aebdda..8d5ff66796 100644 --- a/src/compute_temp_partial.cpp +++ b/src/compute_temp_partial.cpp @@ -12,7 +12,6 @@ ------------------------------------------------------------------------- */ #include -#include #include "compute_temp_partial.h" #include "atom.h" #include "update.h" diff --git a/src/compute_temp_profile.cpp b/src/compute_temp_profile.cpp index c7f0b28a6c..21c87b31a2 100644 --- a/src/compute_temp_profile.cpp +++ b/src/compute_temp_profile.cpp @@ -12,14 +12,12 @@ ------------------------------------------------------------------------- */ #include -#include #include #include "compute_temp_profile.h" #include "atom.h" #include "update.h" #include "force.h" #include "group.h" -#include "fix.h" #include "domain.h" #include "memory.h" #include "error.h" diff --git a/src/compute_temp_ramp.cpp b/src/compute_temp_ramp.cpp index ba572645f3..715d2aa9f4 100644 --- a/src/compute_temp_ramp.cpp +++ b/src/compute_temp_ramp.cpp @@ -12,14 +12,12 @@ ------------------------------------------------------------------------- */ #include -#include #include #include "compute_temp_ramp.h" #include "atom.h" #include "update.h" #include "force.h" #include "group.h" -#include "fix.h" #include "domain.h" #include "lattice.h" #include "memory.h" diff --git a/src/compute_temp_sphere.cpp b/src/compute_temp_sphere.cpp index 651da6dee5..b490a5ec45 100644 --- a/src/compute_temp_sphere.cpp +++ b/src/compute_temp_sphere.cpp @@ -15,12 +15,10 @@ #include #include "compute_temp_sphere.h" #include "atom.h" -#include "atom_vec.h" #include "update.h" #include "force.h" #include "domain.h" #include "modify.h" -#include "comm.h" #include "group.h" #include "error.h" diff --git a/src/compute_torque_chunk.cpp b/src/compute_torque_chunk.cpp index d9de99bcb2..e43155493f 100644 --- a/src/compute_torque_chunk.cpp +++ b/src/compute_torque_chunk.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include #include #include "compute_torque_chunk.h" #include "atom.h" diff --git a/src/compute_vacf.cpp b/src/compute_vacf.cpp index 3ef3acf0bf..787c2503ca 100644 --- a/src/compute_vacf.cpp +++ b/src/compute_vacf.cpp @@ -11,6 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include #include #include "compute_vacf.h" #include "atom.h" diff --git a/src/compute_vcm_chunk.cpp b/src/compute_vcm_chunk.cpp index a6dd796c63..cf30130763 100644 --- a/src/compute_vcm_chunk.cpp +++ b/src/compute_vcm_chunk.cpp @@ -11,13 +11,13 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ +#include #include #include "compute_vcm_chunk.h" #include "atom.h" #include "update.h" #include "modify.h" #include "compute_chunk_atom.h" -#include "domain.h" #include "memory.h" #include "error.h" diff --git a/src/create_atoms.cpp b/src/create_atoms.cpp index 52e4256fca..8504023a70 100644 --- a/src/create_atoms.cpp +++ b/src/create_atoms.cpp @@ -11,8 +11,7 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include -#include +#include #include #include "create_atoms.h" #include "atom.h" @@ -23,8 +22,6 @@ #include "modify.h" #include "force.h" #include "special.h" -#include "fix.h" -#include "compute.h" #include "domain.h" #include "lattice.h" #include "region.h" diff --git a/src/create_bonds.cpp b/src/create_bonds.cpp index e19b565554..e00fe109ca 100644 --- a/src/create_bonds.cpp +++ b/src/create_bonds.cpp @@ -15,7 +15,7 @@ Contributing authors: Mike Salerno (NRL) added single methods ------------------------------------------------------------------------- */ -#include +#include #include #include "create_bonds.h" #include "atom.h" diff --git a/src/create_box.cpp b/src/create_box.cpp index b5e37b759c..5ec960bec4 100644 --- a/src/create_box.cpp +++ b/src/create_box.cpp @@ -11,12 +11,10 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include #include #include "create_box.h" #include "atom.h" #include "atom_vec.h" -#include "force.h" #include "domain.h" #include "region.h" #include "region_prism.h" diff --git a/src/delete_atoms.cpp b/src/delete_atoms.cpp index 41df167f07..ff4b97a3a4 100644 --- a/src/delete_atoms.cpp +++ b/src/delete_atoms.cpp @@ -11,8 +11,9 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include +#include #include +#include #include "delete_atoms.h" #include "atom.h" #include "atom_vec.h" diff --git a/src/delete_bonds.cpp b/src/delete_bonds.cpp index fe32bca879..c4d591543a 100644 --- a/src/delete_bonds.cpp +++ b/src/delete_bonds.cpp @@ -18,7 +18,6 @@ #include "atom.h" #include "atom_vec.h" #include "domain.h" -#include "neighbor.h" #include "comm.h" #include "force.h" #include "group.h" diff --git a/src/deprecated.cpp b/src/deprecated.cpp index b937482669..66ddcfeff4 100644 --- a/src/deprecated.cpp +++ b/src/deprecated.cpp @@ -18,7 +18,6 @@ #include #include "deprecated.h" #include "comm.h" -#include "force.h" #include "error.h" #include "input.h" diff --git a/src/dihedral.cpp b/src/dihedral.cpp index adccf2a490..d2de841dd0 100644 --- a/src/dihedral.cpp +++ b/src/dihedral.cpp @@ -11,13 +11,10 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#include #include "dihedral.h" #include "atom.h" #include "comm.h" #include "force.h" -#include "pair.h" -#include "suffix.h" #include "atom_masks.h" #include "memory.h" #include "error.h" -- GitLab From d918432047743f70a0650713ba7a21f0935d5245 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 28 Jun 2019 09:54:24 -0600 Subject: [PATCH 132/627] Fix issue with compute_duarray --- src/KOKKOS/pair_snap_kokkos_impl.h | 11 +++++----- src/KOKKOS/sna_kokkos.h | 11 +++++----- src/KOKKOS/sna_kokkos_impl.h | 33 +++++++++++++++++++++++------- src/SNAP/compute_snad_atom.cpp | 2 +- src/SNAP/compute_snav_atom.cpp | 2 +- src/SNAP/pair_snap.cpp | 2 +- src/SNAP/sna.cpp | 27 +++++++++++++++++++----- src/SNAP/sna.h | 7 ++++--- 8 files changed, 67 insertions(+), 28 deletions(-) diff --git a/src/KOKKOS/pair_snap_kokkos_impl.h b/src/KOKKOS/pair_snap_kokkos_impl.h index d56db05d19..d0c7e09e84 100644 --- a/src/KOKKOS/pair_snap_kokkos_impl.h +++ b/src/KOKKOS/pair_snap_kokkos_impl.h @@ -309,7 +309,7 @@ void PairSNAPKokkos::operator() (TagPairSNAPBeta,const typename Kokk const int ii = team.league_rank(); const int i = d_ilist[ii]; const int itype = type[i]; - const int ielem = d_map[itype]; + const int ielem = map[itype]; Kokkos::View> d_coeffi(d_coeffelem,ielem,Kokkos::ALL); @@ -601,12 +601,13 @@ void PairSNAPKokkos::operator() (TagPairSNAPCompute::member_type& team, double*, double, double); //ForceSNAP + void compute_duidrj(const typename Kokkos::TeamPolicy::member_type& team, double*, double, double, int); //ForceSNAP KOKKOS_INLINE_FUNCTION void compute_dbidrj(const typename Kokkos::TeamPolicy::member_type& team); //ForceSNAP KOKKOS_INLINE_FUNCTION @@ -123,10 +123,11 @@ inline t_sna_1d ulisttot_r, ulisttot_i; t_sna_1d_atomic ulisttot_r_a, ulisttot_i_a; t_sna_1d zlist_r, zlist_i; + t_sna_2d ulist_r_ij, ulist_i_ij; // Per InFlight Interaction t_sna_1d ulist_r, ulist_i; - t_sna_1d_atomic ylist_r, ylist_i; + t_sna_1d ylist_r, ylist_i; // derivatives of data t_sna_2d dulist_r, dulist_i; @@ -171,13 +172,13 @@ inline KOKKOS_INLINE_FUNCTION void addself_uarraytot(const typename Kokkos::TeamPolicy::member_type& team, double); // compute_ui KOKKOS_INLINE_FUNCTION - void add_uarraytot(const typename Kokkos::TeamPolicy::member_type& team, double, double, double); // compute_ui + void add_uarraytot(const typename Kokkos::TeamPolicy::member_type& team, double, double, double, int); // compute_ui KOKKOS_INLINE_FUNCTION void compute_uarray(const typename Kokkos::TeamPolicy::member_type& team, double, double, double, double, double); // compute_ui - inline + KOKKOS_INLINE_FUNCTION double deltacg(int, int, int); // init_clebsch_gordan inline @@ -185,7 +186,7 @@ inline KOKKOS_INLINE_FUNCTION void compute_duarray(const typename Kokkos::TeamPolicy::member_type& team, double, double, double, // compute_duidrj - double, double, double, double, double); + double, double, double, double, double, int); // Sets the style for the switching function // 0 = none diff --git a/src/KOKKOS/sna_kokkos_impl.h b/src/KOKKOS/sna_kokkos_impl.h index 9b96cb8a16..8cbb3eb3f6 100644 --- a/src/KOKKOS/sna_kokkos_impl.h +++ b/src/KOKKOS/sna_kokkos_impl.h @@ -289,7 +289,7 @@ void SNAKokkos::compute_ui(const typename Kokkos::TeamPolicy::compute_dbidrj(const typename Kokkos::TeamPolicy KOKKOS_INLINE_FUNCTION void SNAKokkos::compute_duidrj(const typename Kokkos::TeamPolicy::member_type& team, - double* rij, double wj, double rcut) + double* rij, double wj, double rcut, int jj) { double rsq, r, x, y, z, z0, theta0, cs, sn; double dz0dr; @@ -797,7 +797,7 @@ void SNAKokkos::compute_duidrj(const typename Kokkos::TeamPolicy::addself_uarraytot(const typename Kokkos::TeamPolicy< template KOKKOS_INLINE_FUNCTION -void SNAKokkos::add_uarraytot(const typename Kokkos::TeamPolicy::member_type& team, double r, double wj, double rcut) +void SNAKokkos::add_uarraytot(const typename Kokkos::TeamPolicy::member_type& team, + double r, double wj, double rcut, int j) { const double sfac = compute_sfac(r, rcut) * wj; @@ -854,10 +855,19 @@ void SNAKokkos::add_uarraytot(const typename Kokkos::TeamPolicy> + ulist_r_j(ulist_r_ij,j,Kokkos::ALL); + Kokkos::View> + ulist_i_j(ulist_i_ij,j,Kokkos::ALL); + Kokkos::parallel_for(Kokkos::ThreadVectorRange(team,ulisttot_r.span()), [&] (const int& i) { Kokkos::atomic_add(ptrtot_r+i, sfac * ptr_r[i]); Kokkos::atomic_add(ptrtot_i+i, sfac * ptr_i[i]); + + ulist_r_j(i) = ulist_r(i); + ulist_i_j(i) = ulist_i(i); }); } @@ -962,7 +972,7 @@ KOKKOS_INLINE_FUNCTION void SNAKokkos::compute_duarray(const typename Kokkos::TeamPolicy::member_type& team, double x, double y, double z, double z0, double r, double dz0dr, - double wj, double rcut) + double wj, double rcut, int jj) { double r0inv; double a_r, a_i, b_r, b_i; @@ -1006,6 +1016,11 @@ void SNAKokkos::compute_duarray(const typename Kokkos::TeamPolicy> + ulist_r(ulist_r_ij,jj,Kokkos::ALL); + Kokkos::View> + ulist_i(ulist_i_ij,jj,Kokkos::ALL); + dulist_r(0,0) = 0.0; dulist_r(0,1) = 0.0; dulist_r(0,2) = 0.0; @@ -1135,6 +1150,8 @@ void SNAKokkos::create_team_scratch_arrays(const typename Kokkos::Te rcutij = t_sna_1d(team.team_scratch(1),nmax); wj = t_sna_1d(team.team_scratch(1),nmax); inside = t_sna_1i(team.team_scratch(1),nmax); + ulist_r_ij = t_sna_2d(team.team_scratch(1),nmax,idxu_max); + ulist_i_ij = t_sna_2d(team.team_scratch(1),nmax,idxu_max); } template @@ -1151,6 +1168,7 @@ T_INT SNAKokkos::size_team_scratch_arrays() { size += t_sna_1d::shmem_size(nmax); // rcutij size += t_sna_1d::shmem_size(nmax); // wj size += t_sna_1i::shmem_size(nmax); // inside + size += t_sna_2d::shmem_size(nmax,idxu_max)*2; // ulist_ij return size; } @@ -1558,8 +1576,8 @@ double SNAKokkos::memory_usage() bytes += jdim * jdim * jdim * sizeof(int); // idxz_block bytes += jdim * jdim * jdim * sizeof(int); // idxb_block - bytes += idxz_max * sizeof(SNAKK_ZINDICES); // idxz - bytes += idxb_max * sizeof(SNAKK_BINDICES); // idxb + bytes += idxz_max * sizeof(SNAKK_ZINDICES); // idxz + bytes += idxb_max * sizeof(SNAKK_BINDICES); // idxb bytes += jdim * sizeof(double); // bzero @@ -1567,6 +1585,7 @@ double SNAKokkos::memory_usage() bytes += nmax * sizeof(int); // inside bytes += nmax * sizeof(double); // wj bytes += nmax * sizeof(double); // rcutij + bytes += nmax * idxu_max * sizeof(double) * 2; // ulist_ij return bytes; } diff --git a/src/SNAP/compute_snad_atom.cpp b/src/SNAP/compute_snad_atom.cpp index 37587a0aae..0a82cdeb00 100644 --- a/src/SNAP/compute_snad_atom.cpp +++ b/src/SNAP/compute_snad_atom.cpp @@ -263,7 +263,7 @@ void ComputeSNADAtom::compute_peratom() const int j = snaptr->inside[jj]; snaptr->compute_duidrj(snaptr->rij[jj], snaptr->wj[jj], - snaptr->rcutij[jj]); + snaptr->rcutij[jj],jj); snaptr->compute_dbidrj(); // Accumulate -dBi/dRi, -dBi/dRj diff --git a/src/SNAP/compute_snav_atom.cpp b/src/SNAP/compute_snav_atom.cpp index 1f702496ed..374bf32298 100644 --- a/src/SNAP/compute_snav_atom.cpp +++ b/src/SNAP/compute_snav_atom.cpp @@ -258,7 +258,7 @@ void ComputeSNAVAtom::compute_peratom() snaptr->compute_duidrj(snaptr->rij[jj], snaptr->wj[jj], - snaptr->rcutij[jj]); + snaptr->rcutij[jj],jj); snaptr->compute_dbidrj(); // Accumulate -dBi/dRi*Ri, -dBi/dRj*Rj diff --git a/src/SNAP/pair_snap.cpp b/src/SNAP/pair_snap.cpp index f9ba8922a0..4dce39361f 100644 --- a/src/SNAP/pair_snap.cpp +++ b/src/SNAP/pair_snap.cpp @@ -176,7 +176,7 @@ void PairSNAP::compute(int eflag, int vflag) for (int jj = 0; jj < ninside; jj++) { int j = snaptr->inside[jj]; snaptr->compute_duidrj(snaptr->rij[jj], - snaptr->wj[jj],snaptr->rcutij[jj]); + snaptr->wj[jj],snaptr->rcutij[jj],jj); snaptr->compute_deidrj(fij); diff --git a/src/SNAP/sna.cpp b/src/SNAP/sna.cpp index ada3f528d2..f9696e1f12 100644 --- a/src/SNAP/sna.cpp +++ b/src/SNAP/sna.cpp @@ -134,6 +134,8 @@ SNA::SNA(LAMMPS* lmp, double rfac0_in, nmax = 0; idxz = NULL; idxb = NULL; + ulist_r_ij = NULL; + ulist_i_ij = NULL; build_indexlist(); create_twojmax_arrays(); @@ -154,6 +156,8 @@ SNA::~SNA() memory->destroy(inside); memory->destroy(wj); memory->destroy(rcutij); + memory->destroy(ulist_r_ij); + memory->destroy(ulist_i_ij); delete[] idxz; delete[] idxb; destroy_twojmax_arrays(); @@ -299,10 +303,14 @@ void SNA::grow_rij(int newnmax) memory->destroy(inside); memory->destroy(wj); memory->destroy(rcutij); + memory->destroy(ulist_r_ij); + memory->destroy(ulist_i_ij); memory->create(rij, nmax, 3, "pair:rij"); memory->create(inside, nmax, "pair:inside"); memory->create(wj, nmax, "pair:wj"); memory->create(rcutij, nmax, "pair:rcutij"); + memory->create(ulist_r_ij, nmax, idxu_max, "sna:ulist_ij"); + memory->create(ulist_i_ij, nmax, idxu_max, "sna:ulist_ij"); } /* ---------------------------------------------------------------------- @@ -334,7 +342,7 @@ void SNA::compute_ui(int jnum) z0 = r / tan(theta0); compute_uarray(x, y, z, z0, r); - add_uarraytot(r, wj[j], rcutij[j]); + add_uarraytot(r, wj[j], rcutij[j], j); } } @@ -826,7 +834,7 @@ void SNA::compute_dbidrj() calculate derivative of Ui w.r.t. atom j ------------------------------------------------------------------------- */ -void SNA::compute_duidrj(double* rij, double wj, double rcut) +void SNA::compute_duidrj(double* rij, double wj, double rcut, int jj) { double rsq, r, x, y, z, z0, theta0, cs, sn; double dz0dr; @@ -843,7 +851,7 @@ void SNA::compute_duidrj(double* rij, double wj, double rcut) z0 = r * cs / sn; dz0dr = z0 / r - (r*rscale0) * (rsq + z0 * z0) / rsq; - compute_duarray(x, y, z, z0, r, dz0dr, wj, rcut); + compute_duarray(x, y, z, z0, r, dz0dr, wj, rcut, jj); } /* ---------------------------------------------------------------------- */ @@ -879,7 +887,7 @@ void SNA::addself_uarraytot(double wself_in) add Wigner U-functions for one neighbor to the total ------------------------------------------------------------------------- */ -void SNA::add_uarraytot(double r, double wj, double rcut) +void SNA::add_uarraytot(double r, double wj, double rcut, int jj) { double sfac; @@ -887,6 +895,9 @@ void SNA::add_uarraytot(double r, double wj, double rcut) sfac *= wj; + double* ulist_r_j = ulist_r_ij[jj]; + double* ulist_i_j = ulist_i_ij[jj]; + for (int j = 0; j <= twojmax; j++) { int jju = idxu_block[j]; for (int mb = 0; mb <= j; mb++) @@ -895,6 +906,9 @@ void SNA::add_uarraytot(double r, double wj, double rcut) sfac * ulist_r[jju]; ulisttot_i[jju] += sfac * ulist_i[jju]; + + ulist_r_j[jju] = ulist_r[jju]; + ulist_i_j[jju] = ulist_i[jju]; jju++; } } @@ -992,7 +1006,7 @@ void SNA::compute_uarray(double x, double y, double z, void SNA::compute_duarray(double x, double y, double z, double z0, double r, double dz0dr, - double wj, double rcut) + double wj, double rcut, int jj) { double r0inv; double a_r, a_i, b_r, b_i; @@ -1036,6 +1050,9 @@ void SNA::compute_duarray(double x, double y, double z, db_i[0] += -r0inv; db_r[1] += r0inv; + double* ulist_r = ulist_r_ij[jj]; + double* ulist_i = ulist_i_ij[jj]; + dulist_r[0][0] = 0.0; dulist_r[0][1] = 0.0; dulist_r[0][2] = 0.0; diff --git a/src/SNAP/sna.h b/src/SNAP/sna.h index 1e08ef123c..81582cf9e5 100644 --- a/src/SNAP/sna.h +++ b/src/SNAP/sna.h @@ -53,7 +53,7 @@ public: // functions for derivatives - void compute_duidrj(double*, double, double); + void compute_duidrj(double*, double, double, int); void compute_dbidrj(); void compute_deidrj(double*); double compute_sfac(double, double); @@ -86,6 +86,7 @@ private: double* ulisttot_r, * ulisttot_i; double* ulist_r, * ulist_i; + double** ulist_r_ij, ** ulist_i_ij; int* idxu_block; double* zlist_r, * zlist_i; @@ -106,13 +107,13 @@ private: void init_rootpqarray(); void zero_uarraytot(); void addself_uarraytot(double); - void add_uarraytot(double, double, double); + void add_uarraytot(double, double, double, int); void compute_uarray(double, double, double, double, double); double deltacg(int, int, int); int compute_ncoeff(); void compute_duarray(double, double, double, - double, double, double, double, double); + double, double, double, double, double, int); // Sets the style for the switching function // 0 = none -- GitLab From 5eabc820240604ef4ea3859d054e6c03febc3827 Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 28 Jun 2019 10:17:22 -0600 Subject: [PATCH 133/627] Restore lost changes --- src/KOKKOS/pair_snap_kokkos_impl.h | 9 ++++----- src/KOKKOS/sna_kokkos.h | 4 ++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/KOKKOS/pair_snap_kokkos_impl.h b/src/KOKKOS/pair_snap_kokkos_impl.h index d0c7e09e84..20e04605ce 100644 --- a/src/KOKKOS/pair_snap_kokkos_impl.h +++ b/src/KOKKOS/pair_snap_kokkos_impl.h @@ -309,7 +309,7 @@ void PairSNAPKokkos::operator() (TagPairSNAPBeta,const typename Kokk const int ii = team.league_rank(); const int i = d_ilist[ii]; const int itype = type[i]; - const int ielem = map[itype]; + const int ielem = d_map[itype]; Kokkos::View> d_coeffi(d_coeffelem,ielem,Kokkos::ALL); @@ -603,11 +603,10 @@ void PairSNAPKokkos::operator() (TagPairSNAPCompute::member_type& team, double, double, double, double, double); // compute_ui - KOKKOS_INLINE_FUNCTION + inline double deltacg(int, int, int); // init_clebsch_gordan inline -- GitLab From ea2e73119da7c6c7633da5073d8cef8ed8e05b5c Mon Sep 17 00:00:00 2001 From: Stan Moore Date: Fri, 28 Jun 2019 11:23:24 -0600 Subject: [PATCH 134/627] Update Kokkos library in LAMMPS to v2.9.00 --- lib/kokkos/CHANGELOG.md | 34 + lib/kokkos/Makefile.kokkos | 111 +- lib/kokkos/Makefile.targets | 13 +- .../algorithms/cmake/Dependencies.cmake | 2 +- lib/kokkos/algorithms/src/Kokkos_Sort.hpp | 2 + .../algorithms/unit_tests/CMakeLists.txt | 6 + lib/kokkos/algorithms/unit_tests/Makefile | 12 + lib/kokkos/algorithms/unit_tests/TestHPX.cpp | 96 + lib/kokkos/algorithms/unit_tests/TestSort.hpp | 8 +- lib/kokkos/cmake/kokkos_build.cmake | 24 +- lib/kokkos/cmake/kokkos_functions.cmake | 2 +- lib/kokkos/cmake/kokkos_options.cmake | 41 +- lib/kokkos/cmake/kokkos_settings.cmake | 6 + lib/kokkos/cmake/tribits.cmake | 8 + .../containers/cmake/Dependencies.cmake | 2 +- .../performance_tests/CMakeLists.txt | 4 + .../containers/performance_tests/Makefile | 12 + .../performance_tests/TestDynRankView.hpp | 12 +- .../performance_tests/TestGlobal2LocalIds.hpp | 6 +- .../containers/performance_tests/TestHPX.cpp | 130 ++ .../performance_tests/TestScatterView.hpp | 2 + .../TestUnorderedMapPerformance.hpp | 4 +- lib/kokkos/containers/src/Kokkos_Bitset.hpp | 26 +- lib/kokkos/containers/src/Kokkos_DualView.hpp | 4 +- .../containers/src/Kokkos_DynRankView.hpp | 19 +- .../containers/src/Kokkos_DynamicView.hpp | 14 +- .../containers/src/Kokkos_OffsetView.hpp | 16 +- .../containers/src/Kokkos_ScatterView.hpp | 405 +++- .../containers/src/Kokkos_UnorderedMap.hpp | 8 +- lib/kokkos/containers/src/Kokkos_Vector.hpp | 4 +- .../containers/unit_tests/CMakeLists.txt | 25 + lib/kokkos/containers/unit_tests/Makefile | 26 + .../containers/unit_tests/TestBitset.hpp | 6 +- .../containers/unit_tests/TestDynViewAPI.hpp | 2 + .../unit_tests/TestErrorReporter.hpp | 2 + .../containers/unit_tests/TestScatterView.hpp | 452 +++- .../unit_tests/TestUnorderedMap.hpp | 14 +- .../unit_tests/hpx/TestHPX_BitSet.cpp | 47 + .../unit_tests/hpx/TestHPX_Category.hpp | 65 + .../unit_tests/hpx/TestHPX_DualView.cpp | 47 + .../hpx/TestHPX_DynRankViewAPI_generic.cpp | 47 + .../hpx/TestHPX_DynRankViewAPI_rank12345.cpp | 47 + .../hpx/TestHPX_DynRankViewAPI_rank67.cpp | 47 + .../unit_tests/hpx/TestHPX_DynamicView.cpp | 47 + .../unit_tests/hpx/TestHPX_ErrorReporter.cpp | 47 + .../unit_tests/hpx/TestHPX_OffsetView.cpp | 47 + .../unit_tests/hpx/TestHPX_ScatterView.cpp | 47 + .../unit_tests/hpx/TestHPX_StaticCrsGraph.cpp | 47 + .../unit_tests/hpx/TestHPX_UnorderedMap.cpp | 47 + .../unit_tests/hpx/TestHPX_Vector.cpp | 47 + .../hpx/TestHPX_ViewCtorPropEmbeddedDim.cpp | 47 + lib/kokkos/core/cmake/Dependencies.cmake | 2 +- lib/kokkos/core/perf_test/CMakeLists.txt | 1 + lib/kokkos/core/perf_test/Makefile | 1 + .../core/perf_test/PerfTestBlasKernels.hpp | 79 +- .../core/perf_test/PerfTestGramSchmidt.cpp | 2 +- lib/kokkos/core/perf_test/PerfTestHexGrad.cpp | 4 +- lib/kokkos/core/perf_test/PerfTestMDRange.hpp | 24 +- .../PerfTest_ExecSpacePartitioning.cpp | 564 +++++ .../core/perf_test/PerfTest_ViewAllocate.cpp | 1 + .../core/perf_test/PerfTest_ViewCopy.hpp | 5 + .../core/perf_test/PerfTest_ViewFill.hpp | 5 + .../core/perf_test/PerfTest_ViewResize.hpp | 10 + lib/kokkos/core/perf_test/test_atomic.cpp | 40 +- lib/kokkos/core/perf_test/test_mempool.cpp | 1 + lib/kokkos/core/perf_test/test_taskdag.cpp | 45 +- lib/kokkos/core/src/CMakeLists.txt | 10 + lib/kokkos/core/src/Cuda/Kokkos_CudaExec.hpp | 419 ---- lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.cpp | 12 +- .../Cuda/Kokkos_Cuda_Atomic_Intrinsics.hpp | 657 ++++++ ...uda_Atomic_Intrinsics_Restore_Builtins.hpp | 68 + ...pp => Kokkos_Cuda_BlockSize_Deduction.hpp} | 131 +- ...Cuda_Impl.cpp => Kokkos_Cuda_Instance.cpp} | 200 +- .../core/src/Cuda/Kokkos_Cuda_Instance.hpp | 156 ++ .../src/Cuda/Kokkos_Cuda_KernelLaunch.hpp | 579 +++++ .../core/src/Cuda/Kokkos_Cuda_Parallel.hpp | 717 ++---- .../core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp | 17 +- lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.cpp | 190 +- lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.hpp | 732 ++++-- lib/kokkos/core/src/Cuda/Kokkos_Cuda_Team.hpp | 178 +- lib/kokkos/core/src/Cuda/Kokkos_Cuda_View.hpp | 2 +- .../src/Cuda/Kokkos_Cuda_WorkGraphPolicy.hpp | 3 +- lib/kokkos/core/src/HPX/Kokkos_HPX.cpp | 152 ++ .../Kokkos_HPX_Task.cpp} | 39 +- lib/kokkos/core/src/HPX/Kokkos_HPX_Task.hpp | 298 +++ .../src/HPX/Kokkos_HPX_ViewCopyETIAvail.hpp | 57 + .../src/HPX/Kokkos_HPX_ViewCopyETIDecl.hpp | 57 + .../src/HPX/Kokkos_HPX_WorkGraphPolicy.hpp | 116 + .../core/src/KokkosExp_MDRangePolicy.hpp | 79 +- lib/kokkos/core/src/Kokkos_Atomic.hpp | 15 + lib/kokkos/core/src/Kokkos_Complex.hpp | 6 +- lib/kokkos/core/src/Kokkos_Concepts.hpp | 54 +- lib/kokkos/core/src/Kokkos_CopyViews.hpp | 860 ++++++- lib/kokkos/core/src/Kokkos_Core.hpp | 5 + lib/kokkos/core/src/Kokkos_Core_fwd.hpp | 10 + lib/kokkos/core/src/Kokkos_Crs.hpp | 4 +- lib/kokkos/core/src/Kokkos_Cuda.hpp | 41 +- lib/kokkos/core/src/Kokkos_ExecPolicy.hpp | 175 +- lib/kokkos/core/src/Kokkos_Extents.hpp | 186 ++ lib/kokkos/core/src/Kokkos_Future.hpp | 567 +++++ lib/kokkos/core/src/Kokkos_HPX.hpp | 1999 +++++++++++++++++ lib/kokkos/core/src/Kokkos_HostSpace.hpp | 13 +- lib/kokkos/core/src/Kokkos_Layout.hpp | 21 +- lib/kokkos/core/src/Kokkos_Macros.hpp | 108 +- lib/kokkos/core/src/Kokkos_MemoryPool.hpp | 6 + lib/kokkos/core/src/Kokkos_MemoryTraits.hpp | 9 +- lib/kokkos/core/src/Kokkos_OpenMP.hpp | 8 +- lib/kokkos/core/src/Kokkos_Pair.hpp | 9 + lib/kokkos/core/src/Kokkos_Parallel.hpp | 4 +- .../core/src/Kokkos_Parallel_Reduce.hpp | 257 ++- .../core/src/Kokkos_PointerOwnership.hpp | 74 + lib/kokkos/core/src/Kokkos_ROCm.hpp | 9 +- lib/kokkos/core/src/Kokkos_Serial.hpp | 26 +- lib/kokkos/core/src/Kokkos_TaskScheduler.hpp | 1070 ++++----- .../core/src/Kokkos_TaskScheduler_fwd.hpp | 249 ++ lib/kokkos/core/src/Kokkos_Threads.hpp | 6 + lib/kokkos/core/src/Kokkos_View.hpp | 64 +- .../core/src/Kokkos_WorkGraphPolicy.hpp | 13 +- lib/kokkos/core/src/Makefile | 8 + .../core/src/Makefile.generate_build_files | 5 +- .../core/src/Makefile.generate_header_lists | 4 + .../core/src/OpenMP/Kokkos_OpenMP_Exec.cpp | 4 + .../core/src/OpenMP/Kokkos_OpenMP_Exec.hpp | 5 + .../src/OpenMP/Kokkos_OpenMP_Parallel.hpp | 25 +- .../core/src/OpenMP/Kokkos_OpenMP_Task.cpp | 222 +- .../core/src/OpenMP/Kokkos_OpenMP_Task.hpp | 376 +++- .../core/src/OpenMP/Kokkos_OpenMP_Team.hpp | 23 +- .../OpenMP/Kokkos_OpenMP_WorkGraphPolicy.hpp | 5 +- .../Kokkos_OpenMPTarget_Parallel.hpp | 16 +- .../src/Qthreads/Kokkos_Qthreads_Parallel.hpp | 1 - lib/kokkos/core/src/ROCm/Kokkos_ROCm_Exec.hpp | 2 +- .../core/src/ROCm/Kokkos_ROCm_Parallel.hpp | 25 +- .../core/src/Threads/Kokkos_ThreadsExec.cpp | 4 + .../core/src/Threads/Kokkos_ThreadsExec.hpp | 4 + .../core/src/Threads/Kokkos_ThreadsTeam.hpp | 169 +- .../src/Threads/Kokkos_Threads_Parallel.hpp | 1 - lib/kokkos/core/src/eti/CMakeLists.txt | 3 + lib/kokkos/core/src/eti/HPX/CMakeLists.txt | 148 ++ ...TIInst_int64_t_double_LayoutLeft_Rank1.cpp | 54 + ...TIInst_int64_t_double_LayoutLeft_Rank2.cpp | 54 + ...TIInst_int64_t_double_LayoutLeft_Rank3.cpp | 54 + ...TIInst_int64_t_double_LayoutLeft_Rank4.cpp | 54 + ...TIInst_int64_t_double_LayoutLeft_Rank5.cpp | 54 + ...TIInst_int64_t_double_LayoutLeft_Rank8.cpp | 54 + ...IInst_int64_t_double_LayoutRight_Rank1.cpp | 54 + ...IInst_int64_t_double_LayoutRight_Rank2.cpp | 54 + ...IInst_int64_t_double_LayoutRight_Rank3.cpp | 54 + ...IInst_int64_t_double_LayoutRight_Rank4.cpp | 54 + ...IInst_int64_t_double_LayoutRight_Rank5.cpp | 54 + ...IInst_int64_t_double_LayoutRight_Rank8.cpp | 54 + ...Inst_int64_t_double_LayoutStride_Rank1.cpp | 54 + ...Inst_int64_t_double_LayoutStride_Rank2.cpp | 54 + ...Inst_int64_t_double_LayoutStride_Rank3.cpp | 54 + ...Inst_int64_t_double_LayoutStride_Rank4.cpp | 54 + ...Inst_int64_t_double_LayoutStride_Rank5.cpp | 54 + ...Inst_int64_t_double_LayoutStride_Rank8.cpp | 54 + ...ETIInst_int64_t_float_LayoutLeft_Rank1.cpp | 54 + ...ETIInst_int64_t_float_LayoutLeft_Rank2.cpp | 54 + ...ETIInst_int64_t_float_LayoutLeft_Rank3.cpp | 54 + ...ETIInst_int64_t_float_LayoutLeft_Rank4.cpp | 54 + ...ETIInst_int64_t_float_LayoutLeft_Rank5.cpp | 54 + ...ETIInst_int64_t_float_LayoutLeft_Rank8.cpp | 54 + ...TIInst_int64_t_float_LayoutRight_Rank1.cpp | 54 + ...TIInst_int64_t_float_LayoutRight_Rank2.cpp | 54 + ...TIInst_int64_t_float_LayoutRight_Rank3.cpp | 54 + ...TIInst_int64_t_float_LayoutRight_Rank4.cpp | 54 + ...TIInst_int64_t_float_LayoutRight_Rank5.cpp | 54 + ...TIInst_int64_t_float_LayoutRight_Rank8.cpp | 54 + ...IInst_int64_t_float_LayoutStride_Rank1.cpp | 54 + ...IInst_int64_t_float_LayoutStride_Rank2.cpp | 54 + ...IInst_int64_t_float_LayoutStride_Rank3.cpp | 54 + ...IInst_int64_t_float_LayoutStride_Rank4.cpp | 54 + ...IInst_int64_t_float_LayoutStride_Rank5.cpp | 54 + ...IInst_int64_t_float_LayoutStride_Rank8.cpp | 54 + ...IInst_int64_t_int64_t_LayoutLeft_Rank1.cpp | 54 + ...IInst_int64_t_int64_t_LayoutLeft_Rank2.cpp | 54 + ...IInst_int64_t_int64_t_LayoutLeft_Rank3.cpp | 54 + ...IInst_int64_t_int64_t_LayoutLeft_Rank4.cpp | 54 + ...IInst_int64_t_int64_t_LayoutLeft_Rank5.cpp | 54 + ...IInst_int64_t_int64_t_LayoutLeft_Rank8.cpp | 54 + ...Inst_int64_t_int64_t_LayoutRight_Rank1.cpp | 54 + ...Inst_int64_t_int64_t_LayoutRight_Rank2.cpp | 54 + ...Inst_int64_t_int64_t_LayoutRight_Rank3.cpp | 54 + ...Inst_int64_t_int64_t_LayoutRight_Rank4.cpp | 54 + ...Inst_int64_t_int64_t_LayoutRight_Rank5.cpp | 54 + ...Inst_int64_t_int64_t_LayoutRight_Rank8.cpp | 54 + ...nst_int64_t_int64_t_LayoutStride_Rank1.cpp | 54 + ...nst_int64_t_int64_t_LayoutStride_Rank2.cpp | 54 + ...nst_int64_t_int64_t_LayoutStride_Rank3.cpp | 54 + ...nst_int64_t_int64_t_LayoutStride_Rank4.cpp | 54 + ...nst_int64_t_int64_t_LayoutStride_Rank5.cpp | 54 + ...nst_int64_t_int64_t_LayoutStride_Rank8.cpp | 54 + ...pyETIInst_int64_t_int_LayoutLeft_Rank1.cpp | 54 + ...pyETIInst_int64_t_int_LayoutLeft_Rank2.cpp | 54 + ...pyETIInst_int64_t_int_LayoutLeft_Rank3.cpp | 54 + ...pyETIInst_int64_t_int_LayoutLeft_Rank4.cpp | 54 + ...pyETIInst_int64_t_int_LayoutLeft_Rank5.cpp | 54 + ...pyETIInst_int64_t_int_LayoutLeft_Rank8.cpp | 54 + ...yETIInst_int64_t_int_LayoutRight_Rank1.cpp | 54 + ...yETIInst_int64_t_int_LayoutRight_Rank2.cpp | 54 + ...yETIInst_int64_t_int_LayoutRight_Rank3.cpp | 54 + ...yETIInst_int64_t_int_LayoutRight_Rank4.cpp | 54 + ...yETIInst_int64_t_int_LayoutRight_Rank5.cpp | 54 + ...yETIInst_int64_t_int_LayoutRight_Rank8.cpp | 54 + ...ETIInst_int64_t_int_LayoutStride_Rank1.cpp | 54 + ...ETIInst_int64_t_int_LayoutStride_Rank2.cpp | 54 + ...ETIInst_int64_t_int_LayoutStride_Rank3.cpp | 54 + ...ETIInst_int64_t_int_LayoutStride_Rank4.cpp | 54 + ...ETIInst_int64_t_int_LayoutStride_Rank5.cpp | 54 + ...ETIInst_int64_t_int_LayoutStride_Rank8.cpp | 54 + ...opyETIInst_int_double_LayoutLeft_Rank1.cpp | 54 + ...opyETIInst_int_double_LayoutLeft_Rank2.cpp | 54 + ...opyETIInst_int_double_LayoutLeft_Rank3.cpp | 54 + ...opyETIInst_int_double_LayoutLeft_Rank4.cpp | 54 + ...opyETIInst_int_double_LayoutLeft_Rank5.cpp | 54 + ...opyETIInst_int_double_LayoutLeft_Rank8.cpp | 54 + ...pyETIInst_int_double_LayoutRight_Rank1.cpp | 54 + ...pyETIInst_int_double_LayoutRight_Rank2.cpp | 54 + ...pyETIInst_int_double_LayoutRight_Rank3.cpp | 54 + ...pyETIInst_int_double_LayoutRight_Rank4.cpp | 54 + ...pyETIInst_int_double_LayoutRight_Rank5.cpp | 54 + ...pyETIInst_int_double_LayoutRight_Rank8.cpp | 54 + ...yETIInst_int_double_LayoutStride_Rank1.cpp | 54 + ...yETIInst_int_double_LayoutStride_Rank2.cpp | 54 + ...yETIInst_int_double_LayoutStride_Rank3.cpp | 54 + ...yETIInst_int_double_LayoutStride_Rank4.cpp | 54 + ...yETIInst_int_double_LayoutStride_Rank5.cpp | 54 + ...yETIInst_int_double_LayoutStride_Rank8.cpp | 54 + ...CopyETIInst_int_float_LayoutLeft_Rank1.cpp | 54 + ...CopyETIInst_int_float_LayoutLeft_Rank2.cpp | 54 + ...CopyETIInst_int_float_LayoutLeft_Rank3.cpp | 54 + ...CopyETIInst_int_float_LayoutLeft_Rank4.cpp | 54 + ...CopyETIInst_int_float_LayoutLeft_Rank5.cpp | 54 + ...CopyETIInst_int_float_LayoutLeft_Rank8.cpp | 54 + ...opyETIInst_int_float_LayoutRight_Rank1.cpp | 54 + ...opyETIInst_int_float_LayoutRight_Rank2.cpp | 54 + ...opyETIInst_int_float_LayoutRight_Rank3.cpp | 54 + ...opyETIInst_int_float_LayoutRight_Rank4.cpp | 54 + ...opyETIInst_int_float_LayoutRight_Rank5.cpp | 54 + ...opyETIInst_int_float_LayoutRight_Rank8.cpp | 54 + ...pyETIInst_int_float_LayoutStride_Rank1.cpp | 54 + ...pyETIInst_int_float_LayoutStride_Rank2.cpp | 54 + ...pyETIInst_int_float_LayoutStride_Rank3.cpp | 54 + ...pyETIInst_int_float_LayoutStride_Rank4.cpp | 54 + ...pyETIInst_int_float_LayoutStride_Rank5.cpp | 54 + ...pyETIInst_int_float_LayoutStride_Rank8.cpp | 54 + ...pyETIInst_int_int64_t_LayoutLeft_Rank1.cpp | 54 + ...pyETIInst_int_int64_t_LayoutLeft_Rank2.cpp | 54 + ...pyETIInst_int_int64_t_LayoutLeft_Rank3.cpp | 54 + ...pyETIInst_int_int64_t_LayoutLeft_Rank4.cpp | 54 + ...pyETIInst_int_int64_t_LayoutLeft_Rank5.cpp | 54 + ...pyETIInst_int_int64_t_LayoutLeft_Rank8.cpp | 54 + ...yETIInst_int_int64_t_LayoutRight_Rank1.cpp | 54 + ...yETIInst_int_int64_t_LayoutRight_Rank2.cpp | 54 + ...yETIInst_int_int64_t_LayoutRight_Rank3.cpp | 54 + ...yETIInst_int_int64_t_LayoutRight_Rank4.cpp | 54 + ...yETIInst_int_int64_t_LayoutRight_Rank5.cpp | 54 + ...yETIInst_int_int64_t_LayoutRight_Rank8.cpp | 54 + ...ETIInst_int_int64_t_LayoutStride_Rank1.cpp | 54 + ...ETIInst_int_int64_t_LayoutStride_Rank2.cpp | 54 + ...ETIInst_int_int64_t_LayoutStride_Rank3.cpp | 54 + ...ETIInst_int_int64_t_LayoutStride_Rank4.cpp | 54 + ...ETIInst_int_int64_t_LayoutStride_Rank5.cpp | 54 + ...ETIInst_int_int64_t_LayoutStride_Rank8.cpp | 54 + ...ewCopyETIInst_int_int_LayoutLeft_Rank1.cpp | 54 + ...ewCopyETIInst_int_int_LayoutLeft_Rank2.cpp | 54 + ...ewCopyETIInst_int_int_LayoutLeft_Rank3.cpp | 54 + ...ewCopyETIInst_int_int_LayoutLeft_Rank4.cpp | 54 + ...ewCopyETIInst_int_int_LayoutLeft_Rank5.cpp | 54 + ...ewCopyETIInst_int_int_LayoutLeft_Rank8.cpp | 54 + ...wCopyETIInst_int_int_LayoutRight_Rank1.cpp | 54 + ...wCopyETIInst_int_int_LayoutRight_Rank2.cpp | 54 + ...wCopyETIInst_int_int_LayoutRight_Rank3.cpp | 54 + ...wCopyETIInst_int_int_LayoutRight_Rank4.cpp | 54 + ...wCopyETIInst_int_int_LayoutRight_Rank5.cpp | 54 + ...wCopyETIInst_int_int_LayoutRight_Rank8.cpp | 54 + ...CopyETIInst_int_int_LayoutStride_Rank1.cpp | 54 + ...CopyETIInst_int_int_LayoutStride_Rank2.cpp | 54 + ...CopyETIInst_int_int_LayoutStride_Rank3.cpp | 54 + ...CopyETIInst_int_int_LayoutStride_Rank4.cpp | 54 + ...CopyETIInst_int_int_LayoutStride_Rank5.cpp | 54 + ...CopyETIInst_int_int_LayoutStride_Rank8.cpp | 54 + lib/kokkos/core/src/eti/HPX/Makefile.eti_HPX | 288 +++ .../core/src/impl/Kokkos_AnalyzePolicy.hpp | 31 +- .../Kokkos_Atomic_Compare_Exchange_Strong.hpp | 165 ++ .../Kokkos_Atomic_Compare_Exchange_Weak.hpp | 418 ++++ .../core/src/impl/Kokkos_Atomic_Fetch_Add.hpp | 14 +- .../core/src/impl/Kokkos_Atomic_Fetch_Sub.hpp | 24 +- .../core/src/impl/Kokkos_Atomic_Generic.hpp | 28 +- .../core/src/impl/Kokkos_Atomic_Load.hpp | 266 +++ .../src/impl/Kokkos_Atomic_Memory_Order.hpp | 122 + .../core/src/impl/Kokkos_Atomic_Store.hpp | 258 +++ lib/kokkos/core/src/impl/Kokkos_ChaseLev.hpp | 314 +++ lib/kokkos/core/src/impl/Kokkos_Core.cpp | 52 +- lib/kokkos/core/src/impl/Kokkos_EBO.hpp | 343 +++ lib/kokkos/core/src/impl/Kokkos_Error.hpp | 48 + .../src/impl/Kokkos_FixedBufferMemoryPool.hpp | 307 +++ .../core/src/impl/Kokkos_FunctorAdapter.hpp | 5 +- lib/kokkos/core/src/impl/Kokkos_HostSpace.cpp | 8 +- .../src/impl/Kokkos_HostSpace_deepcopy.cpp | 134 ++ .../src/impl/Kokkos_HostSpace_deepcopy.hpp | 54 + .../core/src/impl/Kokkos_HostThreadTeam.hpp | 292 ++- lib/kokkos/core/src/impl/Kokkos_LIFO.hpp | 431 ++++ .../core/src/impl/Kokkos_LinkedListNode.hpp | 206 ++ .../src/impl/Kokkos_MemoryPoolAllocator.hpp | 140 ++ .../src/impl/Kokkos_MultipleTaskQueue.hpp | 616 +++++ .../core/src/impl/Kokkos_OptionalRef.hpp | 242 ++ .../core/src/impl/Kokkos_Serial_Task.cpp | 99 +- .../core/src/impl/Kokkos_Serial_Task.hpp | 217 +- .../core/src/impl/Kokkos_SharedAlloc.cpp | 31 +- .../src/impl/Kokkos_SimpleTaskScheduler.hpp | 646 ++++++ .../core/src/impl/Kokkos_SingleTaskQueue.hpp | 207 ++ lib/kokkos/core/src/impl/Kokkos_TaskBase.hpp | 329 +++ lib/kokkos/core/src/impl/Kokkos_TaskNode.hpp | 758 +++++++ .../core/src/impl/Kokkos_TaskPolicyData.hpp | 195 ++ lib/kokkos/core/src/impl/Kokkos_TaskQueue.hpp | 388 +--- .../core/src/impl/Kokkos_TaskQueueCommon.hpp | 569 +++++ .../impl/Kokkos_TaskQueueMemoryManager.hpp | 251 +++ .../src/impl/Kokkos_TaskQueueMultiple.hpp | 286 +++ .../impl/Kokkos_TaskQueueMultiple_impl.hpp | 72 + .../core/src/impl/Kokkos_TaskQueue_impl.hpp | 119 +- .../core/src/impl/Kokkos_TaskResult.hpp | 151 ++ .../core/src/impl/Kokkos_TaskTeamMember.hpp | 135 ++ lib/kokkos/core/src/impl/Kokkos_Traits.hpp | 48 + .../core/src/impl/Kokkos_VLAEmulation.hpp | 295 +++ lib/kokkos/core/src/impl/Kokkos_ViewArray.hpp | 2 + .../core/src/impl/Kokkos_ViewMapping.hpp | 146 +- lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp | 12 + lib/kokkos/core/unit_test/CMakeLists.txt | 682 +++++- lib/kokkos/core/unit_test/Makefile | 533 +++-- lib/kokkos/core/unit_test/TestAtomic.hpp | 20 +- .../core/unit_test/TestAtomicOperations.hpp | 52 +- .../TestAtomicOperations_complexdouble.hpp | 57 + .../TestAtomicOperations_complexfloat.hpp | 57 + lib/kokkos/core/unit_test/TestCXX11.hpp | 2 + .../core/unit_test/TestCompilerMacros.hpp | 2 +- lib/kokkos/core/unit_test/TestDeepCopy.hpp | 167 ++ .../unit_test/TestDefaultDeviceTypeInit.hpp | 8 + .../core/unit_test/TestLocalDeepCopy.hpp | 904 ++++++++ lib/kokkos/core/unit_test/TestMDRange.hpp | 5 + .../core/unit_test/TestPolicyConstruction.hpp | 3 + .../unit_test/TestReduceCombinatorical.hpp | 6 + .../core/unit_test/TestReduceDeviceView.hpp | 8 +- lib/kokkos/core/unit_test/TestReducers.hpp | 11 + lib/kokkos/core/unit_test/TestScan.hpp | 7 +- lib/kokkos/core/unit_test/TestSharedAlloc.hpp | 12 +- .../core/unit_test/TestTaskScheduler.hpp | 464 +++- .../unit_test/TestTaskScheduler_single.hpp | 92 + lib/kokkos/core/unit_test/TestTeam.hpp | 14 +- lib/kokkos/core/unit_test/TestTeamVector.hpp | 53 +- .../core/unit_test/TestTeamVectorRange.hpp | 464 ++++ lib/kokkos/core/unit_test/TestTile.hpp | 7 + lib/kokkos/core/unit_test/TestViewAPI.hpp | 46 +- lib/kokkos/core/unit_test/TestViewAPI_e.hpp | 42 + .../core/unit_test/TestViewMapping_a.hpp | 6 +- .../core/unit_test/TestViewMapping_b.hpp | 6 +- .../unit_test/TestViewMapping_subview.hpp | 1 + lib/kokkos/core/unit_test/TestViewSubview.hpp | 204 ++ lib/kokkos/core/unit_test/TestWorkGraph.hpp | 1 + ...estCuda_AtomicOperations_complexdouble.cpp | 46 + ...TestCuda_AtomicOperations_complexfloat.cpp | 46 + .../cuda/TestCuda_DeepCopyAlignment.cpp | 48 + ..._InterOp.cpp => TestCuda_InterOp_Init.cpp} | 0 .../cuda/TestCuda_InterOp_Streams.cpp | 180 ++ .../unit_test/cuda/TestCuda_LocalDeepCopy.cpp | 46 + .../core/unit_test/cuda/TestCuda_Spaces.cpp | 6 +- .../unit_test/cuda/TestCuda_SubView_a.cpp | 7 + .../cuda/TestCuda_TeamVectorRange.cpp | 48 + .../hpx/TestHPX_AtomicOperations_double.cpp | 46 + .../hpx/TestHPX_AtomicOperations_float.cpp | 46 + .../hpx/TestHPX_AtomicOperations_int.cpp | 46 + .../hpx/TestHPX_AtomicOperations_longint.cpp | 46 + .../TestHPX_AtomicOperations_longlongint.cpp | 46 + .../TestHPX_AtomicOperations_unsignedint.cpp | 46 + ...stHPX_AtomicOperations_unsignedlongint.cpp | 46 + .../unit_test/hpx/TestHPX_AtomicViews.cpp | 47 + .../core/unit_test/hpx/TestHPX_Atomics.cpp | 46 + .../core/unit_test/hpx/TestHPX_Category.hpp | 65 + .../core/unit_test/hpx/TestHPX_Complex.cpp | 47 + lib/kokkos/core/unit_test/hpx/TestHPX_Crs.cpp | 45 + .../core/unit_test/hpx/TestHPX_Init.cpp | 50 + .../core/unit_test/hpx/TestHPX_InterOp.cpp | 56 + .../core/unit_test/hpx/TestHPX_MDRange_a.cpp | 47 + .../core/unit_test/hpx/TestHPX_MDRange_b.cpp | 47 + .../core/unit_test/hpx/TestHPX_MDRange_c.cpp | 47 + .../core/unit_test/hpx/TestHPX_MDRange_d.cpp | 47 + .../core/unit_test/hpx/TestHPX_MDRange_e.cpp | 47 + .../core/unit_test/hpx/TestHPX_Other.cpp | 43 + .../unit_test/hpx/TestHPX_RangePolicy.cpp | 47 + .../core/unit_test/hpx/TestHPX_Reducers_a.cpp | 45 + .../core/unit_test/hpx/TestHPX_Reducers_b.cpp | 45 + .../core/unit_test/hpx/TestHPX_Reducers_c.cpp | 45 + .../core/unit_test/hpx/TestHPX_Reducers_d.cpp | 45 + .../core/unit_test/hpx/TestHPX_Reductions.cpp | 46 + .../core/unit_test/hpx/TestHPX_Scan.cpp | 47 + .../unit_test/hpx/TestHPX_SharedAlloc.cpp | 55 + .../core/unit_test/hpx/TestHPX_SubView_a.cpp | 104 + .../core/unit_test/hpx/TestHPX_SubView_b.cpp | 63 + .../unit_test/hpx/TestHPX_SubView_c01.cpp | 54 + .../unit_test/hpx/TestHPX_SubView_c02.cpp | 54 + .../unit_test/hpx/TestHPX_SubView_c03.cpp | 54 + .../unit_test/hpx/TestHPX_SubView_c04.cpp | 54 + .../unit_test/hpx/TestHPX_SubView_c05.cpp | 54 + .../unit_test/hpx/TestHPX_SubView_c06.cpp | 54 + .../unit_test/hpx/TestHPX_SubView_c07.cpp | 54 + .../unit_test/hpx/TestHPX_SubView_c08.cpp | 54 + .../unit_test/hpx/TestHPX_SubView_c09.cpp | 54 + .../unit_test/hpx/TestHPX_SubView_c10.cpp | 54 + .../unit_test/hpx/TestHPX_SubView_c11.cpp | 54 + .../unit_test/hpx/TestHPX_SubView_c12.cpp | 54 + .../unit_test/hpx/TestHPX_SubView_c13.cpp | 54 + .../unit_test/hpx/TestHPX_SubView_c_all.cpp | 13 + .../core/unit_test/hpx/TestHPX_Task.cpp | 47 + .../core/unit_test/hpx/TestHPX_Team.cpp | 75 + .../hpx/TestHPX_TeamReductionScan.cpp | 81 + .../unit_test/hpx/TestHPX_TeamScratch.cpp | 83 + .../unit_test/hpx/TestHPX_TeamVectorRange.cpp | 48 + .../unit_test/hpx/TestHPX_UniqueToken.cpp | 46 + .../core/unit_test/hpx/TestHPX_ViewAPI_a.cpp | 45 + .../core/unit_test/hpx/TestHPX_ViewAPI_b.cpp | 45 + .../core/unit_test/hpx/TestHPX_ViewAPI_c.cpp | 45 + .../core/unit_test/hpx/TestHPX_ViewAPI_d.cpp | 45 + .../core/unit_test/hpx/TestHPX_ViewAPI_e.cpp | 45 + .../unit_test/hpx/TestHPX_ViewMapping_a.cpp | 46 + .../unit_test/hpx/TestHPX_ViewMapping_b.cpp | 46 + .../hpx/TestHPX_ViewMapping_subview.cpp | 46 + .../unit_test/hpx/TestHPX_ViewOfClass.cpp | 46 + .../core/unit_test/hpx/TestHPX_View_64bit.cpp | 45 + .../core/unit_test/hpx/TestHPX_WorkGraph.cpp | 45 + ...tOpenMP_AtomicOperations_complexdouble.cpp | 46 + ...stOpenMP_AtomicOperations_complexfloat.cpp | 46 + .../openmp/TestOpenMP_DeepCopyAlignment.cpp | 45 + .../openmp/TestOpenMP_LocalDeepCopy.cpp | 46 + .../unit_test/openmp/TestOpenMP_SubView_a.cpp | 7 + .../openmp/TestOpenMP_TeamVectorRange.cpp | 48 + ...PTarget_AtomicOperations_complexdouble.cpp | 46 + ...MPTarget_AtomicOperations_complexfloat.cpp | 46 + .../TestOpenMPTarget_DeepCopyAlignment.cpp | 45 + .../TestOpenMPTarget_SubView_a.cpp | 7 + ...threads_AtomicOperations_complexdouble.cpp | 46 + ...qthreads_AtomicOperations_complexfloat.cpp | 46 + .../TestQthreads_DeepCopyAlignment.cpp | 45 + .../qthreads/TestQthreads_Reductions.cpp | 4 +- .../rocm/TestROCm_DeepCopyAlignment.cpp | 45 + .../core/unit_test/rocm/TestROCm_Spaces.cpp | 2 +- .../unit_test/rocm/TestROCm_SubView_a.cpp | 7 + ...tSerial_AtomicOperations_complexdouble.cpp | 46 + ...stSerial_AtomicOperations_complexfloat.cpp | 46 + .../serial/TestSerial_DeepCopyAlignment.cpp | 45 + .../serial/TestSerial_LocalDeepCopy.cpp | 46 + .../unit_test/serial/TestSerial_SubView_a.cpp | 7 + .../serial/TestSerial_TeamVectorRange.cpp | 48 + .../unit_test/standalone/UnitTestMainInit.cpp | 11 +- ...Threads_AtomicOperations_complexdouble.cpp | 46 + ...tThreads_AtomicOperations_complexfloat.cpp | 46 + .../threads/TestThreads_DeepCopyAlignment.cpp | 45 + .../threads/TestThreads_LocalDeepCopy.cpp | 46 + .../threads/TestThreads_SubView_a.cpp | 7 + .../threads/TestThreads_TeamVectorRange.cpp | 48 + lib/kokkos/doc/Doxyfile | 127 -- lib/kokkos/doc/Kokkos_PG.pdf | Bin 1359256 -> 0 bytes .../doc/SAND2017-10464-Kokkos-Task-DAG.pdf | Bin 761252 -> 0 bytes lib/kokkos/doc/build_docs | 15 - .../doc/design_notes_space_instances.md | 131 -- lib/kokkos/doc/develop_builds.md | 76 - .../query_cuda_arch.cpp | 24 - lib/kokkos/doc/index.doc | 72 - lib/kokkos/doc/kokkos-promotion.txt | 196 -- lib/kokkos/example/cmake/Dependencies.cmake | 2 +- lib/kokkos/example/common/VectorImport.hpp | 10 +- lib/kokkos/example/feint/Makefile | 4 + lib/kokkos/example/feint/feint_hpx.cpp | 67 + lib/kokkos/example/fenl/CGSolve.hpp | 4 +- lib/kokkos/example/fenl/fenl.cpp | 22 + lib/kokkos/example/fenl/fenl_functors.hpp | 14 +- lib/kokkos/example/fenl/fenl_impl.hpp | 6 +- lib/kokkos/example/fenl/main.cpp | 12 +- lib/kokkos/example/md_skeleton/force.cpp | 2 +- lib/kokkos/example/md_skeleton/neighbor.cpp | 6 +- lib/kokkos/example/multi_fem/Explicit.hpp | 6 +- .../example/multi_fem/ExplicitFunctors.hpp | 24 +- lib/kokkos/example/multi_fem/Implicit.hpp | 8 +- lib/kokkos/example/multi_fem/LinAlgBLAS.hpp | 74 +- lib/kokkos/example/multi_fem/Nonlinear.hpp | 8 +- lib/kokkos/example/multi_fem/TestCuda.cpp | 46 +- lib/kokkos/example/multi_fem/TestHost.cpp | 25 +- .../Advanced_Views/03_subviews/subviews.cpp | 1 + .../overlapping_deepcopy.cpp | 2 +- lib/kokkos/generate_makefile.bash | 35 +- lib/kokkos/master_history.txt | 1 + .../scripts/eti/generate_view_copy_cpp_files | 12 - .../eti/generate_view_copy_cpp_files_iterate | 21 - .../eti/generate_view_copy_cpp_files_rank | 17 - .../eti/generate_view_copy_cpp_files_write | 41 - lib/kokkos/scripts/snapshot.py | 291 --- lib/kokkos/scripts/testing_scripts/README | 5 - .../testing_scripts/jenkins_test_driver | 83 - .../testing_scripts/obj_size_opt_check | 287 --- .../scripts/testing_scripts/test_all_sandia | 811 ------- .../test_kokkos_master_develop_promotion.sh | 66 - .../blake_jenkins_run_script_pthread_intel | 63 - .../blake_jenkins_run_script_serial_intel | 63 - .../scripts/trilinos-integration/checkin-test | 4 - .../prepare_trilinos_repos.sh | 59 - .../white_run_jenkins_script_cuda | 67 - .../white_run_jenkins_script_omp | 62 - 506 files changed, 37014 insertions(+), 6822 deletions(-) create mode 100644 lib/kokkos/algorithms/unit_tests/TestHPX.cpp create mode 100644 lib/kokkos/containers/performance_tests/TestHPX.cpp create mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_BitSet.cpp create mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_Category.hpp create mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_DualView.cpp create mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_generic.cpp create mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_rank12345.cpp create mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_rank67.cpp create mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_DynamicView.cpp create mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_ErrorReporter.cpp create mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_OffsetView.cpp create mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_ScatterView.cpp create mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_StaticCrsGraph.cpp create mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_UnorderedMap.cpp create mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_Vector.cpp create mode 100644 lib/kokkos/containers/unit_tests/hpx/TestHPX_ViewCtorPropEmbeddedDim.cpp create mode 100644 lib/kokkos/core/perf_test/PerfTest_ExecSpacePartitioning.cpp delete mode 100644 lib/kokkos/core/src/Cuda/Kokkos_CudaExec.hpp create mode 100644 lib/kokkos/core/src/Cuda/Kokkos_Cuda_Atomic_Intrinsics.hpp create mode 100644 lib/kokkos/core/src/Cuda/Kokkos_Cuda_Atomic_Intrinsics_Restore_Builtins.hpp rename lib/kokkos/core/src/Cuda/{Kokkos_Cuda_Internal.hpp => Kokkos_Cuda_BlockSize_Deduction.hpp} (69%) rename lib/kokkos/core/src/Cuda/{Kokkos_Cuda_Impl.cpp => Kokkos_Cuda_Instance.cpp} (86%) create mode 100644 lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.hpp create mode 100644 lib/kokkos/core/src/Cuda/Kokkos_Cuda_KernelLaunch.hpp create mode 100644 lib/kokkos/core/src/HPX/Kokkos_HPX.cpp rename lib/kokkos/core/src/{impl/Kokkos_StaticAssert.hpp => HPX/Kokkos_HPX_Task.cpp} (76%) create mode 100644 lib/kokkos/core/src/HPX/Kokkos_HPX_Task.hpp create mode 100644 lib/kokkos/core/src/HPX/Kokkos_HPX_ViewCopyETIAvail.hpp create mode 100644 lib/kokkos/core/src/HPX/Kokkos_HPX_ViewCopyETIDecl.hpp create mode 100644 lib/kokkos/core/src/HPX/Kokkos_HPX_WorkGraphPolicy.hpp create mode 100644 lib/kokkos/core/src/Kokkos_Extents.hpp create mode 100644 lib/kokkos/core/src/Kokkos_Future.hpp create mode 100644 lib/kokkos/core/src/Kokkos_HPX.hpp create mode 100644 lib/kokkos/core/src/Kokkos_PointerOwnership.hpp create mode 100644 lib/kokkos/core/src/Kokkos_TaskScheduler_fwd.hpp create mode 100644 lib/kokkos/core/src/eti/HPX/CMakeLists.txt create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank1.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank2.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank3.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank4.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank5.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank8.cpp create mode 100644 lib/kokkos/core/src/eti/HPX/Makefile.eti_HPX create mode 100644 lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Weak.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_Atomic_Load.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_Atomic_Memory_Order.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_Atomic_Store.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_ChaseLev.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_EBO.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_FixedBufferMemoryPool.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_HostSpace_deepcopy.cpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_HostSpace_deepcopy.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_LIFO.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_LinkedListNode.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_MemoryPoolAllocator.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_MultipleTaskQueue.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_OptionalRef.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_SimpleTaskScheduler.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_SingleTaskQueue.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_TaskBase.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_TaskNode.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_TaskPolicyData.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_TaskQueueCommon.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_TaskQueueMemoryManager.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_TaskQueueMultiple.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_TaskQueueMultiple_impl.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_TaskResult.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_TaskTeamMember.hpp create mode 100644 lib/kokkos/core/src/impl/Kokkos_VLAEmulation.hpp create mode 100644 lib/kokkos/core/unit_test/TestAtomicOperations_complexdouble.hpp create mode 100644 lib/kokkos/core/unit_test/TestAtomicOperations_complexfloat.hpp create mode 100644 lib/kokkos/core/unit_test/TestDeepCopy.hpp create mode 100644 lib/kokkos/core/unit_test/TestLocalDeepCopy.hpp create mode 100644 lib/kokkos/core/unit_test/TestTaskScheduler_single.hpp create mode 100644 lib/kokkos/core/unit_test/TestTeamVectorRange.hpp create mode 100644 lib/kokkos/core/unit_test/cuda/TestCuda_AtomicOperations_complexdouble.cpp create mode 100644 lib/kokkos/core/unit_test/cuda/TestCuda_AtomicOperations_complexfloat.cpp create mode 100644 lib/kokkos/core/unit_test/cuda/TestCuda_DeepCopyAlignment.cpp rename lib/kokkos/core/unit_test/cuda/{TestCuda_InterOp.cpp => TestCuda_InterOp_Init.cpp} (100%) create mode 100644 lib/kokkos/core/unit_test/cuda/TestCuda_InterOp_Streams.cpp create mode 100644 lib/kokkos/core/unit_test/cuda/TestCuda_LocalDeepCopy.cpp create mode 100644 lib/kokkos/core/unit_test/cuda/TestCuda_TeamVectorRange.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_AtomicOperations_double.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_AtomicOperations_float.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_AtomicOperations_int.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_AtomicOperations_longint.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_AtomicOperations_longlongint.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_AtomicOperations_unsignedint.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_AtomicOperations_unsignedlongint.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_AtomicViews.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_Atomics.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_Category.hpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_Complex.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_Crs.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_Init.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_InterOp.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_MDRange_a.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_MDRange_b.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_MDRange_c.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_MDRange_d.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_MDRange_e.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_Other.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_RangePolicy.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_Reducers_a.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_Reducers_b.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_Reducers_c.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_Reducers_d.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_Reductions.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_Scan.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_SharedAlloc.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_SubView_a.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_SubView_b.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_SubView_c01.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_SubView_c02.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_SubView_c03.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_SubView_c04.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_SubView_c05.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_SubView_c06.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_SubView_c07.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_SubView_c08.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_SubView_c09.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_SubView_c10.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_SubView_c11.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_SubView_c12.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_SubView_c13.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_SubView_c_all.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_Task.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_Team.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_TeamReductionScan.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_TeamScratch.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_TeamVectorRange.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_UniqueToken.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_ViewAPI_a.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_ViewAPI_b.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_ViewAPI_c.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_ViewAPI_d.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_ViewAPI_e.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_ViewMapping_a.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_ViewMapping_b.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_ViewMapping_subview.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_ViewOfClass.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_View_64bit.cpp create mode 100644 lib/kokkos/core/unit_test/hpx/TestHPX_WorkGraph.cpp create mode 100644 lib/kokkos/core/unit_test/openmp/TestOpenMP_AtomicOperations_complexdouble.cpp create mode 100644 lib/kokkos/core/unit_test/openmp/TestOpenMP_AtomicOperations_complexfloat.cpp create mode 100644 lib/kokkos/core/unit_test/openmp/TestOpenMP_DeepCopyAlignment.cpp create mode 100644 lib/kokkos/core/unit_test/openmp/TestOpenMP_LocalDeepCopy.cpp create mode 100644 lib/kokkos/core/unit_test/openmp/TestOpenMP_TeamVectorRange.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_AtomicOperations_complexdouble.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_AtomicOperations_complexfloat.cpp create mode 100644 lib/kokkos/core/unit_test/openmptarget/TestOpenMPTarget_DeepCopyAlignment.cpp create mode 100644 lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_complexdouble.cpp create mode 100644 lib/kokkos/core/unit_test/qthreads/TestQqthreads_AtomicOperations_complexfloat.cpp create mode 100644 lib/kokkos/core/unit_test/qthreads/TestQthreads_DeepCopyAlignment.cpp create mode 100644 lib/kokkos/core/unit_test/rocm/TestROCm_DeepCopyAlignment.cpp create mode 100644 lib/kokkos/core/unit_test/serial/TestSerial_AtomicOperations_complexdouble.cpp create mode 100644 lib/kokkos/core/unit_test/serial/TestSerial_AtomicOperations_complexfloat.cpp create mode 100644 lib/kokkos/core/unit_test/serial/TestSerial_DeepCopyAlignment.cpp create mode 100644 lib/kokkos/core/unit_test/serial/TestSerial_LocalDeepCopy.cpp create mode 100644 lib/kokkos/core/unit_test/serial/TestSerial_TeamVectorRange.cpp create mode 100644 lib/kokkos/core/unit_test/threads/TestThreads_AtomicOperations_complexdouble.cpp create mode 100644 lib/kokkos/core/unit_test/threads/TestThreads_AtomicOperations_complexfloat.cpp create mode 100644 lib/kokkos/core/unit_test/threads/TestThreads_DeepCopyAlignment.cpp create mode 100644 lib/kokkos/core/unit_test/threads/TestThreads_LocalDeepCopy.cpp create mode 100644 lib/kokkos/core/unit_test/threads/TestThreads_TeamVectorRange.cpp delete mode 100644 lib/kokkos/doc/Doxyfile delete mode 100644 lib/kokkos/doc/Kokkos_PG.pdf delete mode 100644 lib/kokkos/doc/SAND2017-10464-Kokkos-Task-DAG.pdf delete mode 100755 lib/kokkos/doc/build_docs delete mode 100644 lib/kokkos/doc/design_notes_space_instances.md delete mode 100644 lib/kokkos/doc/develop_builds.md delete mode 100644 lib/kokkos/doc/hardware_identification/query_cuda_arch.cpp delete mode 100644 lib/kokkos/doc/index.doc delete mode 100644 lib/kokkos/doc/kokkos-promotion.txt create mode 100644 lib/kokkos/example/feint/feint_hpx.cpp delete mode 100755 lib/kokkos/scripts/eti/generate_view_copy_cpp_files delete mode 100755 lib/kokkos/scripts/eti/generate_view_copy_cpp_files_iterate delete mode 100755 lib/kokkos/scripts/eti/generate_view_copy_cpp_files_rank delete mode 100755 lib/kokkos/scripts/eti/generate_view_copy_cpp_files_write delete mode 100755 lib/kokkos/scripts/snapshot.py delete mode 100644 lib/kokkos/scripts/testing_scripts/README delete mode 100755 lib/kokkos/scripts/testing_scripts/jenkins_test_driver delete mode 100755 lib/kokkos/scripts/testing_scripts/obj_size_opt_check delete mode 100755 lib/kokkos/scripts/testing_scripts/test_all_sandia delete mode 100755 lib/kokkos/scripts/testing_scripts/test_kokkos_master_develop_promotion.sh delete mode 100755 lib/kokkos/scripts/trilinos-integration/blake_jenkins_run_script_pthread_intel delete mode 100755 lib/kokkos/scripts/trilinos-integration/blake_jenkins_run_script_serial_intel delete mode 100644 lib/kokkos/scripts/trilinos-integration/checkin-test delete mode 100755 lib/kokkos/scripts/trilinos-integration/prepare_trilinos_repos.sh delete mode 100755 lib/kokkos/scripts/trilinos-integration/white_run_jenkins_script_cuda delete mode 100755 lib/kokkos/scripts/trilinos-integration/white_run_jenkins_script_omp diff --git a/lib/kokkos/CHANGELOG.md b/lib/kokkos/CHANGELOG.md index 9d503663ae..8d196e2c35 100644 --- a/lib/kokkos/CHANGELOG.md +++ b/lib/kokkos/CHANGELOG.md @@ -1,5 +1,39 @@ # Change Log +## [2.9.00](https://github.com/kokkos/kokkos/tree/2.9.00) (2019-06-24) +[Full Changelog](https://github.com/kokkos/kokkos/compare/2.8.00...2.9.00) + +**Implemented enhancements:** + +- Capability: CUDA Streams [\#1723](https://github.com/kokkos/kokkos/issues/1723) +- Capability: CUDA Stream support for parallel\_reduce [\#2061](https://github.com/kokkos/kokkos/issues/2061) +- Capability: Feature Request: TeamVectorRange [\#713](https://github.com/kokkos/kokkos/issues/713) +- Capability: Adding HPX backend [\#2080](https://github.com/kokkos/kokkos/issues/2080) +- Capability: TaskScheduler to have multiple queues [\#565](https://github.com/kokkos/kokkos/issues/565) +- Capability: Support for additional reductions in ScatterView [\#1674](https://github.com/kokkos/kokkos/issues/1674) +- Capability: Request: deep\_copy within parallel regions [\#689](https://github.com/kokkos/kokkos/issues/689) +- Capability: Feature Request: `create\_mirror\_view\_without\_initializing` [\#1765](https://github.com/kokkos/kokkos/issues/1765) +- View: Use SFINAE to restrict possible View type conversions [\#2127](https://github.com/kokkos/kokkos/issues/2127) +- Deprecation: Deprecate ExecutionSpace::fence\(\) as static function and make it non-static [\#2140](https://github.com/kokkos/kokkos/issues/2140) +- Deprecation: Deprecate LayoutTileLeft [\#2122](https://github.com/kokkos/kokkos/issues/2122) +- Macros: KOKKOS\_RESTRICT defined for non-Intel compilers [\#2038](https://github.com/kokkos/kokkos/issues/2038) + +**Fixed bugs:** + +- Cuda: TeamThreadRange loop count on device is passed by reference to host static constexpr [\#1733](https://github.com/kokkos/kokkos/issues/1733) +- Cuda: Build error with relocatable device code with CUDA 10.1 GCC 7.3 [\#2134](https://github.com/kokkos/kokkos/issues/2134) +- Cuda: cudaFuncSetCacheConfig is setting CachePreferShared too often [\#2066](https://github.com/kokkos/kokkos/issues/2066) +- Cuda: TeamPolicy doesn't throw then created with non-viable vector length and also doesn't backscale to viable one [\#2020](https://github.com/kokkos/kokkos/issues/2020) +- Cuda: cudaMemcpy error for large league sizes on V100 [\#1991](https://github.com/kokkos/kokkos/issues/1991) +- Cuda: illegal warp sync in parallel\_reduce by functor on Turing 75 [\#1958](https://github.com/kokkos/kokkos/issues/1958) +- TeamThreadRange: Inconsistent results from TeamThreadRange reduction [\#1905](https://github.com/kokkos/kokkos/issues/1905) +- Atomics: atomic\_fetch\_oper & atomic\_oper\_fetch don't build for complex\ [\#1964](https://github.com/kokkos/kokkos/issues/1964) +- Views: Kokkos randomread Views leak memory [\#2155](https://github.com/kokkos/kokkos/issues/2155) +- ScatterView: LayoutLeft overload currently non-functional [\#2165](https://github.com/kokkos/kokkos/issues/2165) +- KNL: With intel 17.2.174 illegal instruction in random number test [\#2078](https://github.com/kokkos/kokkos/issues/2078) +- Bitset: Enable copy constructor on device [\#2094](https://github.com/kokkos/kokkos/issues/2094) +- Examples: do not compile due to template deduction error \(multi\_fem\) [\#1928](https://github.com/kokkos/kokkos/issues/1928) + ## [2.8.00](https://github.com/kokkos/kokkos/tree/2.8.00) (2019-02-05) [Full Changelog](https://github.com/kokkos/kokkos/compare/2.7.24...2.8.00) diff --git a/lib/kokkos/Makefile.kokkos b/lib/kokkos/Makefile.kokkos index a90e86b9f8..e9ad57f0ae 100644 --- a/lib/kokkos/Makefile.kokkos +++ b/lib/kokkos/Makefile.kokkos @@ -23,7 +23,7 @@ KOKKOS_DEBUG ?= "no" KOKKOS_USE_TPLS ?= "" # Options: c++11,c++14,c++1y,c++17,c++1z,c++2a KOKKOS_CXX_STANDARD ?= "c++11" -# Options: aggressive_vectorization,disable_profiling,disable_deprecated_code,enable_large_mem_tests +# Options: aggressive_vectorization,disable_profiling,enable_deprecated_code,disable_deprecated_code,enable_large_mem_tests KOKKOS_OPTIONS ?= "" # Option for setting ETI path KOKKOS_ETI_PATH ?= ${KOKKOS_PATH}/core/src/eti @@ -33,11 +33,19 @@ KOKKOS_CMAKE ?= "no" # Options: force_uvm,use_ldg,rdc,enable_lambda KOKKOS_CUDA_OPTIONS ?= "enable_lambda" +# Default settings specific options. +# Options: enable_async_dispatch +KOKKOS_HPX_OPTIONS ?= "" + # Return a 1 if a string contains a substring and 0 if not # Note the search string should be without '"' # Example: $(call kokkos_has_string,"hwloc,librt",hwloc) # Will return a 1 kokkos_has_string=$(if $(findstring $2,$1),1,0) +# Returns 1 if the path exists, 0 otherwise +# Example: $(call kokkos_path_exists,/path/to/file) +# Will return a 1 if /path/to/file exists +kokkos_path_exists=$(if $(wildcard $1),1,0) # Check for general settings. KOKKOS_INTERNAL_ENABLE_DEBUG := $(call kokkos_has_string,$(KOKKOS_DEBUG),yes) @@ -58,6 +66,7 @@ KOKKOS_INTERNAL_ENABLE_COMPILER_WARNINGS := $(call kokkos_has_string,$(KOKKOS_OP KOKKOS_INTERNAL_OPT_RANGE_AGGRESSIVE_VECTORIZATION := $(call kokkos_has_string,$(KOKKOS_OPTIONS),aggressive_vectorization) KOKKOS_INTERNAL_DISABLE_PROFILING := $(call kokkos_has_string,$(KOKKOS_OPTIONS),disable_profiling) KOKKOS_INTERNAL_DISABLE_DEPRECATED_CODE := $(call kokkos_has_string,$(KOKKOS_OPTIONS),disable_deprecated_code) +KOKKOS_INTERNAL_ENABLE_DEPRECATED_CODE := $(call kokkos_has_string,$(KOKKOS_OPTIONS),enable_deprecated_code) KOKKOS_INTERNAL_DISABLE_DUALVIEW_MODIFY_CHECK := $(call kokkos_has_string,$(KOKKOS_OPTIONS),disable_dualview_modify_check) KOKKOS_INTERNAL_ENABLE_PROFILING_LOAD_PRINT := $(call kokkos_has_string,$(KOKKOS_OPTIONS),enable_profile_load_print) KOKKOS_INTERNAL_ENABLE_LARGE_MEM_TESTS := $(call kokkos_has_string,$(KOKKOS_OPTIONS),enable_large_mem_tests) @@ -65,6 +74,7 @@ KOKKOS_INTERNAL_CUDA_USE_LDG := $(call kokkos_has_string,$(KOKKOS_CUDA_OPTIONS), KOKKOS_INTERNAL_CUDA_USE_UVM := $(call kokkos_has_string,$(KOKKOS_CUDA_OPTIONS),force_uvm) KOKKOS_INTERNAL_CUDA_USE_RELOC := $(call kokkos_has_string,$(KOKKOS_CUDA_OPTIONS),rdc) KOKKOS_INTERNAL_CUDA_USE_LAMBDA := $(call kokkos_has_string,$(KOKKOS_CUDA_OPTIONS),enable_lambda) +KOKKOS_INTERNAL_HPX_ENABLE_ASYNC_DISPATCH := $(call kokkos_has_string,$(KOKKOS_HPX_OPTIONS),enable_async_dispatch) KOKKOS_INTERNAL_ENABLE_ETI := $(call kokkos_has_string,$(KOKKOS_OPTIONS),enable_eti) @@ -72,12 +82,15 @@ KOKKOS_INTERNAL_ENABLE_ETI := $(call kokkos_has_string,$(KOKKOS_OPTIONS),enable_ KOKKOS_INTERNAL_USE_OPENMP := $(call kokkos_has_string,$(subst OpenMPTarget,,$(KOKKOS_DEVICES)),OpenMP) KOKKOS_INTERNAL_USE_PTHREADS := $(call kokkos_has_string,$(KOKKOS_DEVICES),Pthread) KOKKOS_INTERNAL_USE_QTHREADS := $(call kokkos_has_string,$(KOKKOS_DEVICES),Qthreads) +KOKKOS_INTERNAL_USE_HPX := $(call kokkos_has_string,$(KOKKOS_DEVICES),HPX) KOKKOS_INTERNAL_USE_SERIAL := $(call kokkos_has_string,$(KOKKOS_DEVICES),Serial) ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 0) ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 0) ifeq ($(KOKKOS_INTERNAL_USE_QTHREADS), 0) - KOKKOS_INTERNAL_USE_SERIAL := 1 + ifeq ($(KOKKOS_INTERNAL_USE_HPX), 0) + KOKKOS_INTERNAL_USE_SERIAL := 1 + endif endif endif endif @@ -112,7 +125,7 @@ KOKKOS_INTERNAL_COMPILER_XL := $(strip $(shell $(CXX) -qversion 2 KOKKOS_INTERNAL_COMPILER_CRAY := $(strip $(shell $(CXX) -craype-verbose 2>&1 | grep "CC-" | wc -l)) KOKKOS_INTERNAL_COMPILER_NVCC := $(strip $(shell export OMPI_CXX=$(OMPI_CXX); export MPICH_CXX=$(MPICH_CXX); $(CXX) --version 2>&1 | grep nvcc | wc -l)) KOKKOS_INTERNAL_COMPILER_CLANG := $(call kokkos_has_string,$(KOKKOS_CXX_VERSION),clang) -KOKKOS_INTERNAL_COMPILER_APPLE_CLANG := $(call kokkos_has_string,$(KOKKOS_CXX_VERSION),apple-darwin) +KOKKOS_INTERNAL_COMPILER_APPLE_CLANG := $(call kokkos_has_string,$(KOKKOS_CXX_VERSION),Apple LLVM) KOKKOS_INTERNAL_COMPILER_HCC := $(call kokkos_has_string,$(KOKKOS_CXX_VERSION),HCC) # Check Host Compiler if using NVCC through nvcc_wrapper @@ -283,9 +296,9 @@ KOKKOS_INTERNAL_USE_ARCH_NVIDIA := $(shell expr $(KOKKOS_INTERNAL_USE_ARCH_KEPLE + $(KOKKOS_INTERNAL_USE_ARCH_KEPLER37) \ + $(KOKKOS_INTERNAL_USE_ARCH_PASCAL61) \ + $(KOKKOS_INTERNAL_USE_ARCH_PASCAL60) \ - + $(KOKKOS_INTERNAL_USE_ARCH_VOLTA70) \ - + $(KOKKOS_INTERNAL_USE_ARCH_VOLTA72) \ - + $(KOKKOS_INTERNAL_USE_ARCH_TURING75) \ + + $(KOKKOS_INTERNAL_USE_ARCH_VOLTA70) \ + + $(KOKKOS_INTERNAL_USE_ARCH_VOLTA72) \ + + $(KOKKOS_INTERNAL_USE_ARCH_TURING75) \ + $(KOKKOS_INTERNAL_USE_ARCH_MAXWELL50) \ + $(KOKKOS_INTERNAL_USE_ARCH_MAXWELL52) \ + $(KOKKOS_INTERNAL_USE_ARCH_MAXWELL53)) @@ -300,19 +313,19 @@ ifeq ($(KOKKOS_INTERNAL_USE_ARCH_NVIDIA), 0) + $(KOKKOS_INTERNAL_USE_ARCH_KEPLER37) \ + $(KOKKOS_INTERNAL_USE_ARCH_PASCAL61) \ + $(KOKKOS_INTERNAL_USE_ARCH_PASCAL60) \ - + $(KOKKOS_INTERNAL_USE_ARCH_VOLTA70) \ - + $(KOKKOS_INTERNAL_USE_ARCH_VOLTA72) \ - + $(KOKKOS_INTERNAL_USE_ARCH_TURING75) \ + + $(KOKKOS_INTERNAL_USE_ARCH_VOLTA70) \ + + $(KOKKOS_INTERNAL_USE_ARCH_VOLTA72) \ + + $(KOKKOS_INTERNAL_USE_ARCH_TURING75) \ + $(KOKKOS_INTERNAL_USE_ARCH_MAXWELL50) \ + $(KOKKOS_INTERNAL_USE_ARCH_MAXWELL52) \ + $(KOKKOS_INTERNAL_USE_ARCH_MAXWELL53)) endif ifeq ($(KOKKOS_INTERNAL_USE_ARCH_NVIDIA), 1) - ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) - ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) - KOKKOS_INTERNAL_NVCC_PATH := $(shell which nvcc) - CUDA_PATH ?= $(KOKKOS_INTERNAL_NVCC_PATH:/bin/nvcc=) + ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) + KOKKOS_INTERNAL_NVCC_PATH := $(shell which nvcc) + CUDA_PATH ?= $(KOKKOS_INTERNAL_NVCC_PATH:/bin/nvcc=) + ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) KOKKOS_INTERNAL_OPENMPTARGET_FLAG := $(KOKKOS_INTERNAL_OPENMPTARGET_FLAG) --cuda-path=$(CUDA_PATH) endif endif @@ -441,6 +454,10 @@ ifeq ($(KOKKOS_INTERNAL_USE_QTHREADS), 1) tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_QTHREADS") endif +ifeq ($(KOKKOS_INTERNAL_USE_HPX), 1) + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_HPX") +endif + ifeq ($(KOKKOS_INTERNAL_USE_SERIAL), 1) tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_SERIAL") endif @@ -559,9 +576,15 @@ ifeq ($(KOKKOS_INTERNAL_DISABLE_PROFILING), 0) tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_PROFILING") endif -ifeq ($(KOKKOS_INTERNAL_DISABLE_DEPRECATED_CODE), 0) - tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_DEPRECATED_CODE") +ifeq ($(KOKKOS_INTERNAL_USE_HPX), 0) + ifeq ($(KOKKOS_INTERNAL_ENABLE_DEPRECATED_CODE), 1) + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_DEPRECATED_CODE") + endif + ifeq ($(KOKKOS_INTERNAL_DISABLE_DEPRECATED_CODE), 0) + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_DEPRECATED_CODE") + endif endif + ifeq ($(KOKKOS_INTERNAL_ENABLE_ETI), 1) tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_ETI") endif @@ -593,8 +616,13 @@ ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) ifeq ($(KOKKOS_INTERNAL_CUDA_USE_RELOC), 1) tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE") - KOKKOS_CXXFLAGS += --relocatable-device-code=true - KOKKOS_LDFLAGS += --relocatable-device-code=true + ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) + KOKKOS_CXXFLAGS += -fcuda-rdc + KOKKOS_LDFLAGS += -fcuda-rdc + else + KOKKOS_CXXFLAGS += --relocatable-device-code=true + KOKKOS_LDFLAGS += --relocatable-device-code=true + endif endif ifeq ($(KOKKOS_INTERNAL_COMPILER_NVCC), 1) @@ -625,6 +653,12 @@ ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) endif endif +ifeq ($(KOKKOS_INTERNAL_USE_HPX), 1) + ifeq ($(KOKKOS_INTERNAL_HPX_ENABLE_ASYNC_DISPATCH), 1) + tmp := $(call kokkos_append_header,"\#define KOKKOS_ENABLE_HPX_ASYNC_DISPATCH") + endif +endif + # Add Architecture flags. ifeq ($(KOKKOS_INTERNAL_USE_ARCH_ARMV80), 1) @@ -908,7 +942,7 @@ ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) KOKKOS_INTERNAL_CUDA_ARCH_FLAG=--cuda-gpu-arch KOKKOS_CXXFLAGS += -x cuda else - $(error Makefile.kokkos: CUDA is enabled but the compiler is neither NVCC nor Clang) + $(error Makefile.kokkos: CUDA is enabled but the compiler is neither NVCC nor Clang (got version string $(KOKKOS_CXX_VERSION)) ) endif ifeq ($(KOKKOS_INTERNAL_USE_ARCH_KEPLER30), 1) @@ -1058,10 +1092,18 @@ endif ifneq ($(KOKKOS_CMAKE), yes) KOKKOS_CXXFLAGS += -I$(CUDA_PATH)/include endif - KOKKOS_LDFLAGS += -L$(CUDA_PATH)/lib64 - KOKKOS_CXXLDFLAGS += -L$(CUDA_PATH)/lib64 + ifeq ($(call kokkos_path_exists,$(CUDA_PATH)/lib64), 1) + KOKKOS_LDFLAGS += -L$(CUDA_PATH)/lib64 + KOKKOS_CXXLDFLAGS += -L$(CUDA_PATH)/lib64 + KOKKOS_TPL_LIBRARY_DIRS += $(CUDA_PATH)/lib64 + else ifeq ($(call kokkos_path_exists,$(CUDA_PATH)/lib), 1) + KOKKOS_LDFLAGS += -L$(CUDA_PATH)/lib + KOKKOS_CXXLDFLAGS += -L$(CUDA_PATH)/lib + KOKKOS_TPL_LIBRARY_DIRS += $(CUDA_PATH)/lib + else + $(error Can't find CUDA library directory: no lib64 or lib directory in $(CUDA_PATH)) + endif KOKKOS_TPL_INCLUDE_DIRS += $(CUDA_PATH)/include - KOKKOS_TPL_LIBRARY_DIRS += $(CUDA_PATH)/lib64 ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) KOKKOS_CXXFLAGS += --cuda-path=$(CUDA_PATH) endif @@ -1124,6 +1166,33 @@ ifeq ($(KOKKOS_INTERNAL_USE_QTHREADS), 1) KOKKOS_TPL_LIBRARY_NAMES += qthread endif +ifeq ($(KOKKOS_INTERNAL_USE_HPX), 1) + KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/HPX/*.cpp) + KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/HPX/*.hpp) + ifneq ($(HPX_PATH),) + ifeq ($(KOKKOS_INTERNAL_ENABLE_DEBUG), 1) + KOKKOS_CXXFLAGS += $(shell PKG_CONFIG_PATH=$(HPX_PATH)/lib64/pkgconfig pkg-config --cflags hpx_application_debug) + KOKKOS_CXXLDFLAGS += $(shell PKG_CONFIG_PATH=$(HPX_PATH)/lib64/pkgconfig pkg-config --libs hpx_application_debug) + KOKKOS_LDFLAGS += $(shell PKG_CONFIG_PATH=$(HPX_PATH)/lib64/pkgconfig pkg-config --libs hpx_application_debug) + else + KOKKOS_CXXFLAGS += $(shell PKG_CONFIG_PATH=$(HPX_PATH)/lib64/pkgconfig pkg-config --cflags hpx_application) + KOKKOS_CXXLDFLAGS += $(shell PKG_CONFIG_PATH=$(HPX_PATH)/lib64/pkgconfig pkg-config --libs hpx_application) + KOKKOS_LDFLAGS += $(shell PKG_CONFIG_PATH=$(HPX_PATH)/lib64/pkgconfig pkg-config --libs hpx_application) + endif + else + ifeq ($(KOKKOS_INTERNAL_ENABLE_DEBUG), 1) + KOKKOS_CXXFLAGS += $(shell pkg-config --cflags hpx_application_debug) + KOKKOS_CXXLDFLAGS += $(shell pkg-config --libs hpx_application_debug) + KOKKOS_LDFLAGS += $(shell pkg-config --libs hpx_application_debug) + else + KOKKOS_CXXFLAGS += $(shell pkg-config --cflags hpx_application) + KOKKOS_CXXLDFLAGS += $(shell pkg-config --libs hpx_application) + KOKKOS_LDFLAGS += $(shell pkg-config --libs hpx_application) + endif + endif + KOKKOS_TPL_LIBRARY_NAMES += hpx +endif + # Explicitly set the GCC Toolchain for Clang. ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) KOKKOS_INTERNAL_GCC_PATH = $(shell which g++) diff --git a/lib/kokkos/Makefile.targets b/lib/kokkos/Makefile.targets index 44da1e082a..e7d5a3c907 100644 --- a/lib/kokkos/Makefile.targets +++ b/lib/kokkos/Makefile.targets @@ -30,6 +30,8 @@ Kokkos_SharedAlloc.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_ $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_SharedAlloc.cpp Kokkos_MemoryPool.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_MemoryPool.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_MemoryPool.cpp +Kokkos_HostSpace_deepcopy.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/impl/Kokkos_HostSpace_deepcopy.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/impl/Kokkos_HostSpace_deepcopy.cpp ifeq ($(KOKKOS_INTERNAL_USE_SERIAL), 1) ifeq ($(KOKKOS_INTERNAL_ENABLE_ETI), 1) @@ -38,8 +40,8 @@ endif endif ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) -Kokkos_Cuda_Impl.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Cuda/Kokkos_Cuda_Impl.cpp - $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Cuda/Kokkos_Cuda_Impl.cpp +Kokkos_Cuda_Instance.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Cuda/Kokkos_Cuda_Instance.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Cuda/Kokkos_Cuda_Instance.cpp Kokkos_CudaSpace.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Cuda/Kokkos_CudaSpace.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Cuda/Kokkos_CudaSpace.cpp Kokkos_Cuda_Task.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Cuda/Kokkos_Cuda_Task.cpp @@ -92,6 +94,13 @@ ifeq ($(KOKKOS_INTERNAL_ENABLE_ETI), 1) endif endif +ifeq ($(KOKKOS_INTERNAL_USE_HPX), 1) +Kokkos_HPX.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/HPX/Kokkos_HPX.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/HPX/Kokkos_HPX.cpp +Kokkos_HPX_Task.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/HPX/Kokkos_HPX_Task.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/HPX/Kokkos_HPX_Task.cpp +endif + ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) Kokkos_OpenMPTarget_Exec.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Exec.cpp diff --git a/lib/kokkos/algorithms/cmake/Dependencies.cmake b/lib/kokkos/algorithms/cmake/Dependencies.cmake index c36b62523f..1b41310681 100644 --- a/lib/kokkos/algorithms/cmake/Dependencies.cmake +++ b/lib/kokkos/algorithms/cmake/Dependencies.cmake @@ -1,5 +1,5 @@ TRIBITS_PACKAGE_DEFINE_DEPENDENCIES( LIB_REQUIRED_PACKAGES KokkosCore KokkosContainers - LIB_OPTIONAL_TPLS Pthread CUDA HWLOC + LIB_OPTIONAL_TPLS Pthread CUDA HWLOC HPX TEST_OPTIONAL_TPLS CUSPARSE ) diff --git a/lib/kokkos/algorithms/src/Kokkos_Sort.hpp b/lib/kokkos/algorithms/src/Kokkos_Sort.hpp index 8bdd876723..7fb8505fe5 100644 --- a/lib/kokkos/algorithms/src/Kokkos_Sort.hpp +++ b/lib/kokkos/algorithms/src/Kokkos_Sort.hpp @@ -328,6 +328,8 @@ public: parallel_for("Kokkos::Sort::Copy", Kokkos::RangePolicy(0,len),functor); } + + Kokkos::fence(); } template diff --git a/lib/kokkos/algorithms/unit_tests/CMakeLists.txt b/lib/kokkos/algorithms/unit_tests/CMakeLists.txt index f5aa24e9be..e238b37c8e 100644 --- a/lib/kokkos/algorithms/unit_tests/CMakeLists.txt +++ b/lib/kokkos/algorithms/unit_tests/CMakeLists.txt @@ -42,6 +42,12 @@ IF(Kokkos_ENABLE_OpenMP) ) ENDIF() +IF(Kokkos_ENABLE_HPX) + LIST( APPEND SOURCES + TestHPX.cpp + ) +ENDIF() + IF(Kokkos_ENABLE_Serial) LIST( APPEND SOURCES TestSerial.cpp diff --git a/lib/kokkos/algorithms/unit_tests/Makefile b/lib/kokkos/algorithms/unit_tests/Makefile index b5848c451e..3c862d03dc 100644 --- a/lib/kokkos/algorithms/unit_tests/Makefile +++ b/lib/kokkos/algorithms/unit_tests/Makefile @@ -49,6 +49,12 @@ ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) TEST_TARGETS += test-openmp endif +ifeq ($(KOKKOS_INTERNAL_USE_HPX), 1) + OBJ_HPX = TestHPX.o UnitTestMain.o gtest-all.o + TARGETS += KokkosAlgorithms_UnitTest_HPX + TEST_TARGETS += test-hpx +endif + ifeq ($(KOKKOS_INTERNAL_USE_SERIAL), 1) OBJ_SERIAL = TestSerial.o UnitTestMain.o gtest-all.o TARGETS += KokkosAlgorithms_UnitTest_Serial @@ -67,6 +73,9 @@ KokkosAlgorithms_UnitTest_Threads: $(OBJ_THREADS) $(KOKKOS_LINK_DEPENDS) KokkosAlgorithms_UnitTest_OpenMP: $(OBJ_OPENMP) $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) $(OBJ_OPENMP) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosAlgorithms_UnitTest_OpenMP +KokkosAlgorithms_UnitTest_HPX: $(OBJ_HPX) $(KOKKOS_LINK_DEPENDS) + $(LINK) $(EXTRA_PATH) $(OBJ_HPX) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosAlgorithms_UnitTest_HPX + KokkosAlgorithms_UnitTest_Serial: $(OBJ_SERIAL) $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) $(OBJ_SERIAL) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosAlgorithms_UnitTest_Serial @@ -82,6 +91,9 @@ test-threads: KokkosAlgorithms_UnitTest_Threads test-openmp: KokkosAlgorithms_UnitTest_OpenMP ./KokkosAlgorithms_UnitTest_OpenMP +test-hpx: KokkosAlgorithms_UnitTest_HPX + ./KokkosAlgorithms_UnitTest_HPX + test-serial: KokkosAlgorithms_UnitTest_Serial ./KokkosAlgorithms_UnitTest_Serial diff --git a/lib/kokkos/algorithms/unit_tests/TestHPX.cpp b/lib/kokkos/algorithms/unit_tests/TestHPX.cpp new file mode 100644 index 0000000000..e5b7dbdb7a --- /dev/null +++ b/lib/kokkos/algorithms/unit_tests/TestHPX.cpp @@ -0,0 +1,96 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#include +#ifdef KOKKOS_ENABLE_HPX + +#include +#include + +//---------------------------------------------------------------------------- +#include +#include +#include + +namespace Test { + +class hpx : public ::testing::Test { +protected: + static void SetUpTestCase() + { + std::cout << std::setprecision(5) << std::scientific; + } + + static void TearDownTestCase() + { + } +}; + +#define HPX_RANDOM_XORSHIFT64( num_draws ) \ + TEST_F( hpx, Random_XorShift64 ) { \ + Impl::test_random >(num_draws); \ + } + +#define HPX_RANDOM_XORSHIFT1024( num_draws ) \ + TEST_F( hpx, Random_XorShift1024 ) { \ + Impl::test_random >(num_draws); \ + } + +#define HPX_SORT_UNSIGNED( size ) \ + TEST_F( hpx, SortUnsigned ) { \ + Impl::test_sort< Kokkos::Experimental::HPX, unsigned >(size); \ + } + +HPX_RANDOM_XORSHIFT64( 10240000 ) +HPX_RANDOM_XORSHIFT1024( 10130144 ) +HPX_SORT_UNSIGNED(171) + +#undef HPX_RANDOM_XORSHIFT64 +#undef HPX_RANDOM_XORSHIFT1024 +#undef HPX_SORT_UNSIGNED +} // namespace test +#else +void KOKKOS_ALGORITHMS_UNITTESTS_TESTHPX_PREVENT_LINK_ERROR() {} +#endif + diff --git a/lib/kokkos/algorithms/unit_tests/TestSort.hpp b/lib/kokkos/algorithms/unit_tests/TestSort.hpp index e0c646c199..5fd7f09b50 100644 --- a/lib/kokkos/algorithms/unit_tests/TestSort.hpp +++ b/lib/kokkos/algorithms/unit_tests/TestSort.hpp @@ -225,9 +225,9 @@ void test_dynamic_view_sort(unsigned int n ) Kokkos::Random_XorShift64_Pool g(1931); Kokkos::fill_random(keys_view,g,Kokkos::Random_XorShift64_Pool::generator_type::MAX_URAND); - ExecutionSpace::fence(); + ExecutionSpace().fence(); Kokkos::deep_copy(keys,keys_view); - //ExecutionSpace::fence(); + //ExecutionSpace().fence(); double sum_before = 0.0; double sum_after = 0.0; @@ -237,9 +237,9 @@ void test_dynamic_view_sort(unsigned int n ) Kokkos::sort(keys, 0 /* begin */ , n /* end */ ); - ExecutionSpace::fence(); // Need this fence to prevent BusError with Cuda + ExecutionSpace().fence(); // Need this fence to prevent BusError with Cuda Kokkos::deep_copy( keys_view , keys ); - //ExecutionSpace::fence(); + //ExecutionSpace().fence(); Kokkos::parallel_reduce(n,sum(keys_view),sum_after); Kokkos::parallel_reduce(n-1,is_sorted_struct(keys_view),sort_fails); diff --git a/lib/kokkos/cmake/kokkos_build.cmake b/lib/kokkos/cmake/kokkos_build.cmake index 8178483d01..f9b995baae 100644 --- a/lib/kokkos/cmake/kokkos_build.cmake +++ b/lib/kokkos/cmake/kokkos_build.cmake @@ -76,8 +76,20 @@ IF(KOKKOS_SEPARATE_LIBS) ) foreach(lib IN LISTS KOKKOS_TPL_LIBRARY_NAMES) - if ("${lib}" STREQUAL "cuda") + if (("${lib}" STREQUAL "cuda") AND (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")) set(LIB_cuda "-lcuda") + elseif ("${lib}" STREQUAL "hpx") + find_package(HPX REQUIRED) + if(${HPX_FOUND}) + target_link_libraries(kokkoscore PUBLIC ${HPX_LIBRARIES}) + target_link_libraries(kokkoscontainers PUBLIC ${HPX_LIBRARIES}) + target_link_libraries(kokkosalgorithms PUBLIC ${HPX_LIBRARIES}) + target_include_directories(kokkoscore PUBLIC ${HPX_INCLUDE_DIRS}) + target_include_directories(kokkoscontainers PUBLIC ${HPX_INCLUDE_DIRS}) + target_include_directories(kokkosalgorithms PUBLIC ${HPX_INCLUDE_DIRS}) + else() + message(ERROR "HPX not found. Check the value of HPX_DIR (= ${HPX_DIR}) or CMAKE_PREFIX_PATH (= ${CMAKE_PREFIX_PATH}).") + endif() else() find_library(LIB_${lib} ${lib} PATHS ${KOKKOS_TPL_LIBRARY_DIRS}) endif() @@ -158,8 +170,16 @@ ELSE() ) foreach(lib IN LISTS KOKKOS_TPL_LIBRARY_NAMES) - if ("${lib}" STREQUAL "cuda") + if (("${lib}" STREQUAL "cuda") AND (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")) set(LIB_cuda "-lcuda") + elseif ("${lib}" STREQUAL "hpx") + find_package(HPX REQUIRED) + if(${HPX_FOUND}) + target_link_libraries(kokkos PUBLIC ${HPX_LIBRARIES}) + target_include_directories(kokkos PUBLIC ${HPX_INCLUDE_DIRS}) + else() + message(ERROR "HPX not found. Check the value of HPX_DIR (= ${HPX_DIR}) or CMAKE_PREFIX_PATH (= ${CMAKE_PREFIX_PATH}).") + endif() else() find_library(LIB_${lib} ${lib} PATHS ${KOKKOS_TPL_LIBRARY_DIRS}) endif() diff --git a/lib/kokkos/cmake/kokkos_functions.cmake b/lib/kokkos/cmake/kokkos_functions.cmake index bc490115af..616618753b 100644 --- a/lib/kokkos/cmake/kokkos_functions.cmake +++ b/lib/kokkos/cmake/kokkos_functions.cmake @@ -95,7 +95,7 @@ function(set_kokkos_cxx_compiler) message(FATAL_ERROR "Compiling CUDA code directly with Clang requires version 4.0.0 or higher.") endif() elseif(NOT INTERNAL_CXX_COMPILER_ID STREQUAL NVIDIA) - message(FATAL_ERROR "Invalid compiler for CUDA. The compiler must be nvcc_wrapper or Clang.") + message(FATAL_ERROR "Invalid compiler for CUDA. The compiler must be nvcc_wrapper or Clang, but compiler ID was ${INTERNAL_CXX_COMPILER_ID}") endif() endif() diff --git a/lib/kokkos/cmake/kokkos_options.cmake b/lib/kokkos/cmake/kokkos_options.cmake index be494e5df0..e730a94664 100644 --- a/lib/kokkos/cmake/kokkos_options.cmake +++ b/lib/kokkos/cmake/kokkos_options.cmake @@ -14,6 +14,7 @@ list(APPEND KOKKOS_INTERNAL_ENABLE_OPTIONS_LIST OpenMP Pthread Qthread + HPX Cuda ROCm HWLOC @@ -23,6 +24,7 @@ list(APPEND KOKKOS_INTERNAL_ENABLE_OPTIONS_LIST Cuda_Relocatable_Device_Code Cuda_UVM Cuda_LDG_Intrinsic + HPX_ASYNC_DISPATCH Debug Debug_DualView_Modify_Check Debug_Bounds_Check @@ -116,6 +118,7 @@ list(APPEND KOKKOS_DEVICES_LIST OpenMP # OpenMP Pthread # pthread Qthreads # qthreads + HPX # HPX Serial # serial ROCm # Relocatable device code ) @@ -173,6 +176,19 @@ set(KOKKOS_INTERNAL_RELOCATABLE_DEVICE_CODE rdc) set(KOKKOS_INTERNAL_LAMBDA enable_lambda) +#------------------------------------------------------------------------------- +# List of possible Options for HPX +#------------------------------------------------------------------------------- +# From Makefile.kokkos: Options: enable_async_dispatch +set(KOKKOS_HPX_OPTIONS_LIST) +list(APPEND KOKKOS_HPX_OPTIONS_LIST + ASYNC_DISPATCH # enable_async_dispatch + ) + +# Map of cmake variables to Makefile variables +set(KOKKOS_INTERNAL_ENABLE_ASYNC_DISPATCH enable_async_dispatch) + + #------------------------------------------------------------------------------- #------------------------------- Create doc strings ---------------------------- #------------------------------------------------------------------------------- @@ -202,6 +218,11 @@ set(KOKKOS_SEPARATE_LIBS OFF CACHE BOOL "OFF = kokkos. ON = kokkoscore, kokkosc # Qthreads options. set(KOKKOS_QTHREADS_DIR "" CACHE PATH "Location of Qthreads library.") +# HPX options. +set(KOKKOS_HPX_DIR "" CACHE PATH "Location of HPX library.") + +# Whether to build separate libraries or now +set(KOKKOS_SEPARATE_TESTS OFF CACHE BOOL "Provide unit test targets with finer granularity.") #------------------------------------------------------------------------------- #------------------------------- KOKKOS_DEVICES -------------------------------- @@ -215,6 +236,11 @@ IF(Trilinos_ENABLE_Kokkos) ELSE() set_kokkos_default_default(QTHREADS OFF) ENDIF() + IF(TPL_ENABLE_HPX) + set_kokkos_default_default(HPX ON) + ELSE() + set_kokkos_default_default(HPX OFF) + ENDIF() IF(Trilinos_ENABLE_OpenMP) set_kokkos_default_default(OPENMP ${Trilinos_ENABLE_OpenMP}) ELSE() @@ -231,6 +257,7 @@ ELSE() set_kokkos_default_default(OPENMP OFF) set_kokkos_default_default(PTHREAD OFF) set_kokkos_default_default(QTHREAD OFF) + set_kokkos_default_default(HPX OFF) set_kokkos_default_default(CUDA OFF) set_kokkos_default_default(ROCM OFF) ENDIF() @@ -241,6 +268,7 @@ set(KOKKOS_ENABLE_SERIAL ${KOKKOS_INTERNAL_ENABLE_SERIAL_DEFAULT} CACHE BOOL "Wh set(KOKKOS_ENABLE_OPENMP ${KOKKOS_INTERNAL_ENABLE_OPENMP_DEFAULT} CACHE BOOL "Enable OpenMP support in Kokkos." FORCE) set(KOKKOS_ENABLE_PTHREAD ${KOKKOS_INTERNAL_ENABLE_PTHREAD_DEFAULT} CACHE BOOL "Enable Pthread support in Kokkos.") set(KOKKOS_ENABLE_QTHREADS ${KOKKOS_INTERNAL_ENABLE_QTHREADS_DEFAULT} CACHE BOOL "Enable Qthreads support in Kokkos.") +set(KOKKOS_ENABLE_HPX ${KOKKOS_INTERNAL_ENABLE_HPX_DEFAULT} CACHE BOOL "Enable HPX support in Kokkos.") set(KOKKOS_ENABLE_CUDA ${KOKKOS_INTERNAL_ENABLE_CUDA_DEFAULT} CACHE BOOL "Enable CUDA support in Kokkos.") set(KOKKOS_ENABLE_ROCM ${KOKKOS_INTERNAL_ENABLE_ROCM_DEFAULT} CACHE BOOL "Enable ROCm support in Kokkos.") @@ -343,6 +371,18 @@ set(KOKKOS_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE ${KOKKOS_INTERNAL_ENABLE_CUDA_REL set(KOKKOS_ENABLE_CUDA_LAMBDA ${KOKKOS_INTERNAL_ENABLE_CUDA_LAMBDA_DEFAULT} CACHE BOOL "Enable lambdas for CUDA. (cuda option)") +#------------------------------------------------------------------------------- +#------------------------------- KOKKOS_HPX_OPTIONS ---------------------------- +#------------------------------------------------------------------------------- + +# HPX options. +# Set Defaults +set_kokkos_default_default(HPX_ASYNC_DISPATCH OFF) + +# Set actual options +set(KOKKOS_ENABLE_HPX_ASYNC_DISPATCH ${KOKKOS_INTERNAL_ENABLE_HPX_ASYNC_DISPATCH_DEFAULT} CACHE BOOL "Enable HPX async dispatch.") + + #------------------------------------------------------------------------------- #----------------------- HOST ARCH AND LEGACY TRIBITS -------------------------- #------------------------------------------------------------------------------- @@ -376,4 +416,3 @@ foreach(opt ${KOKKOS_INTERNAL_ENABLE_OPTIONS_LIST}) SET(Kokkos_ENABLE_${opt} ${KOKKOS_ENABLE_${OPT}} CACHE BOOL "CamelCase Compatibility setting for KOKKOS_ENABLE_${OPT}") ENDIF() endforeach() - diff --git a/lib/kokkos/cmake/kokkos_settings.cmake b/lib/kokkos/cmake/kokkos_settings.cmake index 387ced6d52..2c622d0de9 100644 --- a/lib/kokkos/cmake/kokkos_settings.cmake +++ b/lib/kokkos/cmake/kokkos_settings.cmake @@ -198,6 +198,8 @@ if(KOKKOS_CMAKE_VERBOSE) message(STATUS " Host Parallel: Pthread") elseif(KOKKOS_ENABLE_QTHREADS) message(STATUS " Host Parallel: Qthreads") + elseif(KOKKOS_ENABLE_HPX) + message(STATUS " Host Parallel: HPX") else() message(STATUS " Host Parallel: None") endif() @@ -244,6 +246,10 @@ if(KOKKOS_CMAKE_VERBOSE) message(STATUS " KOKKOS_MEMKIND_DIR: ${KOKKOS_MEMKIND_DIR}") endif() + if(KOKKOS_HPX_DIR) + message(STATUS " KOKKOS_HPX_DIR: ${KOKKOS_HPX_DIR}") + endif() + message(STATUS "") message(STATUS "Final kokkos settings variable:") message(STATUS " ${KOKKOS_SETTINGS}") diff --git a/lib/kokkos/cmake/tribits.cmake b/lib/kokkos/cmake/tribits.cmake index f8eebc29f8..1f467f0662 100644 --- a/lib/kokkos/cmake/tribits.cmake +++ b/lib/kokkos/cmake/tribits.cmake @@ -9,6 +9,10 @@ IF(NOT DEFINED ${PROJECT_NAME}_ENABLE_OpenMP) SET(${PROJECT_NAME}_ENABLE_OpenMP OFF) ENDIF() +IF(NOT DEFINED ${PROJECT_NAME}_ENABLE_HPX) + SET(${PROJECT_NAME}_ENABLE_HPX OFF) +ENDIF() + IF(NOT DEFINED ${PROJECT_NAME}_ENABLE_DEBUG) SET(${PROJECT_NAME}_ENABLE_DEBUG OFF) ENDIF() @@ -309,6 +313,10 @@ ENDFUNCTION() FUNCTION(TRIBITS_TPL_TENTATIVELY_ENABLE) ENDFUNCTION() +FUNCTION(TRIBITS_ADD_ADVANCED_TEST) + # TODO Write this +ENDFUNCTION() + FUNCTION(TRIBITS_ADD_EXECUTABLE_AND_TEST EXE_NAME) SET(options STANDARD_PASS_OUTPUT WILL_FAIL) diff --git a/lib/kokkos/containers/cmake/Dependencies.cmake b/lib/kokkos/containers/cmake/Dependencies.cmake index 1d71d8af34..5e29157369 100644 --- a/lib/kokkos/containers/cmake/Dependencies.cmake +++ b/lib/kokkos/containers/cmake/Dependencies.cmake @@ -1,5 +1,5 @@ TRIBITS_PACKAGE_DEFINE_DEPENDENCIES( LIB_REQUIRED_PACKAGES KokkosCore - LIB_OPTIONAL_TPLS Pthread CUDA HWLOC + LIB_OPTIONAL_TPLS Pthread CUDA HWLOC HPX TEST_OPTIONAL_TPLS CUSPARSE ) diff --git a/lib/kokkos/containers/performance_tests/CMakeLists.txt b/lib/kokkos/containers/performance_tests/CMakeLists.txt index 1203a8bd81..3c6584bc34 100644 --- a/lib/kokkos/containers/performance_tests/CMakeLists.txt +++ b/lib/kokkos/containers/performance_tests/CMakeLists.txt @@ -24,6 +24,10 @@ IF(Kokkos_ENABLE_OpenMP) LIST( APPEND SOURCES TestOpenMP.cpp) ENDIF() +IF(Kokkos_ENABLE_HPX) + LIST( APPEND SOURCES TestHPX.cpp) +ENDIF() + # Per #374, we always want to build this test, but we only want to run # it as a PERFORMANCE test. That's why we separate building the test # from running the test. diff --git a/lib/kokkos/containers/performance_tests/Makefile b/lib/kokkos/containers/performance_tests/Makefile index ebed75ccd6..f309a220d0 100644 --- a/lib/kokkos/containers/performance_tests/Makefile +++ b/lib/kokkos/containers/performance_tests/Makefile @@ -49,6 +49,12 @@ ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) TEST_TARGETS += test-openmp endif +ifeq ($(KOKKOS_INTERNAL_USE_HPX), 1) + OBJ_HPX = TestHPX.o TestMain.o gtest-all.o + TARGETS += KokkosContainers_PerformanceTest_HPX + TEST_TARGETS += test-hpx +endif + KokkosContainers_PerformanceTest_Cuda: $(OBJ_CUDA) $(KOKKOS_LINK_DEPENDS) $(LINK) $(KOKKOS_LDFLAGS) $(LDFLAGS) $(EXTRA_PATH) $(OBJ_CUDA) $(KOKKOS_LIBS) $(LIB) -o KokkosContainers_PerformanceTest_Cuda @@ -61,6 +67,9 @@ KokkosContainers_PerformanceTest_Threads: $(OBJ_THREADS) $(KOKKOS_LINK_DEPENDS) KokkosContainers_PerformanceTest_OpenMP: $(OBJ_OPENMP) $(KOKKOS_LINK_DEPENDS) $(LINK) $(KOKKOS_LDFLAGS) $(LDFLAGS) $(EXTRA_PATH) $(OBJ_OPENMP) $(KOKKOS_LIBS) $(LIB) -o KokkosContainers_PerformanceTest_OpenMP +KokkosContainers_PerformanceTest_HPX: $(OBJ_HPX) $(KOKKOS_LINK_DEPENDS) + $(LINK) $(KOKKOS_LDFLAGS) $(LDFLAGS) $(EXTRA_PATH) $(OBJ_HPX) $(KOKKOS_LIBS) $(LIB) -o KokkosContainers_PerformanceTest_HPX + test-cuda: KokkosContainers_PerformanceTest_Cuda ./KokkosContainers_PerformanceTest_Cuda @@ -73,6 +82,9 @@ test-threads: KokkosContainers_PerformanceTest_Threads test-openmp: KokkosContainers_PerformanceTest_OpenMP ./KokkosContainers_PerformanceTest_OpenMP +test-hpx: KokkosContainers_PerformanceTest_HPX + ./KokkosContainers_PerformanceTest_HPX + build_all: $(TARGETS) test: $(TEST_TARGETS) diff --git a/lib/kokkos/containers/performance_tests/TestDynRankView.hpp b/lib/kokkos/containers/performance_tests/TestDynRankView.hpp index 0d2fae32a3..db6274e057 100644 --- a/lib/kokkos/containers/performance_tests/TestDynRankView.hpp +++ b/lib/kokkos/containers/performance_tests/TestDynRankView.hpp @@ -197,7 +197,7 @@ void test_dynrankview_op_perf( const int par_size ) timer.reset(); Kokkos::RangePolicy policy(0,par_size); Kokkos::parallel_for( policy , FunctorType(testview) ); - DeviceType::fence(); + DeviceType().fence(); elapsed_time_view = timer.seconds(); std::cout << " View time (init only): " << elapsed_time_view << std::endl; @@ -205,7 +205,7 @@ void test_dynrankview_op_perf( const int par_size ) timer.reset(); Kokkos::View sumview("sumview",par_size); Kokkos::parallel_for( policy , typename FunctorType::SumComputationTest(testview, sumview) ); - DeviceType::fence(); + DeviceType().fence(); elapsed_time_compview = timer.seconds(); std::cout << " View sum computation time: " << elapsed_time_view << std::endl; @@ -215,7 +215,7 @@ void test_dynrankview_op_perf( const int par_size ) timer.reset(); Kokkos::parallel_for( policy , FunctorStrideType(teststrideview) ); - DeviceType::fence(); + DeviceType().fence(); elapsed_time_strideview = timer.seconds(); std::cout << " Strided View time (init only): " << elapsed_time_strideview << std::endl; } @@ -226,7 +226,7 @@ void test_dynrankview_op_perf( const int par_size ) timer.reset(); Kokkos::RangePolicy policy(0,par_size); Kokkos::parallel_for( policy , FunctorType(testview) ); - DeviceType::fence(); + DeviceType().fence(); elapsed_time_view_rank7 = timer.seconds(); std::cout << " View Rank7 time (init only): " << elapsed_time_view_rank7 << std::endl; } @@ -237,14 +237,14 @@ void test_dynrankview_op_perf( const int par_size ) timer.reset(); Kokkos::RangePolicy policy(0,par_size); Kokkos::parallel_for( policy , FunctorType(testdrview) ); - DeviceType::fence(); + DeviceType().fence(); elapsed_time_drview = timer.seconds(); std::cout << " DynRankView time (init only): " << elapsed_time_drview << std::endl; timer.reset(); Kokkos::DynRankView sumview("sumview",par_size); Kokkos::parallel_for( policy , typename FunctorType::SumComputationTest(testdrview, sumview) ); - DeviceType::fence(); + DeviceType().fence(); elapsed_time_compdrview = timer.seconds(); std::cout << " DynRankView sum computation time: " << elapsed_time_compdrview << std::endl; diff --git a/lib/kokkos/containers/performance_tests/TestGlobal2LocalIds.hpp b/lib/kokkos/containers/performance_tests/TestGlobal2LocalIds.hpp index dcaca776be..98997b3239 100644 --- a/lib/kokkos/containers/performance_tests/TestGlobal2LocalIds.hpp +++ b/lib/kokkos/containers/performance_tests/TestGlobal2LocalIds.hpp @@ -192,7 +192,7 @@ void test_global_to_local_ids(unsigned num_ids) { generate_ids gen(local_2_global); } - Device::fence(); + Device().fence(); // generate elasped_time = timer.seconds(); std::cout << elasped_time << ", "; @@ -201,7 +201,7 @@ void test_global_to_local_ids(unsigned num_ids) { fill_map fill(global_2_local, local_2_global); } - Device::fence(); + Device().fence(); // fill elasped_time = timer.seconds(); @@ -214,7 +214,7 @@ void test_global_to_local_ids(unsigned num_ids) { find_test find(global_2_local, local_2_global,num_errors); } - Device::fence(); + Device().fence(); // find elasped_time = timer.seconds(); diff --git a/lib/kokkos/containers/performance_tests/TestHPX.cpp b/lib/kokkos/containers/performance_tests/TestHPX.cpp new file mode 100644 index 0000000000..0f43377cee --- /dev/null +++ b/lib/kokkos/containers/performance_tests/TestHPX.cpp @@ -0,0 +1,130 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#if defined( KOKKOS_ENABLE_HPX ) + +#include + +#include + +#include + +#include +#include + +#include +#include + +#include +#include +#include +#include + + +namespace Performance { + +class hpx : public ::testing::Test { +protected: + static void SetUpTestCase() + { + std::cout << std::setprecision(5) << std::scientific; + + Kokkos::initialize(); + Kokkos::print_configuration( std::cout ); + } + + static void TearDownTestCase() + { + Kokkos::finalize(); + } +}; + +TEST_F( hpx, dynrankview_perf ) +{ + std::cout << "HPX" << std::endl; + std::cout << " DynRankView vs View: Initialization Only " << std::endl; + test_dynrankview_op_perf( 8192 ); +} + +TEST_F( hpx, global_2_local) +{ + std::cout << "HPX" << std::endl; + std::cout << "size, create, generate, fill, find" << std::endl; + for (unsigned i=Performance::begin_id_size; i<=Performance::end_id_size; i *= Performance::id_step) + test_global_to_local_ids(i); +} + +TEST_F( hpx, unordered_map_performance_near) +{ + unsigned num_hpx = 4; + std::ostringstream base_file_name; + base_file_name << "hpx-" << num_hpx << "-near"; + Perf::run_performance_tests(base_file_name.str()); +} + +TEST_F( hpx, unordered_map_performance_far) +{ + unsigned num_hpx = 4; + std::ostringstream base_file_name; + base_file_name << "hpx-" << num_hpx << "-far"; + Perf::run_performance_tests(base_file_name.str()); +} + +TEST_F( hpx, scatter_view) +{ + std::cout << "ScatterView data-duplicated test:\n"; + Perf::test_scatter_view(10, 1000 * 1000); +//std::cout << "ScatterView atomics test:\n"; +//Perf::test_scatter_view(10, 1000 * 1000); +} + +} // namespace test +#else +void KOKKOS_CONTAINERS_PERFORMANCE_TESTS_TESTHPX_PREVENT_EMPTY_LINK_ERROR() {} +#endif + diff --git a/lib/kokkos/containers/performance_tests/TestScatterView.hpp b/lib/kokkos/containers/performance_tests/TestScatterView.hpp index 03129d2b09..bd9121bb82 100644 --- a/lib/kokkos/containers/performance_tests/TestScatterView.hpp +++ b/lib/kokkos/containers/performance_tests/TestScatterView.hpp @@ -83,6 +83,7 @@ void test_scatter_view(int m, int n) for (int k = 0; k < m; ++k) { Kokkos::parallel_for(policy, f2, "hand_coded_duplicate_scatter_view_test"); } + Kokkos::fence(); auto t = timer.seconds(); std::cout << "hand-coded test took " << t << " seconds\n"; } @@ -101,6 +102,7 @@ void test_scatter_view(int m, int n) for (int k = 0; k < m; ++k) { Kokkos::parallel_for(policy, f, "scatter_view_test"); } + Kokkos::fence(); auto t = timer.seconds(); std::cout << "test took " << t << " seconds\n"; } diff --git a/lib/kokkos/containers/performance_tests/TestUnorderedMapPerformance.hpp b/lib/kokkos/containers/performance_tests/TestUnorderedMapPerformance.hpp index e8734b259d..8d09281ed3 100644 --- a/lib/kokkos/containers/performance_tests/TestUnorderedMapPerformance.hpp +++ b/lib/kokkos/containers/performance_tests/TestUnorderedMapPerformance.hpp @@ -108,7 +108,7 @@ struct UnorderedMapTest std::cout << std::setprecision(2) << std::fixed << std::setw(5) << (1e9*(seconds/(inserts))) << "; " << std::flush; histogram.calculate(); - Device::fence(); + Device().fence(); } void print(std::ostream & metrics_out, std::ostream & length_out, std::ostream & distance_out, std::ostream & block_distance_out) @@ -236,7 +236,7 @@ void run_performance_tests(std::string const & base_file_name) uint32_t inserts = static_cast(test_ratios[j]*(capacity)); std::cout << capacity << std::flush; UnorderedMapTest test(capacity, inserts*collisions[i], collisions[i]); - Device::fence(); + Device().fence(); test.print(metrics_out, length_out, distance_out, block_distance_out); } std::cout << "\b\b " << std::endl; diff --git a/lib/kokkos/containers/src/Kokkos_Bitset.hpp b/lib/kokkos/containers/src/Kokkos_Bitset.hpp index bfe8080f3b..4d78430fc6 100644 --- a/lib/kokkos/containers/src/Kokkos_Bitset.hpp +++ b/lib/kokkos/containers/src/Kokkos_Bitset.hpp @@ -107,22 +107,20 @@ public: } } - /// assignment - Bitset & operator = (Bitset const & rhs) - { - this->m_size = rhs.m_size; - this->m_last_block_mask = rhs.m_last_block_mask; - this->m_blocks = rhs.m_blocks; + KOKKOS_INLINE_FUNCTION + Bitset (const Bitset&) = default; - return *this; - } + KOKKOS_INLINE_FUNCTION + Bitset& operator= (const Bitset&) = default; - /// copy constructor - Bitset( Bitset const & rhs) - : m_size( rhs.m_size ) - , m_last_block_mask( rhs.m_last_block_mask ) - , m_blocks( rhs.m_blocks ) - {} + KOKKOS_INLINE_FUNCTION + Bitset (Bitset&&) = default; + + KOKKOS_INLINE_FUNCTION + Bitset& operator= (Bitset&&) = default; + + KOKKOS_INLINE_FUNCTION + ~Bitset () = default; /// number of bits in the set /// can be call from the host or the device diff --git a/lib/kokkos/containers/src/Kokkos_DualView.hpp b/lib/kokkos/containers/src/Kokkos_DualView.hpp index f6631a4149..d9b14d67a2 100644 --- a/lib/kokkos/containers/src/Kokkos_DualView.hpp +++ b/lib/kokkos/containers/src/Kokkos_DualView.hpp @@ -484,8 +484,8 @@ public: } } if(std::is_same::value) { - t_dev::execution_space::fence(); - t_host::execution_space::fence(); + typename t_dev::execution_space().fence(); + typename t_host::execution_space().fence(); } } diff --git a/lib/kokkos/containers/src/Kokkos_DynRankView.hpp b/lib/kokkos/containers/src/Kokkos_DynRankView.hpp index 3f284e6a8d..d1e6704a57 100644 --- a/lib/kokkos/containers/src/Kokkos_DynRankView.hpp +++ b/lib/kokkos/containers/src/Kokkos_DynRankView.hpp @@ -75,7 +75,7 @@ struct DynRankDimTraits { , const size_t N4 , const size_t N5 , const size_t N6 - , const size_t N7 ) + , const size_t /* N7 */) { return ( (N6 == unspecified && N5 == unspecified && N4 == unspecified && N3 == unspecified && N2 == unspecified && N1 == unspecified && N0 == unspecified) ? 0 @@ -106,7 +106,7 @@ struct DynRankDimTraits { // Extra overload to match that for specialize types v2 template KOKKOS_INLINE_FUNCTION - static size_t computeRank( const Kokkos::Impl::ViewCtorProp& prop, const Layout& layout ) + static size_t computeRank( const Kokkos::Impl::ViewCtorProp& /* prop */, const Layout& layout ) { return computeRank(layout); } @@ -155,7 +155,7 @@ struct DynRankDimTraits { // Extra overload to match that for specialize types template KOKKOS_INLINE_FUNCTION - static typename std::enable_if< (std::is_same::value || std::is_same::value || std::is_same::value) , typename Traits::array_layout >::type createLayout( const Kokkos::Impl::ViewCtorProp& prop, const typename Traits::array_layout& layout ) + static typename std::enable_if< (std::is_same::value || std::is_same::value || std::is_same::value) , typename Traits::array_layout >::type createLayout( const Kokkos::Impl::ViewCtorProp& /* prop */, const typename Traits::array_layout& layout ) { return createLayout( layout ); } @@ -655,7 +655,7 @@ public: const size_t dim_scalar = m_map.dimension_scalar(); const size_t bytes = this->span() / dim_scalar; - typedef Kokkos::View > tmp_view_type; + typedef Kokkos::View > tmp_view_type; tmp_view_type rankone_view(this->data(), bytes, dim_scalar); return rankone_view(i0); } @@ -1060,7 +1060,7 @@ public: } // Copy the input allocation properties with possibly defaulted properties - alloc_prop prop( arg_prop ); + alloc_prop prop_copy( arg_prop ); //------------------------------------------------------------ #if defined( KOKKOS_ENABLE_CUDA ) @@ -1070,18 +1070,18 @@ public: // Fence using the trait's executon space (which will be Kokkos::Cuda) // to avoid incomplete type errors from usng Kokkos::Cuda directly. if ( std::is_same< Kokkos::CudaUVMSpace , typename traits::device_type::memory_space >::value ) { - traits::device_type::memory_space::execution_space::fence(); + typename traits::device_type::memory_space::execution_space().fence(); } #endif //------------------------------------------------------------ Kokkos::Impl::SharedAllocationRecord<> * - record = m_map.allocate_shared( prop , Impl::DynRankDimTraits::template createLayout(arg_prop, arg_layout) ); + record = m_map.allocate_shared( prop_copy, Impl::DynRankDimTraits::template createLayout(arg_prop, arg_layout) ); //------------------------------------------------------------ #if defined( KOKKOS_ENABLE_CUDA ) if ( std::is_same< Kokkos::CudaUVMSpace , typename traits::device_type::memory_space >::value ) { - traits::device_type::memory_space::execution_space::fence(); + typename traits::device_type::memory_space::execution_space().fence(); } #endif //------------------------------------------------------------ @@ -1609,7 +1609,7 @@ struct DynRankViewFill { closure.execute(); - execution_space::fence(); + execution_space().fence(); } }; @@ -1650,6 +1650,7 @@ struct DynRankViewRemap { typedef Kokkos::RangePolicy< ExecSpace > Policy ; const Kokkos::Impl::ParallelFor< DynRankViewRemap , Policy > closure( *this , Policy( 0 , n0 ) ); closure.execute(); + // Kokkos::fence(); // ?? } KOKKOS_INLINE_FUNCTION diff --git a/lib/kokkos/containers/src/Kokkos_DynamicView.hpp b/lib/kokkos/containers/src/Kokkos_DynamicView.hpp index ab782a82ad..37d56e7cfb 100644 --- a/lib/kokkos/containers/src/Kokkos_DynamicView.hpp +++ b/lib/kokkos/containers/src/Kokkos_DynamicView.hpp @@ -288,8 +288,8 @@ public: >::type resize_serial( IntType const & n ) { - typedef typename traits::value_type value_type ; - typedef value_type * value_pointer_type ; + typedef typename traits::value_type local_value_type ; + typedef local_value_type * value_pointer_type ; const uintptr_t NC = ( n + m_chunk_mask ) >> m_chunk_shift ; // New total number of chunks needed for resize @@ -304,8 +304,8 @@ public: if ( *pc < NC ) { while ( *pc < NC ) { m_chunks[*pc] = reinterpret_cast - ( - typename traits::memory_space().allocate( sizeof(value_type) << m_chunk_shift ) + ( + typename traits::memory_space().allocate( sizeof(local_value_type) << m_chunk_shift ) ); ++*pc ; } @@ -314,7 +314,7 @@ public: while ( NC + 1 <= *pc ) { --*pc ; typename traits::memory_space().deallocate( m_chunks[*pc] - , sizeof(value_type) << m_chunk_shift ); + , sizeof(local_value_type) << m_chunk_shift ); m_chunks[*pc] = 0 ; } } @@ -376,8 +376,8 @@ public: closure.execute(); - traits::execution_space::fence(); - //Impl::ChunkArraySpace< typename traits::memory_space >::memory_space::execution_space::fence(); + typename traits::execution_space().fence(); + //Impl::ChunkArraySpace< typename traits::memory_space >::memory_space::execution_space().fence(); } void construct_shared_allocation() diff --git a/lib/kokkos/containers/src/Kokkos_OffsetView.hpp b/lib/kokkos/containers/src/Kokkos_OffsetView.hpp index b614764ee7..4ce1f4d84f 100644 --- a/lib/kokkos/containers/src/Kokkos_OffsetView.hpp +++ b/lib/kokkos/containers/src/Kokkos_OffsetView.hpp @@ -202,8 +202,8 @@ namespace Kokkos { template ::value, iType>::type = 0> KOKKOS_INLINE_FUNCTION - int64_t begin(const iType dimension) const { - return dimension < Rank ? m_begins[dimension] : 0; + int64_t begin(const iType local_dimension) const { + return local_dimension < Rank ? m_begins[local_dimension] : 0; } KOKKOS_INLINE_FUNCTION @@ -211,7 +211,9 @@ namespace Kokkos { template ::value, iType>::type = 0> KOKKOS_INLINE_FUNCTION - int64_t end(const iType dimension) const {return begin(dimension) + m_map.extent(dimension);} + int64_t end(const iType local_dimension) const { + return begin(local_dimension) + m_map.extent(local_dimension); + } private: @@ -1068,7 +1070,7 @@ namespace Kokkos { } // Copy the input allocation properties with possibly defaulted properties - alloc_prop prop( arg_prop ); + alloc_prop prop_copy( arg_prop ); //------------------------------------------------------------ #if defined( KOKKOS_ENABLE_CUDA ) @@ -1078,18 +1080,18 @@ namespace Kokkos { // Fence using the trait's executon space (which will be Kokkos::Cuda) // to avoid incomplete type errors from usng Kokkos::Cuda directly. if ( std::is_same< Kokkos::CudaUVMSpace , typename traits::device_type::memory_space >::value ) { - traits::device_type::memory_space::execution_space::fence(); + typename traits::device_type::memory_space::execution_space().fence(); } #endif //------------------------------------------------------------ Kokkos::Impl::SharedAllocationRecord<> * - record = m_map.allocate_shared( prop , arg_layout ); + record = m_map.allocate_shared( prop_copy , arg_layout ); //------------------------------------------------------------ #if defined( KOKKOS_ENABLE_CUDA ) if ( std::is_same< Kokkos::CudaUVMSpace , typename traits::device_type::memory_space >::value ) { - traits::device_type::memory_space::execution_space::fence(); + typename traits::device_type::memory_space::execution_space().fence(); } #endif //------------------------------------------------------------ diff --git a/lib/kokkos/containers/src/Kokkos_ScatterView.hpp b/lib/kokkos/containers/src/Kokkos_ScatterView.hpp index 8e56857887..a8c05e3f36 100644 --- a/lib/kokkos/containers/src/Kokkos_ScatterView.hpp +++ b/lib/kokkos/containers/src/Kokkos_ScatterView.hpp @@ -57,9 +57,16 @@ namespace Kokkos { namespace Experimental { -//TODO: replace this enum with the Kokkos::Sum, etc reducers for parallel_reduce +/* + * Reduction Type list + * - These corresponds to subset of the reducers in parallel_reduce + * - See Implementations of ScatterValue for details. + */ enum : int { ScatterSum, + ScatterProd, + ScatterMax, + ScatterMin, }; enum : int { @@ -114,6 +121,21 @@ struct DefaultContribution +struct DefaultDuplication { + enum : int { value = Kokkos::Experimental::ScatterDuplicated }; +}; +template <> +struct DefaultContribution { + enum : int { value = Kokkos::Experimental::ScatterAtomic }; +}; +template <> +struct DefaultContribution { + enum : int { value = Kokkos::Experimental::ScatterNonAtomic }; +}; +#endif + #ifdef KOKKOS_ENABLE_THREADS template <> struct DefaultDuplication { @@ -144,39 +166,277 @@ struct DefaultContribution is the object returned by the access operator() of ScatterAccess, + This class inherits from the Sum<> reducer and it wraps join(dest, src) with convenient operator+=, etc. + Note the addition of update(ValueType const& rhs) and reset() so that all reducers can have common functions + See ReduceDuplicates and ResetDuplicates ) */ template struct ScatterValue; template -struct ScatterValue { +struct ScatterValue : + Sum { public: - KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) : value( value_in ) {} - KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ScatterValue&& other) : value( other.value ) {} + KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) : + Sum(value_in) + {} + KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ScatterValue&& other) : + Sum(other.reference()) + {} KOKKOS_FORCEINLINE_FUNCTION void operator+=(ValueType const& rhs) { - value += rhs; + this->join( this->reference(), rhs ); } KOKKOS_FORCEINLINE_FUNCTION void operator-=(ValueType const& rhs) { - value -= rhs; + this->join( this->reference(), -rhs ); + } + KOKKOS_FORCEINLINE_FUNCTION void update(ValueType const& rhs) { + this->join( this->reference(), rhs ); + } + KOKKOS_FORCEINLINE_FUNCTION void reset() { + this->init( this->reference() ); } - private: - ValueType& value; }; +/* ScatterValue is the object returned by the access operator() + * of ScatterAccess, similar to that returned by an Atomic View, it wraps Kokkos::atomic_add with convenient + operator+=, etc. This version also has the update(rhs) and reset() functions. */ template -struct ScatterValue { +struct ScatterValue : + Sum { public: - KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) : value( value_in ) {} + KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) : + Sum(value_in) + {} + KOKKOS_FORCEINLINE_FUNCTION void operator+=(ValueType const& rhs) { - Kokkos::atomic_add(&value, rhs); + this->join(this->reference(), rhs); } KOKKOS_FORCEINLINE_FUNCTION void operator-=(ValueType const& rhs) { - Kokkos::atomic_add(&value, -rhs); + this->join(this->reference(), -rhs); + } + + KOKKOS_INLINE_FUNCTION + void join(ValueType& dest, const ValueType& src) const { + Kokkos::atomic_add(&dest, src); + } + + KOKKOS_INLINE_FUNCTION + void join(volatile ValueType& dest, const volatile ValueType& src) const { + Kokkos::atomic_add(&dest, src); + } + + KOKKOS_FORCEINLINE_FUNCTION void update(ValueType const& rhs) { + this->join( this->reference(), rhs ); + } + + KOKKOS_FORCEINLINE_FUNCTION void reset() { + this->init( this->reference() ); + } +}; + +/* ScatterValue is the object returned by the access operator() of ScatterAccess, + This class inherits from the Prod<> reducer and it wraps join(dest, src) with convenient operator*=, etc. + Note the addition of update(ValueType const& rhs) and reset() so that all reducers can have common functions + See ReduceDuplicates and ResetDuplicates ) */ +template +struct ScatterValue : + Prod { + public: + KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) : + Prod(value_in) + {} + KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ScatterValue&& other) : + Prod(other.reference()) + {} + KOKKOS_FORCEINLINE_FUNCTION void operator*=(ValueType const& rhs) { + this->join( this->reference(), rhs ); + } + KOKKOS_FORCEINLINE_FUNCTION void operator/=(ValueType const& rhs) { + this->join( this->reference(), static_cast(1)/rhs ); + } + KOKKOS_FORCEINLINE_FUNCTION void update(ValueType const& rhs) { + this->join( this->reference(), rhs ); + } + KOKKOS_FORCEINLINE_FUNCTION void reset() { + this->init( this->reference() ); + } +}; + +/* ScatterValue is the object returned by the access operator() + * of ScatterAccess, similar to that returned by an Atomic View, it wraps and atomic_prod with convenient + operator*=, etc. atomic_prod uses the atomic_compare_exchange. This version also has the update(rhs) and reset() functions. */ +template +struct ScatterValue : + Prod { + public: + KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) : + Prod(value_in) + {} + + KOKKOS_FORCEINLINE_FUNCTION void operator*=(ValueType const& rhs) { + this->join(this->reference(), rhs); + } + KOKKOS_FORCEINLINE_FUNCTION void operator/=(ValueType const& rhs) { + this->join(this->reference(), static_cast(1)/rhs); + } + + KOKKOS_FORCEINLINE_FUNCTION + void atomic_prod(ValueType & dest, const ValueType& src) const { + + bool success = false; + while(!success) { + ValueType dest_old = dest; + ValueType dest_new = dest_old * src; + dest_new = Kokkos::atomic_compare_exchange(&dest,dest_old,dest_new); + success = ( (dest_new - dest_old)/dest_old <= 1e-15 ); + } + } + + KOKKOS_INLINE_FUNCTION + void join(ValueType& dest, const ValueType& src) const { + atomic_prod(dest, src); + } + + KOKKOS_INLINE_FUNCTION + void join(volatile ValueType& dest, const volatile ValueType& src) const { + atomic_prod(dest, src); + } + + KOKKOS_FORCEINLINE_FUNCTION void update(ValueType const& rhs) { + this->join( this->reference(), rhs ); + } + KOKKOS_FORCEINLINE_FUNCTION void reset() { + this->init( this->reference() ); + } + +}; + +/* ScatterValue is the object returned by the access operator() of ScatterAccess, + This class inherits from the Min<> reducer and it wraps join(dest, src) with convenient update(rhs). + Note the addition of update(ValueType const& rhs) and reset() are so that all reducers can have a common update function + See ReduceDuplicates and ResetDuplicates ) */ +template +struct ScatterValue : + Min { + public: + KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) : + Min(value_in) + {} + KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ScatterValue&& other) : + Min(other.reference()) + {} + KOKKOS_FORCEINLINE_FUNCTION void update(ValueType const& rhs) { + this->join( this->reference(), rhs ); + } + KOKKOS_FORCEINLINE_FUNCTION void reset() { + this->init( this->reference() ); + } +}; + +/* ScatterValue is the object returned by the access operator() + * of ScatterAccess, similar to that returned by an Atomic View, it wraps and atomic_min with the update(rhs) + function. atomic_min uses the atomic_compare_exchange. This version also has the reset() function */ +template +struct ScatterValue : + Min { + public: + KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) : + Min(value_in) + {} + + KOKKOS_FORCEINLINE_FUNCTION + void atomic_min(ValueType & dest, const ValueType& src) const { + + bool success = false; + while(!success) { + ValueType dest_old = dest; + ValueType dest_new = ( dest_old > src ) ? src : dest_old; + dest_new = Kokkos::atomic_compare_exchange(&dest,dest_old,dest_new); + success = ( (dest_new - dest_old)/dest_old <= 1e-15 ); + } + } + + KOKKOS_INLINE_FUNCTION + void join(ValueType& dest, const ValueType& src) const { + atomic_min(dest, src); + } + + KOKKOS_INLINE_FUNCTION + void join(volatile ValueType& dest, const volatile ValueType& src) const { + atomic_min(dest, src); + } + + KOKKOS_FORCEINLINE_FUNCTION void update(ValueType const& rhs) { + this->join( this->reference(), rhs ); } - private: - ValueType& value; + KOKKOS_FORCEINLINE_FUNCTION void reset() { + this->init( this->reference() ); + } + +}; + +/* ScatterValue is the object returned by the access operataor() of ScatterAccess, + This class inherits from the Max<> reducer and it wraps join(dest, src) with convenient update(rhs). + Note the addition of update(ValueType const& rhs) and reset() are so that all reducers can have a common update function + See ReduceDuplicates and ResetDuplicates ) */ +template +struct ScatterValue : + Max { + public: + KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) : + Max(value_in) + {} + KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ScatterValue&& other) : + Max(other.reference()) + {} + KOKKOS_FORCEINLINE_FUNCTION void update(ValueType const& rhs) { + this->join( this->reference(), rhs ); + } + KOKKOS_FORCEINLINE_FUNCTION void reset() { + this->init( this->reference() ); + } +}; + +/* ScatterValue is the object returned by the access operator() + * of ScatterAccess, similar to that returned by an Atomic View, it wraps and atomic_max with the update(rhs) + function. atomic_max uses the atomic_compare_exchange. This version also has the reset() function */ +template +struct ScatterValue : + Max { + public: + KOKKOS_FORCEINLINE_FUNCTION ScatterValue(ValueType& value_in) : + Max(value_in) + {} + + KOKKOS_FORCEINLINE_FUNCTION + void atomic_max(ValueType & dest, const ValueType& src) const { + + bool success = false; + while(!success) { + ValueType dest_old = dest; + ValueType dest_new = ( dest_old < src ) ? src : dest_old; + dest_new = Kokkos::atomic_compare_exchange(&dest,dest_old,dest_new); + success = ( (dest_new - dest_old)/dest_old <= 1e-15 ); + } + } + + KOKKOS_INLINE_FUNCTION + void join(ValueType& dest, const ValueType& src) const { + atomic_max(dest, src); + } + + KOKKOS_INLINE_FUNCTION + void join(volatile ValueType& dest, const volatile ValueType& src) const { + atomic_max(dest, src); + } + + KOKKOS_FORCEINLINE_FUNCTION void update(ValueType const& rhs) { + this->join( this->reference(), rhs ); + } + KOKKOS_FORCEINLINE_FUNCTION void reset() { + this->init( this->reference() ); + } + }; /* DuplicatedDataType, given a View DataType, will create a new DataType @@ -226,6 +486,18 @@ struct DuplicatedDataType { typedef typename DuplicatedDataType::value_type* value_type; }; +/* Insert integer argument pack into array */ + +template +void args_to_array(size_t* array, int pos, T dim0) { + array[pos] = dim0; +} +template +void args_to_array(size_t* array, int pos, T dim0, Dims ... dims) { + array[pos] = dim0; + args_to_array(array,pos+1,dims...); +} + /* Slice is just responsible for stuffing the correct number of Kokkos::ALL arguments on the correct side of the index in a call to subview() to get a subview where the index specified is the largest-stride one. */ @@ -304,21 +576,26 @@ struct ReduceDuplicatesBase { } }; -template -struct ReduceDuplicates : - public ReduceDuplicatesBase +/* ReduceDuplicates -- Perform reduction on destination array using strided source + * Use ScatterValue<> specific to operation to wrap destination array so that + * the reduction operation can be accessed via the update(rhs) function */ +template +struct ReduceDuplicates : + public ReduceDuplicatesBase { - typedef ReduceDuplicatesBase Base; + typedef ReduceDuplicatesBase Base; ReduceDuplicates(ValueType const* src_in, ValueType* dst_in, size_t stride_in, size_t start_in, size_t n_in, std::string const& name): Base(src_in, dst_in, stride_in, start_in, n_in, name) {} KOKKOS_FORCEINLINE_FUNCTION void operator()(size_t i) const { for (size_t j = Base::start; j < Base::n; ++j) { - Base::dst[i] += Base::src[i + Base::stride * j]; + ScatterValue sv(Base::dst[i]); + sv.update( Base::src[i + Base::stride * j] ); } } }; + template struct ResetDuplicates; @@ -347,19 +624,24 @@ struct ResetDuplicatesBase { } }; -template -struct ResetDuplicates : - public ResetDuplicatesBase +/* ResetDuplicates -- Perform reset on destination array + * Use ScatterValue<> specific to operation to wrap destination array so that + * the reset operation can be accessed via the reset() function */ +template +struct ResetDuplicates : + public ResetDuplicatesBase { - typedef ResetDuplicatesBase Base; + typedef ResetDuplicatesBase Base; ResetDuplicates(ValueType* data_in, size_t size_in, std::string const& name): Base(data_in, size_in, name) {} KOKKOS_FORCEINLINE_FUNCTION void operator()(size_t i) const { - Base::data[i] = Kokkos::reduction_identity::sum(); + ScatterValue sv(Base::data[i]); + sv.reset(); } }; + }}} // Kokkos::Impl::Experimental namespace Kokkos { @@ -519,12 +801,22 @@ public: typedef Kokkos::Impl::Experimental::ScatterValue< original_value_type, Op, override_contribution> value_type; + KOKKOS_INLINE_FUNCTION + ScatterAccess() : + view(view_type()) { + } + KOKKOS_INLINE_FUNCTION ScatterAccess(view_type const& view_in) : view(view_in) { } + KOKKOS_INLINE_FUNCTION + ~ScatterAccess() + { + } + template KOKKOS_FORCEINLINE_FUNCTION value_type operator()(Args ... args) const { @@ -608,7 +900,7 @@ public: } template - inline + KOKKOS_FORCEINLINE_FUNCTION ScatterAccess access() const { return ScatterAccess{*this}; @@ -729,14 +1021,14 @@ public: : unique_token() { size_t arg_N[8] = { - original_view.extent(0), - original_view.extent(1), - original_view.extent(2), - original_view.extent(3), - original_view.extent(4), - original_view.extent(5), - original_view.extent(6), - 0 + original_view.rank>0?original_view.extent(0):KOKKOS_IMPL_CTOR_DEFAULT_ARG, + original_view.rank>1?original_view.extent(1):KOKKOS_IMPL_CTOR_DEFAULT_ARG, + original_view.rank>2?original_view.extent(2):KOKKOS_IMPL_CTOR_DEFAULT_ARG, + original_view.rank>3?original_view.extent(3):KOKKOS_IMPL_CTOR_DEFAULT_ARG, + original_view.rank>4?original_view.extent(4):KOKKOS_IMPL_CTOR_DEFAULT_ARG, + original_view.rank>5?original_view.extent(5):KOKKOS_IMPL_CTOR_DEFAULT_ARG, + original_view.rank>6?original_view.extent(6):KOKKOS_IMPL_CTOR_DEFAULT_ARG, + KOKKOS_IMPL_CTOR_DEFAULT_ARG }; arg_N[internal_view_type::rank - 1] = unique_token.size(); internal_view = internal_view_type( @@ -748,14 +1040,28 @@ public: } template - ScatterView(std::string const& name, Dims ... dims) - : internal_view(Kokkos::ViewAllocateWithoutInitializing(name), dims ..., unique_token.size()) - { + ScatterView(std::string const& name, Dims ... dims) { + original_view_type original_view; + size_t arg_N[8] = { + original_view.rank>0?original_view.static_extent(0):KOKKOS_IMPL_CTOR_DEFAULT_ARG, + original_view.rank>1?original_view.static_extent(1):KOKKOS_IMPL_CTOR_DEFAULT_ARG, + original_view.rank>2?original_view.static_extent(2):KOKKOS_IMPL_CTOR_DEFAULT_ARG, + original_view.rank>3?original_view.static_extent(3):KOKKOS_IMPL_CTOR_DEFAULT_ARG, + original_view.rank>4?original_view.static_extent(4):KOKKOS_IMPL_CTOR_DEFAULT_ARG, + original_view.rank>5?original_view.static_extent(5):KOKKOS_IMPL_CTOR_DEFAULT_ARG, + original_view.rank>6?original_view.static_extent(6):KOKKOS_IMPL_CTOR_DEFAULT_ARG, + KOKKOS_IMPL_CTOR_DEFAULT_ARG + }; + Kokkos::Impl::Experimental::args_to_array(arg_N,0,dims ...); + arg_N[internal_view_type::rank - 1] = unique_token.size(); + internal_view = internal_view_type(Kokkos::ViewAllocateWithoutInitializing(name), + arg_N[0], arg_N[1], arg_N[2], arg_N[3], + arg_N[4], arg_N[5], arg_N[6], arg_N[7]); reset(); } template - inline + KOKKOS_FORCEINLINE_FUNCTION ScatterAccess access() const { return ScatterAccess{*this}; @@ -770,9 +1076,13 @@ public: } template - void contribute_into(View const& dest) const + void contribute_into(View const& dest) const { - typedef View dest_type; + typedef View dest_type; + static_assert(std::is_same< + typename dest_type::value_type, + typename original_view_type::non_const_value_type>::value, + "ScatterView deep_copy destination has wrong value_type"); static_assert(std::is_same< typename dest_type::array_layout, Kokkos::LayoutLeft>::value, @@ -891,12 +1201,14 @@ public: typedef Kokkos::Impl::Experimental::ScatterValue< original_value_type, Op, override_contribution> value_type; - inline ScatterAccess(view_type const& view_in) + KOKKOS_FORCEINLINE_FUNCTION + ScatterAccess(view_type const& view_in) : view(view_in) , thread_id(view_in.unique_token.acquire()) { } - inline ~ScatterAccess() { + KOKKOS_FORCEINLINE_FUNCTION + ~ScatterAccess() { if (thread_id != ~thread_id_type(0)) view.unique_token.release(thread_id); } @@ -926,8 +1238,9 @@ private: public: // do need to allow moves though, for the common // auto b = a.access(); - // that assignments turns into a move constructor call - inline ScatterAccess(ScatterAccess&& other) + // that assignments turns into a move constructor call + KOKKOS_FORCEINLINE_FUNCTION + ScatterAccess(ScatterAccess&& other) : view(other.view) , thread_id(other.thread_id) { diff --git a/lib/kokkos/containers/src/Kokkos_UnorderedMap.hpp b/lib/kokkos/containers/src/Kokkos_UnorderedMap.hpp index 64601e6b59..aed723288f 100644 --- a/lib/kokkos/containers/src/Kokkos_UnorderedMap.hpp +++ b/lib/kokkos/containers/src/Kokkos_UnorderedMap.hpp @@ -437,9 +437,9 @@ public: { bool result = !erasable(); if (is_insertable_map && result) { - execution_space::fence(); + execution_space().fence(); set_flag(erasable_idx); - execution_space::fence(); + execution_space().fence(); } return result; } @@ -448,10 +448,10 @@ public: { bool result = erasable(); if (is_insertable_map && result) { - execution_space::fence(); + execution_space().fence(); Impl::UnorderedMapErase f(*this); f.apply(); - execution_space::fence(); + execution_space().fence(); reset_flag(erasable_idx); } return result; diff --git a/lib/kokkos/containers/src/Kokkos_Vector.hpp b/lib/kokkos/containers/src/Kokkos_Vector.hpp index 76c515941e..9b151d9505 100644 --- a/lib/kokkos/containers/src/Kokkos_Vector.hpp +++ b/lib/kokkos/containers/src/Kokkos_Vector.hpp @@ -121,12 +121,12 @@ public: if( DV::template need_sync() ) { set_functor_host f(DV::h_view,val); parallel_for(n,f); - DV::t_host::execution_space::fence(); + typename DV::t_host::execution_space().fence(); DV::template modify(); } else { set_functor f(DV::d_view,val); parallel_for(n,f); - DV::t_dev::execution_space::fence(); + typename DV::t_dev::execution_space().fence(); DV::template modify(); } } diff --git a/lib/kokkos/containers/unit_tests/CMakeLists.txt b/lib/kokkos/containers/unit_tests/CMakeLists.txt index 0f94afec8c..8564bd9ddd 100644 --- a/lib/kokkos/containers/unit_tests/CMakeLists.txt +++ b/lib/kokkos/containers/unit_tests/CMakeLists.txt @@ -86,6 +86,31 @@ TRIBITS_ADD_EXECUTABLE_AND_TEST( ) ENDIF() +IF(Kokkos_ENABLE_HPX) +TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_HPX + SOURCES + UnitTestMain.cpp + hpx/TestHPX_BitSet.cpp + hpx/TestHPX_DualView.cpp + hpx/TestHPX_DynamicView.cpp + hpx/TestHPX_DynRankViewAPI_generic.cpp + hpx/TestHPX_DynRankViewAPI_rank12345.cpp + hpx/TestHPX_DynRankViewAPI_rank67.cpp + hpx/TestHPX_ErrorReporter.cpp + hpx/TestHPX_OffsetView.cpp + hpx/TestHPX_ScatterView.cpp + hpx/TestHPX_StaticCrsGraph.cpp + hpx/TestHPX_UnorderedMap.cpp + hpx/TestHPX_Vector.cpp + hpx/TestHPX_ViewCtorPropEmbeddedDim.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) +ENDIF() + IF(Kokkos_ENABLE_Cuda) TRIBITS_ADD_EXECUTABLE_AND_TEST( UnitTest_Cuda diff --git a/lib/kokkos/containers/unit_tests/Makefile b/lib/kokkos/containers/unit_tests/Makefile index c0e5d2820c..a7e0233f8a 100644 --- a/lib/kokkos/containers/unit_tests/Makefile +++ b/lib/kokkos/containers/unit_tests/Makefile @@ -4,6 +4,7 @@ GTEST_PATH = ../../TPL/gtest vpath %.cpp ${KOKKOS_PATH}/containers/unit_tests vpath %.cpp ${KOKKOS_PATH}/containers/unit_tests/openmp +vpath %.cpp ${KOKKOS_PATH}/containers/unit_tests/hpx vpath %.cpp ${KOKKOS_PATH}/containers/unit_tests/serial vpath %.cpp ${KOKKOS_PATH}/containers/unit_tests/threads vpath %.cpp ${KOKKOS_PATH}/containers/unit_tests/rocm @@ -106,6 +107,25 @@ ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) TEST_TARGETS += test-openmp endif +ifeq ($(KOKKOS_INTERNAL_USE_HPX), 1) + OBJ_HPX = UnitTestMain.o gtest-all.o + OBJ_HPX += TestHPX_BitSet.o + OBJ_HPX += TestHPX_DualView.o + OBJ_HPX += TestHPX_DynamicView.o + OBJ_HPX += TestHPX_DynRankViewAPI_generic.o + OBJ_HPX += TestHPX_DynRankViewAPI_rank12345.o + OBJ_HPX += TestHPX_DynRankViewAPI_rank67.o + OBJ_HPX += TestHPX_ErrorReporter.o + OBJ_HPX += TestHPX_OffsetView.o + OBJ_HPX += TestHPX_ScatterView.o + OBJ_HPX += TestHPX_StaticCrsGraph.o + OBJ_HPX += TestHPX_UnorderedMap.o + OBJ_HPX += TestHPX_Vector.o + OBJ_HPX += TestHPX_ViewCtorPropEmbeddedDim.o + TARGETS += KokkosContainers_UnitTest_HPX + TEST_TARGETS += test-hpx +endif + ifeq ($(KOKKOS_INTERNAL_USE_SERIAL), 1) OBJ_SERIAL = UnitTestMain.o gtest-all.o OBJ_SERIAL += TestSerial_BitSet.o @@ -137,6 +157,9 @@ KokkosContainers_UnitTest_Threads: $(OBJ_THREADS) $(KOKKOS_LINK_DEPENDS) KokkosContainers_UnitTest_OpenMP: $(OBJ_OPENMP) $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) $(OBJ_OPENMP) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosContainers_UnitTest_OpenMP +KokkosContainers_UnitTest_HPX: $(OBJ_HPX) $(KOKKOS_LINK_DEPENDS) + $(LINK) $(EXTRA_PATH) $(OBJ_HPX) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosContainers_UnitTest_HPX + KokkosContainers_UnitTest_Serial: $(OBJ_SERIAL) $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) $(OBJ_SERIAL) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosContainers_UnitTest_Serial @@ -152,6 +175,9 @@ test-threads: KokkosContainers_UnitTest_Threads test-openmp: KokkosContainers_UnitTest_OpenMP ./KokkosContainers_UnitTest_OpenMP +test-hpx: KokkosContainers_UnitTest_HPX + ./KokkosContainers_UnitTest_HPX + test-serial: KokkosContainers_UnitTest_Serial ./KokkosContainers_UnitTest_Serial diff --git a/lib/kokkos/containers/unit_tests/TestBitset.hpp b/lib/kokkos/containers/unit_tests/TestBitset.hpp index 6200124644..371c0288b1 100644 --- a/lib/kokkos/containers/unit_tests/TestBitset.hpp +++ b/lib/kokkos/containers/unit_tests/TestBitset.hpp @@ -66,7 +66,7 @@ struct TestBitset unsigned testit(unsigned collisions) { - execution_space::fence(); + execution_space().fence(); unsigned count = 0; Kokkos::parallel_reduce( m_bitset.size()*collisions, *this, count); @@ -114,7 +114,7 @@ struct TestBitsetTest unsigned testit() { - execution_space::fence(); + execution_space().fence(); unsigned count = 0; Kokkos::parallel_reduce( m_bitset.size(), *this, count); @@ -151,7 +151,7 @@ struct TestBitsetAny unsigned testit() { - execution_space::fence(); + execution_space().fence(); unsigned count = 0; Kokkos::parallel_reduce( m_bitset.size(), *this, count); diff --git a/lib/kokkos/containers/unit_tests/TestDynViewAPI.hpp b/lib/kokkos/containers/unit_tests/TestDynViewAPI.hpp index 6684a55452..13e56c9f8d 100644 --- a/lib/kokkos/containers/unit_tests/TestDynViewAPI.hpp +++ b/lib/kokkos/containers/unit_tests/TestDynViewAPI.hpp @@ -1276,6 +1276,7 @@ public: Kokkos::deep_copy( dx , hx ); Kokkos::deep_copy( dy , dx ); Kokkos::deep_copy( hy , dy ); + Kokkos::fence(); for ( size_t ip = 0 ; ip < N0 ; ++ip ) { for ( size_t i1 = 0 ; i1 < N1 ; ++i1 ) { @@ -1286,6 +1287,7 @@ public: Kokkos::deep_copy( dx , T(0) ); Kokkos::deep_copy( hx , dx ); + Kokkos::fence(); for ( size_t ip = 0 ; ip < N0 ; ++ip ) { for ( size_t i1 = 0 ; i1 < N1 ; ++i1 ) { diff --git a/lib/kokkos/containers/unit_tests/TestErrorReporter.hpp b/lib/kokkos/containers/unit_tests/TestErrorReporter.hpp index ecb7542232..7e48089b43 100644 --- a/lib/kokkos/containers/unit_tests/TestErrorReporter.hpp +++ b/lib/kokkos/containers/unit_tests/TestErrorReporter.hpp @@ -162,6 +162,7 @@ struct ErrorReporterDriver : public ErrorReporterDriverBase void execute(int reporter_capacity, int test_size) { Kokkos::parallel_for(Kokkos::RangePolicy(0,test_size), *this); + Kokkos::fence(); driver_base::check_expectations(reporter_capacity, test_size); } @@ -194,6 +195,7 @@ struct ErrorReporterDriverUseLambda : public ErrorReporterDriverBase driver_base::m_errorReporter.add_report(work_idx, report); } }); + Kokkos::fence(); driver_base::check_expectations(reporter_capacity, test_size); } diff --git a/lib/kokkos/containers/unit_tests/TestScatterView.hpp b/lib/kokkos/containers/unit_tests/TestScatterView.hpp index d402a91b9f..a9d97b32f3 100644 --- a/lib/kokkos/containers/unit_tests/TestScatterView.hpp +++ b/lib/kokkos/containers/unit_tests/TestScatterView.hpp @@ -48,79 +48,387 @@ namespace Test { +template +struct test_scatter_view_impl_cls; + template -void test_scatter_view_config(int n) +struct test_scatter_view_impl_cls { - Kokkos::View original_view("original_view", n); - { - auto scatter_view = Kokkos::Experimental::create_scatter_view - < Kokkos::Experimental::ScatterSum - , duplication - , contribution - > (original_view); -#if defined( KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA ) - auto policy = Kokkos::RangePolicy(0, n); - auto f = KOKKOS_LAMBDA(int i) { +public: + + typedef Kokkos::Experimental::ScatterView + < double*[3] + , Layout + , ExecSpace + , Kokkos::Experimental::ScatterSum + , duplication + , contribution + > scatter_view_type; + + typedef Kokkos::View orig_view_type; + + + scatter_view_type scatter_view; + int scatterSize; + + test_scatter_view_impl_cls(const scatter_view_type& view){ + scatter_view = view; + scatterSize = 0; + } + + void initialize(orig_view_type orig) { + auto host_view = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), orig); + Kokkos::fence(); + for (typename decltype(host_view)::size_type i = 0; i < host_view.extent(0); ++i) { + host_view(i, 0) = 0.0; + host_view(i, 1) = 0.0; + host_view(i, 2) = 0.0; + } + Kokkos::fence(); + Kokkos::deep_copy(orig, host_view); + } + + void run_parallel(int n) { + scatterSize = n; + auto policy = Kokkos::RangePolicy(0, n); + Kokkos::parallel_for(policy, *this, "scatter_view_test: Sum"); + } + + KOKKOS_INLINE_FUNCTION + void operator()(int i) const { auto scatter_access = scatter_view.access(); auto scatter_access_atomic = scatter_view.template access(); for (int j = 0; j < 10; ++j) { - auto k = (i + j) % n; + auto k = (i + j) % scatterSize; scatter_access(k, 0) += 4.2; scatter_access_atomic(k, 1) += 2.0; scatter_access(k, 2) += 1.0; } - }; - Kokkos::parallel_for(policy, f, "scatter_view_test"); -#endif - Kokkos::Experimental::contribute(original_view, scatter_view); - scatter_view.reset_except(original_view); -#if defined( KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA ) - Kokkos::parallel_for(policy, f, "scatter_view_test"); -#endif - Kokkos::Experimental::contribute(original_view, scatter_view); - } -#if defined( KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA ) - Kokkos::fence(); - auto host_view = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), original_view); - Kokkos::fence(); - for (typename decltype(host_view)::size_type i = 0; i < host_view.extent(0); ++i) { - auto val0 = host_view(i, 0); - auto val1 = host_view(i, 1); - auto val2 = host_view(i, 2); - EXPECT_TRUE(std::fabs((val0 - 84.0) / 84.0) < 1e-15); - EXPECT_TRUE(std::fabs((val1 - 40.0) / 40.0) < 1e-15); - EXPECT_TRUE(std::fabs((val2 - 20.0) / 20.0) < 1e-15); - } -#endif - { - Kokkos::Experimental::ScatterView - < double*[3] - , Layout - , ExecSpace - , Kokkos::Experimental::ScatterSum - , duplication - , contribution - > - persistent_view("persistent", n); - auto result_view = persistent_view.subview(); - contribute(result_view, persistent_view); - } -} + } + + void validateResults(orig_view_type orig) { + auto host_view = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), orig); + Kokkos::fence(); + for (typename decltype(host_view)::size_type i = 0; i < host_view.extent(0); ++i) { + auto val0 = host_view(i, 0); + auto val1 = host_view(i, 1); + auto val2 = host_view(i, 2); + EXPECT_TRUE(std::fabs((val0 - 84.0) / 84.0) < 1e-14); + EXPECT_TRUE(std::fabs((val1 - 40.0) / 40.0) < 1e-14); + EXPECT_TRUE(std::fabs((val2 - 20.0) / 20.0) < 1e-14); + } + } +}; + + +template +struct test_scatter_view_impl_cls +{ +public: + + typedef Kokkos::Experimental::ScatterView + < double*[3] + , Layout + , ExecSpace + , Kokkos::Experimental::ScatterProd + , duplication + , contribution + > scatter_view_type; + + typedef Kokkos::View orig_view_type; + + + scatter_view_type scatter_view; + int scatterSize; + + test_scatter_view_impl_cls(const scatter_view_type& view){ + scatter_view = view; + scatterSize = 0; + } + + void initialize(orig_view_type orig) { + auto host_view = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), orig); + Kokkos::fence(); + for (typename decltype(host_view)::size_type i = 0; i < host_view.extent(0); ++i) { + host_view(i, 0) = 1.0; + host_view(i, 1) = 1.0; + host_view(i, 2) = 1.0; + } + Kokkos::fence(); + Kokkos::deep_copy(orig, host_view); + } + + void run_parallel(int n) { + scatterSize = n; + auto policy = Kokkos::RangePolicy(0, n); + Kokkos::parallel_for(policy, *this, "scatter_view_test: Prod"); + } + + KOKKOS_INLINE_FUNCTION + void operator()(int i) const { + auto scatter_access = scatter_view.access(); + auto scatter_access_atomic = scatter_view.template access(); + for (int j = 0; j < 4; ++j) { + auto k = (i + j) % scatterSize; + scatter_access(k, 0) *= 4.0; + scatter_access_atomic(k, 1) *= 2.0; + scatter_access(k, 2) *= 1.0; + } + } + + void validateResults(orig_view_type orig) { + auto host_view = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), orig); + Kokkos::fence(); + for (typename decltype(host_view)::size_type i = 0; i < host_view.extent(0); ++i) { + auto val0 = host_view(i, 0); + auto val1 = host_view(i, 1); + auto val2 = host_view(i, 2); + EXPECT_TRUE(std::fabs((val0 - 65536.0) / 65536.0) < 1e-14); + EXPECT_TRUE(std::fabs((val1 - 256.0) / 256.0) < 1e-14); + EXPECT_TRUE(std::fabs((val2 - 1.0) / 1.0) < 1e-14); + } + } +}; + + +template +struct test_scatter_view_impl_cls +{ +public: + + typedef Kokkos::Experimental::ScatterView + < double*[3] + , Layout + , ExecSpace + , Kokkos::Experimental::ScatterMin + , duplication + , contribution + > scatter_view_type; + + typedef Kokkos::View orig_view_type; + + + scatter_view_type scatter_view; + int scatterSize; + + test_scatter_view_impl_cls(const scatter_view_type& view){ + scatter_view = view; + scatterSize = 0; + } + + void initialize(orig_view_type orig) { + auto host_view = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), orig); + Kokkos::fence(); + for (typename decltype(host_view)::size_type i = 0; i < host_view.extent(0); ++i) { + host_view(i, 0) = 999999.0; + host_view(i, 1) = 999999.0; + host_view(i, 2) = 999999.0; + } + Kokkos::fence(); + Kokkos::deep_copy(orig, host_view); + } -template + void run_parallel(int n) { + scatterSize = n; + auto policy = Kokkos::RangePolicy(0, n); + Kokkos::parallel_for(policy, *this, "scatter_view_test: Prod"); + } + + KOKKOS_INLINE_FUNCTION + void operator()(int i) const { + auto scatter_access = scatter_view.access(); + auto scatter_access_atomic = scatter_view.template access(); + for (int j = 0; j < 4; ++j) { + auto k = (i + j) % scatterSize; + scatter_access(k, 0).update((double)(j+1)*4); + scatter_access_atomic(k, 1).update((double)(j+1)*2.0); + scatter_access(k, 2).update((double)(j+1)*1.0); + } + } + + void validateResults(orig_view_type orig) { + auto host_view = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), orig); + Kokkos::fence(); + for (typename decltype(host_view)::size_type i = 0; i < host_view.extent(0); ++i) { + auto val0 = host_view(i, 0); + auto val1 = host_view(i, 1); + auto val2 = host_view(i, 2); + EXPECT_TRUE(std::fabs((val0 - 4.0) / 4.0) < 1e-14); + EXPECT_TRUE(std::fabs((val1 - 2.0) / 2.0) < 1e-14); + EXPECT_TRUE(std::fabs((val2 - 1.0) / 1.0) < 1e-14); + } + } +}; + + +template +struct test_scatter_view_impl_cls +{ +public: + + typedef Kokkos::Experimental::ScatterView + < double*[3] + , Layout + , ExecSpace + , Kokkos::Experimental::ScatterMax + , duplication + , contribution + > scatter_view_type; + + typedef Kokkos::View orig_view_type; + + + scatter_view_type scatter_view; + int scatterSize; + + test_scatter_view_impl_cls(const scatter_view_type& view){ + scatter_view = view; + scatterSize = 0; + } + + void initialize(orig_view_type orig) { + auto host_view = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), orig); + Kokkos::fence(); + for (typename decltype(host_view)::size_type i = 0; i < host_view.extent(0); ++i) { + host_view(i, 0) = 0.0; + host_view(i, 1) = 0.0; + host_view(i, 2) = 0.0; + } + Kokkos::fence(); + Kokkos::deep_copy(orig, host_view); + } + + void run_parallel(int n) { + scatterSize = n; + auto policy = Kokkos::RangePolicy(0, n); + Kokkos::parallel_for(policy, *this, "scatter_view_test: Prod"); + } + + KOKKOS_INLINE_FUNCTION + void operator()(int i) const { + auto scatter_access = scatter_view.access(); + auto scatter_access_atomic = scatter_view.template access(); + for (int j = 0; j < 4; ++j) { + auto k = (i + j) % scatterSize; + scatter_access(k, 0).update((double)(j+1)*4); + scatter_access_atomic(k, 1).update((double)(j+1)*2.0); + scatter_access(k, 2).update((double)(j+1)*1.0); + } + } + + void validateResults(orig_view_type orig) { + auto host_view = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(), orig); + Kokkos::fence(); + for (typename decltype(host_view)::size_type i = 0; i < host_view.extent(0); ++i) { + auto val0 = host_view(i, 0); + auto val1 = host_view(i, 1); + auto val2 = host_view(i, 2); + EXPECT_TRUE(std::fabs((val0 - 16.0) / 16.0) < 1e-14); + EXPECT_TRUE(std::fabs((val1 - 8.0) / 8.0) < 1e-14); + EXPECT_TRUE(std::fabs((val2 - 4.0) / 4.0) < 1e-14); + } + } +}; + + + +template +struct test_scatter_view_config +{ + public: + typedef typename test_scatter_view_impl_cls::scatter_view_type scatter_view_def; + typedef typename test_scatter_view_impl_cls::orig_view_type orig_view_def; + + test_scatter_view_config() { + } + + void run_test(int n) + { + //Test creation via create_scatter_view + { + orig_view_def original_view("original_view", n); + scatter_view_def scatter_view = Kokkos::Experimental::create_scatter_view + < op + , duplication + , contribution + > (original_view); + + test_scatter_view_impl_cls scatter_view_test_impl(scatter_view); + scatter_view_test_impl.initialize(original_view); + scatter_view_test_impl.run_parallel(n); + + Kokkos::Experimental::contribute(original_view, scatter_view); + scatter_view.reset_except(original_view); + + scatter_view_test_impl.run_parallel(n); + + Kokkos::Experimental::contribute(original_view, scatter_view); + Kokkos::fence(); + + scatter_view_test_impl.validateResults(original_view); + + { + scatter_view_def persistent_view("persistent", n); + auto result_view = persistent_view.subview(); + contribute(result_view, persistent_view); + Kokkos::fence(); + } + } + //Test creation via constructor + { + orig_view_def original_view("original_view", n); + scatter_view_def scatter_view(original_view); + + test_scatter_view_impl_cls scatter_view_test_impl(scatter_view); + scatter_view_test_impl.initialize(original_view); + scatter_view_test_impl.run_parallel(n); + + Kokkos::Experimental::contribute(original_view, scatter_view); + scatter_view.reset_except(original_view); + + scatter_view_test_impl.run_parallel(n); + + Kokkos::Experimental::contribute(original_view, scatter_view); + Kokkos::fence(); + + scatter_view_test_impl.validateResults(original_view); + + { + scatter_view_def persistent_view("persistent", n); + auto result_view = persistent_view.subview(); + contribute(result_view, persistent_view); + Kokkos::fence(); + } + } + } + +}; + + +template struct TestDuplicatedScatterView { TestDuplicatedScatterView(int n) { + // ScatterSum test test_scatter_view_config(n); + Kokkos::Experimental::ScatterNonAtomic, + ScatterType> test_sv_right_config; + test_sv_right_config.run_test(n); + test_scatter_view_config test_sv_left_config; + test_sv_left_config.run_test(n); } }; #ifdef KOKKOS_ENABLE_CUDA // disable duplicated instantiation with CUDA until // UniqueToken can support it -template <> -struct TestDuplicatedScatterView { +template +struct TestDuplicatedScatterView { TestDuplicatedScatterView(int) { } }; @@ -129,14 +437,14 @@ struct TestDuplicatedScatterView { #ifdef KOKKOS_ENABLE_ROCM // disable duplicated instantiation with ROCm until // UniqueToken can support it -template <> -struct TestDuplicatedScatterView { +template +struct TestDuplicatedScatterView { TestDuplicatedScatterView(int) { } }; #endif -template +template void test_scatter_view(int n) { // all of these configurations should compile okay, but only some of them are @@ -149,29 +457,47 @@ void test_scatter_view(int n) if (unique_token.size() == 1) { test_scatter_view_config(n); + Kokkos::Experimental::ScatterNonAtomic, + ScatterType> test_sv_config; + test_sv_config.run_test(n); } #ifdef KOKKOS_ENABLE_SERIAL if (!std::is_same::value) { #endif test_scatter_view_config(n); + Kokkos::Experimental::ScatterAtomic, + ScatterType> test_sv_config; + test_sv_config.run_test(n); #ifdef KOKKOS_ENABLE_SERIAL } #endif - - TestDuplicatedScatterView duptest(n); + // with hundreds of threads we were running out of memory. + // limit (n) so that duplication doesn't exceed 8GB + constexpr std::size_t maximum_allowed_total_bytes = 8ull * 1024ull * 1024ull * 1024ull; + std::size_t const maximum_allowed_copy_bytes = maximum_allowed_total_bytes / std::size_t(unique_token.size()); + constexpr std::size_t bytes_per_value = sizeof(double) * 3; + std::size_t const maximum_allowed_copy_values = maximum_allowed_copy_bytes / bytes_per_value; + n = std::min(n, int(maximum_allowed_copy_values)); + TestDuplicatedScatterView duptest(n); } TEST_F( TEST_CATEGORY, scatterview) { #ifndef KOKKOS_ENABLE_ROCM - test_scatter_view(10); + test_scatter_view(10); + test_scatter_view(10); + test_scatter_view(10); + test_scatter_view(10); + // tests were timing out in DEBUG mode, reduce the amount of work #ifdef KOKKOS_ENABLE_DEBUG - test_scatter_view(100000); + int big_n = 100 * 1000; #else - test_scatter_view(10000000); + int big_n = 10 * 1000 * 1000; #endif + test_scatter_view(big_n); + test_scatter_view(big_n); + test_scatter_view(big_n); + test_scatter_view(big_n); #endif } diff --git a/lib/kokkos/containers/unit_tests/TestUnorderedMap.hpp b/lib/kokkos/containers/unit_tests/TestUnorderedMap.hpp index 426db1dbf0..2d34267df3 100644 --- a/lib/kokkos/containers/unit_tests/TestUnorderedMap.hpp +++ b/lib/kokkos/containers/unit_tests/TestUnorderedMap.hpp @@ -69,7 +69,7 @@ struct TestInsert void testit( bool rehash_on_fail = true ) { - execution_space::fence(); + execution_space().fence(); uint32_t failed_count = 0; do { @@ -82,7 +82,7 @@ struct TestInsert } } while (rehash_on_fail && failed_count > 0u); - execution_space::fence(); + execution_space().fence(); } @@ -122,9 +122,9 @@ struct TestInsert void testit() { - execution_space::fence(); + execution_space().fence(); Kokkos::parallel_for(m_num_erase, *this); - execution_space::fence(); + execution_space().fence(); } KOKKOS_INLINE_FUNCTION @@ -161,9 +161,9 @@ struct TestInsert void testit(value_type &errors) { - execution_space::execution_space::fence(); + execution_space().fence(); Kokkos::parallel_reduce(m_map.capacity(), *this, errors); - execution_space::execution_space::fence(); + execution_space().fence(); } KOKKOS_INLINE_FUNCTION @@ -247,7 +247,7 @@ void test_failed_insert( uint32_t num_nodes) map_type map(num_nodes); Impl::TestInsert test_insert(map, 2u*num_nodes, 1u); test_insert.testit(false /*don't rehash on fail*/); - Device::execution_space::fence(); + typename Device::execution_space().fence(); EXPECT_TRUE( map.failed_insert() ); } diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_BitSet.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_BitSet.cpp new file mode 100644 index 0000000000..cec24e00c7 --- /dev/null +++ b/lib/kokkos/containers/unit_tests/hpx/TestHPX_BitSet.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_Category.hpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_Category.hpp new file mode 100644 index 0000000000..358b42d1aa --- /dev/null +++ b/lib/kokkos/containers/unit_tests/hpx/TestHPX_Category.hpp @@ -0,0 +1,65 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_TEST_HPX_HPP +#define KOKKOS_TEST_HPX_HPP + +#include + +namespace Test { + +class hpx : public ::testing::Test { +protected: + static void SetUpTestCase() { + } + + static void TearDownTestCase() { + } +}; + +} // namespace Test + +#define TEST_CATEGORY hpx +#define TEST_EXECSPACE Kokkos::Experimental::HPX + +#endif diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_DualView.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_DualView.cpp new file mode 100644 index 0000000000..80af9dc33a --- /dev/null +++ b/lib/kokkos/containers/unit_tests/hpx/TestHPX_DualView.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_generic.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_generic.cpp new file mode 100644 index 0000000000..95d49c8acf --- /dev/null +++ b/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_generic.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_rank12345.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_rank12345.cpp new file mode 100644 index 0000000000..72e0bc6616 --- /dev/null +++ b/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_rank12345.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_rank67.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_rank67.cpp new file mode 100644 index 0000000000..5a104f0de2 --- /dev/null +++ b/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynRankViewAPI_rank67.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynamicView.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynamicView.cpp new file mode 100644 index 0000000000..718b322684 --- /dev/null +++ b/lib/kokkos/containers/unit_tests/hpx/TestHPX_DynamicView.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_ErrorReporter.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_ErrorReporter.cpp new file mode 100644 index 0000000000..ea819ae343 --- /dev/null +++ b/lib/kokkos/containers/unit_tests/hpx/TestHPX_ErrorReporter.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_OffsetView.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_OffsetView.cpp new file mode 100644 index 0000000000..4d3684923f --- /dev/null +++ b/lib/kokkos/containers/unit_tests/hpx/TestHPX_OffsetView.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_ScatterView.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_ScatterView.cpp new file mode 100644 index 0000000000..6a871cc121 --- /dev/null +++ b/lib/kokkos/containers/unit_tests/hpx/TestHPX_ScatterView.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_StaticCrsGraph.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_StaticCrsGraph.cpp new file mode 100644 index 0000000000..fbb70a762b --- /dev/null +++ b/lib/kokkos/containers/unit_tests/hpx/TestHPX_StaticCrsGraph.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_UnorderedMap.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_UnorderedMap.cpp new file mode 100644 index 0000000000..7e7aad309f --- /dev/null +++ b/lib/kokkos/containers/unit_tests/hpx/TestHPX_UnorderedMap.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_Vector.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_Vector.cpp new file mode 100644 index 0000000000..5fb3664197 --- /dev/null +++ b/lib/kokkos/containers/unit_tests/hpx/TestHPX_Vector.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/containers/unit_tests/hpx/TestHPX_ViewCtorPropEmbeddedDim.cpp b/lib/kokkos/containers/unit_tests/hpx/TestHPX_ViewCtorPropEmbeddedDim.cpp new file mode 100644 index 0000000000..fb9c263c83 --- /dev/null +++ b/lib/kokkos/containers/unit_tests/hpx/TestHPX_ViewCtorPropEmbeddedDim.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/cmake/Dependencies.cmake b/lib/kokkos/core/cmake/Dependencies.cmake index 8d9872725e..9ad7660bdf 100644 --- a/lib/kokkos/core/cmake/Dependencies.cmake +++ b/lib/kokkos/core/cmake/Dependencies.cmake @@ -1,5 +1,5 @@ TRIBITS_PACKAGE_DEFINE_DEPENDENCIES( - LIB_OPTIONAL_TPLS Pthread CUDA HWLOC QTHREADS DLlib + LIB_OPTIONAL_TPLS Pthread CUDA HWLOC QTHREADS DLlib HPX TEST_OPTIONAL_TPLS CUSPARSE ) diff --git a/lib/kokkos/core/perf_test/CMakeLists.txt b/lib/kokkos/core/perf_test/CMakeLists.txt index d9c0f89413..d92462a357 100644 --- a/lib/kokkos/core/perf_test/CMakeLists.txt +++ b/lib/kokkos/core/perf_test/CMakeLists.txt @@ -47,6 +47,7 @@ TRIBITS_ADD_EXECUTABLE( PerformanceTest_TaskDAG SOURCES test_taskdag.cpp COMM serial mpi + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} ) TRIBITS_ADD_TEST( diff --git a/lib/kokkos/core/perf_test/Makefile b/lib/kokkos/core/perf_test/Makefile index a0ce1e2c31..ca98ca6dde 100644 --- a/lib/kokkos/core/perf_test/Makefile +++ b/lib/kokkos/core/perf_test/Makefile @@ -30,6 +30,7 @@ TARGETS = # OBJ_PERF = PerfTestMain.o gtest-all.o +OBJ_PERF += PerfTest_ExecSpacePartitioning.o OBJ_PERF += PerfTestGramSchmidt.o OBJ_PERF += PerfTestHexGrad.o OBJ_PERF += PerfTest_CustomReduction.o diff --git a/lib/kokkos/core/perf_test/PerfTestBlasKernels.hpp b/lib/kokkos/core/perf_test/PerfTestBlasKernels.hpp index bb2fb5fce5..ff9bf5a91b 100644 --- a/lib/kokkos/core/perf_test/PerfTestBlasKernels.hpp +++ b/lib/kokkos/core/perf_test/PerfTestBlasKernels.hpp @@ -44,6 +44,8 @@ #ifndef KOKKOS_BLAS_KERNELS_HPP #define KOKKOS_BLAS_KERNELS_HPP +#include + namespace Kokkos { template< class ConstVectorType , @@ -123,14 +125,9 @@ struct Dot { typedef typename Device::execution_space execution_space ; - typedef typename - Impl::StaticAssertSame< Impl::unsigned_< 1 > , - Impl::unsigned_< Type::Rank > >::type ok_rank ; - + static_assert( static_cast(Type::Rank) == static_cast(1), + "Dot static_assert Fail: Rank != 1"); -/* typedef typename - Impl::StaticAssertSame< execution_space , - typename Type::execution_space >::type ok_device ;*/ typedef double value_type ; @@ -164,13 +161,8 @@ struct DotSingle { typedef typename Device::execution_space execution_space ; - typedef typename - Impl::StaticAssertSame< Impl::unsigned_< 1 > , - Impl::unsigned_< Type::Rank > >::type ok_rank ; - -/* typedef typename - Impl::StaticAssertSame< execution_space , - typename Type::execution_space >::type ok_device ;*/ + static_assert( static_cast(Type::Rank) == static_cast(1), + "DotSingle static_assert Fail: Rank != 1"); typedef double value_type ; @@ -204,25 +196,11 @@ struct Scale { typedef typename Device::execution_space execution_space ; -/* typedef typename - Impl::StaticAssertSame< execution_space , - typename ScalarType::execution_space >::type - ok_scalar_device ; - - typedef typename - Impl::StaticAssertSame< execution_space , - typename VectorType::execution_space >::type - ok_vector_device ;*/ + static_assert( static_cast(ScalarType::Rank) == static_cast(0), + "Scale static_assert Fail: ScalarType::Rank != 0"); - typedef typename - Impl::StaticAssertSame< Impl::unsigned_< 0 > , - Impl::unsigned_< ScalarType::Rank > >::type - ok_scalar_rank ; - - typedef typename - Impl::StaticAssertSame< Impl::unsigned_< 1 > , - Impl::unsigned_< VectorType::Rank > >::type - ok_vector_rank ; + static_assert( static_cast(VectorType::Rank) == static_cast(1), + "Scale static_assert Fail: VectorType::Rank != 1"); #if 1 typename ScalarType::const_type alpha ; @@ -251,35 +229,14 @@ struct AXPBY { typedef typename Device::execution_space execution_space ; -/* typedef typename - Impl::StaticAssertSame< execution_space , - typename ScalarType::execution_space >::type - ok_scalar_device ; - - typedef typename - Impl::StaticAssertSame< execution_space , - typename ConstVectorType::execution_space >::type - ok_const_vector_device ; - - typedef typename - Impl::StaticAssertSame< execution_space , - typename VectorType::execution_space >::type - ok_vector_device ;*/ - - typedef typename - Impl::StaticAssertSame< Impl::unsigned_< 0 > , - Impl::unsigned_< ScalarType::Rank > >::type - ok_scalar_rank ; - - typedef typename - Impl::StaticAssertSame< Impl::unsigned_< 1 > , - Impl::unsigned_< ConstVectorType::Rank > >::type - ok_const_vector_rank ; - - typedef typename - Impl::StaticAssertSame< Impl::unsigned_< 1 > , - Impl::unsigned_< VectorType::Rank > >::type - ok_vector_rank ; + static_assert( static_cast(ScalarType::Rank) == static_cast(0), + "AXPBY static_assert Fail: ScalarType::Rank != 0"); + + static_assert( static_cast(ConstVectorType::Rank) == static_cast(1), + "AXPBY static_assert Fail: ConstVectorType::Rank != 1"); + + static_assert( static_cast(VectorType::Rank) == static_cast(1), + "AXPBY static_assert Fail: VectorType::Rank != 1"); #if 1 typename ScalarType::const_type alpha , beta ; diff --git a/lib/kokkos/core/perf_test/PerfTestGramSchmidt.cpp b/lib/kokkos/core/perf_test/PerfTestGramSchmidt.cpp index b169b02903..d812b16d85 100644 --- a/lib/kokkos/core/perf_test/PerfTestGramSchmidt.cpp +++ b/lib/kokkos/core/perf_test/PerfTestGramSchmidt.cpp @@ -183,7 +183,7 @@ struct ModifiedGramSchmidt } } - execution_space::fence(); + execution_space().fence(); return timer.seconds(); } diff --git a/lib/kokkos/core/perf_test/PerfTestHexGrad.cpp b/lib/kokkos/core/perf_test/PerfTestHexGrad.cpp index b228dd2e2e..03285a375c 100644 --- a/lib/kokkos/core/perf_test/PerfTestHexGrad.cpp +++ b/lib/kokkos/core/perf_test/PerfTestHexGrad.cpp @@ -253,12 +253,12 @@ struct HexGrad double dt_min = 0 ; Kokkos::parallel_for( count , Init( coord ) ); - execution_space::fence(); + execution_space().fence(); for ( int i = 0 ; i < iter ; ++i ) { Kokkos::Timer timer ; Kokkos::parallel_for( count , HexGrad( coord , grad ) ); - execution_space::fence(); + execution_space().fence(); const double dt = timer.seconds(); if ( 0 == i ) dt_min = dt ; else dt_min = dt < dt_min ? dt : dt_min ; diff --git a/lib/kokkos/core/perf_test/PerfTestMDRange.hpp b/lib/kokkos/core/perf_test/PerfTestMDRange.hpp index 51affa6a2e..f433451f78 100644 --- a/lib/kokkos/core/perf_test/PerfTestMDRange.hpp +++ b/lib/kokkos/core/perf_test/PerfTestMDRange.hpp @@ -125,15 +125,15 @@ struct MultiDimRangePerf3D Kokkos::MDRangePolicy, execution_space > policy(point_type{{0,0,0}},point_type{{icount,jcount,kcount}},tile_type{{Ti,Tj,Tk}} ); Kokkos::parallel_for( policy_initA, Init(Atest, icount, jcount, kcount) ); - execution_space::fence(); + execution_space().fence(); Kokkos::parallel_for( policy_initB, Init(Btest, icount+2, jcount+2, kcount+2) ); - execution_space::fence(); + execution_space().fence(); for (int i = 0; i < iter; ++i) { Kokkos::Timer timer; Kokkos::parallel_for( policy, FunctorType(Atest, Btest, icount, jcount, kcount) ); - execution_space::fence(); + execution_space().fence(); const double dt = timer.seconds(); if ( 0 == i ) dt_min = dt ; else dt_min = dt < dt_min ? dt : dt_min ; @@ -189,15 +189,15 @@ struct MultiDimRangePerf3D Kokkos::MDRangePolicy, execution_space > policy({{0,0,0}},{{icount,jcount,kcount}},{{Ti,Tj,Tk}} ); Kokkos::parallel_for( policy_initA, Init(Atest, icount, jcount, kcount) ); - execution_space::fence(); + execution_space().fence(); Kokkos::parallel_for( policy_initB, Init(Btest, icount+2, jcount+2, kcount+2) ); - execution_space::fence(); + execution_space().fence(); for (int i = 0; i < iter; ++i) { Kokkos::Timer timer; Kokkos::parallel_for( policy, FunctorType(Atest, Btest, icount, jcount, kcount) ); - execution_space::fence(); + execution_space().fence(); const double dt = timer.seconds(); if ( 0 == i ) dt_min = dt ; else dt_min = dt < dt_min ? dt : dt_min ; @@ -368,15 +368,15 @@ struct RangePolicyCollapseTwo double dt_min = 0; Kokkos::parallel_for( policy, Init(Atest,icount,jcount,kcount) ); - execution_space::fence(); + execution_space().fence(); Kokkos::parallel_for( policy_initB, Init(Btest,icount+2,jcount+2,kcount+2) ); - execution_space::fence(); + execution_space().fence(); for (int i = 0; i < iter; ++i) { Kokkos::Timer timer; Kokkos::parallel_for(policy, FunctorType(Atest, Btest, icount, jcount, kcount)); - execution_space::fence(); + execution_space().fence(); const double dt = timer.seconds(); if ( 0 == i ) dt_min = dt ; else dt_min = dt < dt_min ? dt : dt_min ; @@ -513,15 +513,15 @@ struct RangePolicyCollapseAll double dt_min = 0; Kokkos::parallel_for( policy, Init(Atest,icount,jcount,kcount) ); - execution_space::fence(); + execution_space().fence(); Kokkos::parallel_for( policy_initB, Init(Btest,icount+2,jcount+2,kcount+2) ); - execution_space::fence(); + execution_space().fence(); for (int i = 0; i < iter; ++i) { Kokkos::Timer timer; Kokkos::parallel_for(policy, FunctorType(Atest, Btest, icount, jcount, kcount)); - execution_space::fence(); + execution_space().fence(); const double dt = timer.seconds(); if ( 0 == i ) dt_min = dt ; else dt_min = dt < dt_min ? dt : dt_min ; diff --git a/lib/kokkos/core/perf_test/PerfTest_ExecSpacePartitioning.cpp b/lib/kokkos/core/perf_test/PerfTest_ExecSpacePartitioning.cpp new file mode 100644 index 0000000000..2fc889beed --- /dev/null +++ b/lib/kokkos/core/perf_test/PerfTest_ExecSpacePartitioning.cpp @@ -0,0 +1,564 @@ +#include +#include +#include + + +namespace Test { + +namespace { + template + struct SpaceInstance { + static ExecSpace create() { + return ExecSpace(); + } + static void destroy(ExecSpace&) { + } + static bool overlap() { + return false; + } + }; + + #ifndef KOKKOS_ENABLE_DEBUG + #ifdef KOKKOS_ENABLE_CUDA + template<> + struct SpaceInstance { + static Kokkos::Cuda create() { + cudaStream_t stream; + cudaStreamCreate(&stream); + return Kokkos::Cuda(stream); + } + static void destroy(Kokkos::Cuda& space) { + cudaStream_t stream = space.cuda_stream(); + cudaStreamDestroy(stream); + } + static bool overlap() { + bool value = true; + auto local_rank_str = std::getenv("CUDA_LAUNCH_BLOCKING"); + if(local_rank_str) { + value = (std::atoi(local_rank_str)==0); + } + return value; + } + }; + #endif + #endif +} + +struct FunctorRange { + int M,R; + Kokkos::View a; + FunctorRange(int M_, int R_, Kokkos::View a_):M(M_),R(R_),a(a_){} + KOKKOS_INLINE_FUNCTION + void operator() (const int i) const { + for(int r=0;r a; + FunctorMDRange(int M_, int R_, Kokkos::View a_):M(M_),R(R_),a(a_){} + KOKKOS_INLINE_FUNCTION + void operator() (const int i, const int) const { + for(int j=0;j a; + FunctorTeam(int M_, int R_, Kokkos::View a_):M(M_),R(R_),a(a_){} + KOKKOS_INLINE_FUNCTION + void operator() (const Kokkos::TeamPolicy::member_type& team) const { + int i = team.league_rank(); + for(int r=0;r a; + FunctorRangeReduce(int M_, int R_, Kokkos::View a_):M(M_),R(R_),a(a_){} + KOKKOS_INLINE_FUNCTION + void operator() (const int i, double& tmp) const { + for(int r=0;r a; + FunctorMDRangeReduce(int M_, int R_, Kokkos::View a_):M(M_),R(R_),a(a_){} + KOKKOS_INLINE_FUNCTION + void operator() (const int i, const int, double& tmp) const { + for(int j=0;j a; + FunctorTeamReduce(int M_, int R_, Kokkos::View a_):M(M_),R(R_),a(a_){} + KOKKOS_INLINE_FUNCTION + void operator() (const Kokkos::TeamPolicy::member_type& team, double& tmp) const { + int i = team.league_rank(); + for(int r=0;r::create(); + TEST_EXECSPACE space2 = SpaceInstance::create(); + + Kokkos::View a("A",N,M); + FunctorRange f(M,R,a); + FunctorRangeReduce fr(M,R,a); + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel0", + Kokkos::RangePolicy(0,N), FunctorRange(M,R,a)); + + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel1", + Kokkos::Experimental::require( + Kokkos::RangePolicy(space1,0,N), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , f); + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel2", + Kokkos::Experimental::require( + Kokkos::RangePolicy(space2,0,N), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , f); + Kokkos::fence(); + + Kokkos::Timer timer; + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel3", + Kokkos::Experimental::require( + Kokkos::RangePolicy(space,0,N), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , f); + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel4", + Kokkos::Experimental::require( + Kokkos::RangePolicy(space,0,N), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , f); + Kokkos::fence(); + + timer.reset(); + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel5", + Kokkos::Experimental::require( + Kokkos::RangePolicy(space1,0,N), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , FunctorRange(M,R,a)); + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel6", + Kokkos::Experimental::require( + Kokkos::RangePolicy(space2,0,N), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , FunctorRange(M,R,a)); + Kokkos::fence(); + double time_overlap = timer.seconds(); + + timer.reset(); + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel7", + Kokkos::Experimental::require( + Kokkos::RangePolicy(space,0,N), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , f); + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel8", + Kokkos::Experimental::require( + Kokkos::RangePolicy(space,0,N), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , f); + Kokkos::fence(); + double time_end = timer.seconds(); + + if(SpaceInstance::overlap()) { + ASSERT_TRUE( (time_end > 1.5*time_overlap) ); + } + printf("Time RangePolicy: NonOverlap: %lf Time Overlap: %lf\n",time_end,time_overlap); + + Kokkos::View result("result"); + Kokkos::View result1("result1"); + Kokkos::View result2("result2"); + Kokkos::View h_result("h_result"); + Kokkos::View h_result1("h_result1"); + Kokkos::View h_result2("h_result2"); + + timer.reset(); + Kokkos::parallel_reduce("default_exec::overlap_range_policy::kernel_reduce", + Kokkos::Experimental::require( + Kokkos::RangePolicy(space,0,N), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , fr, result); + Kokkos::fence(); + double time_fenced = timer.seconds(); + Kokkos::deep_copy(h_result,result); + + timer.reset(); + Kokkos::parallel_reduce("default_exec::overlap_range_policy::kernel_reduce", + Kokkos::Experimental::require( + Kokkos::RangePolicy(space,0,N), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , fr, result); + double time_not_fenced = timer.seconds(); + Kokkos::fence(); + if(SpaceInstance::overlap()) { + ASSERT_TRUE(time_fenced>2.0*time_not_fenced); + } + + timer.reset(); + Kokkos::parallel_reduce("default_exec::overlap_range_policy::kernel_reduce", + Kokkos::Experimental::require( + Kokkos::RangePolicy(space,0,N), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , fr, result); + Kokkos::parallel_reduce("default_exec::overlap_range_policy::kernel_reduce", + Kokkos::Experimental::require( + Kokkos::RangePolicy(space,0,N), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , fr, result); + Kokkos::fence(); + double time_no_overlapped_reduce = timer.seconds(); + + timer.reset(); + Kokkos::parallel_reduce("default_exec::overlap_range_policy::kernel_reduce", + Kokkos::Experimental::require( + Kokkos::RangePolicy(space1,0,N), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , fr, result1); + Kokkos::parallel_reduce("default_exec::overlap_range_policy::kernel_reduce", + Kokkos::Experimental::require( + Kokkos::RangePolicy(space2,0,N), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , fr, result2); + Kokkos::fence(); + double time_overlapped_reduce = timer.seconds(); + + Kokkos::deep_copy(h_result2,result2); + Kokkos::deep_copy(h_result1,result1); + + ASSERT_EQ(h_result1(),h_result()); + ASSERT_EQ(h_result2(),h_result()); + + if(SpaceInstance::overlap()) { + ASSERT_TRUE(time_overlapped_reduce < 1.5*time_no_overlapped_reduce); + } + printf("Time RangePolicy Reduce: NonOverlap: %lf Time Overlap: %lf\n",time_no_overlapped_reduce,time_overlapped_reduce); + SpaceInstance::destroy(space1); + SpaceInstance::destroy(space2); +} + +TEST_F( default_exec, overlap_mdrange_policy ) { + int N = 200; + int M = 10000; + int R = 10; + + TEST_EXECSPACE space; + TEST_EXECSPACE space1 = SpaceInstance::create(); + TEST_EXECSPACE space2 = SpaceInstance::create(); + + Kokkos::View a("A",N,M); + FunctorMDRange f(M,R,a); + FunctorMDRangeReduce fr(M,R,a); + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel0", + Kokkos::Experimental::require( + Kokkos::MDRangePolicy>({0,0},{N,R}), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , FunctorMDRange(M,R,a)); + + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel1", + Kokkos::Experimental::require( + Kokkos::MDRangePolicy>(space1,{0,0},{N,R}), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , f); + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel2", + Kokkos::Experimental::require( + Kokkos::MDRangePolicy>(space2,{0,0},{N,R}), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , f); + Kokkos::fence(); + + Kokkos::Timer timer; + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel3", + Kokkos::Experimental::require( + Kokkos::MDRangePolicy>(space,{0,0},{N,R}), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , f); + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel4", + Kokkos::Experimental::require( + Kokkos::MDRangePolicy>(space,{0,0},{N,R}), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , f); + Kokkos::fence(); + + timer.reset(); + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel5", + Kokkos::Experimental::require( + Kokkos::MDRangePolicy>(space1,{0,0},{N,R}), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , FunctorMDRange(M,R,a)); + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel6", + Kokkos::Experimental::require( + Kokkos::MDRangePolicy>(space2,{0,0},{N,R}), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , FunctorMDRange(M,R,a)); + Kokkos::fence(); + double time_overlap = timer.seconds(); + + timer.reset(); + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel7", + Kokkos::Experimental::require( + Kokkos::MDRangePolicy>(space,{0,0},{N,R}), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , f); + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel8", + Kokkos::Experimental::require( + Kokkos::MDRangePolicy>(space,{0,0},{N,R}), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , f); + Kokkos::fence(); + double time_end = timer.seconds(); + + if(SpaceInstance::overlap()) { + ASSERT_TRUE( (time_end > 1.5*time_overlap) ); + } + printf("Time MDRangePolicy: NonOverlap: %lf Time Overlap: %lf\n",time_end,time_overlap); + + Kokkos::View result("result"); + Kokkos::View result1("result1"); + Kokkos::View result2("result2"); + Kokkos::View h_result("h_result"); + Kokkos::View h_result1("h_result1"); + Kokkos::View h_result2("h_result2"); + + timer.reset(); + Kokkos::parallel_reduce("default_exec::overlap_mdrange_policy::kernel_reduce", + Kokkos::Experimental::require( + Kokkos::MDRangePolicy>(space,{0,0},{N,R}), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , fr, result); + Kokkos::fence(); + double time_fenced = timer.seconds(); + Kokkos::deep_copy(h_result,result); + + timer.reset(); + Kokkos::parallel_reduce("default_exec::overlap_mdrange_policy::kernel_reduce", + Kokkos::Experimental::require( + Kokkos::MDRangePolicy>(space,{0,0},{N,R}), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , fr, result); + double time_not_fenced = timer.seconds(); + Kokkos::fence(); + if(SpaceInstance::overlap()) { + ASSERT_TRUE(time_fenced>2.0*time_not_fenced); + } + + timer.reset(); + Kokkos::parallel_reduce("default_exec::overlap_mdrange_policy::kernel_reduce", + Kokkos::Experimental::require( + Kokkos::MDRangePolicy>(space,{0,0},{N,R}), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , fr, result); + Kokkos::parallel_reduce("default_exec::overlap_mdrange_policy::kernel_reduce", + Kokkos::Experimental::require( + Kokkos::MDRangePolicy>(space,{0,0},{N,R}), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , fr, result); + Kokkos::fence(); + double time_no_overlapped_reduce = timer.seconds(); + + timer.reset(); + Kokkos::parallel_reduce("default_exec::overlap_mdrange_policy::kernel_reduce", + Kokkos::Experimental::require( + Kokkos::MDRangePolicy>(space1,{0,0},{N,R}), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , fr, result1); + Kokkos::parallel_reduce("default_exec::overlap_mdrange_policy::kernel_reduce", + Kokkos::Experimental::require( + Kokkos::MDRangePolicy>(space2,{0,0},{N,R}), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , fr, result2); + Kokkos::fence(); + double time_overlapped_reduce = timer.seconds(); + + Kokkos::deep_copy(h_result2,result2); + Kokkos::deep_copy(h_result1,result1); + + ASSERT_EQ(h_result1(),h_result()); + ASSERT_EQ(h_result2(),h_result()); + + if(SpaceInstance::overlap()) { + ASSERT_TRUE(time_overlapped_reduce < 1.5*time_no_overlapped_reduce); + } + printf("Time MDRangePolicy Reduce: NonOverlap: %lf Time Overlap: %lf\n",time_no_overlapped_reduce,time_overlapped_reduce); + SpaceInstance::destroy(space2); + SpaceInstance::destroy(space1); + +} + +TEST_F( default_exec, overlap_team_policy ) { + int N = 20; + int M = 1000000; + int R = 10; + + TEST_EXECSPACE space; + TEST_EXECSPACE space1 = SpaceInstance::create(); + TEST_EXECSPACE space2 = SpaceInstance::create(); + + Kokkos::View a("A",N,M); + FunctorTeam f(M,R,a); + FunctorTeamReduce fr(M,R,a); + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel0", + Kokkos::Experimental::require( + Kokkos::TeamPolicy(N,Kokkos::AUTO), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , FunctorTeam(M,R,a)); + + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel1", + Kokkos::Experimental::require( + Kokkos::TeamPolicy(space1,N,Kokkos::AUTO), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , f); + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel2", + Kokkos::Experimental::require( + Kokkos::TeamPolicy(space2,N,Kokkos::AUTO), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , f); + Kokkos::fence(); + + Kokkos::Timer timer; + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel3", + Kokkos::Experimental::require( + Kokkos::TeamPolicy(space,N,Kokkos::AUTO), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , f); + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel4", + Kokkos::Experimental::require( + Kokkos::TeamPolicy(space,N,Kokkos::AUTO), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , f); + Kokkos::fence(); + + timer.reset(); + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel5", + Kokkos::Experimental::require( + Kokkos::TeamPolicy(space1,N,Kokkos::AUTO), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , FunctorTeam(M,R,a)); + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel6", + Kokkos::Experimental::require( + Kokkos::TeamPolicy(space2,N,Kokkos::AUTO), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , FunctorTeam(M,R,a)); + Kokkos::fence(); + double time_overlap = timer.seconds(); + + timer.reset(); + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel7", + Kokkos::Experimental::require( + Kokkos::TeamPolicy(space,N,Kokkos::AUTO), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , f); + Kokkos::parallel_for("default_exec::overlap_range_policy::kernel8", + Kokkos::Experimental::require( + Kokkos::TeamPolicy(space,N,Kokkos::AUTO), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , f); + Kokkos::fence(); + double time_end = timer.seconds(); + + if(SpaceInstance::overlap()) { + ASSERT_TRUE( (time_end > 1.5*time_overlap) ); + } + printf("Time TeamPolicy: NonOverlap: %lf Time Overlap: %lf\n",time_end,time_overlap); + + Kokkos::View result("result"); + Kokkos::View result1("result1"); + Kokkos::View result2("result2"); + Kokkos::View h_result("h_result"); + Kokkos::View h_result1("h_result1"); + Kokkos::View h_result2("h_result2"); + + timer.reset(); + Kokkos::parallel_reduce("default_exec::overlap_team_policy::kernel_reduce", + Kokkos::Experimental::require( + Kokkos::TeamPolicy(space,N,Kokkos::AUTO), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , fr, result); + Kokkos::fence(); + double time_fenced = timer.seconds(); + Kokkos::deep_copy(h_result,result); + + timer.reset(); + Kokkos::parallel_reduce("default_exec::overlap_team_policy::kernel_reduce", + Kokkos::Experimental::require( + Kokkos::TeamPolicy(space,N,Kokkos::AUTO), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , fr, result); + double time_not_fenced = timer.seconds(); + Kokkos::fence(); + if(SpaceInstance::overlap()) { + ASSERT_TRUE(time_fenced>2.0*time_not_fenced); + } + timer.reset(); + Kokkos::parallel_reduce("default_exec::overlap_team_policy::kernel_reduce", + Kokkos::Experimental::require( + Kokkos::TeamPolicy(space,N,Kokkos::AUTO), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , fr, result); + Kokkos::parallel_reduce("default_exec::overlap_team_policy::kernel_reduce", + Kokkos::Experimental::require( + Kokkos::TeamPolicy(space,N,Kokkos::AUTO), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , fr, result); + Kokkos::fence(); + double time_no_overlapped_reduce = timer.seconds(); + + timer.reset(); + Kokkos::parallel_reduce("default_exec::overlap_team_policy::kernel_reduce", + Kokkos::Experimental::require( + Kokkos::TeamPolicy(space1,N,Kokkos::AUTO), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , fr, result1); + Kokkos::parallel_reduce("default_exec::overlap_team_policy::kernel_reduce", + Kokkos::Experimental::require( + Kokkos::TeamPolicy(space2,N,Kokkos::AUTO), + Kokkos::Experimental::WorkItemProperty::HintLightWeight) + , fr, result2); + Kokkos::fence(); + double time_overlapped_reduce = timer.seconds(); + + Kokkos::deep_copy(h_result2,result2); + Kokkos::deep_copy(h_result1,result1); + + ASSERT_EQ(h_result1(),h_result()); + ASSERT_EQ(h_result2(),h_result()); + + if(SpaceInstance::overlap()) { + ASSERT_TRUE(time_overlapped_reduce < 1.5*time_no_overlapped_reduce); + } + printf("Time TeamPolicy Reduce: NonOverlap: %lf Time Overlap: %lf\n",time_no_overlapped_reduce,time_overlapped_reduce); + SpaceInstance::destroy(space1); + SpaceInstance::destroy(space2); +} +} diff --git a/lib/kokkos/core/perf_test/PerfTest_ViewAllocate.cpp b/lib/kokkos/core/perf_test/PerfTest_ViewAllocate.cpp index 7d64591d9f..685194c150 100644 --- a/lib/kokkos/core/perf_test/PerfTest_ViewAllocate.cpp +++ b/lib/kokkos/core/perf_test/PerfTest_ViewAllocate.cpp @@ -121,6 +121,7 @@ void run_allocateview_tests(int N, int R) { Kokkos::parallel_for(N8, KOKKOS_LAMBDA (const int& i) { a_ptr[i] = 0.0; }); + Kokkos::fence(); Kokkos::kokkos_free(a_ptr); } time_raw = timer.seconds()/R; diff --git a/lib/kokkos/core/perf_test/PerfTest_ViewCopy.hpp b/lib/kokkos/core/perf_test/PerfTest_ViewCopy.hpp index 3f46187957..eff31c69bb 100644 --- a/lib/kokkos/core/perf_test/PerfTest_ViewCopy.hpp +++ b/lib/kokkos/core/perf_test/PerfTest_ViewCopy.hpp @@ -95,6 +95,7 @@ void run_deepcopyview_tests123(int N, int R) { a_ptr[i] = b_ptr[i]; }); } + Kokkos::fence(); time_raw = timer.seconds()/R; } #endif @@ -135,6 +136,7 @@ void run_deepcopyview_tests45(int N, int R) { a_ptr[i] = b_ptr[i]; }); } + Kokkos::fence(); time_raw = timer.seconds()/R; } #endif @@ -169,6 +171,7 @@ void run_deepcopyview_tests6(int N, int R) { a_ptr[i] = b_ptr[i]; }); } + Kokkos::fence(); time_raw = timer.seconds()/R; } #endif @@ -202,6 +205,7 @@ void run_deepcopyview_tests7(int N, int R) { a_ptr[i] = b_ptr[i]; }); } + Kokkos::fence(); time_raw = timer.seconds()/R; } #endif @@ -235,6 +239,7 @@ void run_deepcopyview_tests8(int N, int R) { a_ptr[i] = b_ptr[i]; }); } + Kokkos::fence(); time_raw = timer.seconds()/R; } #endif diff --git a/lib/kokkos/core/perf_test/PerfTest_ViewFill.hpp b/lib/kokkos/core/perf_test/PerfTest_ViewFill.hpp index c50d13d1ed..b17356f0c8 100644 --- a/lib/kokkos/core/perf_test/PerfTest_ViewFill.hpp +++ b/lib/kokkos/core/perf_test/PerfTest_ViewFill.hpp @@ -90,6 +90,7 @@ void run_fillview_tests123(int N, int R) { a_ptr[i] = 1.1; }); } + Kokkos::fence(); time_raw = timer.seconds()/R; } #endif @@ -126,6 +127,7 @@ void run_fillview_tests45(int N, int R) { a_ptr[i] = 1.1; }); } + Kokkos::fence(); time_raw = timer.seconds()/R; } #endif @@ -157,6 +159,7 @@ void run_fillview_tests6(int N, int R) { a_ptr[i] = 1.1; }); } + Kokkos::fence(); time_raw = timer.seconds()/R; } #endif @@ -187,6 +190,7 @@ void run_fillview_tests7(int N, int R) { a_ptr[i] = 1.1; }); } + Kokkos::fence(); time_raw = timer.seconds()/R; } #endif @@ -217,6 +221,7 @@ void run_fillview_tests8(int N, int R) { a_ptr[i] = 1.1; }); } + Kokkos::fence(); time_raw = timer.seconds()/R; } #endif diff --git a/lib/kokkos/core/perf_test/PerfTest_ViewResize.hpp b/lib/kokkos/core/perf_test/PerfTest_ViewResize.hpp index 2720f4855c..b5019b467a 100644 --- a/lib/kokkos/core/perf_test/PerfTest_ViewResize.hpp +++ b/lib/kokkos/core/perf_test/PerfTest_ViewResize.hpp @@ -95,7 +95,9 @@ void run_resizeview_tests123(int N, int R) { Kokkos::parallel_for(N8, KOKKOS_LAMBDA (const int& i) { a1_ptr[i] = a_ptr[i]; }); + Kokkos::fence(); } + Kokkos::fence(); time_raw = timer.seconds()/R; } #endif @@ -143,7 +145,9 @@ void run_resizeview_tests45(int N, int R) { Kokkos::parallel_for(N8, KOKKOS_LAMBDA (const int& i) { a1_ptr[i] = a_ptr[i]; }); + Kokkos::fence(); } + Kokkos::fence(); time_raw = timer.seconds()/R; } #endif @@ -181,7 +185,9 @@ void run_resizeview_tests6(int N, int R) { Kokkos::parallel_for(N8, KOKKOS_LAMBDA (const int& i) { a1_ptr[i] = a_ptr[i]; }); + Kokkos::fence(); } + Kokkos::fence(); time_raw = timer.seconds()/R; } #endif @@ -218,7 +224,9 @@ void run_resizeview_tests7(int N, int R) { Kokkos::parallel_for(N8, KOKKOS_LAMBDA (const int& i) { a1_ptr[i] = a_ptr[i]; }); + Kokkos::fence(); } + Kokkos::fence(); time_raw = timer.seconds()/R; } #endif @@ -255,7 +263,9 @@ void run_resizeview_tests8(int N, int R) { Kokkos::parallel_for(N8, KOKKOS_LAMBDA (const int& i) { a1_ptr[i] = a_ptr[i]; }); + Kokkos::fence(); } + Kokkos::fence(); time_raw = timer.seconds()/R; } #endif diff --git a/lib/kokkos/core/perf_test/test_atomic.cpp b/lib/kokkos/core/perf_test/test_atomic.cpp index 6bb22e4e30..24e4f015d3 100644 --- a/lib/kokkos/core/perf_test/test_atomic.cpp +++ b/lib/kokkos/core/perf_test/test_atomic.cpp @@ -69,7 +69,7 @@ typedef Kokkos::DefaultExecutionSpace exec_space; #define WHITE 8 void textcolor(int attr, int fg, int bg) -{ char command[13]; +{ char command[40]; /* Command is the control command to the terminal */ sprintf(command, "%c[%d;%d;%dm", 0x1B, attr, fg + 30, bg + 40); @@ -85,7 +85,7 @@ struct ZeroFunctor{ typedef typename Kokkos::View::HostMirror h_type; type data; KOKKOS_INLINE_FUNCTION - void operator()(int i) const { + void operator()(int) const { data() = 0; } }; @@ -101,7 +101,7 @@ struct AddFunctor{ type data; KOKKOS_INLINE_FUNCTION - void operator()(int i) const { + void operator()(int) const { Kokkos::atomic_fetch_add(&data(),(T)1); } }; @@ -113,12 +113,12 @@ T AddLoop(int loop) { typename ZeroFunctor::h_type h_data("HData"); f_zero.data = data; Kokkos::parallel_for(1,f_zero); - exec_space::fence(); + exec_space().fence(); struct AddFunctor f_add; f_add.data = data; Kokkos::parallel_for(loop,f_add); - exec_space::fence(); + exec_space().fence(); Kokkos::deep_copy(h_data,data); T val = h_data(); @@ -132,7 +132,7 @@ struct AddNonAtomicFunctor{ type data; KOKKOS_INLINE_FUNCTION - void operator()(int i) const { + void operator()(int) const { data()+=(T)1; } }; @@ -145,12 +145,12 @@ T AddLoopNonAtomic(int loop) { f_zero.data = data; Kokkos::parallel_for(1,f_zero); - exec_space::fence(); + exec_space().fence(); struct AddNonAtomicFunctor f_add; f_add.data = data; Kokkos::parallel_for(loop,f_add); - exec_space::fence(); + exec_space().fence(); Kokkos::deep_copy(h_data,data); T val = h_data(); @@ -178,7 +178,7 @@ struct CASFunctor{ type data; KOKKOS_INLINE_FUNCTION - void operator()(int i) const { + void operator()(int) const { T old = data(); T newval, assumed; do { @@ -197,12 +197,12 @@ T CASLoop(int loop) { typename ZeroFunctor::h_type h_data("HData"); f_zero.data = data; Kokkos::parallel_for(1,f_zero); - exec_space::fence(); + exec_space().fence(); struct CASFunctor f_cas; f_cas.data = data; Kokkos::parallel_for(loop,f_cas); - exec_space::fence(); + exec_space().fence(); Kokkos::deep_copy(h_data,data); T val = h_data(); @@ -217,7 +217,7 @@ struct CASNonAtomicFunctor{ type data; KOKKOS_INLINE_FUNCTION - void operator()(int i) const { + void operator()(int) const { volatile T assumed; volatile T newval; bool fail=1; @@ -240,12 +240,12 @@ T CASLoopNonAtomic(int loop) { typename ZeroFunctor::h_type h_data("HData"); f_zero.data = data; Kokkos::parallel_for(1,f_zero); - exec_space::fence(); + exec_space().fence(); struct CASNonAtomicFunctor f_cas; f_cas.data = data; Kokkos::parallel_for(loop,f_cas); - exec_space::fence(); + exec_space().fence(); Kokkos::deep_copy(h_data,data); T val = h_data(); @@ -296,19 +296,19 @@ T ExchLoop(int loop) { typename ZeroFunctor::h_type h_data("HData"); f_zero.data = data; Kokkos::parallel_for(1,f_zero); - exec_space::fence(); + exec_space().fence(); typename ZeroFunctor::type data2("Data"); typename ZeroFunctor::h_type h_data2("HData"); f_zero.data = data2; Kokkos::parallel_for(1,f_zero); - exec_space::fence(); + exec_space().fence(); struct ExchFunctor f_exch; f_exch.data = data; f_exch.data2 = data2; Kokkos::parallel_for(loop,f_exch); - exec_space::fence(); + exec_space().fence(); Kokkos::deep_copy(h_data,data); Kokkos::deep_copy(h_data2,data2); @@ -339,19 +339,19 @@ T ExchLoopNonAtomic(int loop) { typename ZeroFunctor::h_type h_data("HData"); f_zero.data = data; Kokkos::parallel_for(1,f_zero); - exec_space::fence(); + exec_space().fence(); typename ZeroFunctor::type data2("Data"); typename ZeroFunctor::h_type h_data2("HData"); f_zero.data = data2; Kokkos::parallel_for(1,f_zero); - exec_space::fence(); + exec_space().fence(); struct ExchNonAtomicFunctor f_exch; f_exch.data = data; f_exch.data2 = data2; Kokkos::parallel_for(loop,f_exch); - exec_space::fence(); + exec_space().fence(); Kokkos::deep_copy(h_data,data); Kokkos::deep_copy(h_data2,data2); diff --git a/lib/kokkos/core/perf_test/test_mempool.cpp b/lib/kokkos/core/perf_test/test_mempool.cpp index 9fd58eda91..c47730ec69 100644 --- a/lib/kokkos/core/perf_test/test_mempool.cpp +++ b/lib/kokkos/core/perf_test/test_mempool.cpp @@ -153,6 +153,7 @@ struct TestFunctor { typedef Kokkos::RangePolicy< ExecSpace , TagDel > policy ; Kokkos::parallel_for( policy(0,range_iter), *this ); + Kokkos::fence(); } //---------------------------------------- diff --git a/lib/kokkos/core/perf_test/test_taskdag.cpp b/lib/kokkos/core/perf_test/test_taskdag.cpp index 8d5e1c475f..41198edfe1 100644 --- a/lib/kokkos/core/perf_test/test_taskdag.cpp +++ b/lib/kokkos/core/perf_test/test_taskdag.cpp @@ -92,27 +92,26 @@ long fib_alloc_count( long n ) return count[ n & mask ]; } -template< class Space > +template< class Scheduler > struct TestFib { - using Scheduler = Kokkos::TaskScheduler< Space > ; using MemorySpace = typename Scheduler::memory_space ; using MemberType = typename Scheduler::member_type ; - using FutureType = Kokkos::Future< long , Space > ; + using FutureType = Kokkos::BasicFuture< long , Scheduler > ; typedef long value_type ; - Scheduler sched ; FutureType dep[2] ; const value_type n ; KOKKOS_INLINE_FUNCTION - TestFib( const Scheduler & arg_sched , const value_type arg_n ) - : sched( arg_sched ), dep{} , n( arg_n ) {} + TestFib( const value_type arg_n ) + : dep{} , n( arg_n ) {} KOKKOS_INLINE_FUNCTION - void operator()( const MemberType & , value_type & result ) noexcept + void operator()( MemberType & member, value_type & result ) noexcept { + auto& sched = member.scheduler(); if ( n < 2 ) { result = n ; } @@ -126,13 +125,13 @@ struct TestFib { dep[1] = Kokkos::task_spawn ( Kokkos::TaskSingle( sched, Kokkos::TaskPriority::High ) - , TestFib( sched, n - 2 ) ); + , TestFib( n - 2 ) ); dep[0] = Kokkos::task_spawn ( Kokkos::TaskSingle( sched ) - , TestFib( sched, n - 1 ) ); + , TestFib( n - 1 ) ); - Kokkos::Future< ExecSpace > fib_all = Kokkos::when_all( dep, 2 ); + auto fib_all = sched.when_all( dep, 2 ); if ( ! dep[0].is_null() && ! dep[1].is_null() && ! fib_all.is_null() ) { // High priority to retire this branch. @@ -202,13 +201,15 @@ int main( int argc , char* argv[] ) return -1; } - typedef TestFib< ExecSpace > Functor ; + using Scheduler = Kokkos::TaskSchedulerMultiple; + + typedef TestFib< Scheduler > Functor ; Kokkos::initialize(argc,argv); { - Functor::Scheduler sched( Functor::MemorySpace() + Scheduler sched( Functor::MemorySpace() , total_alloc_size , min_block_size , max_block_size @@ -217,21 +218,21 @@ int main( int argc , char* argv[] ) Functor::FutureType f = Kokkos::host_spawn( Kokkos::TaskSingle( sched ) - , Functor( sched , fib_input ) + , Functor( fib_input ) ); Kokkos::wait( sched ); test_result = f.get(); - task_count_max = sched.allocated_task_count_max(); - task_count_accum = sched.allocated_task_count_accum(); + //task_count_max = sched.allocated_task_count_max(); + //task_count_accum = sched.allocated_task_count_accum(); - if ( number_alloc != task_count_accum ) { - std::cout << " number_alloc( " << number_alloc << " )" - << " != task_count_accum( " << task_count_accum << " )" - << std::endl ; - } + //if ( number_alloc != task_count_accum ) { + // std::cout << " number_alloc( " << number_alloc << " )" + // << " != task_count_accum( " << task_count_accum << " )" + // << std::endl ; + //} if ( fib_output != test_result ) { std::cout << " answer( " << fib_output << " )" @@ -239,7 +240,7 @@ int main( int argc , char* argv[] ) << std::endl ; } - if ( fib_output != test_result || number_alloc != task_count_accum ) { + if ( fib_output != test_result) { // || number_alloc != task_count_accum ) { printf(" TEST FAILED\n"); return -1; } @@ -252,7 +253,7 @@ int main( int argc , char* argv[] ) Functor::FutureType ftmp = Kokkos::host_spawn( Kokkos::TaskSingle( sched ) - , Functor( sched , fib_input ) + , Functor( fib_input ) ); Kokkos::wait( sched ); diff --git a/lib/kokkos/core/src/CMakeLists.txt b/lib/kokkos/core/src/CMakeLists.txt index ab7f3f55c7..a941c5da0c 100644 --- a/lib/kokkos/core/src/CMakeLists.txt +++ b/lib/kokkos/core/src/CMakeLists.txt @@ -61,6 +61,16 @@ IF(KOKKOS_LEGACY_TRIBITS) #----------------------------------------------------------------------------- + FILE(GLOB HEADERS_HPX HPX/*.hpp) + FILE(GLOB SOURCES_HPX HPX/*.cpp) + + LIST(APPEND HEADERS_PRIVATE ${HEADERS_HPX} ) + LIST(APPEND SOURCES ${SOURCES_HPX} ) + + INSTALL(FILES ${HEADERS_HPX} DESTINATION ${TRILINOS_INCDIR}/HPX/) + + #----------------------------------------------------------------------------- + FILE(GLOB HEADERS_CUDA Cuda/*.hpp) FILE(GLOB SOURCES_CUDA Cuda/*.cpp) diff --git a/lib/kokkos/core/src/Cuda/Kokkos_CudaExec.hpp b/lib/kokkos/core/src/Cuda/Kokkos_CudaExec.hpp deleted file mode 100644 index c31b7f5b5d..0000000000 --- a/lib/kokkos/core/src/Cuda/Kokkos_CudaExec.hpp +++ /dev/null @@ -1,419 +0,0 @@ -/* -//@HEADER -// ************************************************************************ -// -// Kokkos v. 2.0 -// Copyright (2014) Sandia Corporation -// -// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, -// the U.S. Government retains certain rights in this software. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. Neither the name of the Corporation nor the names of the -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE -// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Questions? Contact Christian R. Trott (crtrott@sandia.gov) -// -// ************************************************************************ -//@HEADER -*/ - -#ifndef KOKKOS_CUDAEXEC_HPP -#define KOKKOS_CUDAEXEC_HPP - -#include -#ifdef KOKKOS_ENABLE_CUDA - -#include -#include -#include -#include -#include -#include -#include - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Impl { - -struct CudaTraits { - enum { WarpSize = 32 /* 0x0020 */ }; - enum { WarpIndexMask = 0x001f /* Mask for warpindex */ }; - enum { WarpIndexShift = 5 /* WarpSize == 1 << WarpShift */ }; - - enum { SharedMemoryBanks = 32 /* Compute device 2.0 */ }; - enum { SharedMemoryCapacity = 0x0C000 /* 48k shared / 16k L1 Cache */ }; - enum { SharedMemoryUsage = 0x04000 /* 16k shared / 48k L1 Cache */ }; - - enum { UpperBoundGridCount = 65535 /* Hard upper bound */ }; - enum { ConstantMemoryCapacity = 0x010000 /* 64k bytes */ }; - enum { ConstantMemoryUsage = 0x008000 /* 32k bytes */ }; - enum { ConstantMemoryCache = 0x002000 /* 8k bytes */ }; - - typedef unsigned long - ConstantGlobalBufferType[ ConstantMemoryUsage / sizeof(unsigned long) ]; - - enum { ConstantMemoryUseThreshold = 0x000200 /* 512 bytes */ }; - - KOKKOS_INLINE_FUNCTION static - CudaSpace::size_type warp_count( CudaSpace::size_type i ) - { return ( i + WarpIndexMask ) >> WarpIndexShift ; } - - KOKKOS_INLINE_FUNCTION static - CudaSpace::size_type warp_align( CudaSpace::size_type i ) - { - enum { Mask = ~CudaSpace::size_type( WarpIndexMask ) }; - return ( i + WarpIndexMask ) & Mask ; - } -}; - -//---------------------------------------------------------------------------- - -CudaSpace::size_type cuda_internal_multiprocessor_count(); -CudaSpace::size_type cuda_internal_maximum_warp_count(); -CudaSpace::size_type cuda_internal_maximum_grid_count(); -CudaSpace::size_type cuda_internal_maximum_shared_words(); - -CudaSpace::size_type cuda_internal_maximum_concurrent_block_count(); - -CudaSpace::size_type * cuda_internal_scratch_flags( const CudaSpace::size_type size ); -CudaSpace::size_type * cuda_internal_scratch_space( const CudaSpace::size_type size ); -CudaSpace::size_type * cuda_internal_scratch_unified( const CudaSpace::size_type size ); - -} // namespace Impl -} // namespace Kokkos - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -#if defined( __CUDACC__ ) - -/** \brief Access to constant memory on the device */ -#ifdef KOKKOS_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE - -__device__ __constant__ -extern unsigned long kokkos_impl_cuda_constant_memory_buffer[] ; - -#else - -__device__ __constant__ -unsigned long kokkos_impl_cuda_constant_memory_buffer[ Kokkos::Impl::CudaTraits::ConstantMemoryUsage / sizeof(unsigned long) ] ; - -#endif - -namespace Kokkos { -namespace Impl { - void* cuda_resize_scratch_space(std::int64_t bytes, bool force_shrink = false); -} -} - -template< typename T > -inline -__device__ -T * kokkos_impl_cuda_shared_memory() -{ extern __shared__ Kokkos::CudaSpace::size_type sh[]; return (T*) sh ; } - -namespace Kokkos { -namespace Impl { - -//---------------------------------------------------------------------------- -// See section B.17 of Cuda C Programming Guide Version 3.2 -// for discussion of -// __launch_bounds__(maxThreadsPerBlock,minBlocksPerMultiprocessor) -// function qualifier which could be used to improve performance. -//---------------------------------------------------------------------------- -// Maximize L1 cache and minimize shared memory: -// cudaFuncSetCacheConfig(MyKernel, cudaFuncCachePreferL1 ); -// For 2.0 capability: 48 KB L1 and 16 KB shared -//---------------------------------------------------------------------------- - -template< class DriverType> -__global__ -static void cuda_parallel_launch_constant_memory() -{ - const DriverType & driver = - *((const DriverType *) kokkos_impl_cuda_constant_memory_buffer ); - - driver(); -} - -template< class DriverType, unsigned int maxTperB, unsigned int minBperSM > -__global__ -__launch_bounds__(maxTperB, minBperSM) -static void cuda_parallel_launch_constant_memory() -{ - const DriverType & driver = - *((const DriverType *) kokkos_impl_cuda_constant_memory_buffer ); - - driver(); -} - -template< class DriverType> -__global__ -static void cuda_parallel_launch_local_memory( const DriverType driver ) -{ - driver(); -} - -template< class DriverType, unsigned int maxTperB, unsigned int minBperSM > -__global__ -__launch_bounds__(maxTperB, minBperSM) -static void cuda_parallel_launch_local_memory( const DriverType driver ) -{ - driver(); -} - -template < class DriverType - , class LaunchBounds = Kokkos::LaunchBounds<> - , bool Large = ( CudaTraits::ConstantMemoryUseThreshold < sizeof(DriverType) ) > -struct CudaParallelLaunch ; - -template < class DriverType - , unsigned int MaxThreadsPerBlock - , unsigned int MinBlocksPerSM > -struct CudaParallelLaunch< DriverType - , Kokkos::LaunchBounds< MaxThreadsPerBlock - , MinBlocksPerSM > - , true > -{ - inline - CudaParallelLaunch( const DriverType & driver - , const dim3 & grid - , const dim3 & block - , const int shmem - , const cudaStream_t stream = 0 ) - { - if ( (grid.x != 0) && ( ( block.x * block.y * block.z ) != 0 ) ) { - - if ( sizeof( Kokkos::Impl::CudaTraits::ConstantGlobalBufferType ) < - sizeof( DriverType ) ) { - Kokkos::Impl::throw_runtime_exception( std::string("CudaParallelLaunch FAILED: Functor is too large") ); - } - - // Fence before changing settings and copying closure - Kokkos::Cuda::fence(); - - if ( CudaTraits::SharedMemoryCapacity < shmem ) { - Kokkos::Impl::throw_runtime_exception( std::string("CudaParallelLaunch FAILED: shared memory request is too large") ); - } - #ifndef KOKKOS_ARCH_KEPLER - // On Kepler the L1 has no benefit since it doesn't cache reads - else { - CUDA_SAFE_CALL( - cudaFuncSetCacheConfig - ( cuda_parallel_launch_constant_memory - < DriverType, MaxThreadsPerBlock, MinBlocksPerSM > - , ( shmem ? cudaFuncCachePreferShared : cudaFuncCachePreferL1 ) - ) ); - } - #endif - - // Copy functor to constant memory on the device - cudaMemcpyToSymbol( - kokkos_impl_cuda_constant_memory_buffer, &driver, sizeof(DriverType) ); - - KOKKOS_ENSURE_CUDA_LOCK_ARRAYS_ON_DEVICE(); - - // Invoke the driver function on the device - cuda_parallel_launch_constant_memory - < DriverType, MaxThreadsPerBlock, MinBlocksPerSM > - <<< grid , block , shmem , stream >>>(); - -#if defined( KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK ) - CUDA_SAFE_CALL( cudaGetLastError() ); - Kokkos::Cuda::fence(); -#endif - } - } -}; - -template < class DriverType > -struct CudaParallelLaunch< DriverType - , Kokkos::LaunchBounds<> - , true > -{ - inline - CudaParallelLaunch( const DriverType & driver - , const dim3 & grid - , const dim3 & block - , const int shmem - , const cudaStream_t stream = 0 ) - { - if ( (grid.x != 0) && ( ( block.x * block.y * block.z ) != 0 ) ) { - - if ( sizeof( Kokkos::Impl::CudaTraits::ConstantGlobalBufferType ) < - sizeof( DriverType ) ) { - Kokkos::Impl::throw_runtime_exception( std::string("CudaParallelLaunch FAILED: Functor is too large") ); - } - - // Fence before changing settings and copying closure - Kokkos::Cuda::fence(); - - if ( CudaTraits::SharedMemoryCapacity < shmem ) { - Kokkos::Impl::throw_runtime_exception( std::string("CudaParallelLaunch FAILED: shared memory request is too large") ); - } - #ifndef KOKKOS_ARCH_KEPLER - // On Kepler the L1 has no benefit since it doesn't cache reads - else { - CUDA_SAFE_CALL( - cudaFuncSetCacheConfig - ( cuda_parallel_launch_constant_memory< DriverType > - , ( shmem ? cudaFuncCachePreferShared : cudaFuncCachePreferL1 ) - ) ); - } - #endif - - // Copy functor to constant memory on the device - cudaMemcpyToSymbol( - kokkos_impl_cuda_constant_memory_buffer, &driver, sizeof(DriverType) ); - - KOKKOS_ENSURE_CUDA_LOCK_ARRAYS_ON_DEVICE(); - - // Invoke the driver function on the device - cuda_parallel_launch_constant_memory< DriverType > - <<< grid , block , shmem , stream >>>(); - -#if defined( KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK ) - CUDA_SAFE_CALL( cudaGetLastError() ); - Kokkos::Cuda::fence(); -#endif - } - } -}; - -template < class DriverType - , unsigned int MaxThreadsPerBlock - , unsigned int MinBlocksPerSM > -struct CudaParallelLaunch< DriverType - , Kokkos::LaunchBounds< MaxThreadsPerBlock - , MinBlocksPerSM > - , false > -{ - inline - CudaParallelLaunch( const DriverType & driver - , const dim3 & grid - , const dim3 & block - , const int shmem - , const cudaStream_t stream = 0 ) - { - if ( (grid.x != 0) && ( ( block.x * block.y * block.z ) != 0 ) ) { - - if ( sizeof( Kokkos::Impl::CudaTraits::ConstantGlobalBufferType ) < - sizeof( DriverType ) ) { - Kokkos::Impl::throw_runtime_exception( std::string("CudaParallelLaunch FAILED: Functor is too large") ); - } - - if ( CudaTraits::SharedMemoryCapacity < shmem ) { - Kokkos::Impl::throw_runtime_exception( std::string("CudaParallelLaunch FAILED: shared memory request is too large") ); - } - #ifndef KOKKOS_ARCH_KEPLER - // On Kepler the L1 has no benefit since it doesn't cache reads - else { - CUDA_SAFE_CALL( - cudaFuncSetCacheConfig - ( cuda_parallel_launch_local_memory - < DriverType, MaxThreadsPerBlock, MinBlocksPerSM > - , ( shmem ? cudaFuncCachePreferShared : cudaFuncCachePreferL1 ) - ) ); - } - #endif - - KOKKOS_ENSURE_CUDA_LOCK_ARRAYS_ON_DEVICE(); - - // Invoke the driver function on the device - cuda_parallel_launch_local_memory - < DriverType, MaxThreadsPerBlock, MinBlocksPerSM > - <<< grid , block , shmem , stream >>>( driver ); - -#if defined( KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK ) - CUDA_SAFE_CALL( cudaGetLastError() ); - Kokkos::Cuda::fence(); -#endif - } - } -}; - -template < class DriverType > -struct CudaParallelLaunch< DriverType - , Kokkos::LaunchBounds<> - , false > -{ - inline - CudaParallelLaunch( const DriverType & driver - , const dim3 & grid - , const dim3 & block - , const int shmem - , const cudaStream_t stream = 0 ) - { - if ( (grid.x != 0) && ( ( block.x * block.y * block.z ) != 0 ) ) { - - if ( sizeof( Kokkos::Impl::CudaTraits::ConstantGlobalBufferType ) < - sizeof( DriverType ) ) { - Kokkos::Impl::throw_runtime_exception( std::string("CudaParallelLaunch FAILED: Functor is too large") ); - } - - if ( CudaTraits::SharedMemoryCapacity < shmem ) { - Kokkos::Impl::throw_runtime_exception( std::string("CudaParallelLaunch FAILED: shared memory request is too large") ); - } - #ifndef KOKKOS_ARCH_KEPLER - // On Kepler the L1 has no benefit since it doesn't cache reads - else { - CUDA_SAFE_CALL( - cudaFuncSetCacheConfig - ( cuda_parallel_launch_local_memory< DriverType > - , ( shmem ? cudaFuncCachePreferShared : cudaFuncCachePreferL1 ) - ) ); - } - #endif - - KOKKOS_ENSURE_CUDA_LOCK_ARRAYS_ON_DEVICE(); - - // Invoke the driver function on the device - cuda_parallel_launch_local_memory< DriverType > - <<< grid , block , shmem , stream >>>( driver ); - -#if defined( KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK ) - CUDA_SAFE_CALL( cudaGetLastError() ); - Kokkos::Cuda::fence(); -#endif - } - } -}; - -//---------------------------------------------------------------------------- - -} // namespace Impl -} // namespace Kokkos - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -#endif /* defined( __CUDACC__ ) */ -#endif /* defined( KOKKOS_ENABLE_CUDA ) */ -#endif /* #ifndef KOKKOS_CUDAEXEC_HPP */ - diff --git a/lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.cpp b/lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.cpp index e13744e327..4c9ed47085 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.cpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_CudaSpace.cpp @@ -55,7 +55,7 @@ #include #include -#include +//#include #include #if defined(KOKKOS_ENABLE_PROFILING) @@ -183,7 +183,7 @@ void * CudaUVMSpace::allocate( const size_t arg_alloc_size ) const enum { max_uvm_allocations = 65536 }; - Cuda::fence(); + Cuda::impl_static_fence(); if ( arg_alloc_size > 0 ) { Kokkos::Impl::num_uvm_allocations++; @@ -194,7 +194,7 @@ void * CudaUVMSpace::allocate( const size_t arg_alloc_size ) const CUDA_SAFE_CALL( cudaMallocManaged( &ptr, arg_alloc_size , cudaMemAttachGlobal ) ); } - Cuda::fence(); + Cuda::impl_static_fence(); return ptr ; } @@ -217,14 +217,14 @@ void CudaSpace::deallocate( void * const arg_alloc_ptr , const size_t /* arg_all void CudaUVMSpace::deallocate( void * const arg_alloc_ptr , const size_t /* arg_alloc_size */ ) const { - Cuda::fence(); + Cuda::impl_static_fence(); try { if ( arg_alloc_ptr != nullptr ) { Kokkos::Impl::num_uvm_allocations--; CUDA_SAFE_CALL( cudaFree( arg_alloc_ptr ) ); } } catch(...) {} - Cuda::fence(); + Cuda::impl_static_fence(); } void CudaHostPinnedSpace::deallocate( void * const arg_alloc_ptr , const size_t /* arg_alloc_size */ ) const @@ -390,7 +390,7 @@ SharedAllocationRecord< Kokkos::CudaUVMSpace , void >:: { #if defined(KOKKOS_ENABLE_PROFILING) if(Kokkos::Profiling::profileLibraryLoaded()) { - Cuda::fence(); //Make sure I can access the label ... + Cuda::impl_static_fence(); //Make sure I can access the label ... Kokkos::Profiling::deallocateData( Kokkos::Profiling::SpaceHandle(Kokkos::CudaUVMSpace::name()),RecordBase::m_alloc_ptr->m_label, data(),size()); diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Atomic_Intrinsics.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Atomic_Intrinsics.hpp new file mode 100644 index 0000000000..9d4bcbc8cf --- /dev/null +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Atomic_Intrinsics.hpp @@ -0,0 +1,657 @@ +/* +@HEADER +================================================================================ + +ORIGINAL LICENSE +---------------- + +Copyright (c) 2018, NVIDIA Corporation + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +================================================================================ + +LICENSE ASSOCIATED WITH SUBSEQUENT MODIFICATIONS +------------------------------------------------ + +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2019) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +@HEADER +*/ + +#include +#if defined(__CUDA_ARCH__) && defined(KOKKOS_ENABLE_CUDA_ASM_ATOMICS) + +#include + +#ifndef _SIMT_DETAILS_CONFIG +#define _SIMT_DETAILS_CONFIG + +namespace Kokkos { +namespace Impl { + + +#ifndef __simt_scope +// Modification: Kokkos GPU atomics should default to `gpu` scope +#define __simt_scope "gpu" +#endif + +#define __simt_fence_signal_() asm volatile("":::"memory") +#define __simt_fence_sc_() asm volatile("fence.sc." __simt_scope ";":::"memory") +#define __simt_fence_() asm volatile("fence." __simt_scope ";":::"memory") + +#define __simt_load_acquire_8_as_32(ptr,ret) asm volatile("ld.acquire." __simt_scope ".b8 %0, [%1];" : "=r"(ret) : "l"(ptr) : "memory") +#define __simt_load_relaxed_8_as_32(ptr,ret) asm volatile("ld.relaxed." __simt_scope ".b8 %0, [%1];" : "=r"(ret) : "l"(ptr) : "memory") +#define __simt_store_release_8_as_32(ptr,desired) asm volatile("st.release." __simt_scope ".b8 [%0], %1;" :: "l"(ptr), "r"(desired) : "memory") +#define __simt_store_relaxed_8_as_32(ptr,desired) asm volatile("st.relaxed." __simt_scope ".b8 [%0], %1;" :: "l"(ptr), "r"(desired) : "memory") + +#define __simt_load_acquire_16(ptr,ret) asm volatile("ld.acquire." __simt_scope ".b16 %0, [%1];" : "=h"(ret) : "l"(ptr) : "memory") +#define __simt_load_relaxed_16(ptr,ret) asm volatile("ld.relaxed." __simt_scope ".b16 %0, [%1];" : "=h"(ret) : "l"(ptr) : "memory") +#define __simt_store_release_16(ptr,desired) asm volatile("st.release." __simt_scope ".b16 [%0], %1;" :: "l"(ptr), "h"(desired) : "memory") +#define __simt_store_relaxed_16(ptr,desired) asm volatile("st.relaxed." __simt_scope ".b16 [%0], %1;" :: "l"(ptr), "h"(desired) : "memory") + +#define __simt_load_acquire_32(ptr,ret) asm volatile("ld.acquire." __simt_scope ".b32 %0, [%1];" : "=r"(ret) : "l"(ptr) : "memory") +#define __simt_load_relaxed_32(ptr,ret) asm volatile("ld.relaxed." __simt_scope ".b32 %0, [%1];" : "=r"(ret) : "l"(ptr) : "memory") +#define __simt_store_release_32(ptr,desired) asm volatile("st.release." __simt_scope ".b32 [%0], %1;" :: "l"(ptr), "r"(desired) : "memory") +#define __simt_store_relaxed_32(ptr,desired) asm volatile("st.relaxed." __simt_scope ".b32 [%0], %1;" :: "l"(ptr), "r"(desired) : "memory") +#define __simt_exch_release_32(ptr,old,desired) asm volatile("atom.exch.release." __simt_scope ".b32 %0, [%1], %2;" : "=r"(old) : "l"(ptr), "r"(desired) : "memory") +#define __simt_exch_acquire_32(ptr,old,desired) asm volatile("atom.exch.acquire." __simt_scope ".b32 %0, [%1], %2;" : "=r"(old) : "l"(ptr), "r"(desired) : "memory") +#define __simt_exch_acq_rel_32(ptr,old,desired) asm volatile("atom.exch.acq_rel." __simt_scope ".b32 %0, [%1], %2;" : "=r"(old) : "l"(ptr), "r"(desired) : "memory") +#define __simt_exch_relaxed_32(ptr,old,desired) asm volatile("atom.exch.relaxed." __simt_scope ".b32 %0, [%1], %2;" : "=r"(old) : "l"(ptr), "r"(desired) : "memory") +#define __simt_cas_release_32(ptr,old,expected,desired) asm volatile("atom.cas.release." __simt_scope ".b32 %0, [%1], %2, %3;" : "=r"(old) : "l"(ptr), "r"(expected), "r"(desired) : "memory") +#define __simt_cas_acquire_32(ptr,old,expected,desired) asm volatile("atom.cas.acquire." __simt_scope ".b32 %0, [%1], %2, %3;" : "=r"(old) : "l"(ptr), "r"(expected), "r"(desired) : "memory") +#define __simt_cas_acq_rel_32(ptr,old,expected,desired) asm volatile("atom.cas.acq_rel." __simt_scope ".b32 %0, [%1], %2, %3;" : "=r"(old) : "l"(ptr), "r"(expected), "r"(desired) : "memory") +#define __simt_cas_relaxed_32(ptr,old,expected,desired) asm volatile("atom.cas.relaxed." __simt_scope ".b32 %0, [%1], %2, %3;" : "=r"(old) : "l"(ptr), "r"(expected), "r"(desired) : "memory") +#define __simt_add_release_32(ptr,old,addend) asm volatile("atom.add.release." __simt_scope ".u32 %0, [%1], %2;" : "=r"(old) : "l"(ptr), "r"(addend) : "memory") +#define __simt_add_acquire_32(ptr,old,addend) asm volatile("atom.add.acquire." __simt_scope ".u32 %0, [%1], %2;" : "=r"(old) : "l"(ptr), "r"(addend) : "memory") +#define __simt_add_acq_rel_32(ptr,old,addend) asm volatile("atom.add.acq_rel." __simt_scope ".u32 %0, [%1], %2;" : "=r"(old) : "l"(ptr), "r"(addend) : "memory") +#define __simt_add_relaxed_32(ptr,old,addend) asm volatile("atom.add.relaxed." __simt_scope ".u32 %0, [%1], %2;" : "=r"(old) : "l"(ptr), "r"(addend) : "memory") +#define __simt_and_release_32(ptr,old,andend) asm volatile("atom.and.release." __simt_scope ".b32 %0, [%1], %2;" : "=r"(old) : "l"(ptr), "r"(andend) : "memory") +#define __simt_and_acquire_32(ptr,old,andend) asm volatile("atom.and.acquire." __simt_scope ".b32 %0, [%1], %2;" : "=r"(old) : "l"(ptr), "r"(andend) : "memory") +#define __simt_and_acq_rel_32(ptr,old,andend) asm volatile("atom.and.acq_rel." __simt_scope ".b32 %0, [%1], %2;" : "=r"(old) : "l"(ptr), "r"(andend) : "memory") +#define __simt_and_relaxed_32(ptr,old,andend) asm volatile("atom.and.relaxed." __simt_scope ".b32 %0, [%1], %2;" : "=r"(old) : "l"(ptr), "r"(andend) : "memory") +#define __simt_or_release_32(ptr,old,orend) asm volatile("atom.or.release." __simt_scope ".b32 %0, [%1], %2;" : "=r"(old) : "l"(ptr), "r"(orend) : "memory") +#define __simt_or_acquire_32(ptr,old,orend) asm volatile("atom.or.acquire." __simt_scope ".b32 %0, [%1], %2;" : "=r"(old) : "l"(ptr), "r"(orend) : "memory") +#define __simt_or_acq_rel_32(ptr,old,orend) asm volatile("atom.or.acq_rel." __simt_scope ".b32 %0, [%1], %2;" : "=r"(old) : "l"(ptr), "r"(orend) : "memory") +#define __simt_or_relaxed_32(ptr,old,orend) asm volatile("atom.or.relaxed." __simt_scope ".b32 %0, [%1], %2;" : "=r"(old) : "l"(ptr), "r"(orend) : "memory") +#define __simt_xor_release_32(ptr,old,xorend) asm volatile("atom.xor.release." __simt_scope ".b32 %0, [%1], %2;" : "=r"(old) : "l"(ptr), "r"(xorend) : "memory") +#define __simt_xor_acquire_32(ptr,old,xorend) asm volatile("atom.xor.acquire." __simt_scope ".b32 %0, [%1], %2;" : "=r"(old) : "l"(ptr), "r"(xorend) : "memory") +#define __simt_xor_acq_rel_32(ptr,old,xorend) asm volatile("atom.xor.acq_rel." __simt_scope ".b32 %0, [%1], %2;" : "=r"(old) : "l"(ptr), "r"(xorend) : "memory") +#define __simt_xor_relaxed_32(ptr,old,xorend) asm volatile("atom.xor.relaxed." __simt_scope ".b32 %0, [%1], %2;" : "=r"(old) : "l"(ptr), "r"(xorend) : "memory") + +#define __simt_load_acquire_64(ptr,ret) asm volatile("ld.acquire." __simt_scope ".b64 %0, [%1];" : "=l"(ret) : "l"(ptr) : "memory") +#define __simt_load_relaxed_64(ptr,ret) asm volatile("ld.relaxed." __simt_scope ".b64 %0, [%1];" : "=l"(ret) : "l"(ptr) : "memory") +#define __simt_store_release_64(ptr,desired) asm volatile("st.release." __simt_scope ".b64 [%0], %1;" :: "l"(ptr), "l"(desired) : "memory") +#define __simt_store_relaxed_64(ptr,desired) asm volatile("st.relaxed." __simt_scope ".b64 [%0], %1;" :: "l"(ptr), "l"(desired) : "memory") +#define __simt_exch_release_64(ptr,old,desired) asm volatile("atom.exch.release." __simt_scope ".b64 %0, [%1], %2;" : "=l"(old) : "l"(ptr), "l"(desired) : "memory") +#define __simt_exch_acquire_64(ptr,old,desired) asm volatile("atom.exch.acquire." __simt_scope ".b64 %0, [%1], %2;" : "=l"(old) : "l"(ptr), "l"(desired) : "memory") +#define __simt_exch_acq_rel_64(ptr,old,desired) asm volatile("atom.exch.acq_rel." __simt_scope ".b64 %0, [%1], %2;" : "=l"(old) : "l"(ptr), "l"(desired) : "memory") +#define __simt_exch_relaxed_64(ptr,old,desired) asm volatile("atom.exch.relaxed." __simt_scope ".b64 %0, [%1], %2;" : "=l"(old) : "l"(ptr), "l"(desired) : "memory") +#define __simt_cas_release_64(ptr,old,expected,desired) asm volatile("atom.cas.release." __simt_scope ".b64 %0, [%1], %2, %3;" : "=l"(old) : "l"(ptr), "l"(expected), "l"(desired) : "memory") +#define __simt_cas_acquire_64(ptr,old,expected,desired) asm volatile("atom.cas.acquire." __simt_scope ".b64 %0, [%1], %2, %3;" : "=l"(old) : "l"(ptr), "l"(expected), "l"(desired) : "memory") +#define __simt_cas_acq_rel_64(ptr,old,expected,desired) asm volatile("atom.cas.acq_rel." __simt_scope ".b64 %0, [%1], %2, %3;" : "=l"(old) : "l"(ptr), "l"(expected), "l"(desired) : "memory") +#define __simt_cas_relaxed_64(ptr,old,expected,desired) asm volatile("atom.cas.relaxed." __simt_scope ".b64 %0, [%1], %2, %3;" : "=l"(old) : "l"(ptr), "l"(expected), "l"(desired) : "memory") +#define __simt_add_release_64(ptr,old,addend) asm volatile("atom.add.release." __simt_scope ".u64 %0, [%1], %2;" : "=l"(old) : "l"(ptr), "l"(addend) : "memory") +#define __simt_add_acquire_64(ptr,old,addend) asm volatile("atom.add.acquire." __simt_scope ".u64 %0, [%1], %2;" : "=l"(old) : "l"(ptr), "l"(addend) : "memory") +#define __simt_add_acq_rel_64(ptr,old,addend) asm volatile("atom.add.acq_rel." __simt_scope ".u64 %0, [%1], %2;" : "=l"(old) : "l"(ptr), "l"(addend) : "memory") +#define __simt_add_relaxed_64(ptr,old,addend) asm volatile("atom.add.relaxed." __simt_scope ".u64 %0, [%1], %2;" : "=l"(old) : "l"(ptr), "l"(addend) : "memory") +#define __simt_and_release_64(ptr,old,andend) asm volatile("atom.and.release." __simt_scope ".b64 %0, [%1], %2;" : "=l"(old) : "l"(ptr), "l"(andend) : "memory") +#define __simt_and_acquire_64(ptr,old,andend) asm volatile("atom.and.acquire." __simt_scope ".b64 %0, [%1], %2;" : "=l"(old) : "l"(ptr), "l"(andend) : "memory") +#define __simt_and_acq_rel_64(ptr,old,andend) asm volatile("atom.and.acq_rel." __simt_scope ".b64 %0, [%1], %2;" : "=l"(old) : "l"(ptr), "l"(andend) : "memory") +#define __simt_and_relaxed_64(ptr,old,andend) asm volatile("atom.and.relaxed." __simt_scope ".b64 %0, [%1], %2;" : "=l"(old) : "l"(ptr), "l"(andend) : "memory") +#define __simt_or_release_64(ptr,old,orend) asm volatile("atom.or.release." __simt_scope ".b64 %0, [%1], %2;" : "=l"(old) : "l"(ptr), "l"(orend) : "memory") +#define __simt_or_acquire_64(ptr,old,orend) asm volatile("atom.or.acquire." __simt_scope ".b64 %0, [%1], %2;" : "=l"(old) : "l"(ptr), "l"(orend) : "memory") +#define __simt_or_acq_rel_64(ptr,old,orend) asm volatile("atom.or.acq_rel." __simt_scope ".b64 %0, [%1], %2;" : "=l"(old) : "l"(ptr), "l"(orend) : "memory") +#define __simt_or_relaxed_64(ptr,old,orend) asm volatile("atom.or.relaxed." __simt_scope ".b64 %0, [%1], %2;" : "=l"(old) : "l"(ptr), "l"(orend) : "memory") +#define __simt_xor_release_64(ptr,old,xorend) asm volatile("atom.xor.release." __simt_scope ".b64 %0, [%1], %2;" : "=l"(old) : "l"(ptr), "l"(xorend) : "memory") +#define __simt_xor_acquire_64(ptr,old,xorend) asm volatile("atom.xor.acquire." __simt_scope ".b64 %0, [%1], %2;" : "=l"(old) : "l"(ptr), "l"(xorend) : "memory") +#define __simt_xor_acq_rel_64(ptr,old,xorend) asm volatile("atom.xor.acq_rel." __simt_scope ".b64 %0, [%1], %2;" : "=l"(old) : "l"(ptr), "l"(xorend) : "memory") +#define __simt_xor_relaxed_64(ptr,old,xorend) asm volatile("atom.xor.relaxed." __simt_scope ".b64 %0, [%1], %2;" : "=l"(old) : "l"(ptr), "l"(xorend) : "memory") + +#define __simt_nanosleep(timeout) asm volatile("nanosleep.u32 %0;" :: "r"(unsigned(timeout)) : ) + +/* + definitions +*/ + +#ifndef __GCC_ATOMIC_BOOL_LOCK_FREE +#define __GCC_ATOMIC_BOOL_LOCK_FREE 2 +#define __GCC_ATOMIC_CHAR_LOCK_FREE 2 +#define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 2 +#define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2 +#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 2 +#define __GCC_ATOMIC_SHORT_LOCK_FREE 2 +#define __GCC_ATOMIC_INT_LOCK_FREE 2 +#define __GCC_ATOMIC_LONG_LOCK_FREE 2 +#define __GCC_ATOMIC_LLONG_LOCK_FREE 2 +#define __GCC_ATOMIC_POINTER_LOCK_FREE 2 +#endif + +#ifndef __ATOMIC_RELAXED +#define __ATOMIC_RELAXED 0 +#define __ATOMIC_CONSUME 1 +#define __ATOMIC_ACQUIRE 2 +#define __ATOMIC_RELEASE 3 +#define __ATOMIC_ACQ_REL 4 +#define __ATOMIC_SEQ_CST 5 +#endif + +inline __device__ int __stronger_order_simt_(int a, int b) { + if (b == __ATOMIC_SEQ_CST) return __ATOMIC_SEQ_CST; + if (b == __ATOMIC_RELAXED) return a; + switch (a) { + case __ATOMIC_SEQ_CST: + case __ATOMIC_ACQ_REL: return a; + case __ATOMIC_CONSUME: + case __ATOMIC_ACQUIRE: if (b != __ATOMIC_ACQUIRE) return __ATOMIC_ACQ_REL; else return __ATOMIC_ACQUIRE; + case __ATOMIC_RELEASE: if (b != __ATOMIC_RELEASE) return __ATOMIC_ACQ_REL; else return __ATOMIC_RELEASE; + case __ATOMIC_RELAXED: return b; + default: assert(0); + } + return __ATOMIC_SEQ_CST; +} + +/* + base +*/ + +#define DO__atomic_load_simt_(bytes, bits) \ +template::type = 0> \ +void __device__ __atomic_load_simt_ (const type *ptr, type *ret, int memorder) { \ + int##bits##_t tmp = 0; \ + switch (memorder) { \ + case __ATOMIC_SEQ_CST: __simt_fence_sc_(); \ + case __ATOMIC_CONSUME: \ + case __ATOMIC_ACQUIRE: __simt_load_acquire_##bits(ptr, tmp); break; \ + case __ATOMIC_RELAXED: __simt_load_relaxed_##bits(ptr, tmp); break; \ + default: assert(0); \ + } \ + memcpy(ret, &tmp, bytes); \ +} +DO__atomic_load_simt_(1,32) +DO__atomic_load_simt_(2,16) +DO__atomic_load_simt_(4,32) +DO__atomic_load_simt_(8,64) + +template +type __device__ __atomic_load_n_simt_(const type *ptr, int memorder) { + type ret; + __atomic_load_simt_(ptr, &ret, memorder); + return ret; +} + +#define DO__atomic_store_simt_(bytes, bits) \ +template::type = 0> \ +void __device__ __atomic_store_simt_ (type *ptr, type *val, int memorder) { \ + int##bits##_t tmp = 0; \ + memcpy(&tmp, val, bytes); \ + switch (memorder) { \ + case __ATOMIC_RELEASE: __simt_store_release_##bits(ptr, tmp); break; \ + case __ATOMIC_SEQ_CST: __simt_fence_sc_(); \ + case __ATOMIC_RELAXED: __simt_store_relaxed_##bits(ptr, tmp); break; \ + default: assert(0); \ + } \ +} +DO__atomic_store_simt_(1,32) +DO__atomic_store_simt_(2,16) +DO__atomic_store_simt_(4,32) +DO__atomic_store_simt_(8,64) + +template +void __device__ __atomic_store_n_simt_(type *ptr, type val, int memorder) { + __atomic_store_simt_(ptr, &val, memorder); +} + +#define DO__atomic_compare_exchange_simt_(bytes, bits) \ +template::type = 0> \ +bool __device__ __atomic_compare_exchange_simt_ (type *ptr, type *expected, const type *desired, bool, int success_memorder, int failure_memorder) { \ + int##bits##_t tmp = 0, old = 0, old_tmp; \ + memcpy(&tmp, desired, bytes); \ + memcpy(&old, expected, bytes); \ + old_tmp = old; \ + switch (__stronger_order_simt_(success_memorder, failure_memorder)) { \ + case __ATOMIC_SEQ_CST: __simt_fence_sc_(); \ + case __ATOMIC_CONSUME: \ + case __ATOMIC_ACQUIRE: __simt_cas_acquire_##bits(ptr, old, old_tmp, tmp); break; \ + case __ATOMIC_ACQ_REL: __simt_cas_acq_rel_##bits(ptr, old, old_tmp, tmp); break; \ + case __ATOMIC_RELEASE: __simt_cas_release_##bits(ptr, old, old_tmp, tmp); break; \ + case __ATOMIC_RELAXED: __simt_cas_relaxed_##bits(ptr, old, old_tmp, tmp); break; \ + default: assert(0); \ + } \ + bool const ret = old == old_tmp; \ + memcpy(expected, &old, bytes); \ + return ret; \ +} +DO__atomic_compare_exchange_simt_(4, 32) +DO__atomic_compare_exchange_simt_(8, 64) + +template::type = 0> \ +bool __device__ __atomic_compare_exchange_simt_(type *ptr, type *expected, const type *desired, bool, int success_memorder, int failure_memorder) { + + using R = typename std::conditional::value, volatile uint32_t, uint32_t>::type; + auto const aligned = (R*)((intptr_t)ptr & ~(sizeof(uint32_t) - 1)); + auto const offset = uint32_t((intptr_t)ptr & (sizeof(uint32_t) - 1)) * 8; + auto const mask = ((1 << sizeof(type)*8) - 1) << offset; + + uint32_t old = *expected << offset, old_value; + while (1) { + old_value = (old & mask) >> offset; + if (old_value != *expected) + break; + uint32_t const attempt = (old & ~mask) | (*desired << offset); + if (__atomic_compare_exchange_simt_ (aligned, &old, &attempt, true, success_memorder, failure_memorder)) + return true; + } + *expected = old_value; + return false; +} + +template +bool __device__ __atomic_compare_exchange_n_simt_(type *ptr, type *expected, type desired, bool weak, int success_memorder, int failure_memorder) { + return __atomic_compare_exchange_simt_(ptr, expected, &desired, weak, success_memorder, failure_memorder); +} + +#define DO__atomic_exchange_simt_(bytes, bits) \ +template::type = 0> \ +void __device__ __atomic_exchange_simt_ (type *ptr, type *val, type *ret, int memorder) { \ + int##bits##_t tmp = 0; \ + memcpy(&tmp, val, bytes); \ + switch (memorder) { \ + case __ATOMIC_SEQ_CST: __simt_fence_sc_(); \ + case __ATOMIC_CONSUME: \ + case __ATOMIC_ACQUIRE: __simt_exch_acquire_##bits(ptr, tmp, tmp); break; \ + case __ATOMIC_ACQ_REL: __simt_exch_acq_rel_##bits(ptr, tmp, tmp); break; \ + case __ATOMIC_RELEASE: __simt_exch_release_##bits(ptr, tmp, tmp); break; \ + case __ATOMIC_RELAXED: __simt_exch_relaxed_##bits(ptr, tmp, tmp); break; \ + default: assert(0); \ + } \ + memcpy(ret, &tmp, bytes); \ +} +DO__atomic_exchange_simt_(4,32) +DO__atomic_exchange_simt_(8,64) + +template::type = 0> +void __device__ __atomic_exchange_simt_ (type *ptr, type *val, type *ret, int memorder) { + + type expected = __atomic_load_n_simt_(ptr, __ATOMIC_RELAXED); + while(!__atomic_compare_exchange_simt_(ptr, &expected, val, true, memorder, memorder)) + ; + *ret = expected; +} + +template +type __device__ __atomic_exchange_n_simt_(type *ptr, type val, int memorder) { + type ret; + __atomic_exchange_simt_(ptr, &val, &ret, memorder); + return ret; +} + +#define DO__atomic_fetch_add_simt_(bytes, bits) \ +template::type = 0> \ +type __device__ __atomic_fetch_add_simt_ (type *ptr, delta val, int memorder) { \ + type ret; \ + switch (memorder) { \ + case __ATOMIC_SEQ_CST: __simt_fence_sc_(); \ + case __ATOMIC_CONSUME: \ + case __ATOMIC_ACQUIRE: __simt_add_acquire_##bits(ptr, ret, val); break; \ + case __ATOMIC_ACQ_REL: __simt_add_acq_rel_##bits(ptr, ret, val); break; \ + case __ATOMIC_RELEASE: __simt_add_release_##bits(ptr, ret, val); break; \ + case __ATOMIC_RELAXED: __simt_add_relaxed_##bits(ptr, ret, val); break; \ + default: assert(0); \ + } \ + return ret; \ +} +DO__atomic_fetch_add_simt_(4, 32) +DO__atomic_fetch_add_simt_(8, 64) + +template::type = 0> +type __device__ __atomic_fetch_add_simt_ (type *ptr, delta val, int memorder) { + + type expected = __atomic_load_n_simt_(ptr, __ATOMIC_RELAXED); + type const desired = expected + val; + while(!__atomic_compare_exchange_simt_(ptr, &expected, &desired, true, memorder, memorder)) + ; + return expected; +} + +#define DO__atomic_fetch_sub_simt_(bytes, bits) \ +template::type = 0> \ +type __device__ __atomic_fetch_sub_simt_ (type *ptr, delta val, int memorder) { \ + type ret; \ + switch (memorder) { \ + case __ATOMIC_SEQ_CST: __simt_fence_sc_(); \ + case __ATOMIC_CONSUME: \ + case __ATOMIC_ACQUIRE: __simt_add_acquire_##bits(ptr, ret, -val); break; \ + case __ATOMIC_ACQ_REL: __simt_add_acq_rel_##bits(ptr, ret, -val); break; \ + case __ATOMIC_RELEASE: __simt_add_release_##bits(ptr, ret, -val); break; \ + case __ATOMIC_RELAXED: __simt_add_relaxed_##bits(ptr, ret, -val); break; \ + default: assert(0); \ + } \ + return ret; \ +} +DO__atomic_fetch_sub_simt_(4,32) +DO__atomic_fetch_sub_simt_(8,64) + +template::type = 0> +type __device__ __atomic_fetch_sub_simt_ (type *ptr, delta val, int memorder) { + + type expected = __atomic_load_n_simt_(ptr, __ATOMIC_RELAXED); + type const desired = expected - val; + while(!__atomic_compare_exchange_simt_(ptr, &expected, &desired, true, memorder, memorder)) + ; + return expected; +} + +#define DO__atomic_fetch_and_simt_(bytes, bits) \ +template::type = 0> \ +type __device__ __atomic_fetch_and_simt_ (type *ptr, type val, int memorder) { \ + type ret; \ + switch (memorder) { \ + case __ATOMIC_SEQ_CST: __simt_fence_sc_(); \ + case __ATOMIC_CONSUME: \ + case __ATOMIC_ACQUIRE: __simt_and_acquire_##bits(ptr, ret, val); break; \ + case __ATOMIC_ACQ_REL: __simt_and_acq_rel_##bits(ptr, ret, val); break; \ + case __ATOMIC_RELEASE: __simt_and_release_##bits(ptr, ret, val); break; \ + case __ATOMIC_RELAXED: __simt_and_relaxed_##bits(ptr, ret, val); break; \ + default: assert(0); \ + } \ + return ret; \ +} +DO__atomic_fetch_and_simt_(4,32) +DO__atomic_fetch_and_simt_(8,64) + +template::type = 0> +type __device__ __atomic_fetch_and_simt_ (type *ptr, delta val, int memorder) { + + type expected = __atomic_load_n_simt_(ptr, __ATOMIC_RELAXED); + type const desired = expected & val; + while(!__atomic_compare_exchange_simt_(ptr, &expected, &desired, true, memorder, memorder)) + ; + return expected; +} + +#define DO__atomic_fetch_xor_simt_(bytes, bits) \ +template::type = 0> \ +type __device__ __atomic_fetch_xor_simt_ (type *ptr, type val, int memorder) { \ + type ret; \ + switch (memorder) { \ + case __ATOMIC_SEQ_CST: __simt_fence_sc_(); \ + case __ATOMIC_CONSUME: \ + case __ATOMIC_ACQUIRE: __simt_xor_acquire_##bits(ptr, ret, val); break; \ + case __ATOMIC_ACQ_REL: __simt_xor_acq_rel_##bits(ptr, ret, val); break; \ + case __ATOMIC_RELEASE: __simt_xor_release_##bits(ptr, ret, val); break; \ + case __ATOMIC_RELAXED: __simt_xor_relaxed_##bits(ptr, ret, val); break; \ + default: assert(0); \ + } \ + return ret; \ +} +DO__atomic_fetch_xor_simt_(4,32) +DO__atomic_fetch_xor_simt_(8,64) + +template::type = 0> +type __device__ __atomic_fetch_xor_simt_ (type *ptr, delta val, int memorder) { + + type expected = __atomic_load_n_simt_(ptr, __ATOMIC_RELAXED); + type const desired = expected ^ val; + while(!__atomic_compare_exchange_simt_(ptr, &expected, &desired, true, memorder, memorder)) + ; + return expected; +} + +#define DO__atomic_fetch_or_simt_(bytes, bits) \ +template::type = 0> \ +type __device__ __atomic_fetch_or_simt_ (type *ptr, type val, int memorder) { \ + type ret; \ + switch (memorder) { \ + case __ATOMIC_SEQ_CST: __simt_fence_sc_(); \ + case __ATOMIC_CONSUME: \ + case __ATOMIC_ACQUIRE: __simt_or_acquire_##bits(ptr, ret, val); break; \ + case __ATOMIC_ACQ_REL: __simt_or_acq_rel_##bits(ptr, ret, val); break; \ + case __ATOMIC_RELEASE: __simt_or_release_##bits(ptr, ret, val); break; \ + case __ATOMIC_RELAXED: __simt_or_relaxed_##bits(ptr, ret, val); break; \ + default: assert(0); \ + } \ + return ret; \ +} +DO__atomic_fetch_or_simt_(4,32) +DO__atomic_fetch_or_simt_(8,64) + +template::type = 0> +type __device__ __atomic_fetch_or_simt_ (type *ptr, delta val, int memorder) { + + type expected = __atomic_load_n_simt_(ptr, __ATOMIC_RELAXED); + type const desired = expected | val; + while(!__atomic_compare_exchange_simt_(ptr, &expected, &desired, true, memorder, memorder)) + ; + return expected; +} + +template +inline bool __device__ __atomic_test_and_set_simt_(type *ptr, int memorder) { + return __atomic_exchange_n_simt_((char*)ptr, (char)1, memorder) == 1; +} +template +inline void __device__ __atomic_clear_simt_(type *ptr, int memorder) { + return __atomic_store_n_simt_((char*)ptr, (char)0, memorder); +} + +inline constexpr __device__ bool __atomic_always_lock_free_simt_ (size_t size, void *) { + return size <= 8; +} +inline __device__ bool __atomic_is_lock_free_simt_(size_t size, void * ptr) { + return __atomic_always_lock_free_simt_(size, ptr); +} + +/* + fences +*/ + +inline void __device__ __atomic_thread_fence_simt(int memorder) { + switch (memorder) { + case __ATOMIC_SEQ_CST: __simt_fence_sc_(); break; + case __ATOMIC_CONSUME: + case __ATOMIC_ACQUIRE: + case __ATOMIC_ACQ_REL: + case __ATOMIC_RELEASE: __simt_fence_(); break; + case __ATOMIC_RELAXED: break; + default: assert(0); + } +} +inline void __device__ __atomic_signal_fence_simt(int memorder) { + __atomic_thread_fence_simt(memorder); +} + +/* + non-volatile +*/ + +template type __device__ __atomic_load_n_simt(const type *ptr, int memorder) { + return __atomic_load_n_simt_(const_cast(ptr), memorder); +} +template void __device__ __atomic_load_simt(const type *ptr, type *ret, int memorder) { + __atomic_load_simt_(const_cast(ptr), ret, memorder); +} +template void __device__ __atomic_store_n_simt(type *ptr, type val, int memorder) { + __atomic_store_n_simt_(const_cast(ptr), val, memorder); +} +template void __device__ __atomic_store_simt(type *ptr, type *val, int memorder) { + __atomic_store_simt_(const_cast(ptr), val, memorder); +} +template type __device__ __atomic_exchange_n_simt(type *ptr, type val, int memorder) { + return __atomic_exchange_n_simt_(const_cast(ptr), val, memorder); +} +template void __device__ __atomic_exchange_simt(type *ptr, type *val, type *ret, int memorder) { + __atomic_exchange_simt_(const_cast(ptr), val, ret, memorder); +} +template bool __device__ __atomic_compare_exchange_n_simt(type *ptr, type *expected, type desired, bool weak, int success_memorder, int failure_memorder) { + return __atomic_compare_exchange_n_simt_(const_cast(ptr), expected, desired, weak, success_memorder, failure_memorder); +} +template bool __device__ __atomic_compare_exchange_simt(type *ptr, type *expected, type *desired, bool weak, int success_memorder, int failure_memorder) { + return __atomic_compare_exchange_simt_(const_cast(ptr), expected, desired, weak, success_memorder, failure_memorder); +} +template type __device__ __atomic_fetch_add_simt(type *ptr, delta val, int memorder) { + return __atomic_fetch_add_simt_(const_cast(ptr), val, memorder); +} +template type __device__ __atomic_fetch_sub_simt(type *ptr, delta val, int memorder) { + return __atomic_fetch_sub_simt_(const_cast(ptr), val, memorder); +} +template type __device__ __atomic_fetch_and_simt(type *ptr, type val, int memorder) { + return __atomic_fetch_and_simt_(const_cast(ptr), val, memorder); +} +template type __device__ __atomic_fetch_xor_simt(type *ptr, type val, int memorder) { + return __atomic_fetch_xor_simt_(const_cast(ptr), val, memorder); +} +template type __device__ __atomic_fetch_or_simt(type *ptr, type val, int memorder) { + return __atomic_fetch_or_simt_(const_cast(ptr), val, memorder); +} +template bool __device__ __atomic_test_and_set_simt(void *ptr, int memorder) { + return __atomic_test_and_set_simt_(const_cast(ptr), memorder); +} +template void __device__ __atomic_clear_simt(void *ptr, int memorder) { + return __atomic_clear_simt_(const_cast(ptr), memorder); +} +inline bool __device__ __atomic_always_lock_free_simt(size_t size, void *ptr) { + return __atomic_always_lock_free_simt_(size, const_cast(ptr)); +} +inline bool __device__ __atomic_is_lock_free_simt(size_t size, void *ptr) { + return __atomic_is_lock_free_simt_(size, const_cast(ptr)); +} + +/* + volatile +*/ + +template type __device__ __atomic_load_n_simt(const volatile type *ptr, int memorder) { + return __atomic_load_n_simt_(const_cast(ptr), memorder); +} +template void __device__ __atomic_load_simt(const volatile type *ptr, type *ret, int memorder) { + __atomic_load_simt_(const_cast(ptr), ret, memorder); +} +template void __device__ __atomic_store_n_simt(volatile type *ptr, type val, int memorder) { + __atomic_store_n_simt_(const_cast(ptr), val, memorder); +} +template void __device__ __atomic_store_simt(volatile type *ptr, type *val, int memorder) { + __atomic_store_simt_(const_cast(ptr), val, memorder); +} +template type __device__ __atomic_exchange_n_simt(volatile type *ptr, type val, int memorder) { + return __atomic_exchange_n_simt_(const_cast(ptr), val, memorder); +} +template void __device__ __atomic_exchange_simt(volatile type *ptr, type *val, type *ret, int memorder) { + __atomic_exchange_simt_(const_cast(ptr), val, ret, memorder); +} +template bool __device__ __atomic_compare_exchange_n_simt(volatile type *ptr, type *expected, type desired, bool weak, int success_memorder, int failure_memorder) { + return __atomic_compare_exchange_n_simt_(const_cast(ptr), expected, desired, weak, success_memorder, failure_memorder); +} +template bool __device__ __atomic_compare_exchange_simt(volatile type *ptr, type *expected, type *desired, bool weak, int success_memorder, int failure_memorder) { + return __atomic_compare_exchange_simt_(const_cast(ptr), expected, desired, weak, success_memorder, failure_memorder); +} +template type __device__ __atomic_fetch_add_simt(volatile type *ptr, delta val, int memorder) { + return __atomic_fetch_add_simt_(const_cast(ptr), val, memorder); +} +template type __device__ __atomic_fetch_sub_simt(volatile type *ptr, delta val, int memorder) { + return __atomic_fetch_sub_simt_(const_cast(ptr), val, memorder); +} +template type __device__ __atomic_fetch_and_simt(volatile type *ptr, type val, int memorder) { + return __atomic_fetch_and_simt_(const_cast(ptr), val, memorder); +} +template type __device__ __atomic_fetch_xor_simt(volatile type *ptr, type val, int memorder) { + return __atomic_fetch_xor_simt_(const_cast(ptr), val, memorder); +} +template type __device__ __atomic_fetch_or_simt(volatile type *ptr, type val, int memorder) { + return __atomic_fetch_or_simt_(const_cast(ptr), val, memorder); +} +template bool __device__ __atomic_test_and_set_simt(volatile void *ptr, int memorder) { + return __atomic_test_and_set_simt_(const_cast(ptr), memorder); +} +template void __device__ __atomic_clear_simt(volatile void *ptr, int memorder) { + return __atomic_clear_simt_(const_cast(ptr), memorder); +} + + + +} // end namespace Impl +} // end namespace Kokkos + +#endif //_SIMT_DETAILS_CONFIG + +#ifndef KOKKOS_SIMT_ATOMIC_BUILTIN_REPLACEMENTS_DEFINED +/* + builtins +*/ + +#define __atomic_load_n __atomic_load_n_simt +#define __atomic_load __atomic_load_simt +#define __atomic_store_n __atomic_store_n_simt +#define __atomic_store __atomic_store_simt +#define __atomic_exchange_n __atomic_exchange_n_simt +#define __atomic_exchange __atomic_exchange_simt +#define __atomic_compare_exchange_n __atomic_compare_exchange_n_simt +#define __atomic_compare_exchange __atomic_compare_exchange_simt +#define __atomic_fetch_add __atomic_fetch_add_simt +#define __atomic_fetch_sub __atomic_fetch_sub_simt +#define __atomic_fetch_and __atomic_fetch_and_simt +#define __atomic_fetch_xor __atomic_fetch_xor_simt +#define __atomic_fetch_or __atomic_fetch_or_simt +#define __atomic_test_and_set __atomic_test_and_set_simt +#define __atomic_clear __atomic_clear_simt +#define __atomic_always_lock_free __atomic_always_lock_free_simt +#define __atomic_is_lock_free __atomic_is_lock_free_simt +#define __atomic_thread_fence __atomic_thread_fence_simt +#define __atomic_signal_fence __atomic_signal_fence_simt + +#define KOKKOS_SIMT_ATOMIC_BUILTIN_REPLACEMENTS_DEFINED + +#endif //__CUDA_ARCH__ && KOKKOS_ENABLE_CUDA_ASM_ATOMICS +#endif // KOKKOS_SIMT_ATOMIC_BUILTIN_REPLACEMENTS_DEFINED diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Atomic_Intrinsics_Restore_Builtins.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Atomic_Intrinsics_Restore_Builtins.hpp new file mode 100644 index 0000000000..bedb147227 --- /dev/null +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Atomic_Intrinsics_Restore_Builtins.hpp @@ -0,0 +1,68 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2019) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifdef KOKKOS_SIMT_ATOMIC_BUILTIN_REPLACEMENTS_DEFINED + +#undef __atomic_load_n +#undef __atomic_load +#undef __atomic_store_n +#undef __atomic_store +#undef __atomic_exchange_n +#undef __atomic_exchange +#undef __atomic_compare_exchange_n +#undef __atomic_compare_exchange +#undef __atomic_fetch_add +#undef __atomic_fetch_sub +#undef __atomic_fetch_and +#undef __atomic_fetch_xor +#undef __atomic_fetch_or +#undef __atomic_test_and_set +#undef __atomic_clear +#undef __atomic_always_lock_free +#undef __atomic_is_lock_free +#undef __atomic_thread_fence +#undef __atomic_signal_fence + +#undef KOKKOS_SIMT_ATOMIC_BUILTIN_REPLACEMENTS_DEFINED + +#endif // KOKKOS_SIMT_ATOMIC_BUILTIN_REPLACEMENTS_DEFINED diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Internal.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_BlockSize_Deduction.hpp similarity index 69% rename from lib/kokkos/core/src/Cuda/Kokkos_Cuda_Internal.hpp rename to lib/kokkos/core/src/Cuda/Kokkos_Cuda_BlockSize_Deduction.hpp index 145d93ed76..932bde2b37 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Internal.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_BlockSize_Deduction.hpp @@ -58,7 +58,68 @@ struct CudaGetMaxBlockSize; template int cuda_get_max_block_size(const typename DriverType::functor_type & f, const size_t vector_length, const size_t shmem_extra_block, const size_t shmem_extra_thread) { - return CudaGetMaxBlockSize::get_block_size(f,vector_length, shmem_extra_block,shmem_extra_thread); + return CudaGetMaxBlockSize::get_block_size(f,vector_length, shmem_extra_block,shmem_extra_thread); +} + +template +int cuda_get_max_block_size(const CudaInternal* cuda_instance, const cudaFuncAttributes& attr, const FunctorType& f, const size_t vector_length, + const size_t shmem_block, const size_t shmem_thread) { + + const int min_blocks_per_sm = LaunchBounds::minBperSM == 0 ? + 1 : LaunchBounds::minBperSM ; + const int max_threads_per_block = LaunchBounds::maxTperB == 0 ? + cuda_instance->m_maxThreadsPerBlock : LaunchBounds::maxTperB ; + + const int regs_per_thread = attr.numRegs; + const int regs_per_sm = cuda_instance->m_regsPerSM; + const int shmem_per_sm = cuda_instance->m_shmemPerSM; + const int max_shmem_per_block = cuda_instance->m_maxShmemPerBlock; + const int max_blocks_per_sm = cuda_instance->m_maxBlocksPerSM; + const int max_threads_per_sm = cuda_instance->m_maxThreadsPerSM; + + int block_size = std::min(attr.maxThreadsPerBlock,max_threads_per_block); + + int functor_shmem = FunctorTeamShmemSize< FunctorType >::value( f , block_size/vector_length ); + int total_shmem = shmem_block + shmem_thread*(block_size/vector_length) + functor_shmem + attr.sharedSizeBytes; + int max_blocks_regs = regs_per_sm/(regs_per_thread*block_size); + int max_blocks_shmem = (total_shmem0?shmem_per_sm/total_shmem:max_blocks_regs):0; + int blocks_per_sm = std::min(max_blocks_regs,max_blocks_shmem); + int threads_per_sm = blocks_per_sm * block_size; + if(threads_per_sm > max_threads_per_sm) { + blocks_per_sm = max_threads_per_sm/block_size; + threads_per_sm = blocks_per_sm * block_size; + } + int opt_block_size = (blocks_per_sm>=min_blocks_per_sm) ? block_size : 0; + int opt_threads_per_sm = threads_per_sm; + //printf("BlockSizeMax: %i Shmem: %i %i %i %i Regs: %i %i Blocks: %i %i Achieved: %i %i Opt: %i %i\n",block_size, + // shmem_per_sm,max_shmem_per_block,functor_shmem,total_shmem, + // regs_per_sm,regs_per_thread,max_blocks_shmem,max_blocks_regs,blocks_per_sm,threads_per_sm,opt_block_size,opt_threads_per_sm); + block_size-=32; + while ((blocks_per_sm==0) && (block_size>=32)) { + functor_shmem = FunctorTeamShmemSize< FunctorType >::value( f , block_size/vector_length ); + total_shmem = shmem_block + shmem_thread*(block_size/vector_length) + functor_shmem + attr.sharedSizeBytes; + max_blocks_regs = regs_per_sm/(regs_per_thread*block_size); + max_blocks_shmem = (total_shmem0?shmem_per_sm/total_shmem:max_blocks_regs):0; + blocks_per_sm = std::min(max_blocks_regs,max_blocks_shmem); + threads_per_sm = blocks_per_sm * block_size; + if(threads_per_sm > max_threads_per_sm) { + blocks_per_sm = max_threads_per_sm/block_size; + threads_per_sm = blocks_per_sm * block_size; + } + if((blocks_per_sm >= min_blocks_per_sm) && (blocks_per_sm <= max_blocks_per_sm)) { + if(threads_per_sm>=opt_threads_per_sm) { + opt_block_size = block_size; + opt_threads_per_sm = threads_per_sm; + } + } + //printf("BlockSizeMax: %i Shmem: %i %i %i %i Regs: %i %i Blocks: %i %i Achieved: %i %i Opt: %i %i\n",block_size, + // shmem_per_sm,max_shmem_per_block,functor_shmem,total_shmem, + // regs_per_sm,regs_per_thread,max_blocks_shmem,max_blocks_regs,blocks_per_sm,threads_per_sm,opt_block_size,opt_threads_per_sm); + block_size-=32; + } + return opt_block_size; } @@ -241,11 +302,71 @@ struct CudaGetOptBlockSize; template int cuda_get_opt_block_size(const typename DriverType::functor_type & f, const size_t vector_length, const size_t shmem_extra_block, const size_t shmem_extra_thread) { - return CudaGetOptBlockSize::get_block_size(f,vector_length,shmem_extra_block,shmem_extra_thread); + return CudaGetOptBlockSize::get_block_size(f,vector_length,shmem_extra_block,shmem_extra_thread); +} + +template +int cuda_get_opt_block_size(const CudaInternal* cuda_instance, const cudaFuncAttributes& attr, const FunctorType& f, const size_t vector_length, + const size_t shmem_block, const size_t shmem_thread) { + + const int min_blocks_per_sm = LaunchBounds::minBperSM == 0 ? + 1 : LaunchBounds::minBperSM ; + const int max_threads_per_block = LaunchBounds::maxTperB == 0 ? + cuda_instance->m_maxThreadsPerBlock : LaunchBounds::maxTperB ; + + const int regs_per_thread = attr.numRegs; + const int regs_per_sm = cuda_instance->m_regsPerSM; + const int shmem_per_sm = cuda_instance->m_shmemPerSM; + const int max_shmem_per_block = cuda_instance->m_maxShmemPerBlock; + const int max_blocks_per_sm = cuda_instance->m_maxBlocksPerSM; + const int max_threads_per_sm = cuda_instance->m_maxThreadsPerSM; + + int block_size = std::min(attr.maxThreadsPerBlock,max_threads_per_block); + + int functor_shmem = FunctorTeamShmemSize< FunctorType >::value( f , block_size/vector_length ); + int total_shmem = shmem_block + shmem_thread*(block_size/vector_length) + functor_shmem + attr.sharedSizeBytes; + int max_blocks_regs = regs_per_sm/(regs_per_thread*block_size); + int max_blocks_shmem = (total_shmem0?shmem_per_sm/total_shmem:max_blocks_regs):0; + int blocks_per_sm = std::min(max_blocks_regs,max_blocks_shmem); + int threads_per_sm = blocks_per_sm * block_size; + if(threads_per_sm > max_threads_per_sm) { + blocks_per_sm = max_threads_per_sm/block_size; + threads_per_sm = blocks_per_sm * block_size; + } + int opt_block_size = (blocks_per_sm>=min_blocks_per_sm) ? block_size : 0; + int opt_threads_per_sm = threads_per_sm; + + block_size-=32; + while ((block_size>=32)) { + functor_shmem = FunctorTeamShmemSize< FunctorType >::value( f , block_size/vector_length ); + total_shmem = shmem_block + shmem_thread*(block_size/vector_length) + functor_shmem + attr.sharedSizeBytes; + max_blocks_regs = regs_per_sm/(regs_per_thread*block_size); + max_blocks_shmem = (total_shmem0?shmem_per_sm/total_shmem:max_blocks_regs):0; + blocks_per_sm = std::min(max_blocks_regs,max_blocks_shmem); + threads_per_sm = blocks_per_sm * block_size; + if(threads_per_sm > max_threads_per_sm) { + blocks_per_sm = max_threads_per_sm/block_size; + threads_per_sm = blocks_per_sm * block_size; + } + if((blocks_per_sm >= min_blocks_per_sm) && (blocks_per_sm <= max_blocks_per_sm)) { + if(threads_per_sm>=opt_threads_per_sm) { + opt_block_size = block_size; + opt_threads_per_sm = threads_per_sm; + } + } + block_size-=32; + } + return opt_block_size; } template -struct CudaGetOptBlockSize,true> { +struct CudaGetOptBlockSize,true> { static int get_block_size(const typename DriverType::functor_type & f, const size_t vector_length, const size_t shmem_extra_block, const size_t shmem_extra_thread) { int blockSize=16; @@ -275,7 +396,7 @@ struct CudaGetOptBlockSize,true> { }; template -struct CudaGetOptBlockSize,false> { +struct CudaGetOptBlockSize,false> { static int get_block_size(const typename DriverType::functor_type & f, const size_t vector_length, const size_t shmem_extra_block, const size_t shmem_extra_thread) { int blockSize=16; @@ -305,7 +426,7 @@ struct CudaGetOptBlockSize,false> { }; template -struct CudaGetOptBlockSize,true> { +struct CudaGetOptBlockSize,true> { static int get_block_size(const typename DriverType::functor_type & f, const size_t vector_length, const size_t shmem_extra_block, const size_t shmem_extra_thread) { int blockSize=16; diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Impl.cpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.cpp similarity index 86% rename from lib/kokkos/core/src/Cuda/Kokkos_Cuda_Impl.cpp rename to lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.cpp index 4fd7a9c69e..0ca9e3c160 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Impl.cpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.cpp @@ -50,7 +50,8 @@ #include #include -#include +#include +#include #include #include #include @@ -217,78 +218,6 @@ const CudaInternalDevices & CudaInternalDevices::singleton() } -//---------------------------------------------------------------------------- - -class CudaInternal { -private: - - CudaInternal( const CudaInternal & ); - CudaInternal & operator = ( const CudaInternal & ); - - -public: - - typedef Cuda::size_type size_type ; - - int m_cudaDev ; - int m_cudaArch ; - unsigned m_multiProcCount ; - unsigned m_maxWarpCount ; - unsigned m_maxBlock ; - unsigned m_maxSharedWords ; - uint32_t m_maxConcurrency ; - size_type m_scratchSpaceCount ; - size_type m_scratchFlagsCount ; - size_type m_scratchUnifiedCount ; - size_type m_scratchUnifiedSupported ; - size_type m_streamCount ; - size_type * m_scratchSpace ; - size_type * m_scratchFlags ; - size_type * m_scratchUnified ; - uint32_t * m_scratchConcurrentBitset ; - cudaStream_t * m_stream ; - - static int was_initialized; - static int was_finalized; - - static CudaInternal & singleton(); - - int verify_is_initialized( const char * const label ) const ; - - int is_initialized() const - { return 0 != m_scratchSpace && 0 != m_scratchFlags ; } - - void initialize( int cuda_device_id , int stream_count ); - void finalize(); - - void print_configuration( std::ostream & ) const ; - - ~CudaInternal(); - - CudaInternal() - : m_cudaDev( -1 ) - , m_cudaArch( -1 ) - , m_multiProcCount( 0 ) - , m_maxWarpCount( 0 ) - , m_maxBlock( 0 ) - , m_maxSharedWords( 0 ) - , m_maxConcurrency( 0 ) - , m_scratchSpaceCount( 0 ) - , m_scratchFlagsCount( 0 ) - , m_scratchUnifiedCount( 0 ) - , m_scratchUnifiedSupported( 0 ) - , m_streamCount( 0 ) - , m_scratchSpace( 0 ) - , m_scratchFlags( 0 ) - , m_scratchUnified( 0 ) - , m_scratchConcurrentBitset( 0 ) - , m_stream( 0 ) - {} - - size_type * scratch_space( const size_type size ); - size_type * scratch_flags( const size_type size ); - size_type * scratch_unified( const size_type size ); -}; int CudaInternal::was_initialized = 0; int CudaInternal::was_finalized = 0; @@ -366,8 +295,11 @@ CudaInternal & CudaInternal::singleton() static CudaInternal self ; return self ; } +void CudaInternal::fence() const { + cudaStreamSynchronize(m_stream); +} -void CudaInternal::initialize( int cuda_device_id , int stream_count ) +void CudaInternal::initialize( int cuda_device_id , cudaStream_t stream ) { if ( was_finalized ) Kokkos::abort("Calling Cuda::initialize after Cuda::finalize is illegal\n"); was_initialized = 1; @@ -454,6 +386,15 @@ void CudaInternal::initialize( int cuda_device_id , int stream_count ) m_maxBlock = cudaProp.maxGridSize[0] ; + m_shmemPerSM = cudaProp.sharedMemPerMultiprocessor ; + m_maxShmemPerBlock = cudaProp.sharedMemPerBlock ; + m_regsPerSM = cudaProp.regsPerMultiprocessor ; + m_maxBlocksPerSM = m_cudaArch < 500 ? 16 : ( + m_cudaArch < 750 ? 32 : ( + m_cudaArch == 750 ? 16 : 32)); + m_maxThreadsPerSM = cudaProp.maxThreadsPerMultiProcessor ; + m_maxThreadsPerBlock = cudaProp.maxThreadsPerBlock ; + //---------------------------------- m_scratchUnifiedSupported = cudaProp.unifiedAddressing ; @@ -482,10 +423,9 @@ void CudaInternal::initialize( int cuda_device_id , int stream_count ) // Concurrent bitset for obtaining unique tokens from within // an executing kernel. { - const unsigned max_threads_per_sm = 2048 ; // up to capability 7.0 m_maxConcurrency = - max_threads_per_sm * cudaProp.multiProcessorCount ; + m_maxThreadsPerSM * cudaProp.multiProcessorCount ; const int32_t buffer_bound = Kokkos::Impl::concurrent_bitset::buffer_bound( m_maxConcurrency ); @@ -507,11 +447,6 @@ void CudaInternal::initialize( int cuda_device_id , int stream_count ) } //---------------------------------- - if ( stream_count ) { - m_stream = (cudaStream_t*) ::malloc( stream_count * sizeof(cudaStream_t) ); - m_streamCount = stream_count ; - for ( size_type i = 0 ; i < m_streamCount ; ++i ) m_stream[i] = 0 ; - } } else { @@ -539,7 +474,7 @@ void CudaInternal::initialize( int cuda_device_id , int stream_count ) if( Kokkos::show_warnings() && !cuda_launch_blocking() ) { std::cerr << "Kokkos::Cuda::initialize WARNING: Cuda is allocating into UVMSpace by default" << std::endl; std::cerr << " without setting CUDA_LAUNCH_BLOCKING=1." << std::endl; - std::cerr << " The code must call Cuda::fence() after each kernel" << std::endl; + std::cerr << " The code must call Cuda().fence() after each kernel" << std::endl; std::cerr << " or will likely crash when accessing data on the host." << std::endl; } @@ -568,7 +503,10 @@ void CudaInternal::initialize( int cuda_device_id , int stream_count ) #endif // Init the array for used for arbitrarily sized atomics - Impl::initialize_host_cuda_lock_arrays(); + if(stream == 0) + Impl::initialize_host_cuda_lock_arrays(); + + m_stream = stream; } //---------------------------------------------------------------------------- @@ -578,7 +516,7 @@ enum { sizeScratchGrain = sizeof(ScratchGrain) }; Cuda::size_type * -CudaInternal::scratch_flags( const Cuda::size_type size ) +CudaInternal::scratch_flags( const Cuda::size_type size ) const { if ( verify_is_initialized("scratch_flags") && m_scratchFlagsCount * sizeScratchGrain < size ) { @@ -587,6 +525,9 @@ CudaInternal::scratch_flags( const Cuda::size_type size ) typedef Kokkos::Impl::SharedAllocationRecord< Kokkos::CudaSpace , void > Record ; + if( m_scratchFlags ) + Record::decrement( Record::get_record( m_scratchFlags ) ); + Record * const r = Record::allocate( Kokkos::CudaSpace() , "InternalScratchFlags" , ( sizeof( ScratchGrain ) * m_scratchFlagsCount ) ); @@ -602,7 +543,7 @@ CudaInternal::scratch_flags( const Cuda::size_type size ) } Cuda::size_type * -CudaInternal::scratch_space( const Cuda::size_type size ) +CudaInternal::scratch_space( const Cuda::size_type size ) const { if ( verify_is_initialized("scratch_space") && m_scratchSpaceCount * sizeScratchGrain < size ) { @@ -610,6 +551,9 @@ CudaInternal::scratch_space( const Cuda::size_type size ) typedef Kokkos::Impl::SharedAllocationRecord< Kokkos::CudaSpace , void > Record ; + if( m_scratchSpace ) + Record::decrement( Record::get_record( m_scratchSpace ) ); + Record * const r = Record::allocate( Kokkos::CudaSpace() , "InternalScratchSpace" , ( sizeof( ScratchGrain ) * m_scratchSpaceCount ) ); @@ -623,7 +567,7 @@ CudaInternal::scratch_space( const Cuda::size_type size ) } Cuda::size_type * -CudaInternal::scratch_unified( const Cuda::size_type size ) +CudaInternal::scratch_unified( const Cuda::size_type size ) const { if ( verify_is_initialized("scratch_unified") && m_scratchUnifiedSupported && m_scratchUnifiedCount * sizeScratchGrain < size ) { @@ -632,6 +576,9 @@ CudaInternal::scratch_unified( const Cuda::size_type size ) typedef Kokkos::Impl::SharedAllocationRecord< Kokkos::CudaHostPinnedSpace , void > Record ; + if( m_scratchUnified ) + Record::decrement( Record::get_record( m_scratchUnified ) ); + Record * const r = Record::allocate( Kokkos::CudaHostPinnedSpace() , "InternalScratchUnified" , ( sizeof( ScratchGrain ) * m_scratchUnifiedCount ) ); @@ -644,6 +591,31 @@ CudaInternal::scratch_unified( const Cuda::size_type size ) return m_scratchUnified ; } +Cuda::size_type * +CudaInternal::scratch_functor( const Cuda::size_type size ) const +{ + if ( verify_is_initialized("scratch_functor") && + m_scratchFunctorSize < size ) { + + m_scratchFunctorSize = size ; + + typedef Kokkos::Impl::SharedAllocationRecord< Kokkos::CudaSpace , void > Record ; + + if( m_scratchFunctor ) + Record::decrement( Record::get_record( m_scratchFunctor ) ); + + Record * const r = Record::allocate( Kokkos::CudaSpace() + , "InternalScratchFunctor" + , m_scratchFunctorSize ); + + Record::increment( r ); + + m_scratchFunctor = reinterpret_cast( r->data() ); + } + + return m_scratchFunctor ; +} + //---------------------------------------------------------------------------- void CudaInternal::finalize() @@ -653,13 +625,7 @@ void CudaInternal::finalize() Impl::finalize_host_cuda_lock_arrays(); - if ( m_stream ) { - for ( size_type i = 1 ; i < m_streamCount ; ++i ) { - cudaStreamDestroy( m_stream[i] ); - m_stream[i] = 0 ; - } - ::free( m_stream ); - } + if(m_stream!=0) cudaStreamDestroy(m_stream); typedef Kokkos::Impl::SharedAllocationRecord< CudaSpace > RecordCuda ; typedef Kokkos::Impl::SharedAllocationRecord< CudaHostPinnedSpace > RecordHost ; @@ -668,6 +634,8 @@ void CudaInternal::finalize() RecordCuda::decrement( RecordCuda::get_record( m_scratchSpace ) ); RecordHost::decrement( RecordHost::get_record( m_scratchUnified ) ); RecordCuda::decrement( RecordCuda::get_record( m_scratchConcurrentBitset ) ); + if(m_scratchFunctorSize>0) + RecordCuda::decrement( RecordCuda::get_record( m_scratchFunctor ) ); m_cudaDev = -1 ; m_multiProcCount = 0 ; @@ -713,14 +681,14 @@ Cuda::size_type cuda_internal_maximum_grid_count() Cuda::size_type cuda_internal_maximum_shared_words() { return CudaInternal::singleton().m_maxSharedWords ; } -Cuda::size_type * cuda_internal_scratch_space( const Cuda::size_type size ) -{ return CudaInternal::singleton().scratch_space( size ); } +Cuda::size_type * cuda_internal_scratch_space( const Cuda& instance, const Cuda::size_type size ) +{ return instance.impl_internal_space_instance()->scratch_space( size ); } -Cuda::size_type * cuda_internal_scratch_flags( const Cuda::size_type size ) -{ return CudaInternal::singleton().scratch_flags( size ); } +Cuda::size_type * cuda_internal_scratch_flags( const Cuda& instance, const Cuda::size_type size ) +{ return instance.impl_internal_space_instance()->scratch_flags( size ); } -Cuda::size_type * cuda_internal_scratch_unified( const Cuda::size_type size ) -{ return CudaInternal::singleton().scratch_unified( size ); } +Cuda::size_type * cuda_internal_scratch_unified( const Cuda& instance, const Cuda::size_type size ) +{ return instance.impl_internal_space_instance()->scratch_unified( size ); } } // namespace Impl @@ -749,7 +717,7 @@ void Cuda::initialize( const Cuda::SelectDevice config , size_t num_instances ) void Cuda::impl_initialize( const Cuda::SelectDevice config , size_t num_instances ) #endif { - Impl::CudaInternal::singleton().initialize( config.cuda_device_id , num_instances ); + Impl::CudaInternal::singleton().initialize( config.cuda_device_id , 0 ); #if defined(KOKKOS_ENABLE_PROFILING) Kokkos::Profiling::initialize(); @@ -800,19 +768,17 @@ void Cuda::impl_finalize() } Cuda::Cuda() - : m_device( Impl::CudaInternal::singleton().m_cudaDev ) - , m_stream( 0 ) + : m_space_instance( &Impl::CudaInternal::singleton() ) { Impl::CudaInternal::singleton().verify_is_initialized( "Cuda instance constructor" ); } -Cuda::Cuda( const int instance_id ) - : m_device( Impl::CudaInternal::singleton().m_cudaDev ) - , m_stream( - Impl::CudaInternal::singleton().verify_is_initialized( "Cuda instance constructor" ) - ? Impl::CudaInternal::singleton().m_stream[ instance_id % Impl::CudaInternal::singleton().m_streamCount ] - : 0 ) -{} +Cuda::Cuda(cudaStream_t stream) + : m_space_instance(new Impl::CudaInternal) +{ + Impl::CudaInternal::singleton().verify_is_initialized( "Cuda instance constructor" ); + m_space_instance->initialize(Impl::CudaInternal::singleton().m_cudaDev,stream); +} void Cuda::print_configuration( std::ostream & s , const bool ) { Impl::CudaInternal::singleton().print_configuration( s ); } @@ -823,13 +789,27 @@ bool Cuda::sleep() { return false ; } bool Cuda::wake() { return true ; } #endif -void Cuda::fence() +void Cuda::impl_static_fence() { Kokkos::Impl::cuda_device_synchronize(); } +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE +void Cuda::fence() { + impl_static_fence(); +} +#else +void Cuda::fence() const { + m_space_instance->fence(); +} +#endif + const char* Cuda::name() { return "Cuda"; } +cudaStream_t Cuda::cuda_stream() const { return m_space_instance->m_stream ; } +int Cuda::cuda_device() const { return m_space_instance->m_cudaDev ; } + + } // namespace Kokkos namespace Kokkos { diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.hpp new file mode 100644 index 0000000000..f9e333fcf0 --- /dev/null +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Instance.hpp @@ -0,0 +1,156 @@ +#ifndef KOKKOS_CUDA_INSTANCE_HPP_ +#define KOKKOS_CUDA_INSTANCE_HPP_ + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +struct CudaTraits { + enum { WarpSize = 32 /* 0x0020 */ }; + enum { WarpIndexMask = 0x001f /* Mask for warpindex */ }; + enum { WarpIndexShift = 5 /* WarpSize == 1 << WarpShift */ }; + + enum { ConstantMemoryUsage = 0x008000 /* 32k bytes */ }; + enum { ConstantMemoryCache = 0x002000 /* 8k bytes */ }; + enum { KernelArgumentLimit = 0x001000 /* 4k bytes */ }; + + typedef unsigned long + ConstantGlobalBufferType[ ConstantMemoryUsage / sizeof(unsigned long) ]; + +#if defined(KOKKOS_ARCH_VOLTA) || \ + defined(KOKKOS_ARCH_PASCAL) + enum { ConstantMemoryUseThreshold = 0x000200 /* 0 bytes -> always use constant (or global)*/ }; +#else + enum { ConstantMemoryUseThreshold = 0x000200 /* 512 bytes */ }; +#endif + + KOKKOS_INLINE_FUNCTION static + CudaSpace::size_type warp_count( CudaSpace::size_type i ) + { return ( i + WarpIndexMask ) >> WarpIndexShift ; } + + KOKKOS_INLINE_FUNCTION static + CudaSpace::size_type warp_align( CudaSpace::size_type i ) + { + enum { Mask = ~CudaSpace::size_type( WarpIndexMask ) }; + return ( i + WarpIndexMask ) & Mask ; + } +}; + +//---------------------------------------------------------------------------- + +CudaSpace::size_type cuda_internal_multiprocessor_count(); +CudaSpace::size_type cuda_internal_maximum_warp_count(); +CudaSpace::size_type cuda_internal_maximum_grid_count(); +CudaSpace::size_type cuda_internal_maximum_shared_words(); + +CudaSpace::size_type cuda_internal_maximum_concurrent_block_count(); + +CudaSpace::size_type * cuda_internal_scratch_flags( const Cuda&, const CudaSpace::size_type size ); +CudaSpace::size_type * cuda_internal_scratch_space( const Cuda&, const CudaSpace::size_type size ); +CudaSpace::size_type * cuda_internal_scratch_unified( const Cuda&, const CudaSpace::size_type size ); + +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +namespace Kokkos { +namespace Impl { + +class CudaInternal { +private: + + CudaInternal( const CudaInternal & ); + CudaInternal & operator = ( const CudaInternal & ); + + +public: + + typedef Cuda::size_type size_type ; + + int m_cudaDev ; + + // Device Properties + int m_cudaArch ; + unsigned m_multiProcCount ; + unsigned m_maxWarpCount ; + unsigned m_maxBlock ; + unsigned m_maxSharedWords ; + uint32_t m_maxConcurrency ; + int m_shmemPerSM ; + int m_maxShmemPerBlock ; + int m_regsPerSM ; + int m_maxBlocksPerSM ; + int m_maxThreadsPerSM ; + int m_maxThreadsPerBlock ; + + mutable size_type m_scratchSpaceCount ; + mutable size_type m_scratchFlagsCount ; + mutable size_type m_scratchUnifiedCount ; + mutable size_type m_scratchFunctorSize ; + size_type m_scratchUnifiedSupported ; + size_type m_streamCount ; + mutable size_type * m_scratchSpace ; + mutable size_type * m_scratchFlags ; + mutable size_type * m_scratchUnified ; + mutable size_type * m_scratchFunctor ; + uint32_t * m_scratchConcurrentBitset ; + cudaStream_t m_stream ; + + static int was_initialized; + static int was_finalized; + + static CudaInternal & singleton(); + + int verify_is_initialized( const char * const label ) const ; + + int is_initialized() const + { return 0 != m_scratchSpace && 0 != m_scratchFlags ; } + + void initialize( int cuda_device_id , cudaStream_t stream = 0 ); + void finalize(); + + void print_configuration( std::ostream & ) const ; + + void fence() const ; + + ~CudaInternal(); + + CudaInternal() + : m_cudaDev( -1 ) + , m_cudaArch( -1 ) + , m_multiProcCount( 0 ) + , m_maxWarpCount( 0 ) + , m_maxBlock( 0 ) + , m_maxSharedWords( 0 ) + , m_maxConcurrency( 0 ) + , m_shmemPerSM( 0 ) + , m_maxShmemPerBlock( 0 ) + , m_regsPerSM( 0 ) + , m_maxBlocksPerSM( 0 ) + , m_maxThreadsPerSM( 0 ) + , m_maxThreadsPerBlock( 0 ) + , m_scratchSpaceCount( 0 ) + , m_scratchFlagsCount( 0 ) + , m_scratchUnifiedCount( 0 ) + , m_scratchFunctorSize( 0 ) + , m_scratchUnifiedSupported( 0 ) + , m_streamCount( 0 ) + , m_scratchSpace( 0 ) + , m_scratchFlags( 0 ) + , m_scratchUnified( 0 ) + , m_scratchFunctor( 0 ) + , m_scratchConcurrentBitset( 0 ) + , m_stream( 0 ) + {} + + size_type * scratch_space( const size_type size ) const ; + size_type * scratch_flags( const size_type size ) const ; + size_type * scratch_unified( const size_type size ) const ; + size_type * scratch_functor( const size_type size ) const ; +}; + +} // Namespace Impl +} // Namespace Kokkos +#endif diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_KernelLaunch.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_KernelLaunch.hpp new file mode 100644 index 0000000000..2ec868c1f1 --- /dev/null +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_KernelLaunch.hpp @@ -0,0 +1,579 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_CUDAEXEC_HPP +#define KOKKOS_CUDAEXEC_HPP + +#include +#ifdef KOKKOS_ENABLE_CUDA + +#include +#include +#include +#include +#include +#include +#include +#include + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#if defined( __CUDACC__ ) + +/** \brief Access to constant memory on the device */ +#ifdef KOKKOS_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE + +__device__ __constant__ +extern unsigned long kokkos_impl_cuda_constant_memory_buffer[] ; + +#else + +__device__ __constant__ +unsigned long kokkos_impl_cuda_constant_memory_buffer[ Kokkos::Impl::CudaTraits::ConstantMemoryUsage / sizeof(unsigned long) ] ; + +#endif + +namespace Kokkos { +namespace Impl { + void* cuda_resize_scratch_space(std::int64_t bytes, bool force_shrink = false); +} +} + +template< typename T > +inline +__device__ +T * kokkos_impl_cuda_shared_memory() +{ extern __shared__ Kokkos::CudaSpace::size_type sh[]; return (T*) sh ; } + +namespace Kokkos { +namespace Impl { + +//---------------------------------------------------------------------------- +// See section B.17 of Cuda C Programming Guide Version 3.2 +// for discussion of +// __launch_bounds__(maxThreadsPerBlock,minBlocksPerMultiprocessor) +// function qualifier which could be used to improve performance. +//---------------------------------------------------------------------------- +// Maximize L1 cache and minimize shared memory: +// cudaFuncSetCacheConfig(MyKernel, cudaFuncCachePreferL1 ); +// For 2.0 capability: 48 KB L1 and 16 KB shared +//---------------------------------------------------------------------------- + +template< class DriverType> +__global__ +static void cuda_parallel_launch_constant_memory() +{ + const DriverType & driver = + *((const DriverType *) kokkos_impl_cuda_constant_memory_buffer ); + + driver(); +} + +template< class DriverType, unsigned int maxTperB, unsigned int minBperSM > +__global__ +__launch_bounds__(maxTperB, minBperSM) +static void cuda_parallel_launch_constant_memory() +{ + const DriverType & driver = + *((const DriverType *) kokkos_impl_cuda_constant_memory_buffer ); + + driver(); +} + +template< class DriverType> +__global__ +static void cuda_parallel_launch_local_memory( const DriverType driver ) +{ + driver(); +} + +template< class DriverType, unsigned int maxTperB, unsigned int minBperSM > +__global__ +__launch_bounds__(maxTperB, minBperSM) +static void cuda_parallel_launch_local_memory( const DriverType driver ) +{ + driver(); +} + +template< class DriverType> +__global__ +static void cuda_parallel_launch_global_memory( const DriverType* driver ) +{ + driver->operator()(); +} + +template< class DriverType, unsigned int maxTperB, unsigned int minBperSM > +__global__ +__launch_bounds__(maxTperB, minBperSM) +static void cuda_parallel_launch_global_memory( const DriverType* driver ) +{ + driver->operator()(); +} + +template< class DriverType> +__global__ +static void cuda_parallel_launch_constant_or_global_memory( const DriverType* driver_ptr ) +{ + const DriverType & driver = driver_ptr!=NULL ? *driver_ptr : + *((const DriverType *) kokkos_impl_cuda_constant_memory_buffer ); + + driver(); +} + +template< class DriverType, unsigned int maxTperB, unsigned int minBperSM > +__global__ +__launch_bounds__(maxTperB, minBperSM) +static void cuda_parallel_launch_constant_or_global_memory( const DriverType* driver_ptr ) +{ + const DriverType & driver = driver_ptr!=NULL ? *driver_ptr : + *((const DriverType *) kokkos_impl_cuda_constant_memory_buffer ); + + driver(); +} + +template< class DriverType > +struct DeduceCudaLaunchMechanism { + constexpr static const Kokkos::Experimental::WorkItemProperty::HintLightWeight_t light_weight = Kokkos::Experimental::WorkItemProperty::HintLightWeight; + constexpr static const Kokkos::Experimental::WorkItemProperty::HintHeavyWeight_t heavy_weight = Kokkos::Experimental::WorkItemProperty::HintHeavyWeight ; + constexpr static const typename DriverType::Policy::work_item_property property = typename DriverType::Policy::work_item_property(); + + static constexpr const Experimental::CudaLaunchMechanism valid_launch_mechanism = + // BuildValidMask + (sizeof(DriverType) + , Experimental::CudaLaunchMechanism LaunchMechanism = + DeduceCudaLaunchMechanism::launch_mechanism > +struct CudaParallelLaunch ; + +template < class DriverType + , unsigned int MaxThreadsPerBlock + , unsigned int MinBlocksPerSM> +struct CudaParallelLaunch< DriverType + , Kokkos::LaunchBounds< MaxThreadsPerBlock + , MinBlocksPerSM > + , Experimental::CudaLaunchMechanism::ConstantMemory> +{ + static_assert(sizeof(DriverType)m_maxShmemPerBlock < shmem ) { + Kokkos::Impl::throw_runtime_exception( std::string("CudaParallelLaunch FAILED: shared memory request is too large") ); + } + #ifndef KOKKOS_ARCH_KEPLER + // On Kepler the L1 has no benefit since it doesn't cache reads + else { + CUDA_SAFE_CALL( + cudaFuncSetCacheConfig + ( cuda_parallel_launch_constant_memory + < DriverType, MaxThreadsPerBlock, MinBlocksPerSM > + , ( prefer_shmem ? cudaFuncCachePreferShared : cudaFuncCachePreferL1 ) + ) ); + } + #endif + + // Copy functor to constant memory on the device + cudaMemcpyToSymbolAsync( + kokkos_impl_cuda_constant_memory_buffer, &driver, sizeof(DriverType), 0, cudaMemcpyHostToDevice, cudaStream_t(cuda_instance->m_stream)); + + KOKKOS_ENSURE_CUDA_LOCK_ARRAYS_ON_DEVICE(); + + // Invoke the driver function on the device + cuda_parallel_launch_constant_memory + < DriverType, MaxThreadsPerBlock, MinBlocksPerSM > + <<< grid , block , shmem , cuda_instance->m_stream >>>(); + +#if defined( KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK ) + CUDA_SAFE_CALL( cudaGetLastError() ); + Kokkos::Cuda().fence(); +#endif + } + } + + static cudaFuncAttributes get_cuda_func_attributes() { + cudaFuncAttributes attr; + cudaFuncGetAttributes(&attr,cuda_parallel_launch_constant_memory + < DriverType, MaxThreadsPerBlock, MinBlocksPerSM >); + return attr; + } +}; + +template < class DriverType> +struct CudaParallelLaunch< DriverType + , Kokkos::LaunchBounds<0,0> + , Experimental::CudaLaunchMechanism::ConstantMemory > +{ + static_assert(sizeof(DriverType)m_maxShmemPerBlock < shmem ) { + Kokkos::Impl::throw_runtime_exception( std::string("CudaParallelLaunch FAILED: shared memory request is too large") ); + } + #ifndef KOKKOS_ARCH_KEPLER + // On Kepler the L1 has no benefit since it doesn't cache reads + else { + CUDA_SAFE_CALL( + cudaFuncSetCacheConfig + ( cuda_parallel_launch_constant_memory< DriverType > + , ( prefer_shmem ? cudaFuncCachePreferShared : cudaFuncCachePreferL1 ) + ) ); + } + #endif + + // Copy functor to constant memory on the device + cudaMemcpyToSymbolAsync( + kokkos_impl_cuda_constant_memory_buffer, &driver, sizeof(DriverType), 0, cudaMemcpyHostToDevice, cudaStream_t(cuda_instance->m_stream)); + + KOKKOS_ENSURE_CUDA_LOCK_ARRAYS_ON_DEVICE(); + + // Invoke the driver function on the device + cuda_parallel_launch_constant_memory< DriverType > + <<< grid , block , shmem , cuda_instance->m_stream >>>(); + +#if defined( KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK ) + CUDA_SAFE_CALL( cudaGetLastError() ); + Kokkos::Cuda().fence(); +#endif + } + } + + static cudaFuncAttributes get_cuda_func_attributes() { + cudaFuncAttributes attr; + cudaFuncGetAttributes(&attr,cuda_parallel_launch_constant_memory + < DriverType >); + return attr; + } +}; + +template < class DriverType + , unsigned int MaxThreadsPerBlock + , unsigned int MinBlocksPerSM > +struct CudaParallelLaunch< DriverType + , Kokkos::LaunchBounds< MaxThreadsPerBlock + , MinBlocksPerSM > + , Experimental::CudaLaunchMechanism::LocalMemory > +{ + static_assert(sizeof(DriverType)m_maxShmemPerBlock < shmem ) { + Kokkos::Impl::throw_runtime_exception( std::string("CudaParallelLaunch FAILED: shared memory request is too large") ); + } + #ifndef KOKKOS_ARCH_KEPLER + // On Kepler the L1 has no benefit since it doesn't cache reads + else { + CUDA_SAFE_CALL( + cudaFuncSetCacheConfig + ( cuda_parallel_launch_local_memory + < DriverType, MaxThreadsPerBlock, MinBlocksPerSM > + , ( prefer_shmem ? cudaFuncCachePreferShared : cudaFuncCachePreferL1 ) + ) ); + } + #endif + + KOKKOS_ENSURE_CUDA_LOCK_ARRAYS_ON_DEVICE(); + + // Invoke the driver function on the device + cuda_parallel_launch_local_memory + < DriverType, MaxThreadsPerBlock, MinBlocksPerSM > + <<< grid , block , shmem , cuda_instance->m_stream >>>( driver ); + +#if defined( KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK ) + CUDA_SAFE_CALL( cudaGetLastError() ); + Kokkos::Cuda().fence(); +#endif + } + } + + static cudaFuncAttributes get_cuda_func_attributes() { + cudaFuncAttributes attr; + cudaFuncGetAttributes(&attr,cuda_parallel_launch_local_memory + < DriverType, MaxThreadsPerBlock, MinBlocksPerSM >); + return attr; + } +}; + +template < class DriverType> +struct CudaParallelLaunch< DriverType + , Kokkos::LaunchBounds<0,0> + , Experimental::CudaLaunchMechanism::LocalMemory > +{ + static_assert(sizeof(DriverType)m_maxShmemPerBlock < shmem ) { + Kokkos::Impl::throw_runtime_exception( std::string("CudaParallelLaunch FAILED: shared memory request is too large") ); + } + #ifndef KOKKOS_ARCH_KEPLER + // On Kepler the L1 has no benefit since it doesn't cache reads + else { + CUDA_SAFE_CALL( + cudaFuncSetCacheConfig + ( cuda_parallel_launch_local_memory< DriverType > + , ( prefer_shmem ? cudaFuncCachePreferShared : cudaFuncCachePreferL1 ) + ) ); + } + #endif + + KOKKOS_ENSURE_CUDA_LOCK_ARRAYS_ON_DEVICE(); + + // Invoke the driver function on the device + cuda_parallel_launch_local_memory< DriverType > + <<< grid , block , shmem , cuda_instance->m_stream >>>( driver ); + +#if defined( KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK ) + CUDA_SAFE_CALL( cudaGetLastError() ); + Kokkos::Cuda().fence(); +#endif + } + } + + static cudaFuncAttributes get_cuda_func_attributes() { + cudaFuncAttributes attr; + cudaFuncGetAttributes(&attr,cuda_parallel_launch_local_memory + < DriverType >); + return attr; + } +}; + +template < class DriverType + , unsigned int MaxThreadsPerBlock + , unsigned int MinBlocksPerSM> +struct CudaParallelLaunch< DriverType + , Kokkos::LaunchBounds< MaxThreadsPerBlock + , MinBlocksPerSM> + , Experimental::CudaLaunchMechanism::GlobalMemory > +{ + inline + CudaParallelLaunch( const DriverType & driver + , const dim3 & grid + , const dim3 & block + , const int shmem + , CudaInternal* cuda_instance + , const bool prefer_shmem ) + { + if ( (grid.x != 0) && ( ( block.x * block.y * block.z ) != 0 ) ) { + + if ( cuda_instance->m_maxShmemPerBlock < shmem ) { + Kokkos::Impl::throw_runtime_exception( std::string("CudaParallelLaunch FAILED: shared memory request is too large") ); + } + #ifndef KOKKOS_ARCH_KEPLER + // On Kepler the L1 has no benefit since it doesn't cache reads + else { + CUDA_SAFE_CALL( + cudaFuncSetCacheConfig + ( cuda_parallel_launch_global_memory + < DriverType, MaxThreadsPerBlock, MinBlocksPerSM > + , ( prefer_shmem ? cudaFuncCachePreferShared : cudaFuncCachePreferL1 ) + ) ); + } + #endif + + KOKKOS_ENSURE_CUDA_LOCK_ARRAYS_ON_DEVICE(); + + DriverType* driver_ptr = NULL; + driver_ptr = reinterpret_cast(cuda_instance->scratch_functor(sizeof(DriverType))); + cudaMemcpyAsync(driver_ptr,&driver, sizeof(DriverType), cudaMemcpyDefault, cuda_instance->m_stream); + + // Invoke the driver function on the device + cuda_parallel_launch_global_memory + < DriverType, MaxThreadsPerBlock, MinBlocksPerSM > + <<< grid , block , shmem , cuda_instance->m_stream >>>( driver_ptr ); + +#if defined( KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK ) + CUDA_SAFE_CALL( cudaGetLastError() ); + Kokkos::Cuda().fence(); +#endif + } + } + static cudaFuncAttributes get_cuda_func_attributes() { + cudaFuncAttributes attr; + cudaFuncGetAttributes(&attr,cuda_parallel_launch_global_memory + < DriverType, MaxThreadsPerBlock, MinBlocksPerSM >); + return attr; + } + +}; + +template < class DriverType> +struct CudaParallelLaunch< DriverType + , Kokkos::LaunchBounds<0,0> + , Experimental::CudaLaunchMechanism::GlobalMemory > +{ + inline + CudaParallelLaunch( const DriverType & driver + , const dim3 & grid + , const dim3 & block + , const int shmem + , CudaInternal* cuda_instance + , const bool prefer_shmem) + { + if ( (grid.x != 0) && ( ( block.x * block.y * block.z ) != 0 ) ) { + + if ( cuda_instance->m_maxShmemPerBlock < shmem ) { + Kokkos::Impl::throw_runtime_exception( std::string("CudaParallelLaunch FAILED: shared memory request is too large") ); + } + #ifndef KOKKOS_ARCH_KEPLER + // On Kepler the L1 has no benefit since it doesn't cache reads + else { + CUDA_SAFE_CALL( + cudaFuncSetCacheConfig + ( cuda_parallel_launch_global_memory< DriverType > + , ( prefer_shmem ? cudaFuncCachePreferShared : cudaFuncCachePreferL1 ) + ) ); + } + #endif + + KOKKOS_ENSURE_CUDA_LOCK_ARRAYS_ON_DEVICE(); + + DriverType* driver_ptr = NULL; + driver_ptr = reinterpret_cast(cuda_instance->scratch_functor(sizeof(DriverType))); + cudaMemcpyAsync(driver_ptr,&driver, sizeof(DriverType), cudaMemcpyDefault, cuda_instance->m_stream); + + cuda_parallel_launch_global_memory< DriverType > + <<< grid , block , shmem , cuda_instance->m_stream >>>( driver_ptr ); + +#if defined( KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK ) + CUDA_SAFE_CALL( cudaGetLastError() ); + Kokkos::Cuda().fence(); +#endif + } + } + + static cudaFuncAttributes get_cuda_func_attributes() { + cudaFuncAttributes attr; + cudaFuncGetAttributes(&attr,cuda_parallel_launch_global_memory + < DriverType >); + return attr; + } +}; +//---------------------------------------------------------------------------- + +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* defined( __CUDACC__ ) */ +#endif /* defined( KOKKOS_ENABLE_CUDA ) */ +#endif /* #ifndef KOKKOS_CUDAEXEC_HPP */ + diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel.hpp index 665d0732a7..c05fbcc6c1 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Parallel.hpp @@ -55,9 +55,9 @@ #include #include -#include +#include #include -#include +#include #include #include #include @@ -73,6 +73,9 @@ //---------------------------------------------------------------------------- namespace Kokkos { + +extern bool show_warnings() noexcept; + namespace Impl { template< class ... Properties > @@ -85,10 +88,14 @@ public: typedef PolicyTraits traits; + template< class ExecSpace, class ... OtherProperties > + friend class TeamPolicyInternal; + private: enum { MAX_WARP = 8 }; + typename traits::execution_space m_space; int m_league_size ; int m_team_size ; int m_vector_length ; @@ -101,6 +108,19 @@ public: //! Execution space of this execution policy typedef Kokkos::Cuda execution_space ; + template + TeamPolicyInternal( const TeamPolicyInternal& p ) { + m_league_size = p.m_league_size; + m_team_size = p.m_team_size; + m_vector_length = p.m_vector_length; + m_team_scratch_size[0] = p.m_team_scratch_size[0]; + m_team_scratch_size[1] = p.m_team_scratch_size[1]; + m_thread_scratch_size[0] = p.m_thread_scratch_size[0]; + m_thread_scratch_size[1] = p.m_thread_scratch_size[1]; + m_chunk_size = p.m_chunk_size; + m_space = p.m_space; + } + TeamPolicyInternal& operator = (const TeamPolicyInternal& p) { m_league_size = p.m_league_size; m_team_size = p.m_team_size; @@ -110,6 +130,7 @@ public: m_thread_scratch_size[0] = p.m_thread_scratch_size[0]; m_thread_scratch_size[1] = p.m_thread_scratch_size[1]; m_chunk_size = p.m_chunk_size; + m_space = p.m_space; return *this; } @@ -117,7 +138,7 @@ public: #ifdef KOKKOS_ENABLE_DEPRECATED_CODE template< class FunctorType > - inline static + static inline int team_size_max( const FunctorType & functor ) { int n = MAX_WARP * Impl::CudaTraits::WarpSize ; @@ -128,7 +149,7 @@ public: /* for team reduce */ + ( n + 2 ) * sizeof(double) /* for team shared */ + Impl::FunctorTeamShmemSize< FunctorType >::value( functor , n ); - if ( shmem_size < Impl::CudaTraits::SharedMemoryCapacity ) break ; + if ( shmem_size < typename traits::execution_space().impl_internal_space_instance()->m_maxShmemPerBlock ) break ; } return n ; @@ -138,7 +159,10 @@ public: template int team_size_max( const FunctorType& f, const ParallelForTag& ) const { typedef Impl::ParallelFor< FunctorType , TeamPolicy > closure_type; - int block_size = Kokkos::Impl::cuda_get_max_block_size< closure_type, typename traits::launch_bounds >( f ,(size_t) vector_length(), + cudaFuncAttributes attr = CudaParallelLaunch< closure_type, typename traits::launch_bounds >:: + get_cuda_func_attributes(); + int block_size = Kokkos::Impl::cuda_get_max_block_size< FunctorType, typename traits::launch_bounds >( + space().impl_internal_space_instance(),attr,f ,(size_t) vector_length(), (size_t) team_scratch_size(0) + 2*sizeof(double), (size_t) thread_scratch_size(0) + sizeof(double) ); return block_size/vector_length(); } @@ -150,7 +174,10 @@ public: typedef Impl::ParallelReduce< FunctorType , TeamPolicy, reducer_type > closure_type; typedef Impl::FunctorValueTraits< FunctorType , typename traits::work_tag > functor_value_traits; - int block_size = Kokkos::Impl::cuda_get_max_block_size< closure_type, typename traits::launch_bounds >( f ,(size_t) vector_length(), + cudaFuncAttributes attr = CudaParallelLaunch< closure_type, typename traits::launch_bounds >:: + get_cuda_func_attributes(); + int block_size = Kokkos::Impl::cuda_get_max_block_size< FunctorType, typename traits::launch_bounds >( + space().impl_internal_space_instance(),attr,f ,(size_t) vector_length(), (size_t) team_scratch_size(0) + 2*sizeof(double), (size_t) thread_scratch_size(0) + sizeof(double) + ((functor_value_traits::StaticValueSize!=0)?0:functor_value_traits::value_size( f ))); @@ -178,7 +205,11 @@ public: template int team_size_recommended( const FunctorType& f, const ParallelForTag& ) const { typedef Impl::ParallelFor< FunctorType , TeamPolicy > closure_type; - int block_size = Kokkos::Impl::cuda_get_opt_block_size< closure_type, typename traits::launch_bounds >( f ,(size_t) vector_length(), + cudaFuncAttributes attr = CudaParallelLaunch< closure_type, typename traits::launch_bounds >:: + get_cuda_func_attributes(); + const int block_size = Kokkos::Impl::cuda_get_opt_block_size< FunctorType, typename traits::launch_bounds>( + space().impl_internal_space_instance(), + attr, f , (size_t) vector_length(), (size_t) team_scratch_size(0) + 2*sizeof(double), (size_t) thread_scratch_size(0) + sizeof(double)); return block_size/vector_length(); } @@ -190,10 +221,18 @@ public: typedef Impl::ParallelReduce< FunctorType , TeamPolicy, reducer_type > closure_type; typedef Impl::FunctorValueTraits< FunctorType , typename traits::work_tag > functor_value_traits; - int block_size = Kokkos::Impl::cuda_get_opt_block_size< closure_type, typename traits::launch_bounds >( f ,(size_t) vector_length(), + cudaFuncAttributes attr = CudaParallelLaunch< closure_type, typename traits::launch_bounds >:: + get_cuda_func_attributes(); + const int block_size = Kokkos::Impl::cuda_get_opt_block_size< FunctorType, typename traits::launch_bounds>( + space().impl_internal_space_instance(), + attr, f , (size_t) vector_length(), (size_t) team_scratch_size(0) + 2*sizeof(double), (size_t) thread_scratch_size(0) + sizeof(double) + ((functor_value_traits::StaticValueSize!=0)?0:functor_value_traits::value_size( f ))); - return block_size/vector_length(); + // Currently we require Power-of-2 team size for reductions. + int p2 = 1; + while(p2<=block_size) p2*=2; + p2/=2; + return p2/vector_length(); } @@ -201,6 +240,25 @@ public: int vector_length_max() { return Impl::CudaTraits::WarpSize; } + inline static + int verify_requested_vector_length( int requested_vector_length ) { + int test_vector_length = std::min( requested_vector_length, vector_length_max() ); + + // Allow only power-of-two vector_length + if ( !(is_integral_power_of_two( test_vector_length ) ) ) { + int test_pow2 = 1; + for (int i = 0; i < 5; i++) { + test_pow2 = test_pow2 << 1; + if (test_pow2 > test_vector_length) { + break; + } + } + test_vector_length = test_pow2 >> 1; + } + + return test_vector_length; + } + inline static int scratch_size_max(int level) { return (level==0? @@ -224,9 +282,14 @@ public: return m_thread_scratch_size[level]; } + inline typename traits::execution_space space() const { + return m_space; + } + TeamPolicyInternal() - : m_league_size( 0 ) - , m_team_size( 0 ) + : m_space(typename traits::execution_space()) + , m_league_size( 0 ) + , m_team_size( -1 ) , m_vector_length( 0 ) , m_team_scratch_size {0,0} , m_thread_scratch_size {0,0} @@ -234,22 +297,18 @@ public: {} /** \brief Specify league size, request team size */ - TeamPolicyInternal( execution_space & + TeamPolicyInternal( const execution_space space_ , int league_size_ , int team_size_request , int vector_length_request = 1 ) - : m_league_size( league_size_ ) + : m_space( space_ ) + , m_league_size( league_size_ ) , m_team_size( team_size_request ) - , m_vector_length( vector_length_request ) + , m_vector_length( verify_requested_vector_length(vector_length_request) ) , m_team_scratch_size {0,0} , m_thread_scratch_size {0,0} , m_chunk_size ( 32 ) { - // Allow only power-of-two vector_length - if ( ! Kokkos::Impl::is_integral_power_of_two( vector_length_request ) ) { - Impl::throw_runtime_exception( "Requested non-power-of-two vector length for TeamPolicy."); - } - // Make sure league size is permissable if(league_size_ >= int(Impl::cuda_internal_maximum_grid_count())) Impl::throw_runtime_exception( "Requested too large league_size for TeamPolicy on Cuda execution space."); @@ -261,22 +320,18 @@ public: } /** \brief Specify league size, request team size */ - TeamPolicyInternal( execution_space & + TeamPolicyInternal( const execution_space space_ , int league_size_ , const Kokkos::AUTO_t & /* team_size_request */ , int vector_length_request = 1 ) - : m_league_size( league_size_ ) + : m_space( space_ ) + , m_league_size( league_size_ ) , m_team_size( -1 ) - , m_vector_length( vector_length_request ) + , m_vector_length( verify_requested_vector_length(vector_length_request) ) , m_team_scratch_size {0,0} , m_thread_scratch_size {0,0} , m_chunk_size ( 32 ) { - // Allow only power-of-two vector_length - if ( ! Kokkos::Impl::is_integral_power_of_two( vector_length_request ) ) { - Impl::throw_runtime_exception( "Requested non-power-of-two vector length for TeamPolicy."); - } - // Make sure league size is permissable if(league_size_ >= int(Impl::cuda_internal_maximum_grid_count())) Impl::throw_runtime_exception( "Requested too large league_size for TeamPolicy on Cuda execution space."); @@ -285,18 +340,14 @@ public: TeamPolicyInternal( int league_size_ , int team_size_request , int vector_length_request = 1 ) - : m_league_size( league_size_ ) + : m_space( typename traits::execution_space() ) + , m_league_size( league_size_ ) , m_team_size( team_size_request ) - , m_vector_length ( vector_length_request ) + , m_vector_length ( verify_requested_vector_length(vector_length_request) ) , m_team_scratch_size {0,0} , m_thread_scratch_size {0,0} , m_chunk_size ( 32 ) { - // Allow only power-of-two vector_length - if ( ! Kokkos::Impl::is_integral_power_of_two( vector_length_request ) ) { - Impl::throw_runtime_exception( "Requested non-power-of-two vector length for TeamPolicy."); - } - // Make sure league size is permissable if(league_size_ >= int(Impl::cuda_internal_maximum_grid_count())) Impl::throw_runtime_exception( "Requested too large league_size for TeamPolicy on Cuda execution space."); @@ -310,18 +361,14 @@ public: TeamPolicyInternal( int league_size_ , const Kokkos::AUTO_t & /* team_size_request */ , int vector_length_request = 1 ) - : m_league_size( league_size_ ) + : m_space( typename traits::execution_space() ) + , m_league_size( league_size_ ) , m_team_size( -1 ) - , m_vector_length ( vector_length_request ) + , m_vector_length ( verify_requested_vector_length(vector_length_request) ) , m_team_scratch_size {0,0} , m_thread_scratch_size {0,0} , m_chunk_size ( 32 ) { - // Allow only power-of-two vector_length - if ( ! Kokkos::Impl::is_integral_power_of_two( vector_length_request ) ) { - Impl::throw_runtime_exception( "Requested non-power-of-two vector length for TeamPolicy."); - } - // Make sure league size is permissable if(league_size_ >= int(Impl::cuda_internal_maximum_grid_count())) Impl::throw_runtime_exception( "Requested too large league_size for TeamPolicy on Cuda execution space."); @@ -431,9 +478,10 @@ class ParallelFor< FunctorType , Kokkos::Cuda > { +public: + typedef Kokkos::RangePolicy< Traits ... > Policy; private: - typedef Kokkos::RangePolicy< Traits ... > Policy; typedef typename Policy::member_type Member ; typedef typename Policy::work_tag WorkTag ; typedef typename Policy::launch_bounds LaunchBounds ; @@ -479,11 +527,17 @@ public: void execute() const { const typename Policy::index_type nwork = m_policy.end() - m_policy.begin(); - const int block_size = Kokkos::Impl::cuda_get_opt_block_size< ParallelFor, LaunchBounds>( m_functor , 1, 0 , 0 ); + + cudaFuncAttributes attr = CudaParallelLaunch< ParallelFor, LaunchBounds >:: + get_cuda_func_attributes(); + const int block_size = Kokkos::Impl::cuda_get_opt_block_size< FunctorType, LaunchBounds>( + m_policy.space().impl_internal_space_instance(), + attr, m_functor , 1, 0 , 0 ); const dim3 block( 1 , block_size , 1); - const dim3 grid( std::min( typename Policy::index_type(( nwork + block.y - 1 ) / block.y) , typename Policy::index_type(cuda_internal_maximum_grid_count()) ) , 1 , 1); + const dim3 grid( std::min( typename Policy::index_type(( nwork + block.y - 1 ) / block.y) , + typename Policy::index_type(cuda_internal_maximum_grid_count()) ) , 1 , 1); - CudaParallelLaunch< ParallelFor, LaunchBounds >( *this , grid , block , 0 ); + CudaParallelLaunch< ParallelFor, LaunchBounds >( *this , grid , block , 0 , m_policy.space().impl_internal_space_instance() , false ); } ParallelFor( const FunctorType & arg_functor , @@ -491,6 +545,7 @@ public: : m_functor( arg_functor ) , m_policy( arg_policy ) { } + }; @@ -501,8 +556,9 @@ class ParallelFor< FunctorType , Kokkos::Cuda > { -private: +public: typedef Kokkos::MDRangePolicy< Traits ... > Policy ; +private: using RP = Policy; typedef typename Policy::array_index_type array_index_type; typedef typename Policy::index_type index_type; @@ -526,7 +582,7 @@ public: void execute() const { if(m_rp.m_num_tiles==0) return; - const array_index_type maxblocks = static_cast(Kokkos::Impl::CudaTraits::UpperBoundGridCount); + const array_index_type maxblocks = static_cast(m_rp.space().impl_internal_space_instance()->m_maxBlock); if ( RP::rank == 2 ) { const dim3 block( m_rp.m_tile[0] , m_rp.m_tile[1] , 1); @@ -535,7 +591,7 @@ public: , std::min( ( m_rp.m_upper[1] - m_rp.m_lower[1] + block.y - 1 ) / block.y , maxblocks ) , 1 ); - CudaParallelLaunch< ParallelFor, LaunchBounds >( *this , grid , block , 0 ); + CudaParallelLaunch< ParallelFor, LaunchBounds >( *this , grid , block , 0 , m_rp.space().impl_internal_space_instance() , false ); } else if ( RP::rank == 3 ) { @@ -545,7 +601,7 @@ public: , std::min( ( m_rp.m_upper[1] - m_rp.m_lower[1] + block.y - 1 ) / block.y , maxblocks ) , std::min( ( m_rp.m_upper[2] - m_rp.m_lower[2] + block.z - 1 ) / block.z , maxblocks ) ); - CudaParallelLaunch< ParallelFor, LaunchBounds >( *this , grid , block , 0 ); + CudaParallelLaunch< ParallelFor, LaunchBounds >( *this , grid , block , 0 , m_rp.space().impl_internal_space_instance() , false ); } else if ( RP::rank == 4 ) { @@ -557,7 +613,7 @@ public: , std::min( ( m_rp.m_upper[2] - m_rp.m_lower[2] + block.y - 1 ) / block.y , maxblocks ) , std::min( ( m_rp.m_upper[3] - m_rp.m_lower[3] + block.z - 1 ) / block.z , maxblocks ) ); - CudaParallelLaunch< ParallelFor, LaunchBounds >( *this , grid , block , 0 ); + CudaParallelLaunch< ParallelFor, LaunchBounds >( *this , grid , block , 0 , m_rp.space().impl_internal_space_instance() , false ); } else if ( RP::rank == 5 ) { @@ -570,7 +626,7 @@ public: , static_cast(maxblocks) ) , std::min( ( m_rp.m_upper[4] - m_rp.m_lower[4] + block.z - 1 ) / block.z , maxblocks ) ); - CudaParallelLaunch< ParallelFor, LaunchBounds >( *this , grid , block , 0 ); + CudaParallelLaunch< ParallelFor, LaunchBounds >( *this , grid , block , 0 , m_rp.space().impl_internal_space_instance() , false ); } else if ( RP::rank == 6 ) { @@ -584,7 +640,7 @@ public: , std::min( static_cast( m_rp.m_tile_end[4] * m_rp.m_tile_end[5] ) , static_cast(maxblocks) ) ); - CudaParallelLaunch< ParallelFor, LaunchBounds >( *this , grid , block , 0 ); + CudaParallelLaunch< ParallelFor, LaunchBounds >( *this , grid , block , 0 , m_rp.space().impl_internal_space_instance() , false ); } else { @@ -609,9 +665,10 @@ class ParallelFor< FunctorType , Kokkos::Cuda > { +public: + typedef TeamPolicyInternal< Kokkos::Cuda , Properties ... > Policy ; private: - typedef TeamPolicyInternal< Kokkos::Cuda , Properties ... > Policy ; typedef typename Policy::member_type Member ; typedef typename Policy::work_tag WorkTag ; typedef typename Policy::launch_bounds LaunchBounds ; @@ -631,13 +688,14 @@ private: // const FunctorType m_functor ; + const Policy m_policy ; const size_type m_league_size ; - const size_type m_team_size ; + int m_team_size ; const size_type m_vector_size ; - const int m_shmem_begin ; - const int m_shmem_size ; + int m_shmem_begin ; + int m_shmem_size ; void* m_scratch_ptr[2] ; - const int m_scratch_size[2] ; + int m_scratch_size[2] ; template< class TagType > __device__ inline @@ -705,7 +763,7 @@ public: const dim3 grid( int(m_league_size) , 1 , 1 ); const dim3 block( int(m_vector_size) , int(m_team_size) , 1 ); - CudaParallelLaunch< ParallelFor, LaunchBounds >( *this, grid, block, shmem_size_total ); // copy to device and execute + CudaParallelLaunch< ParallelFor, LaunchBounds >( *this, grid, block, shmem_size_total, m_policy.space().impl_internal_space_instance() , true ); // copy to device and execute } @@ -713,26 +771,37 @@ public: , const Policy & arg_policy ) : m_functor( arg_functor ) + , m_policy( arg_policy ) , m_league_size( arg_policy.league_size() ) - , m_team_size( 0 <= arg_policy.team_size() ? arg_policy.team_size() : - Kokkos::Impl::cuda_get_opt_block_size< ParallelFor, LaunchBounds >( arg_functor , arg_policy.vector_length(), arg_policy.team_scratch_size(0),arg_policy.thread_scratch_size(0) ) / arg_policy.vector_length() ) + , m_team_size( arg_policy.team_size() ) , m_vector_size( arg_policy.vector_length() ) - , m_shmem_begin( sizeof(double) * ( m_team_size + 2 ) ) - , m_shmem_size( arg_policy.scratch_size(0,m_team_size) + FunctorTeamShmemSize< FunctorType >::value( m_functor , m_team_size ) ) - , m_scratch_ptr{NULL,NULL} - , m_scratch_size{arg_policy.scratch_size(0,m_team_size),arg_policy.scratch_size(1,m_team_size)} { + cudaFuncAttributes attr = CudaParallelLaunch< ParallelFor, LaunchBounds >:: + get_cuda_func_attributes(); + m_team_size = m_team_size>=0?m_team_size:Kokkos::Impl::cuda_get_opt_block_size< FunctorType, LaunchBounds>( + m_policy.space().impl_internal_space_instance(), + attr, m_functor , m_vector_size, + m_policy.team_scratch_size(0), m_policy.thread_scratch_size(0) )/m_vector_size; + + m_shmem_begin = ( sizeof(double) * ( m_team_size + 2 ) ); + m_shmem_size = ( m_policy.scratch_size(0,m_team_size) + FunctorTeamShmemSize< FunctorType >::value( m_functor , m_team_size ) ); + m_scratch_size[0] = m_policy.scratch_size(0,m_team_size); + m_scratch_size[1] = m_policy.scratch_size(1,m_team_size); + // Functor's reduce memory, team scan memory, and team shared memory depend upon team size. - m_scratch_ptr[1] = cuda_resize_scratch_space(m_scratch_size[1]*(Cuda::concurrency()/(m_team_size*m_vector_size))); + m_scratch_ptr[0] = NULL; + m_scratch_ptr[1] = m_team_size<=0?NULL:cuda_resize_scratch_space(static_cast(m_scratch_size[1])*static_cast(Cuda::concurrency()/(m_team_size*m_vector_size))); const int shmem_size_total = m_shmem_begin + m_shmem_size ; - if ( CudaTraits::SharedMemoryCapacity < shmem_size_total ) { + if ( m_policy.space().impl_internal_space_instance()->m_maxShmemPerBlock < shmem_size_total ) { + printf("%i %i\n",m_policy.space().impl_internal_space_instance()->m_maxShmemPerBlock,shmem_size_total); Kokkos::Impl::throw_runtime_exception(std::string("Kokkos::Impl::ParallelFor< Cuda > insufficient shared memory")); } if ( int(m_team_size) > - int(Kokkos::Impl::cuda_get_max_block_size< ParallelFor, LaunchBounds > - ( arg_functor , arg_policy.vector_length(), arg_policy.team_scratch_size(0),arg_policy.thread_scratch_size(0) ) / arg_policy.vector_length())) { + int(Kokkos::Impl::cuda_get_max_block_size< FunctorType, LaunchBounds > + ( m_policy.space().impl_internal_space_instance(), + attr, arg_functor , arg_policy.vector_length(), arg_policy.team_scratch_size(0),arg_policy.thread_scratch_size(0) ) / arg_policy.vector_length())) { Kokkos::Impl::throw_runtime_exception(std::string("Kokkos::Impl::ParallelFor< Cuda > requested too large team size.")); } } @@ -754,9 +823,10 @@ class ParallelReduce< FunctorType , Kokkos::Cuda > { +public: + typedef Kokkos::RangePolicy< Traits ... > Policy ; private: - typedef Kokkos::RangePolicy< Traits ... > Policy ; typedef typename Policy::WorkRange WorkRange ; typedef typename Policy::work_tag WorkTag ; @@ -897,11 +967,16 @@ public: }*/ // Determine block size constrained by shared memory: - static inline + inline unsigned local_block_size( const FunctorType & f ) { unsigned n = CudaTraits::WarpSize * 8 ; - while ( n && CudaTraits::SharedMemoryCapacity < cuda_single_inter_block_reduce_scan_shmem( f , n ) ) { n >>= 1 ; } + int shmem_size = cuda_single_inter_block_reduce_scan_shmem( f , n ); + while ( (n && (m_policy.space().impl_internal_space_instance()->m_maxShmemPerBlock < shmem_size)) || + (n > static_cast(Kokkos::Impl::cuda_get_max_block_size< ParallelReduce, LaunchBounds>( f , 1, shmem_size , 0 )))) { + n >>= 1 ; + shmem_size = cuda_single_inter_block_reduce_scan_shmem( f , n ); + } return n ; } @@ -912,9 +987,9 @@ public: if ( nwork ) { const int block_size = local_block_size( m_functor ); - m_scratch_space = cuda_internal_scratch_space( ValueTraits::value_size( ReducerConditional::select(m_functor , m_reducer) ) * block_size /* block_size == max block_count */ ); - m_scratch_flags = cuda_internal_scratch_flags( sizeof(size_type) ); - m_unified_space = cuda_internal_scratch_unified( ValueTraits::value_size( ReducerConditional::select(m_functor , m_reducer) ) ); + m_scratch_space = cuda_internal_scratch_space( m_policy.space(), ValueTraits::value_size( ReducerConditional::select(m_functor , m_reducer) ) * block_size /* block_size == max block_count */ ); + m_scratch_flags = cuda_internal_scratch_flags( m_policy.space(), sizeof(size_type) ); + m_unified_space = cuda_internal_scratch_unified( m_policy.space(), ValueTraits::value_size( ReducerConditional::select(m_functor , m_reducer) ) ); // REQUIRED ( 1 , N , 1 ) const dim3 block( 1 , block_size , 1 ); @@ -923,10 +998,10 @@ public: const int shmem = UseShflReduction?0:cuda_single_inter_block_reduce_scan_shmem( m_functor , block.y ); - CudaParallelLaunch< ParallelReduce, LaunchBounds >( *this, grid, block, shmem ); // copy to device and execute + CudaParallelLaunch< ParallelReduce, LaunchBounds >( *this, grid, block, shmem , m_policy.space().impl_internal_space_instance() , false ); // copy to device and execute if(!m_result_ptr_device_accessible) { - Cuda::fence(); + Cuda().fence(); if ( m_result_ptr ) { if ( m_unified_space ) { @@ -987,9 +1062,10 @@ class ParallelReduce< FunctorType , Kokkos::Cuda > { +public: + typedef Kokkos::MDRangePolicy< Traits ... > Policy ; private: - typedef Kokkos::MDRangePolicy< Traits ... > Policy ; typedef typename Policy::array_index_type array_index_type; typedef typename Policy::index_type index_type; @@ -1121,11 +1197,16 @@ public: } */ // Determine block size constrained by shared memory: - static inline + inline unsigned local_block_size( const FunctorType & f ) { unsigned n = CudaTraits::WarpSize * 8 ; - while ( n && CudaTraits::SharedMemoryCapacity < cuda_single_inter_block_reduce_scan_shmem( f , n ) ) { n >>= 1 ; } + int shmem_size = cuda_single_inter_block_reduce_scan_shmem( f , n ); + while ( (n && (m_policy.space().impl_internal_space_instance()->m_maxShmemPerBlock < shmem_size)) || + (n > static_cast(Kokkos::Impl::cuda_get_max_block_size< ParallelReduce, LaunchBounds>( f , 1, shmem_size , 0 )))) { + n >>= 1 ; + shmem_size = cuda_single_inter_block_reduce_scan_shmem( f , n ); + } return n ; } @@ -1144,9 +1225,9 @@ public: block_size = (block_size > suggested_blocksize) ? block_size : suggested_blocksize ; //Note: block_size must be less than or equal to 512 - m_scratch_space = cuda_internal_scratch_space( ValueTraits::value_size( ReducerConditional::select(m_functor , m_reducer) ) * block_size /* block_size == max block_count */ ); - m_scratch_flags = cuda_internal_scratch_flags( sizeof(size_type) ); - m_unified_space = cuda_internal_scratch_unified( ValueTraits::value_size( ReducerConditional::select(m_functor , m_reducer) ) ); + m_scratch_space = cuda_internal_scratch_space( m_policy.space(), ValueTraits::value_size( ReducerConditional::select(m_functor , m_reducer) ) * block_size /* block_size == max block_count */ ); + m_scratch_flags = cuda_internal_scratch_flags( m_policy.space(), sizeof(size_type) ); + m_unified_space = cuda_internal_scratch_unified( m_policy.space(), ValueTraits::value_size( ReducerConditional::select(m_functor , m_reducer) ) ); // REQUIRED ( 1 , N , 1 ) const dim3 block( 1 , block_size , 1 ); @@ -1155,10 +1236,10 @@ public: const int shmem = UseShflReduction?0:cuda_single_inter_block_reduce_scan_shmem( m_functor , block.y ); - CudaParallelLaunch< ParallelReduce, LaunchBounds >( *this, grid, block, shmem ); // copy to device and execute + CudaParallelLaunch< ParallelReduce, LaunchBounds >( *this, grid, block, shmem , m_policy.space().impl_internal_space_instance() , false ); // copy to device and execute if(!m_result_ptr_device_accessible) { - Cuda::fence(); + Cuda().fence(); if ( m_result_ptr ) { if ( m_unified_space ) { @@ -1213,8 +1294,6 @@ public: //---------------------------------------------------------------------------- -#if 1 - template< class FunctorType , class ReducerType, class ... Properties > class ParallelReduce< FunctorType , Kokkos::TeamPolicy< Properties ... > @@ -1222,9 +1301,10 @@ class ParallelReduce< FunctorType , Kokkos::Cuda > { +public: + typedef TeamPolicyInternal< Kokkos::Cuda, Properties ... > Policy ; private: - typedef TeamPolicyInternal< Kokkos::Cuda, Properties ... > Policy ; typedef typename Policy::member_type Member ; typedef typename Policy::work_tag WorkTag ; typedef typename Policy::launch_bounds LaunchBounds ; @@ -1261,6 +1341,7 @@ private: // const FunctorType m_functor ; + const Policy m_policy ; const ReducerType m_reducer ; const pointer_type m_result_ptr ; const bool m_result_ptr_device_accessible ; @@ -1273,7 +1354,7 @@ private: void* m_scratch_ptr[2] ; int m_scratch_size[2] ; const size_type m_league_size ; - const size_type m_team_size ; + int m_team_size ; const size_type m_vector_size ; template< class TagType > @@ -1412,20 +1493,20 @@ public: const int nwork = m_league_size * m_team_size ; if ( nwork ) { const int block_count = UseShflReduction? std::min( m_league_size , size_type(1024*32) ) - :std::min( m_league_size , m_team_size ); + :std::min( int(m_league_size) , m_team_size ); - m_scratch_space = cuda_internal_scratch_space( ValueTraits::value_size( ReducerConditional::select(m_functor , m_reducer) ) * block_count ); - m_scratch_flags = cuda_internal_scratch_flags( sizeof(size_type) ); - m_unified_space = cuda_internal_scratch_unified( ValueTraits::value_size( ReducerConditional::select(m_functor , m_reducer) ) ); + m_scratch_space = cuda_internal_scratch_space(m_policy.space(), ValueTraits::value_size( ReducerConditional::select(m_functor , m_reducer) ) * block_count ); + m_scratch_flags = cuda_internal_scratch_flags(m_policy.space(), sizeof(size_type) ); + m_unified_space = cuda_internal_scratch_unified( m_policy.space(),ValueTraits::value_size( ReducerConditional::select(m_functor , m_reducer) ) ); const dim3 block( m_vector_size , m_team_size , 1 ); const dim3 grid( block_count , 1 , 1 ); const int shmem_size_total = m_team_begin + m_shmem_begin + m_shmem_size ; - CudaParallelLaunch< ParallelReduce, LaunchBounds >( *this, grid, block, shmem_size_total ); // copy to device and execute + CudaParallelLaunch< ParallelReduce, LaunchBounds >( *this, grid, block, shmem_size_total , m_policy.space().impl_internal_space_instance() , true ); // copy to device and execute if(!m_result_ptr_device_accessible) { - Cuda::fence(); + Cuda().fence(); if ( m_result_ptr ) { if ( m_unified_space ) { @@ -1454,6 +1535,7 @@ public: Kokkos::is_view< ViewType >::value ,void*>::type = NULL) : m_functor( arg_functor ) + , m_policy ( arg_policy ) , m_reducer( InvalidType() ) , m_result_ptr( arg_result.data() ) , m_result_ptr_device_accessible(MemorySpaceAccess< Kokkos::CudaSpace , typename ViewType::memory_space>::accessible ) @@ -1464,35 +1546,30 @@ public: , m_shmem_begin( 0 ) , m_shmem_size( 0 ) , m_scratch_ptr{NULL,NULL} - , m_scratch_size{ - arg_policy.scratch_size(0,( 0 <= arg_policy.team_size() ? arg_policy.team_size() : - Kokkos::Impl::cuda_get_opt_block_size< ParallelReduce, LaunchBounds >( arg_functor , arg_policy.vector_length(), - arg_policy.team_scratch_size(0),arg_policy.thread_scratch_size(0) ) / - arg_policy.vector_length() ) - ), arg_policy.scratch_size(1,( 0 <= arg_policy.team_size() ? arg_policy.team_size() : - Kokkos::Impl::cuda_get_opt_block_size< ParallelReduce, LaunchBounds >( arg_functor , arg_policy.vector_length(), - arg_policy.team_scratch_size(0),arg_policy.thread_scratch_size(0) ) / - arg_policy.vector_length() ) - )} , m_league_size( arg_policy.league_size() ) - , m_team_size( 0 <= arg_policy.team_size() ? arg_policy.team_size() : - Kokkos::Impl::cuda_get_opt_block_size< ParallelReduce, LaunchBounds >( arg_functor , arg_policy.vector_length(), - arg_policy.team_scratch_size(0),arg_policy.thread_scratch_size(0) ) / - arg_policy.vector_length() ) + , m_team_size( arg_policy.team_size() ) , m_vector_size( arg_policy.vector_length() ) { + cudaFuncAttributes attr = CudaParallelLaunch< ParallelReduce, LaunchBounds >:: + get_cuda_func_attributes(); + m_team_size = m_team_size>=0?m_team_size: + Kokkos::Impl::cuda_get_opt_block_size< FunctorType, LaunchBounds>( + m_policy.space().impl_internal_space_instance(), + attr, m_functor , m_vector_size, + m_policy.team_scratch_size(0), m_policy.thread_scratch_size(0) )/m_vector_size; + // Return Init value if the number of worksets is zero - if( arg_policy.league_size() == 0) { + if( m_league_size*m_team_size == 0) { ValueInit::init( ReducerConditional::select(m_functor , m_reducer) , arg_result.data() ); return ; } m_team_begin = UseShflReduction?0:cuda_single_inter_block_reduce_scan_shmem( arg_functor , m_team_size ); m_shmem_begin = sizeof(double) * ( m_team_size + 2 ); - m_shmem_size = arg_policy.scratch_size(0,m_team_size) + FunctorTeamShmemSize< FunctorType >::value( arg_functor , m_team_size ); - m_scratch_ptr[1] = cuda_resize_scratch_space(static_cast(m_scratch_size[1])*(static_cast(Cuda::concurrency()/(m_team_size*m_vector_size)))); + m_shmem_size = m_policy.scratch_size(0,m_team_size) + FunctorTeamShmemSize< FunctorType >::value( arg_functor , m_team_size ); m_scratch_size[0] = m_shmem_size; - m_scratch_size[1] = arg_policy.scratch_size(1,m_team_size); + m_scratch_size[1] = m_policy.scratch_size(1,m_team_size); + m_scratch_ptr[1] = m_team_size<=0?NULL:cuda_resize_scratch_space(static_cast(m_scratch_size[1])*(static_cast(Cuda::concurrency()/(m_team_size*m_vector_size)))); // The global parallel_reduce does not support vector_length other than 1 at the moment if( (arg_policy.vector_length() > 1) && !UseShflReduction ) @@ -1509,7 +1586,7 @@ public: Kokkos::Impl::throw_runtime_exception(std::string("Kokkos::Impl::ParallelReduce< Cuda > bad team size")); } - if ( CudaTraits::SharedMemoryCapacity < shmem_size_total ) { + if ( m_policy.space().impl_internal_space_instance()->m_maxShmemPerBlock < shmem_size_total ) { Kokkos::Impl::throw_runtime_exception(std::string("Kokkos::Impl::ParallelReduce< Cuda > requested too much L0 scratch memory")); } @@ -1523,6 +1600,7 @@ public: , const Policy & arg_policy , const ReducerType & reducer) : m_functor( arg_functor ) + , m_policy( arg_policy ) , m_reducer( reducer ) , m_result_ptr( reducer.view().data() ) , m_result_ptr_device_accessible(MemorySpaceAccess< Kokkos::CudaSpace , typename ReducerType::result_view_type::memory_space>::accessible ) @@ -1534,12 +1612,17 @@ public: , m_shmem_size( 0 ) , m_scratch_ptr{NULL,NULL} , m_league_size( arg_policy.league_size() ) - , m_team_size( 0 <= arg_policy.team_size() ? arg_policy.team_size() : - Kokkos::Impl::cuda_get_opt_block_size< ParallelReduce, LaunchBounds >( arg_functor , arg_policy.vector_length(), - arg_policy.team_scratch_size(0),arg_policy.thread_scratch_size(0) ) / - arg_policy.vector_length() ) + , m_team_size( arg_policy.team_size() ) , m_vector_size( arg_policy.vector_length() ) { + cudaFuncAttributes attr = CudaParallelLaunch< ParallelReduce, LaunchBounds >:: + get_cuda_func_attributes(); + m_team_size = m_team_size>=0?m_team_size: + Kokkos::Impl::cuda_get_opt_block_size< FunctorType, LaunchBounds>( + m_policy.space().impl_internal_space_instance(), + attr, m_functor , m_vector_size, + m_policy.team_scratch_size(0), m_policy.thread_scratch_size(0) )/m_vector_size; + // Return Init value if the number of worksets is zero if( arg_policy.league_size() == 0) { ValueInit::init( ReducerConditional::select(m_functor , m_reducer) , m_result_ptr ); @@ -1548,10 +1631,10 @@ public: m_team_begin = UseShflReduction?0:cuda_single_inter_block_reduce_scan_shmem( arg_functor , m_team_size ); m_shmem_begin = sizeof(double) * ( m_team_size + 2 ); - m_shmem_size = arg_policy.scratch_size(0,m_team_size) + FunctorTeamShmemSize< FunctorType >::value( arg_functor , m_team_size ); - m_scratch_ptr[1] = cuda_resize_scratch_space(m_scratch_size[1]*(Cuda::concurrency()/(m_team_size*m_vector_size))); + m_shmem_size = m_policy.scratch_size(0,m_team_size) + FunctorTeamShmemSize< FunctorType >::value( arg_functor , m_team_size ); m_scratch_size[0] = m_shmem_size; - m_scratch_size[1] = arg_policy.scratch_size(1,m_team_size); + m_scratch_size[1] = m_policy.scratch_size(1,m_team_size); + m_scratch_ptr[1] = m_team_size<=0?NULL:cuda_resize_scratch_space(static_cast(m_scratch_size[1])*static_cast(Cuda::concurrency()/(m_team_size*m_vector_size))); // The global parallel_reduce does not support vector_length other than 1 at the moment if( (arg_policy.vector_length() > 1) && !UseShflReduction ) @@ -1565,7 +1648,7 @@ public: const int shmem_size_total = m_team_begin + m_shmem_begin + m_shmem_size ; if ( (! Kokkos::Impl::is_integral_power_of_two( m_team_size ) && !UseShflReduction ) || - CudaTraits::SharedMemoryCapacity < shmem_size_total ) { + m_policy.space().impl_internal_space_instance()->m_maxShmemPerBlock < shmem_size_total ) { Kokkos::Impl::throw_runtime_exception(std::string("Kokkos::Impl::ParallelReduce< Cuda > bad team size")); } if ( int(m_team_size) > arg_policy.team_size_max(m_functor,ParallelReduceTag()) ) { @@ -1575,365 +1658,6 @@ public: } }; -//---------------------------------------------------------------------------- -#else -//---------------------------------------------------------------------------- - -template< class FunctorType , class ReducerType, class ... Properties > -class ParallelReduce< FunctorType - , Kokkos::TeamPolicy< Properties ... > - , ReducerType - , Kokkos::Cuda - > -{ -private: - - enum : int { align_scratch_value = 0x0100 /* 256 */ }; - enum : int { align_scratch_mask = align_scratch_value - 1 }; - - KOKKOS_INLINE_FUNCTION static constexpr - int align_scratch( const int n ) - { - return ( n & align_scratch_mask ) - ? n + align_scratch_value - ( n & align_scratch_mask ) : n ; - } - - //---------------------------------------- - // Reducer does not wrap a functor - template< class R = ReducerType , class F = void > - struct reducer_type : public R { - - template< class S > - using rebind = reducer_type< typename R::rebind , void > ; - - KOKKOS_INLINE_FUNCTION - reducer_type( FunctorType const * - , ReducerType const * arg_reducer - , typename R::value_type * arg_value ) - : R( *arg_reducer , arg_value ) {} - }; - - // Reducer does wrap a functor - template< class R > - struct reducer_type< R , FunctorType > : public R { - - template< class S > - using rebind = reducer_type< typename R::rebind , FunctorType > ; - - KOKKOS_INLINE_FUNCTION - reducer_type( FunctorType const * arg_functor - , ReducerType const * - , typename R::value_type * arg_value ) - : R( arg_functor , arg_value ) {} - }; - - //---------------------------------------- - - typedef TeamPolicyInternal< Kokkos::Cuda, Properties ... > Policy ; - typedef CudaTeamMember Member ; - typedef typename Policy::work_tag WorkTag ; - typedef typename reducer_type<>::pointer_type pointer_type ; - typedef typename reducer_type<>::reference_type reference_type ; - typedef typename reducer_type<>::value_type value_type ; - typedef typename Policy::launch_bounds LaunchBounds ; - - typedef Kokkos::Impl::FunctorAnalysis - < Kokkos::Impl::FunctorPatternInterface::REDUCE - , Policy - , FunctorType - > Analysis ; - -public: - - typedef FunctorType functor_type ; - typedef Cuda::size_type size_type ; - -private: - - const FunctorType m_functor ; - const reducer_type<> m_reducer ; - size_type * m_scratch_space ; - size_type * m_unified_space ; - size_type m_team_begin ; - size_type m_shmem_begin ; - size_type m_shmem_size ; - void* m_scratch_ptr[2] ; - int m_scratch_size[2] ; - const size_type m_league_size ; - const size_type m_team_size ; - const size_type m_vector_size ; - - template< class TagType > - __device__ inline - typename std::enable_if< std::is_same< TagType , void >::value >::type - exec_team( const Member & member , reference_type update ) const - { m_functor( member , update ); } - - template< class TagType > - __device__ inline - typename std::enable_if< ! std::is_same< TagType , void >::value >::type - exec_team( const Member & member , reference_type update ) const - { m_functor( TagType() , member , update ); } - - -public: - - __device__ inline - void operator() () const - { - void * const shmem = kokkos_impl_cuda_shared_memory(); - - const bool reduce_to_host = - std::is_same< typename reducer_type<>::memory_space - , Kokkos::HostSpace >::value && - m_reducer.data(); - - value_type value ; - - typename reducer_type<>::rebind< CudaSpace > - reduce( & m_functor , & m_reducer , & value ); - - reduce.init( reduce.data() ); - - // Iterate this block through the league - - for ( int league_rank = blockIdx.x - ; league_rank < m_league_size - ; league_rank += gridDim.x ) { - - // Initialization of team member data: - - const Member member - ( shmem - , m_shmem_team_begin - , m_shmem_team_size - , reinterpret_cast(m_scratch_space) + m_global_team_begin - , m_global_team_size - , league_rank - , m_league_size ); - - ParallelReduce::template - exec_team< WorkTag >( member , reduce.reference() ); - } - - if ( Member::global_reduce( reduce - , m_scratch_space - , reinterpret_cast(m_scratch_space) - + aligned_flag_size - , shmem - , m_shmem_size ) ) { - - // Single thread with data in value - - reduce.final( reduce.data() ); - - if ( reduce_to_host ) { - reducer.copy( m_unified_space , reduce.data() ); - } - } - } - - - inline - void execute() - { - const bool reduce_to_host = - std::is_same< typename reducer_type<>::memory_space - , Kokkos::HostSpace >::value && - m_reducer.data(); - - const bool reduce_to_gpu = - std::is_same< typename reducer_type<>::memory_space - , Kokkos::CudaSpace >::value && - m_reducer.data(); - - if ( m_league_size && m_team_size ) { - - const int value_size = Analysis::value_size( m_functor ); - - m_scratch_space = cuda_internal_scratch_space( m_scratch_size ); - m_unified_space = cuda_internal_scratch_unified( value_size ); - - const dim3 block( m_vector_size , m_team_size , m_team_per_block ); - const dim3 grid( m_league_size , 1 , 1 ); - const int shmem = m_shmem_team_begin + m_shmem_team_size ; - - // copy to device and execute - CudaParallelLaunch( *this, grid, block, shmem ); - - Cuda::fence(); - - if ( reduce_to_host ) { - m_reducer.copy( m_reducer.data() , pointer_type(m_unified_space) ); - } - } - else if ( reduce_to_host ) { - m_reducer.init( m_reducer.data() ); - } - else if ( reduce_to_gpu ) { - value_type tmp ; - m_reduce.init( & tmp ); - cudaMemcpy( m_reduce.data() , & tmp , cudaMemcpyHostToDevice ); - } - } - - - /**\brief Set up parameters and allocations for kernel launch. - * - * block = { vector_size , team_size , team_per_block } - * grid = { number_of_teams , 1 , 1 } - * - * shmem = shared memory for: - * [ team_reduce_buffer - * , team_scratch_buffer_level_0 ] - * reused by: - * [ global_reduce_buffer ] - * - * global_scratch for: - * [ global_reduce_flag_buffer - * , global_reduce_value_buffer - * , team_scratch_buffer_level_1 * max_concurrent_team ] - */ - - ParallelReduce( FunctorType && arg_functor - , Policy && arg_policy - , ReducerType const & arg_reducer - ) - : m_functor( arg_functor ) - // the input reducer may wrap the input functor so must - // generate a reducer bound to the copied functor. - , m_reducer( & m_functor , & arg_reducer , arg_reducer.data() ) - , m_scratch_space( 0 ) - , m_unified_space( 0 ) - , m_team_begin( 0 ) - , m_shmem_begin( 0 ) - , m_shmem_size( 0 ) - , m_scratch_ptr{NULL,NULL} - , m_league_size( arg_policy.league_size() ) - , m_team_per_block( 0 ) - , m_team_size( arg_policy.team_size() ) - , m_vector_size( arg_policy.vector_length() ) - { - if ( 0 == m_league_size ) return ; - - const int value_size = Analysis::value_size( m_functor ); - - //---------------------------------------- - // Vector length must be <= WarpSize and power of two - - const bool ok_vector = m_vector_size < CudaTraits::WarpSize && - Kokkos::Impl::is_integral_power_of_two( m_vector_size ); - - //---------------------------------------- - - if ( 0 == m_team_size ) { - // Team size is AUTO, use a whole block per team. - // Calculate block size using the occupance calculator. - // Occupancy calculator assumes whole block. - - m_team_size = - Kokkos::Impl::cuda_get_opt_block_size< ParallelReduce, LaunchBounds > - ( arg_functor - , arg_policy.vector_length() - , arg_policy.team_scratch_size(0) - , arg_policy.thread_scratch_size(0) / arg_policy.vector_length() ); - - m_team_per_block = 1 ; - } - - //---------------------------------------- - // How many CUDA threads per team. - // If more than a warp or multiple teams cannot exactly fill a warp - // then only one team per block. - - const int team_threads = m_team_size * m_vector_size ; - - if ( ( CudaTraits::WarpSize < team_threads ) || - ( CudaTraits::WarpSize % team_threads ) ) { - m_team_per_block = 1 ; - } - - //---------------------------------------- - // How much team scratch shared memory determined from - // either the functor or the policy: - - if ( CudaTraits::WarpSize < team_threads ) { - // Need inter-warp team reduction (collectives) shared memory - // Speculate an upper bound for the value size - - m_shmem_team_begin = - align_scratch( CudaTraits::warp_count(team_threads) * sizeof(double) ); - } - - m_shmem_team_size = arg_policy.scratch_size(0,m_team_size); - - if ( 0 == m_shmem_team_size ) { - m_shmem_team_size = Analysis::team_shmem_size( m_functor , m_team_size ); - } - - m_shmem_team_size = align_scratch( m_shmem_team_size ); - - // Can fit a team in a block: - - const bool ok_shmem_team = - ( m_shmem_team_begin + m_shmem_team_size ) - < CudaTraits::SharedMemoryCapacity ; - - //---------------------------------------- - - if ( 0 == m_team_per_block ) { - // Potentially more than one team per block. - // Determine number of teams per block based upon - // how much team scratch can fit and exactly filling each warp. - - const int team_per_warp = team_threads / CudaTraits::WarpSize ; - - const int max_team_per_block = - Kokkos::Impl::CudaTraits::SharedMemoryCapacity - / shmem_team_scratch_size ; - - for ( m_team_per_block = team_per_warp ; - m_team_per_block + team_per_warp < max_team_per_block ; - m_team_per_block += team_per_warp ); - } - - //---------------------------------------- - // How much global reduce scratch shared memory. - - int shmem_global_reduce_size = 8 * value_size ; - - //---------------------------------------- - // Global scratch memory requirements. - - const int aligned_flag_size = align_scratch( sizeof(int) ); - - const int max_concurrent_block = - cuda_internal_maximum_concurrent_block_count(); - - // Reduce space has claim flag followed by vaue buffer - const int global_reduce_value_size = - max_concurrent_block * - ( aligned_flag_size + align_scratch( value_size ) ); - - // Scratch space has claim flag followed by scratch buffer - const int global_team_scratch_size = - max_concurrent_block * m_team_per_block * - ( aligned_flag_size + - align_scratch( arg_policy.scratch_size(1,m_team_size) / m_vector_size ) - ); - - const int global_size = aligned_flag_size - + global_reduce_value_size - + global_team_scratch_size ; - - m_global_reduce_begin = aligned_flag_size ; - m_global_team_begin = m_global_reduce_begin + global_reduce_value_size ; - m_global_size = m_global_team_begin + global_team_scratch_size ; - } -}; - -#endif - } // namespace Impl } // namespace Kokkos @@ -1949,9 +1673,9 @@ class ParallelScan< FunctorType , Kokkos::Cuda > { -private: - +public: typedef Kokkos::RangePolicy< Traits ... > Policy ; +private: typedef typename Policy::member_type Member ; typedef typename Policy::work_tag WorkTag ; typedef typename Policy::WorkRange WorkRange ; @@ -2105,7 +1829,7 @@ public: } // Determine block size constrained by shared memory: - static inline + inline unsigned local_block_size( const FunctorType & f ) { // blockDim.y must be power of two = 128 (4 warps) or 256 (8 warps) or 512 (16 warps) @@ -2114,7 +1838,7 @@ public: // 4 warps was 10% faster than 8 warps and 20% faster than 16 warps in unit testing unsigned n = CudaTraits::WarpSize * 4 ; - while ( n && CudaTraits::SharedMemoryCapacity < cuda_single_inter_block_reduce_scan_shmem( f , n ) ) { n >>= 1 ; } + while ( n && unsigned(m_policy.space().impl_internal_space_instance()->m_maxShmemPerBlock) < cuda_single_inter_block_reduce_scan_shmem( f , n ) ) { n >>= 1 ; } return n ; } @@ -2140,18 +1864,18 @@ public: // How many block are really needed for this much work: const int grid_x = ( nwork + work_per_block - 1 ) / work_per_block ; - m_scratch_space = cuda_internal_scratch_space( ValueTraits::value_size( m_functor ) * grid_x ); - m_scratch_flags = cuda_internal_scratch_flags( sizeof(size_type) * 1 ); + m_scratch_space = cuda_internal_scratch_space( m_policy.space(), ValueTraits::value_size( m_functor ) * grid_x ); + m_scratch_flags = cuda_internal_scratch_flags( m_policy.space(), sizeof(size_type) * 1 ); const dim3 grid( grid_x , 1 , 1 ); const dim3 block( 1 , block_size , 1 ); // REQUIRED DIMENSIONS ( 1 , N , 1 ) const int shmem = ValueTraits::value_size( m_functor ) * ( block_size + 2 ); m_final = false ; - CudaParallelLaunch< ParallelScan, LaunchBounds >( *this, grid, block, shmem ); // copy to device and execute + CudaParallelLaunch< ParallelScan, LaunchBounds >( *this, grid, block, shmem , m_policy.space().impl_internal_space_instance() , false ); // copy to device and execute m_final = true ; - CudaParallelLaunch< ParallelScan, LaunchBounds >( *this, grid, block, shmem ); // copy to device and execute + CudaParallelLaunch< ParallelScan, LaunchBounds >( *this, grid, block, shmem , m_policy.space().impl_internal_space_instance() , false ); // copy to device and execute } } @@ -2173,9 +1897,10 @@ class ParallelScanWithTotal< FunctorType , Kokkos::Cuda > { -private: - +public: typedef Kokkos::RangePolicy< Traits ... > Policy ; + +private: typedef typename Policy::member_type Member ; typedef typename Policy::work_tag WorkTag ; typedef typename Policy::WorkRange WorkRange ; @@ -2332,7 +2057,7 @@ public: } // Determine block size constrained by shared memory: - static inline + inline unsigned local_block_size( const FunctorType & f ) { // blockDim.y must be power of two = 128 (4 warps) or 256 (8 warps) or 512 (16 warps) @@ -2341,7 +2066,7 @@ public: // 4 warps was 10% faster than 8 warps and 20% faster than 16 warps in unit testing unsigned n = CudaTraits::WarpSize * 4 ; - while ( n && CudaTraits::SharedMemoryCapacity < cuda_single_inter_block_reduce_scan_shmem( f , n ) ) { n >>= 1 ; } + while ( n && unsigned(m_policy.space().impl_internal_space_instance()->m_maxShmemPerBlock) < cuda_single_inter_block_reduce_scan_shmem( f , n ) ) { n >>= 1 ; } return n ; } @@ -2367,18 +2092,18 @@ public: // How many block are really needed for this much work: const int grid_x = ( nwork + work_per_block - 1 ) / work_per_block ; - m_scratch_space = cuda_internal_scratch_space( ValueTraits::value_size( m_functor ) * grid_x ); - m_scratch_flags = cuda_internal_scratch_flags( sizeof(size_type) * 1 ); + m_scratch_space = cuda_internal_scratch_space( m_policy.space(), ValueTraits::value_size( m_functor ) * grid_x ); + m_scratch_flags = cuda_internal_scratch_flags( m_policy.space(), sizeof(size_type) * 1 ); const dim3 grid( grid_x , 1 , 1 ); const dim3 block( 1 , block_size , 1 ); // REQUIRED DIMENSIONS ( 1 , N , 1 ) const int shmem = ValueTraits::value_size( m_functor ) * ( block_size + 2 ); m_final = false ; - CudaParallelLaunch< ParallelScanWithTotal, LaunchBounds >( *this, grid, block, shmem ); // copy to device and execute + CudaParallelLaunch< ParallelScanWithTotal, LaunchBounds >( *this, grid, block, shmem , m_policy.space().impl_internal_space_instance() , false ); // copy to device and execute m_final = true ; - CudaParallelLaunch< ParallelScanWithTotal, LaunchBounds >( *this, grid, block, shmem ); // copy to device and execute + CudaParallelLaunch< ParallelScanWithTotal, LaunchBounds >( *this, grid, block, shmem , m_policy.space().impl_internal_space_instance() , false ); // copy to device and execute const int size = ValueTraits::value_size( m_functor ); DeepCopy( &m_returnvalue, m_scratch_space + (grid_x - 1)*size/sizeof(int), size ); diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp index d09854c3a5..c39dddb198 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_ReduceScan.hpp @@ -376,13 +376,13 @@ template< class ReducerType > __device__ inline typename std::enable_if< Kokkos::is_reducer::value >::type cuda_intra_warp_reduction( const ReducerType& reducer, + typename ReducerType::value_type& result, const uint32_t max_active_thread = blockDim.y) { typedef typename ReducerType::value_type ValueType; unsigned int shift = 1; - ValueType result = reducer.reference(); //Reduce over values from threads with different threadIdx.y while(blockDim.x * shift < 32 ) { const ValueType tmp = shfl_down(result, blockDim.x*shift,32u); @@ -400,6 +400,7 @@ template< class ReducerType > __device__ inline typename std::enable_if< Kokkos::is_reducer::value >::type cuda_inter_warp_reduction( const ReducerType& reducer, + typename ReducerType::value_type value, const int max_active_thread = blockDim.y) { typedef typename ReducerType::value_type ValueType; @@ -410,7 +411,6 @@ cuda_inter_warp_reduction( const ReducerType& reducer, // could lead to race conditions __shared__ double sh_result[(sizeof(ValueType)+7)/8*STEP_WIDTH]; ValueType* result = (ValueType*) & sh_result; - ValueType value = reducer.reference(); const int step = 32 / blockDim.x; int shift = STEP_WIDTH; const int id = threadIdx.y%step==0?threadIdx.y/step:65000; @@ -438,9 +438,18 @@ template< class ReducerType > __device__ inline typename std::enable_if< Kokkos::is_reducer::value >::type cuda_intra_block_reduction( const ReducerType& reducer, + typename ReducerType::value_type value, const int max_active_thread = blockDim.y) { - cuda_intra_warp_reduction(reducer,max_active_thread); - cuda_inter_warp_reduction(reducer,max_active_thread); + cuda_intra_warp_reduction(reducer,value,max_active_thread); + cuda_inter_warp_reduction(reducer,value,max_active_thread); +} + +template< class ReducerType > +__device__ inline +typename std::enable_if< Kokkos::is_reducer::value >::type +cuda_intra_block_reduction( const ReducerType& reducer, + const int max_active_thread = blockDim.y) { + cuda_intra_block_reduction(reducer,reducer.reference(),max_active_thread); } template< class ReducerType> diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.cpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.cpp index ee949583f1..ac36cfd67e 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.cpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.cpp @@ -54,194 +54,8 @@ namespace Kokkos { namespace Impl { -template class TaskQueue< Kokkos::Cuda > ; - -//---------------------------------------------------------------------------- - -__device__ -void TaskQueueSpecialization< Kokkos::Cuda >::driver - ( TaskQueueSpecialization< Kokkos::Cuda >::queue_type * const queue - , int32_t shmem_per_warp ) -{ - using Member = TaskExec< Kokkos::Cuda > ; - using Queue = TaskQueue< Kokkos::Cuda > ; - using task_root_type = TaskBase< void , void , void > ; - - extern __shared__ int32_t shmem_all[]; - - task_root_type * const end = (task_root_type *) task_root_type::EndTag ; - - int32_t * const warp_shmem = - shmem_all + ( threadIdx.z * shmem_per_warp ) / sizeof(int32_t); - - task_root_type * const task_shmem = (task_root_type *) warp_shmem ; - - const int warp_lane = threadIdx.x + threadIdx.y * blockDim.x ; - - Member single_exec( warp_shmem , 1 ); - Member team_exec( warp_shmem , blockDim.y ); - - task_root_type * task_ptr ; - - // Loop until all queues are empty and no tasks in flight - - do { - - // Each team lead attempts to acquire either a thread team task - // or collection of single thread tasks for the team. - - if ( 0 == warp_lane ) { - - task_ptr = 0 < *((volatile int *) & queue->m_ready_count) ? end : 0 ; - - // Loop by priority and then type - for ( int i = 0 ; i < Queue::NumQueue && end == task_ptr ; ++i ) { - for ( int j = 0 ; j < 2 && end == task_ptr ; ++j ) { - task_ptr = Queue::pop_ready_task( & queue->m_ready[i][j] ); - } - } - -#if 0 -printf("TaskQueue::driver(%d,%d) task(%lx)\n",threadIdx.z,blockIdx.x - , uintptr_t(task_ptr)); -#endif - - } - - // Synchronize warp with memory fence before broadcasting task pointer: - - // KOKKOS_IMPL_CUDA_SYNCWARP_OR_RETURN( "A" ); - KOKKOS_IMPL_CUDA_SYNCWARP ; - - // Broadcast task pointer: - - ((int*) & task_ptr )[0] = KOKKOS_IMPL_CUDA_SHFL( ((int*) & task_ptr )[0] , 0 , 32 ); - ((int*) & task_ptr )[1] = KOKKOS_IMPL_CUDA_SHFL( ((int*) & task_ptr )[1] , 0 , 32 ); - -#if defined( KOKKOS_DEBUG ) - KOKKOS_IMPL_CUDA_SYNCWARP_OR_RETURN( "TaskQueue CUDA task_ptr" ); -#endif - - if ( 0 == task_ptr ) break ; // 0 == queue->m_ready_count - - if ( end != task_ptr ) { - - // Whole warp copy task's closure to/from shared memory. - // Use all threads of warp for coalesced read/write. - - int32_t const b = sizeof(task_root_type) / sizeof(int32_t); - int32_t const e = *((int32_t volatile *)( & task_ptr->m_alloc_size )) / sizeof(int32_t); - - int32_t volatile * const task_mem = (int32_t volatile *) task_ptr ; - - // copy task closure from global to shared memory: - - for ( int32_t i = warp_lane ; i < e ; i += CudaTraits::WarpSize ) { - warp_shmem[i] = task_mem[i] ; - } - - // Synchronize threads of the warp and insure memory - // writes are visible to all threads in the warp. - - // KOKKOS_IMPL_CUDA_SYNCWARP_OR_RETURN( "B" ); - KOKKOS_IMPL_CUDA_SYNCWARP ; - - if ( task_root_type::TaskTeam == task_shmem->m_task_type ) { - // Thread Team Task - (*task_shmem->m_apply)( task_shmem , & team_exec ); - } - else if ( 0 == threadIdx.y ) { - // Single Thread Task - (*task_shmem->m_apply)( task_shmem , & single_exec ); - } - - // Synchronize threads of the warp and insure memory - // writes are visible to all threads in the warp. - - // KOKKOS_IMPL_CUDA_SYNCWARP_OR_RETURN( "C" ); - KOKKOS_IMPL_CUDA_SYNCWARP ; - - // copy task closure from shared to global memory: - - for ( int32_t i = b + warp_lane ; i < e ; i += CudaTraits::WarpSize ) { - task_mem[i] = warp_shmem[i] ; - } - - // Synchronize threads of the warp and insure memory - // writes are visible to root thread of the warp for - // respawn or completion. - - // KOKKOS_IMPL_CUDA_SYNCWARP_OR_RETURN( "D" ); - KOKKOS_IMPL_CUDA_SYNCWARP ; - - // If respawn requested copy respawn data back to main memory - - if ( 0 == warp_lane ) { - - if ( ((task_root_type *) task_root_type::LockTag) != task_shmem->m_next ) { - ( (volatile task_root_type *) task_ptr )->m_next = task_shmem->m_next ; - ( (volatile task_root_type *) task_ptr )->m_priority = task_shmem->m_priority ; - } - - queue->complete( task_ptr ); - } - } - } while(1); -} - -namespace { - -__global__ -void cuda_task_queue_execute( TaskQueue< Kokkos::Cuda > * queue - , int32_t shmem_size ) -{ TaskQueueSpecialization< Kokkos::Cuda >::driver( queue , shmem_size ); } - -} - -void TaskQueueSpecialization< Kokkos::Cuda >::execute - ( TaskQueue< Kokkos::Cuda > * const queue ) -{ - const int shared_per_warp = 2048 ; - const int warps_per_block = 4 ; - const dim3 grid( Kokkos::Impl::cuda_internal_multiprocessor_count() , 1 , 1 ); - const dim3 block( 1 , Kokkos::Impl::CudaTraits::WarpSize , warps_per_block ); - const int shared_total = shared_per_warp * warps_per_block ; - const cudaStream_t stream = 0 ; - - CUDA_SAFE_CALL( cudaDeviceSynchronize() ); - -#if 0 -printf("cuda_task_queue_execute before\n"); -#endif - - // Query the stack size, in bytes: - - size_t previous_stack_size = 0 ; - CUDA_SAFE_CALL( cudaDeviceGetLimit( & previous_stack_size , cudaLimitStackSize ) ); - - // If not large enough then set the stack size, in bytes: - - const size_t larger_stack_size = 2048 ; - - if ( previous_stack_size < larger_stack_size ) { - CUDA_SAFE_CALL( cudaDeviceSetLimit( cudaLimitStackSize , larger_stack_size ) ); - } - - cuda_task_queue_execute<<< grid , block , shared_total , stream >>>( queue , shared_per_warp ); - - CUDA_SAFE_CALL( cudaGetLastError() ); - - CUDA_SAFE_CALL( cudaDeviceSynchronize() ); - - if ( previous_stack_size < larger_stack_size ) { - CUDA_SAFE_CALL( cudaDeviceSetLimit( cudaLimitStackSize , previous_stack_size ) ); - } - -#if 0 -printf("cuda_task_queue_execute after\n"); -#endif - -} +template class TaskQueue< Kokkos::Cuda, Impl::default_tasking_memory_space_for_execution_space_t > ; +template class TaskQueueMultiple< Kokkos::Cuda, Impl::default_tasking_memory_space_for_execution_space_t > ; }} /* namespace Kokkos::Impl */ diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.hpp index 8fa1192567..c35987e49e 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Task.hpp @@ -50,6 +50,14 @@ //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- +#include + +#include +#include // CUDA_SAFE_CALL +#include + +//---------------------------------------------------------------------------- + namespace Kokkos { namespace Impl { namespace { @@ -57,54 +65,498 @@ namespace { template< typename TaskType > __global__ void set_cuda_task_base_apply_function_pointer - ( TaskBase::function_type * ptr ) -{ *ptr = TaskType::apply ; } + ( typename TaskType::function_type * ptr, typename TaskType::destroy_type* dtor ) +{ + *ptr = TaskType::apply; + *dtor = TaskType::destroy; +} +template< typename Scheduler > +__global__ +void cuda_task_queue_execute( Scheduler scheduler, int32_t shmem_size ) { + TaskQueueSpecialization< Scheduler >::driver( std::move(scheduler) , shmem_size ); } -template< class > class TaskExec ; +} + +template class TaskExec ; + +template +class TaskQueueSpecialization< + SimpleTaskScheduler +> +{ +public: + + using scheduler_type = SimpleTaskScheduler; + using execution_space = Kokkos::Cuda; + using memory_space = Kokkos::CudaUVMSpace; + using member_type = TaskExec ; + + enum : long { max_league_size = 16 }; + enum : int { warps_per_block = 4 }; + + KOKKOS_INLINE_FUNCTION + static + void iff_single_thread_recursive_execute( scheduler_type const& ) {} + + static int get_max_team_count( + execution_space const& + ) { + return Kokkos::Impl::cuda_internal_multiprocessor_count() * warps_per_block; + } + + __device__ + static void driver(scheduler_type scheduler, int32_t shmem_per_warp) + { + using queue_type = typename scheduler_type::task_queue_type; + using task_base_type = typename scheduler_type::task_base_type; + using runnable_task_base_type = typename scheduler_type::runnable_task_base_type; + using scheduling_info_storage_type = + SchedulingInfoStorage< + runnable_task_base_type, + typename scheduler_type::task_scheduling_info_type + >; + + extern __shared__ int32_t shmem_all[]; + + int32_t* const warp_shmem = shmem_all + (threadIdx.z * shmem_per_warp) / sizeof(int32_t); + + task_base_type* const shared_memory_task_copy = (task_base_type*)warp_shmem; + + const int warp_lane = threadIdx.x + threadIdx.y * blockDim.x; + + member_type single_exec(scheduler, warp_shmem, 1); + member_type team_exec(scheduler, warp_shmem, blockDim.y); + + auto& queue = scheduler.queue(); + auto& team_scheduler = team_exec.scheduler(); + + auto current_task = OptionalRef(); + + // Loop until all queues are empty and no tasks in flight + while(not queue.is_done()) { + + if(warp_lane == 0) { // should be (?) same as team_exec.team_rank() == 0 + // pop off a task + current_task = queue.pop_ready_task(team_scheduler.team_scheduler_info()); + } + + // Broadcast task pointer: + + // Sync before the broadcast + KOKKOS_IMPL_CUDA_SYNCWARP; + + // pretend it's an int* for shuffle purposes + ((int*) ¤t_task)[0] = KOKKOS_IMPL_CUDA_SHFL(((int*) ¤t_task)[0], 0, 32); + ((int*) ¤t_task)[1] = KOKKOS_IMPL_CUDA_SHFL(((int*) ¤t_task)[1], 0, 32); + + if(current_task) { + + KOKKOS_ASSERT(!current_task->as_runnable_task().get_respawn_flag()); + + int32_t b = sizeof(scheduling_info_storage_type) / sizeof(int32_t); + static_assert( + sizeof(scheduling_info_storage_type) % sizeof(int32_t) == 0, + "bad task size" + ); + int32_t const e = current_task->get_allocation_size() / sizeof(int32_t); + KOKKOS_ASSERT(current_task->get_allocation_size() % sizeof(int32_t) == 0); + + int32_t volatile* const task_mem = (int32_t volatile*)current_task.get(); + + // do a coordinated copy of the task closure from global to shared memory: + for(int32_t i = warp_lane; i < e; i += CudaTraits::WarpSize) { + warp_shmem[i] = task_mem[i]; + } + + // Synchronize threads of the warp and insure memory + // writes are visible to all threads in the warp. + KOKKOS_IMPL_CUDA_SYNCWARP; + + if(shared_memory_task_copy->is_team_runnable()) { + // Thread Team Task + shared_memory_task_copy->as_runnable_task().run(team_exec); + } + else if(threadIdx.y == 0) { + // TODO @tasking @optimization DSH Change this to warp_lane == 0 when we allow blockDim.x to be more than 1 + // Single Thread Task + shared_memory_task_copy->as_runnable_task().run(single_exec); + } + + // Synchronize threads of the warp and insure memory + // writes are visible to all threads in the warp. + + KOKKOS_IMPL_CUDA_SYNCWARP; + + //if(warp_lane < b % CudaTraits::WarpSize) b += CudaTraits::WarpSize; + //b -= b % CudaTraits::WarpSize; + + // copy task closure from shared to global memory: + for (int32_t i = b + warp_lane; i < e; i += CudaTraits::WarpSize) { + task_mem[i] = warp_shmem[i]; + } + + // Synchronize threads of the warp and insure memory + // writes are visible to root thread of the warp for + // respawn or completion. + + KOKKOS_IMPL_CUDA_SYNCWARP; + + + if (warp_lane == 0) { + // If respawn requested copy respawn data back to main memory + if(shared_memory_task_copy->as_runnable_task().get_respawn_flag()) { + if(shared_memory_task_copy->as_runnable_task().has_predecessor()) { + // It's not necessary to make this a volatile write because + // the next read of the predecessor is on this thread in complete, + // and the predecessor is cleared there (using a volatile write) + current_task->as_runnable_task().acquire_predecessor_from( + shared_memory_task_copy->as_runnable_task() + ); + } + + // It may not necessary to make this a volatile write, since the + // next read will be done by this thread in complete where the + // rescheduling occurs, but since the task could be stolen later + // before this is written again, we should do the volatile write + // here. (It might not be necessary though because I don't know + // where else the priority would be read after it is scheduled + // by this thread; for now, we leave it volatile, but we should + // benchmark the cost of this.) + current_task.as_volatile()->set_priority(shared_memory_task_copy->get_priority()); + + // It's not necessary to make this a volatile write, since the + // next read of it (if true) will be by this thread in `complete()`, + // which will unset the flag (using volatile) once it has handled + // the respawn + current_task->as_runnable_task().set_respawn_flag(); + + } + + queue.complete( + (*std::move(current_task)).as_runnable_task(), + team_scheduler.team_scheduler_info() + ); + } + + } + } + } + + static + void execute(scheduler_type const& scheduler) + { + const int shared_per_warp = 2048 ; + const dim3 grid(Kokkos::Impl::cuda_internal_multiprocessor_count(), 1, 1); + const dim3 block(1, Kokkos::Impl::CudaTraits::WarpSize, warps_per_block); + const int shared_total = shared_per_warp * warps_per_block; + const cudaStream_t stream = nullptr; + + KOKKOS_ASSERT( + static_cast(grid.x * grid.y * grid.z * block.x * block.y * block.z) + == static_cast(get_max_team_count(scheduler.get_execution_space()) * Kokkos::Impl::CudaTraits::WarpSize) + ); + + auto& queue = scheduler.queue(); + + CUDA_SAFE_CALL(cudaDeviceSynchronize()); + + // Query the stack size, in bytes: + + size_t previous_stack_size = 0; + CUDA_SAFE_CALL(cudaDeviceGetLimit(&previous_stack_size, cudaLimitStackSize)); + + // If not large enough then set the stack size, in bytes: -template<> -class TaskQueueSpecialization< Kokkos::Cuda > + const size_t larger_stack_size = 1 << 11; + + if (previous_stack_size < larger_stack_size) { + CUDA_SAFE_CALL(cudaDeviceSetLimit(cudaLimitStackSize, larger_stack_size)); + } + + cuda_task_queue_execute<<>>(scheduler, shared_per_warp); + + CUDA_SAFE_CALL(cudaGetLastError()); + + CUDA_SAFE_CALL(cudaDeviceSynchronize()); + + if (previous_stack_size < larger_stack_size) { + CUDA_SAFE_CALL(cudaDeviceSetLimit(cudaLimitStackSize, previous_stack_size)); + } + } + + template + static + // TODO @tasking @optimiazation DSH specialize this for trivially destructible types + void + get_function_pointer( + typename TaskType::function_type& ptr, + typename TaskType::destroy_type& dtor + ) + { + using function_type = typename TaskType::function_type; + using destroy_type = typename TaskType::destroy_type; + + // TODO @tasking @minor DSH make sure there aren't any alignment concerns? + void* storage = cuda_internal_scratch_unified( + Kokkos::Cuda(), + sizeof(function_type) + sizeof(destroy_type) + ); + function_type* ptr_ptr = (function_type*)storage; + destroy_type* dtor_ptr = (destroy_type*)((char*)storage + sizeof(function_type)); + + CUDA_SAFE_CALL( cudaDeviceSynchronize() ); + + set_cuda_task_base_apply_function_pointer<<<1,1>>>(ptr_ptr, dtor_ptr); + + CUDA_SAFE_CALL( cudaGetLastError() ); + CUDA_SAFE_CALL( cudaDeviceSynchronize() ); + + ptr = *ptr_ptr; + dtor = *dtor_ptr; + } +}; + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +template +class TaskQueueSpecializationConstrained< + Scheduler, + typename std::enable_if< + std::is_same::value + >::type +> { public: - using execution_space = Kokkos::Cuda ; - using memory_space = Kokkos::CudaUVMSpace ; - using queue_type = TaskQueue< execution_space > ; - using member_type = TaskExec< Kokkos::Cuda > ; + using scheduler_type = Scheduler; + using execution_space = Kokkos::Cuda; + using memory_space = Kokkos::CudaUVMSpace; + using member_type = TaskExec ; + enum : long { max_league_size = 16 }; + + KOKKOS_INLINE_FUNCTION static - void iff_single_thread_recursive_execute( queue_type * const ) {} + void iff_single_thread_recursive_execute( scheduler_type const& ) {} __device__ - static void driver( queue_type * const , int32_t ); + static void driver(scheduler_type scheduler, int32_t shmem_per_warp) + { + using queue_type = typename scheduler_type::queue_type; + using task_root_type = TaskBase; + + extern __shared__ int32_t shmem_all[]; + + task_root_type* const end = (task_root_type *) task_root_type::EndTag ; + task_root_type* const no_more_tasks_sentinel = nullptr; + + int32_t * const warp_shmem = + shmem_all + ( threadIdx.z * shmem_per_warp ) / sizeof(int32_t); + + task_root_type * const task_shmem = (task_root_type *) warp_shmem ; + + const int warp_lane = threadIdx.x + threadIdx.y * blockDim.x ; + + member_type single_exec(scheduler, warp_shmem, 1); + member_type team_exec(scheduler, warp_shmem, blockDim.y); + + auto& team_queue = team_exec.scheduler().queue(); + + task_root_type * task_ptr = no_more_tasks_sentinel; + + // Loop until all queues are empty and no tasks in flight + + do { + + // Each team lead attempts to acquire either a thread team task + // or collection of single thread tasks for the team. + + if ( 0 == warp_lane ) { + + if( *((volatile int *) & team_queue.m_ready_count) > 0 ) { + task_ptr = end; + // Attempt to acquire a task + // Loop by priority and then type + for ( int i = 0 ; i < queue_type::NumQueue && end == task_ptr ; ++i ) { + for ( int j = 0 ; j < 2 && end == task_ptr ; ++j ) { + task_ptr = queue_type::pop_ready_task( & team_queue.m_ready[i][j] ); + } + } + } + else { + // returns nullptr if and only if all other queues have a ready + // count of 0 also. Otherwise, returns a task from another queue + // or `end` if one couldn't be popped + task_ptr = team_queue.attempt_to_steal_task(); + #if 0 + if(task != no_more_tasks_sentinel && task != end) { + std::printf("task stolen on rank %d\n", team_exec.league_rank()); + } + #endif + } + + } + + // Synchronize warp with memory fence before broadcasting task pointer: + + // KOKKOS_IMPL_CUDA_SYNCWARP_OR_RETURN( "A" ); + KOKKOS_IMPL_CUDA_SYNCWARP ; + + // Broadcast task pointer: + + ((int*) & task_ptr )[0] = KOKKOS_IMPL_CUDA_SHFL( ((int*) & task_ptr )[0] , 0 , 32 ); + ((int*) & task_ptr )[1] = KOKKOS_IMPL_CUDA_SHFL( ((int*) & task_ptr )[1] , 0 , 32 ); + + #if defined( KOKKOS_DEBUG ) + KOKKOS_IMPL_CUDA_SYNCWARP_OR_RETURN( "TaskQueue CUDA task_ptr" ); + #endif + + if ( 0 == task_ptr ) break ; // 0 == queue->m_ready_count + + if ( end != task_ptr ) { + + // Whole warp copy task's closure to/from shared memory. + // Use all threads of warp for coalesced read/write. + + int32_t const b = sizeof(task_root_type) / sizeof(int32_t); + int32_t const e = *((int32_t volatile *)( & task_ptr->m_alloc_size )) / sizeof(int32_t); + + int32_t volatile * const task_mem = (int32_t volatile *) task_ptr ; + + KOKKOS_ASSERT(e * sizeof(int32_t) < shmem_per_warp); + + // copy task closure from global to shared memory: + + for ( int32_t i = warp_lane ; i < e ; i += CudaTraits::WarpSize ) { + warp_shmem[i] = task_mem[i] ; + } + + // Synchronize threads of the warp and insure memory + // writes are visible to all threads in the warp. + + // KOKKOS_IMPL_CUDA_SYNCWARP_OR_RETURN( "B" ); + KOKKOS_IMPL_CUDA_SYNCWARP ; + + if ( task_root_type::TaskTeam == task_shmem->m_task_type ) { + // Thread Team Task + (*task_shmem->m_apply)( task_shmem , & team_exec ); + } + else if ( 0 == threadIdx.y ) { + // Single Thread Task + (*task_shmem->m_apply)( task_shmem , & single_exec ); + } + + // Synchronize threads of the warp and insure memory + // writes are visible to all threads in the warp. + + // KOKKOS_IMPL_CUDA_SYNCWARP_OR_RETURN( "C" ); + KOKKOS_IMPL_CUDA_SYNCWARP ; + + // copy task closure from shared to global memory: + + for ( int32_t i = b + warp_lane ; i < e ; i += CudaTraits::WarpSize ) { + task_mem[i] = warp_shmem[i] ; + } + + // Synchronize threads of the warp and insure memory + // writes are visible to root thread of the warp for + // respawn or completion. + + // KOKKOS_IMPL_CUDA_SYNCWARP_OR_RETURN( "D" ); + KOKKOS_IMPL_CUDA_SYNCWARP ; + + // If respawn requested copy respawn data back to main memory + + if ( 0 == warp_lane ) { + + if ( ((task_root_type *) task_root_type::LockTag) != task_shmem->m_next ) { + ( (volatile task_root_type *) task_ptr )->m_next = task_shmem->m_next ; + ( (volatile task_root_type *) task_ptr )->m_priority = task_shmem->m_priority ; + } + + team_queue.complete( task_ptr ); + } + + } + } while(1); + } static - void execute( queue_type * const ); + void execute(scheduler_type const& scheduler) + { + const int shared_per_warp = 2048 ; + const int warps_per_block = 4 ; + const dim3 grid( Kokkos::Impl::cuda_internal_multiprocessor_count() , 1 , 1 ); + //const dim3 grid( 1 , 1 , 1 ); + const dim3 block( 1 , Kokkos::Impl::CudaTraits::WarpSize , warps_per_block ); + const int shared_total = shared_per_warp * warps_per_block ; + const cudaStream_t stream = 0 ; + + auto& queue = scheduler.queue(); + queue.initialize_team_queues(warps_per_block * grid.x); + + CUDA_SAFE_CALL( cudaDeviceSynchronize() ); + + // Query the stack size, in bytes: + + size_t previous_stack_size = 0 ; + CUDA_SAFE_CALL( cudaDeviceGetLimit( & previous_stack_size , cudaLimitStackSize ) ); + + // If not large enough then set the stack size, in bytes: + + const size_t larger_stack_size = 2048 ; + + if ( previous_stack_size < larger_stack_size ) { + CUDA_SAFE_CALL( cudaDeviceSetLimit( cudaLimitStackSize , larger_stack_size ) ); + } + + cuda_task_queue_execute<<< grid , block , shared_total , stream >>>( scheduler , shared_per_warp ); + + CUDA_SAFE_CALL( cudaGetLastError() ); + + CUDA_SAFE_CALL( cudaDeviceSynchronize() ); + + if ( previous_stack_size < larger_stack_size ) { + CUDA_SAFE_CALL( cudaDeviceSetLimit( cudaLimitStackSize , previous_stack_size ) ); + } + + } template< typename TaskType > static - typename TaskType::function_type - get_function_pointer() + void + get_function_pointer( + typename TaskType::function_type& ptr, + typename TaskType::destroy_type& dtor + ) { - using function_type = typename TaskType::function_type ; + using function_type = typename TaskType::function_type; + using destroy_type = typename TaskType::destroy_type; - function_type * const ptr = - (function_type*) cuda_internal_scratch_unified( sizeof(function_type) ); + void* storage = cuda_internal_scratch_unified( + Kokkos::Cuda(), + sizeof(function_type) + sizeof(destroy_type) + ); + function_type* ptr_ptr = (function_type*)storage; + destroy_type* dtor_ptr = (destroy_type*)((char*)storage + sizeof(function_type)); CUDA_SAFE_CALL( cudaDeviceSynchronize() ); - set_cuda_task_base_apply_function_pointer<<<1,1>>>(ptr); + set_cuda_task_base_apply_function_pointer<<<1,1>>>(ptr_ptr, dtor_ptr); CUDA_SAFE_CALL( cudaGetLastError() ); CUDA_SAFE_CALL( cudaDeviceSynchronize() ); - return *ptr ; + ptr = *ptr_ptr; + dtor = *dtor_ptr; + } }; -extern template class TaskQueue< Kokkos::Cuda > ; +extern template class TaskQueue< Kokkos::Cuda, default_tasking_memory_space_for_execution_space_t > ; }} /* namespace Kokkos::Impl */ @@ -136,8 +588,8 @@ namespace Impl { * When executing a single thread task the syncwarp or other * warp synchronizing functions must not be called. */ -template<> -class TaskExec< Kokkos::Cuda > +template +class TaskExec { private: @@ -148,24 +600,39 @@ private: TaskExec & operator = ( TaskExec && ) = delete ; TaskExec & operator = ( TaskExec const & ) = delete ; - friend class Kokkos::Impl::TaskQueue< Kokkos::Cuda > ; - friend class Kokkos::Impl::TaskQueueSpecialization< Kokkos::Cuda > ; + friend class Kokkos::Impl::TaskQueue< Kokkos::Cuda, default_tasking_memory_space_for_execution_space_t > ; + template + friend class Kokkos::Impl::TaskQueueSpecializationConstrained; + template + friend class Kokkos::Impl::TaskQueueSpecialization; int32_t * m_team_shmem ; const int m_team_size ; + Scheduler m_scheduler; // If constructed with arg_team_size == 1 the object // can only be used by 0 == threadIdx.y. - __device__ - TaskExec( int32_t * arg_team_shmem , int arg_team_size = blockDim.y ) - : m_team_shmem( arg_team_shmem ) - , m_team_size( arg_team_size ) {} + KOKKOS_INLINE_FUNCTION + TaskExec( + Scheduler const& parent_scheduler, + int32_t* arg_team_shmem, + int arg_team_size = blockDim.y + ) + : m_team_shmem(arg_team_shmem), + m_team_size(arg_team_size), + m_scheduler(parent_scheduler.get_team_scheduler(league_rank())) + { } public: + using thread_team_member = TaskExec; + #if defined( __CUDA_ARCH__ ) - __device__ int team_rank() const { return threadIdx.y ; } - __device__ int team_size() const { return m_team_size ; } + __device__ int team_rank() const { return threadIdx.y ; } + __device__ int team_size() const { return m_team_size ; } + //__device__ int league_rank() const { return threadIdx.z; } + __device__ int league_rank() const { return blockIdx.x * blockDim.z + threadIdx.z; } + __device__ int league_size() const { return blockDim.z * gridDim.x; } __device__ void team_barrier() const { @@ -186,13 +653,18 @@ public: } #else - __host__ int team_rank() const { return 0 ; } - __host__ int team_size() const { return 0 ; } + __host__ int team_rank() const { return 0 ; } + __host__ int team_size() const { return 0 ; } + __host__ int league_rank() const { return 0; } + __host__ int league_size() const { return 0; } __host__ void team_barrier() const {} template< class ValueType > __host__ void team_broadcast( ValueType & , const int ) const {} #endif + KOKKOS_INLINE_FUNCTION Scheduler const& scheduler() const noexcept { return m_scheduler; } + KOKKOS_INLINE_FUNCTION Scheduler& scheduler() noexcept { return m_scheduler; } + }; }} /* namespace Kokkos::Impl */ @@ -203,20 +675,22 @@ public: namespace Kokkos { namespace Impl { -template -struct TeamThreadRangeBoundariesStruct > +template +struct TeamThreadRangeBoundariesStruct> { - typedef iType index_type; + using index_type = iType; + using member_type = TaskExec; + const iType start ; const iType end ; const iType increment ; - const TaskExec< Kokkos::Cuda > & thread; + member_type const& thread; #if defined( __CUDA_ARCH__ ) __device__ inline TeamThreadRangeBoundariesStruct - ( const TaskExec< Kokkos::Cuda > & arg_thread, const iType& arg_count) + ( member_type const& arg_thread, const iType& arg_count) : start( threadIdx.y ) , end(arg_count) , increment( blockDim.y ) @@ -225,7 +699,7 @@ struct TeamThreadRangeBoundariesStruct > __device__ inline TeamThreadRangeBoundariesStruct - ( const TaskExec< Kokkos::Cuda > & arg_thread + ( member_type const& arg_thread , const iType & arg_start , const iType & arg_end ) @@ -238,10 +712,10 @@ struct TeamThreadRangeBoundariesStruct > #else TeamThreadRangeBoundariesStruct - ( const TaskExec< Kokkos::Cuda > & arg_thread, const iType& arg_count); + ( member_type const& arg_thread, const iType& arg_count); TeamThreadRangeBoundariesStruct - ( const TaskExec< Kokkos::Cuda > & arg_thread + ( member_type const& arg_thread , const iType & arg_start , const iType & arg_end ); @@ -252,20 +726,22 @@ struct TeamThreadRangeBoundariesStruct > //---------------------------------------------------------------------------- -template -struct ThreadVectorRangeBoundariesStruct > +template +struct ThreadVectorRangeBoundariesStruct > { - typedef iType index_type; + using index_type = iType; + using member_type = TaskExec; + const index_type start ; const index_type end ; const index_type increment ; - const TaskExec< Kokkos::Cuda > & thread; + const member_type& thread; #if defined( __CUDA_ARCH__ ) __device__ inline ThreadVectorRangeBoundariesStruct - ( const TaskExec< Kokkos::Cuda > & arg_thread, const index_type& arg_count ) + ( member_type const& arg_thread, const index_type& arg_count ) : start( threadIdx.x ) , end(arg_count) , increment( blockDim.x ) @@ -274,9 +750,9 @@ struct ThreadVectorRangeBoundariesStruct > __device__ inline ThreadVectorRangeBoundariesStruct - ( const TaskExec< Kokkos::Cuda > & arg_thread, const index_type& arg_begin, const index_type& arg_end ) + ( member_type const& arg_thread, const index_type& arg_begin, const index_type& arg_end ) : start( arg_begin + threadIdx.x ) - , end(arg_count) + , end(arg_end) , increment( blockDim.x ) , thread(arg_thread) {} @@ -284,10 +760,10 @@ struct ThreadVectorRangeBoundariesStruct > #else ThreadVectorRangeBoundariesStruct - ( const TaskExec< Kokkos::Cuda > & arg_thread, const index_type& arg_count ); + ( member_type const& arg_thread, const index_type& arg_count ); ThreadVectorRangeBoundariesStruct - ( const TaskExec< Kokkos::Cuda > & arg_thread, const index_type& arg_begin, const index_type& arg_end); + ( member_type const& arg_thread, const index_type& arg_begin, const index_type& arg_end); #endif @@ -299,69 +775,69 @@ struct ThreadVectorRangeBoundariesStruct > namespace Kokkos { -template -KOKKOS_INLINE_FUNCTION -Impl::TeamThreadRangeBoundariesStruct< iType, Impl::TaskExec< Kokkos::Cuda > > -TeamThreadRange( const Impl::TaskExec< Kokkos::Cuda > & thread, const iType & count ) -{ - return Impl::TeamThreadRangeBoundariesStruct< iType, Impl::TaskExec< Kokkos::Cuda > >( thread, count ); -} - -template -KOKKOS_INLINE_FUNCTION -Impl::TeamThreadRangeBoundariesStruct - < typename std::common_type::type - , Impl::TaskExec< Kokkos::Cuda > > -TeamThreadRange( const Impl::TaskExec< Kokkos::Cuda > & thread - , const iType1 & begin, const iType2 & end ) -{ - typedef typename std::common_type< iType1, iType2 >::type iType; - return Impl::TeamThreadRangeBoundariesStruct< iType, Impl::TaskExec< Kokkos::Cuda > >( - thread, iType(begin), iType(end) ); -} - -template -KOKKOS_INLINE_FUNCTION -Impl::ThreadVectorRangeBoundariesStruct > -ThreadVectorRange( const Impl::TaskExec< Kokkos::Cuda > & thread - , const iType & count ) -{ - return Impl::ThreadVectorRangeBoundariesStruct >(thread,count); -} - -template -KOKKOS_INLINE_FUNCTION -Impl::ThreadVectorRangeBoundariesStruct > -ThreadVectorRange( const Impl::TaskExec< Kokkos::Cuda > & thread - , const iType & arg_begin - , const iType & arg_end ) -{ - return Impl::ThreadVectorRangeBoundariesStruct >(thread,arg_begin,arg_end); -} - -KOKKOS_INLINE_FUNCTION -Impl::ThreadSingleStruct > -PerTeam(const Impl::TaskExec< Kokkos::Cuda >& thread) -{ - return Impl::ThreadSingleStruct >(thread); -} - -KOKKOS_INLINE_FUNCTION -Impl::VectorSingleStruct > -PerThread(const Impl::TaskExec< Kokkos::Cuda >& thread) -{ - return Impl::VectorSingleStruct >(thread); -} +//template +//KOKKOS_INLINE_FUNCTION +//Impl::TeamThreadRangeBoundariesStruct< iType, Impl::TaskExec< Kokkos::Cuda > > +//TeamThreadRange( const Impl::TaskExec< Kokkos::Cuda > & thread, const iType & count ) +//{ +// return Impl::TeamThreadRangeBoundariesStruct< iType, Impl::TaskExec< Kokkos::Cuda > >( thread, count ); +//} +// +//template +//KOKKOS_INLINE_FUNCTION +//Impl::TeamThreadRangeBoundariesStruct +// < typename std::common_type::type +// , Impl::TaskExec< Kokkos::Cuda > > +//TeamThreadRange( const Impl::TaskExec< Kokkos::Cuda > & thread +// , const iType1 & begin, const iType2 & end ) +//{ +// typedef typename std::common_type< iType1, iType2 >::type iType; +// return Impl::TeamThreadRangeBoundariesStruct< iType, Impl::TaskExec< Kokkos::Cuda > >( +// thread, iType(begin), iType(end) ); +//} +// +//template +//KOKKOS_INLINE_FUNCTION +//Impl::ThreadVectorRangeBoundariesStruct > +//ThreadVectorRange( const Impl::TaskExec< Kokkos::Cuda > & thread +// , const iType & count ) +//{ +// return Impl::ThreadVectorRangeBoundariesStruct >(thread,count); +//} +// +//template +//KOKKOS_INLINE_FUNCTION +//Impl::ThreadVectorRangeBoundariesStruct > +//ThreadVectorRange( const Impl::TaskExec< Kokkos::Cuda > & thread +// , const iType & arg_begin +// , const iType & arg_end ) +//{ +// return Impl::ThreadVectorRangeBoundariesStruct >(thread,arg_begin,arg_end); +//} + +// KOKKOS_INLINE_FUNCTION +// Impl::ThreadSingleStruct > +// PerTeam(const Impl::TaskExec< Kokkos::Cuda >& thread) +// { +// return Impl::ThreadSingleStruct >(thread); +// } + +// KOKKOS_INLINE_FUNCTION +// Impl::VectorSingleStruct > +// PerThread(const Impl::TaskExec< Kokkos::Cuda >& thread) +// { +// return Impl::VectorSingleStruct >(thread); +// } /** \brief Inter-thread parallel_for. Executes lambda(iType i) for each i=0..N-1. * * The range i=0..N-1 is mapped to all threads of the the calling thread team. * This functionality requires C++11 support. */ -template +template KOKKOS_INLINE_FUNCTION void parallel_for - ( const Impl::TeamThreadRangeBoundariesStruct >& loop_boundaries + ( const Impl::TeamThreadRangeBoundariesStruct >& loop_boundaries , const Lambda& lambda ) { @@ -370,10 +846,10 @@ void parallel_for } } -template< typename iType, class Lambda > +template< typename iType, class Lambda, class Scheduler > KOKKOS_INLINE_FUNCTION void parallel_for - (const Impl::ThreadVectorRangeBoundariesStruct >& loop_boundaries, + (const Impl::ThreadVectorRangeBoundariesStruct >& loop_boundaries, const Lambda & lambda) { for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { lambda(i); @@ -459,14 +935,14 @@ void parallel_reduce // blockDim.y == team_size // threadIdx.x == position in vec // threadIdx.y == member number -template< typename iType, class Lambda, typename ValueType > +template< typename iType, class Lambda, typename ValueType, class Scheduler > KOKKOS_INLINE_FUNCTION void parallel_reduce - (const Impl::TeamThreadRangeBoundariesStruct >& loop_boundaries, + (const Impl::TeamThreadRangeBoundariesStruct >& loop_boundaries, const Lambda & lambda, ValueType& initialized_result) { - //TODO what is the point of creating this temporary? + //TODO @internal_documentation what is the point of creating this temporary? ValueType result = initialized_result; for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { lambda(i,result); @@ -487,15 +963,15 @@ void parallel_reduce } } -template< typename iType, class Lambda, typename ReducerType > +template< typename iType, class Lambda, typename ReducerType, class Scheduler > KOKKOS_INLINE_FUNCTION void parallel_reduce - (const Impl::TeamThreadRangeBoundariesStruct >& loop_boundaries, + (const Impl::TeamThreadRangeBoundariesStruct >& loop_boundaries, const Lambda & lambda, const ReducerType& reducer) { typedef typename ReducerType::value_type ValueType; - //TODO what is the point of creating this temporary? + //TODO @internal_documentation what is the point of creating this temporary? ValueType result = ValueType(); reducer.init(result); @@ -549,10 +1025,10 @@ void parallel_reduce // blockDim.y == team_size // threadIdx.x == position in vec // threadIdx.y == member number -template< typename iType, class Lambda, typename ValueType > +template< typename iType, class Lambda, typename ValueType, class Scheduler > KOKKOS_INLINE_FUNCTION void parallel_reduce - (const Impl::ThreadVectorRangeBoundariesStruct >& loop_boundaries, + (const Impl::ThreadVectorRangeBoundariesStruct >& loop_boundaries, const Lambda & lambda, ValueType& initialized_result) { @@ -576,10 +1052,10 @@ void parallel_reduce } } -template< typename iType, class Lambda, typename ReducerType > +template< typename iType, class Lambda, typename ReducerType, class Scheduler > KOKKOS_INLINE_FUNCTION void parallel_reduce - (const Impl::ThreadVectorRangeBoundariesStruct >& loop_boundaries, + (const Impl::ThreadVectorRangeBoundariesStruct >& loop_boundaries, const Lambda & lambda, const ReducerType& reducer) { @@ -611,10 +1087,10 @@ void parallel_reduce // blockDim.y == team_size // threadIdx.x == position in vec // threadIdx.y == member number -template< typename iType, class Closure > +template< typename iType, class Closure, class Scheduler > KOKKOS_INLINE_FUNCTION void parallel_scan - (const Impl::TeamThreadRangeBoundariesStruct >& loop_boundaries, + (const Impl::TeamThreadRangeBoundariesStruct >& loop_boundaries, const Closure & closure ) { // Extract value_type from closure @@ -676,10 +1152,10 @@ void parallel_scan // blockDim.y == team_size // threadIdx.x == position in vec // threadIdx.y == member number -template< typename iType, class Closure > +template< typename iType, class Closure, class Scheduler > KOKKOS_INLINE_FUNCTION void parallel_scan - (const Impl::ThreadVectorRangeBoundariesStruct >& loop_boundaries, + (const Impl::ThreadVectorRangeBoundariesStruct >& loop_boundaries, const Closure & closure ) { // Extract value_type from closure @@ -735,25 +1211,25 @@ void parallel_scan namespace Kokkos { - template + template KOKKOS_INLINE_FUNCTION - void single(const Impl::VectorSingleStruct >& , const FunctorType& lambda) { + void single(const Impl::VectorSingleStruct >& , const FunctorType& lambda) { #ifdef __CUDA_ARCH__ if(threadIdx.x == 0) lambda(); #endif } - template + template KOKKOS_INLINE_FUNCTION - void single(const Impl::ThreadSingleStruct >& , const FunctorType& lambda) { + void single(const Impl::ThreadSingleStruct >& , const FunctorType& lambda) { #ifdef __CUDA_ARCH__ if(threadIdx.x == 0 && threadIdx.y == 0) lambda(); #endif } - template + template KOKKOS_INLINE_FUNCTION - void single(const Impl::VectorSingleStruct >& s , const FunctorType& lambda, ValueType& val) { + void single(const Impl::VectorSingleStruct >& s , const FunctorType& lambda, ValueType& val) { #ifdef __CUDA_ARCH__ if(threadIdx.x == 0) lambda(val); if ( 1 < s.team_member.team_size() ) { @@ -762,9 +1238,9 @@ namespace Kokkos { #endif } - template + template KOKKOS_INLINE_FUNCTION - void single(const Impl::ThreadSingleStruct >& single_struct, const FunctorType& lambda, ValueType& val) { + void single(const Impl::ThreadSingleStruct >& single_struct, const FunctorType& lambda, ValueType& val) { #ifdef __CUDA_ARCH__ if(threadIdx.x == 0 && threadIdx.y == 0) { lambda(val); diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Team.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Team.hpp index 18271a5146..587ad6001d 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Team.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_Team.hpp @@ -56,9 +56,9 @@ #include #include -#include +#include #include -#include +#include #include #if defined(KOKKOS_ENABLE_PROFILING) @@ -101,11 +101,13 @@ struct CudaJoinFunctor { * total available shared memory must be partitioned among teams. */ class CudaTeamMember { -private: +public: typedef Kokkos::Cuda execution_space ; typedef execution_space::scratch_memory_space scratch_memory_space ; +private: + mutable void * m_team_reduce ; scratch_memory_space m_team_shared ; int m_team_reduce_size ; @@ -221,12 +223,21 @@ public: KOKKOS_INLINE_FUNCTION typename std::enable_if< is_reducer< ReducerType >::value >::type team_reduce( ReducerType const & reducer ) const noexcept + { + team_reduce(reducer,reducer.reference()); + } + + template< typename ReducerType > + KOKKOS_INLINE_FUNCTION + typename std::enable_if< is_reducer< ReducerType >::value >::type + team_reduce( ReducerType const & reducer, typename ReducerType::value_type& value ) const noexcept { #ifdef __CUDA_ARCH__ - cuda_intra_block_reduction(reducer,blockDim.y); + cuda_intra_block_reduction(reducer,value,blockDim.y); #endif /* #ifdef __CUDA_ARCH__ */ } + //-------------------------------------------------------------------------- /** \brief Intra-team exclusive prefix sum with team_rank() ordering * with intra-team non-deterministic ordering accumulation. @@ -281,20 +292,28 @@ public: template< typename ReducerType > KOKKOS_INLINE_FUNCTION static typename std::enable_if< is_reducer< ReducerType >::value >::type - vector_reduce( ReducerType const & reducer ) + vector_reduce( ReducerType const & reducer ) { + vector_reduce(reducer,reducer.reference()); + } + + template< typename ReducerType > + KOKKOS_INLINE_FUNCTION static + typename std::enable_if< is_reducer< ReducerType >::value >::type + vector_reduce( ReducerType const & reducer, typename ReducerType::value_type& value ) { #ifdef __CUDA_ARCH__ if(blockDim.x == 1) return; // Intra vector lane shuffle reduction: - typename ReducerType::value_type tmp ( reducer.reference() ); + typename ReducerType::value_type tmp ( value ); + typename ReducerType::value_type tmp2 = tmp; unsigned mask = blockDim.x==32?0xffffffff:((1<>= 1 ) ; ) { - cuda_shfl_down( reducer.reference() , tmp , i , blockDim.x , mask ); - if ( (int)threadIdx.x < i ) { reducer.join( tmp , reducer.reference() ); } + cuda_shfl_down( tmp2 , tmp , i , blockDim.x , mask ); + if ( (int)threadIdx.x < i ) { reducer.join( tmp , tmp2 ); } } // Broadcast from root lane to all other lanes. @@ -302,7 +321,9 @@ public: // because floating point summation is not associative // and thus different threads could have different results. - cuda_shfl( reducer.reference() , tmp , 0 , blockDim.x , mask ); + cuda_shfl( tmp2 , tmp , 0 , blockDim.x , mask ); + value = tmp2; + reducer.reference() = tmp2; #endif } @@ -543,19 +564,37 @@ struct TeamThreadRangeBoundariesStruct { const iType end; KOKKOS_INLINE_FUNCTION - TeamThreadRangeBoundariesStruct (const CudaTeamMember& thread_, const iType& count) + TeamThreadRangeBoundariesStruct (const CudaTeamMember& thread_, iType count) : member(thread_) , start( 0 ) , end( count ) {} KOKKOS_INLINE_FUNCTION - TeamThreadRangeBoundariesStruct (const CudaTeamMember& thread_, const iType& begin_, const iType& end_) + TeamThreadRangeBoundariesStruct (const CudaTeamMember& thread_, iType begin_, iType end_) : member(thread_) , start( begin_ ) , end( end_ ) {} }; +template +struct TeamVectorRangeBoundariesStruct { + typedef iType index_type; + const CudaTeamMember& member; + const iType start; + const iType end; + + KOKKOS_INLINE_FUNCTION + TeamVectorRangeBoundariesStruct (const CudaTeamMember& thread_, const iType& count) + : member(thread_) + , start( 0 ) + , end( count ) {} + KOKKOS_INLINE_FUNCTION + TeamVectorRangeBoundariesStruct (const CudaTeamMember& thread_, const iType& begin_, const iType& end_) + : member(thread_) + , start( begin_ ) + , end( end_ ) {} +}; template struct ThreadVectorRangeBoundariesStruct { @@ -564,19 +603,19 @@ struct ThreadVectorRangeBoundariesStruct { const index_type end; KOKKOS_INLINE_FUNCTION - ThreadVectorRangeBoundariesStruct (const CudaTeamMember, const index_type& count) + ThreadVectorRangeBoundariesStruct (const CudaTeamMember, index_type count) : start( static_cast(0) ), end( count ) {} KOKKOS_INLINE_FUNCTION - ThreadVectorRangeBoundariesStruct (const index_type& count) + ThreadVectorRangeBoundariesStruct (index_type count) : start( static_cast(0) ), end( count ) {} KOKKOS_INLINE_FUNCTION - ThreadVectorRangeBoundariesStruct (const CudaTeamMember, const index_type& arg_begin, const index_type& arg_end) + ThreadVectorRangeBoundariesStruct (const CudaTeamMember, index_type arg_begin, index_type arg_end) : start( arg_begin ), end( arg_end ) {} KOKKOS_INLINE_FUNCTION - ThreadVectorRangeBoundariesStruct (const index_type& arg_begin, const index_type& arg_end) + ThreadVectorRangeBoundariesStruct (index_type arg_begin, index_type arg_end) : start( arg_begin ), end( arg_end ) {} }; @@ -585,7 +624,7 @@ struct ThreadVectorRangeBoundariesStruct { template KOKKOS_INLINE_FUNCTION Impl::TeamThreadRangeBoundariesStruct< iType, Impl::CudaTeamMember > -TeamThreadRange( const Impl::CudaTeamMember & thread, const iType & count ) { +TeamThreadRange( const Impl::CudaTeamMember & thread, iType count ) { return Impl::TeamThreadRangeBoundariesStruct< iType, Impl::CudaTeamMember >( thread, count ); } @@ -593,22 +632,38 @@ template< typename iType1, typename iType2 > KOKKOS_INLINE_FUNCTION Impl::TeamThreadRangeBoundariesStruct< typename std::common_type< iType1, iType2 >::type, Impl::CudaTeamMember > -TeamThreadRange( const Impl::CudaTeamMember & thread, const iType1 & begin, const iType2 & end ) { +TeamThreadRange( const Impl::CudaTeamMember & thread, iType1 begin, iType2 end ) { typedef typename std::common_type< iType1, iType2 >::type iType; return Impl::TeamThreadRangeBoundariesStruct< iType, Impl::CudaTeamMember >( thread, iType(begin), iType(end) ); } +template +KOKKOS_INLINE_FUNCTION +Impl::TeamVectorRangeBoundariesStruct< iType, Impl::CudaTeamMember > +TeamVectorRange( const Impl::CudaTeamMember & thread, const iType & count ) { + return Impl::TeamVectorRangeBoundariesStruct< iType, Impl::CudaTeamMember >( thread, count ); +} + +template< typename iType1, typename iType2 > +KOKKOS_INLINE_FUNCTION +Impl::TeamVectorRangeBoundariesStruct< typename std::common_type< iType1, iType2 >::type, + Impl::CudaTeamMember > +TeamVectorRange( const Impl::CudaTeamMember & thread, const iType1 & begin, const iType2 & end ) { + typedef typename std::common_type< iType1, iType2 >::type iType; + return Impl::TeamVectorRangeBoundariesStruct< iType, Impl::CudaTeamMember >( thread, iType(begin), iType(end) ); +} + template KOKKOS_INLINE_FUNCTION Impl::ThreadVectorRangeBoundariesStruct -ThreadVectorRange(const Impl::CudaTeamMember& thread, const iType& count) { +ThreadVectorRange(const Impl::CudaTeamMember& thread, iType count) { return Impl::ThreadVectorRangeBoundariesStruct(thread,count); } template KOKKOS_INLINE_FUNCTION Impl::ThreadVectorRangeBoundariesStruct -ThreadVectorRange(const Impl::CudaTeamMember& thread, const iType& arg_begin, const iType& arg_end) { +ThreadVectorRange(const Impl::CudaTeamMember& thread, iType arg_begin, iType arg_end) { return Impl::ThreadVectorRangeBoundariesStruct(thread,arg_begin,arg_end); } @@ -667,16 +722,16 @@ parallel_reduce ) { #ifdef __CUDA_ARCH__ - - reducer.init( reducer.reference() ); + typename ReducerType::value_type value; + reducer.init( value ); for( iType i = loop_boundaries.start + threadIdx.y ; i < loop_boundaries.end ; i += blockDim.y ) { - closure(i,reducer.reference()); + closure(i,value); } - loop_boundaries.member.team_reduce( reducer ); + loop_boundaries.member.team_reduce( reducer, value ); #endif } @@ -701,19 +756,88 @@ parallel_reduce ) { #ifdef __CUDA_ARCH__ - - Kokkos::Sum reducer(result); + ValueType val; + Kokkos::Sum reducer(val); reducer.init( reducer.reference() ); for( iType i = loop_boundaries.start + threadIdx.y ; i < loop_boundaries.end ; i += blockDim.y ) { - closure(i,result); + closure(i,val); } - loop_boundaries.member.team_reduce( reducer ); + loop_boundaries.member.team_reduce( reducer , val); + result = reducer.reference(); +#endif +} + +template +KOKKOS_INLINE_FUNCTION +void parallel_for + ( const Impl::TeamVectorRangeBoundariesStruct& + loop_boundaries + , const Closure & closure + ) +{ + #ifdef __CUDA_ARCH__ + for( iType i = loop_boundaries.start + threadIdx.y * blockDim.x + threadIdx.x + ; i < loop_boundaries.end + ; i += blockDim.y*blockDim.x ) + closure(i); + #endif +} + +template< typename iType, class Closure, class ReducerType > +KOKKOS_INLINE_FUNCTION +typename std::enable_if< Kokkos::is_reducer< ReducerType >::value >::type +parallel_reduce + ( const Impl::TeamVectorRangeBoundariesStruct & + loop_boundaries + , const Closure & closure + , const ReducerType & reducer + ) +{ +#ifdef __CUDA_ARCH__ + typename ReducerType::value_type value; + reducer.init( value ); + + for( iType i = loop_boundaries.start + threadIdx.y * blockDim.x + threadIdx.x + ; i < loop_boundaries.end + ; i += blockDim.y * blockDim.x ) { + closure(i,value); + } + + loop_boundaries.member.vector_reduce( reducer, value ); + loop_boundaries.member.team_reduce( reducer, value ); +#endif +} + +template< typename iType, class Closure, typename ValueType > +KOKKOS_INLINE_FUNCTION +typename std::enable_if< ! Kokkos::is_reducer< ValueType >::value >::type +parallel_reduce + ( const Impl::TeamVectorRangeBoundariesStruct & + loop_boundaries + , const Closure & closure + , ValueType & result + ) +{ +#ifdef __CUDA_ARCH__ + ValueType val; + Kokkos::Sum reducer(val); + reducer.init( reducer.reference() ); + + for( iType i = loop_boundaries.start + threadIdx.y * blockDim.x + threadIdx.x + ; i < loop_boundaries.end + ; i += blockDim.y * blockDim.x ) { + closure(i,val); + } + + loop_boundaries.member.vector_reduce( reducer ); + loop_boundaries.member.team_reduce( reducer ); + result = reducer.reference(); #endif } diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_View.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_View.hpp index af2aff8b35..2fe9d8ccf7 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_View.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_View.hpp @@ -241,7 +241,7 @@ class ViewDataHandle< Traits , sizeof(typename Traits::const_value_type) == 16 ) && // Random access trait - ( Traits::memory_traits::RandomAccess != 0 ) + ( Traits::memory_traits::is_random_access != 0 ) )>::type > { public: diff --git a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_WorkGraphPolicy.hpp b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_WorkGraphPolicy.hpp index 94e293d7c7..9c0ac470c8 100644 --- a/lib/kokkos/core/src/Cuda/Kokkos_Cuda_WorkGraphPolicy.hpp +++ b/lib/kokkos/core/src/Cuda/Kokkos_Cuda_WorkGraphPolicy.hpp @@ -102,9 +102,8 @@ public: const dim3 grid( Kokkos::Impl::cuda_internal_multiprocessor_count() , 1 , 1 ); const dim3 block( 1 , Kokkos::Impl::CudaTraits::WarpSize , warps_per_block ); const int shared = 0 ; - const cudaStream_t stream = 0 ; - Kokkos::Impl::CudaParallelLaunch(*this, grid, block, shared, stream); + Kokkos::Impl::CudaParallelLaunch(*this, grid, block, shared, Cuda().impl_internal_space_instance() , false ); } inline diff --git a/lib/kokkos/core/src/HPX/Kokkos_HPX.cpp b/lib/kokkos/core/src/HPX/Kokkos_HPX.cpp new file mode 100644 index 0000000000..da9783467c --- /dev/null +++ b/lib/kokkos/core/src/HPX/Kokkos_HPX.cpp @@ -0,0 +1,152 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + + +#include + +#ifdef KOKKOS_ENABLE_HPX +#include + +#include + +namespace Kokkos { +namespace Experimental { + +bool HPX::m_hpx_initialized = false; +Kokkos::Impl::thread_buffer HPX::m_buffer; +#if defined(KOKKOS_ENABLE_HPX_ASYNC_DISPATCH) +hpx::future HPX::m_future = hpx::make_ready_future(); +#endif + +int HPX::concurrency() { + hpx::runtime *rt = hpx::get_runtime_ptr(); + if (rt == nullptr) { + return hpx::threads::hardware_concurrency(); + } else { + if (hpx::threads::get_self_ptr() == nullptr) { + return hpx::resource::get_thread_pool(0).get_os_thread_count(); + } else { + return hpx::this_thread::get_pool()->get_os_thread_count(); + } + } +} + +void HPX::impl_initialize(int thread_count) { + hpx::runtime *rt = hpx::get_runtime_ptr(); + if (rt == nullptr) { + std::vector config = { + "hpx.os_threads=" + std::to_string(thread_count), +#ifdef KOKKOS_DEBUG + "--hpx:attach-debugger=exception", +#endif + }; + int argc_hpx = 1; + char name[] = "kokkos_hpx"; + char *argv_hpx[] = {name, nullptr}; + hpx::start(nullptr, argc_hpx, argv_hpx, config); + + // NOTE: Wait for runtime to start. hpx::start returns as soon as + // possible, meaning some operations are not allowed immediately + // after hpx::start. Notably, hpx::stop needs state_running. This + // needs to be fixed in HPX itself. + + // Get runtime pointer again after it has been started. + rt = hpx::get_runtime_ptr(); + hpx::util::yield_while( + [rt]() { return rt->get_state() < hpx::state_running; }); + + m_hpx_initialized = true; + } +} + +void HPX::impl_initialize() { + hpx::runtime *rt = hpx::get_runtime_ptr(); + if (rt == nullptr) { + std::vector config = { +#ifdef KOKKOS_DEBUG + "--hpx:attach-debugger=exception", +#endif + }; + int argc_hpx = 1; + char name[] = "kokkos_hpx"; + char *argv_hpx[] = {name, nullptr}; + hpx::start(nullptr, argc_hpx, argv_hpx, config); + + // NOTE: Wait for runtime to start. hpx::start returns as soon as + // possible, meaning some operations are not allowed immediately + // after hpx::start. Notably, hpx::stop needs state_running. This + // needs to be fixed in HPX itself. + + // Get runtime pointer again after it has been started. + rt = hpx::get_runtime_ptr(); + hpx::util::yield_while( + [rt]() { return rt->get_state() < hpx::state_running; }); + + m_hpx_initialized = true; + } +} + +bool HPX::impl_is_initialized() noexcept { + hpx::runtime *rt = hpx::get_runtime_ptr(); + return rt != nullptr; +} + +void HPX::impl_finalize() { + if (m_hpx_initialized) { + hpx::runtime *rt = hpx::get_runtime_ptr(); + if (rt != nullptr) { + hpx::apply([]() { hpx::finalize(); }); + hpx::stop(); + } else { + Kokkos::abort("Kokkos::Experimental::HPX::impl_finalize: Kokkos started " + "HPX but something else already stopped HPX\n"); + } + } +} + +} // namespace Experimental +} // namespace Kokkos + +#else +void KOKKOS_CORE_SRC_IMPL_HPX_PREVENT_LINK_ERROR() {} +#endif //#ifdef KOKKOS_ENABLE_HPX diff --git a/lib/kokkos/core/src/impl/Kokkos_StaticAssert.hpp b/lib/kokkos/core/src/HPX/Kokkos_HPX_Task.cpp similarity index 76% rename from lib/kokkos/core/src/impl/Kokkos_StaticAssert.hpp rename to lib/kokkos/core/src/HPX/Kokkos_HPX_Task.cpp index d001e0a88c..df7c403685 100644 --- a/lib/kokkos/core/src/impl/Kokkos_StaticAssert.hpp +++ b/lib/kokkos/core/src/HPX/Kokkos_HPX_Task.cpp @@ -41,38 +41,25 @@ //@HEADER */ -#ifndef KOKKOS_STATICASSERT_HPP -#define KOKKOS_STATICASSERT_HPP +#include +#if defined(KOKKOS_ENABLE_HPX) && defined(KOKKOS_ENABLE_TASKDAG) -namespace Kokkos { -namespace Impl { - -template < bool , class T = void > -struct StaticAssert ; - -template< class T > -struct StaticAssert< true , T > { - typedef T type ; - static const bool value = true ; -}; +#include -template < class A , class B > -struct StaticAssertSame ; +#include -template < class A > -struct StaticAssertSame { typedef A type ; }; +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- -template < class A , class B > -struct StaticAssertAssignable ; - -template < class A > -struct StaticAssertAssignable { typedef A type ; }; +namespace Kokkos { +namespace Impl { -template < class A > -struct StaticAssertAssignable< const A , A > { typedef const A type ; }; +template class TaskQueue; } // namespace Impl } // namespace Kokkos -#endif /* KOKKOS_STATICASSERT_HPP */ - +#else +void KOKKOS_CORE_SRC_IMPL_HPX_TASK_PREVENT_LINK_ERROR() {} +#endif // #if defined( KOKKOS_ENABLE_HPX ) && defined( KOKKOS_ENABLE_TASKDAG ) diff --git a/lib/kokkos/core/src/HPX/Kokkos_HPX_Task.hpp b/lib/kokkos/core/src/HPX/Kokkos_HPX_Task.hpp new file mode 100644 index 0000000000..c3a14efee6 --- /dev/null +++ b/lib/kokkos/core/src/HPX/Kokkos_HPX_Task.hpp @@ -0,0 +1,298 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_HPX_TASK_HPP +#define KOKKOS_HPX_TASK_HPP + +#include +#if defined(KOKKOS_ENABLE_HPX) && defined(KOKKOS_ENABLE_TASKDAG) + +#include + +#include + +#include +#include + +#include + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template +class TaskQueueSpecialization< + SimpleTaskScheduler> { +public: + using execution_space = Kokkos::Experimental::HPX; + using scheduler_type = + SimpleTaskScheduler; + using member_type = + TaskTeamMemberAdapter; + using memory_space = Kokkos::HostSpace; + + static void execute(scheduler_type const &scheduler) { + // NOTE: We create an instance so that we can use dispatch_execute_task. + // This is not necessarily the most efficient, but can be improved later. + TaskQueueSpecialization task_queue; + task_queue.scheduler = &scheduler; + Kokkos::Impl::dispatch_execute_task(&task_queue); + Kokkos::Experimental::HPX().fence(); + } + + // Must provide task queue execution function + void execute_task() const { + using hpx::apply; + using hpx::lcos::local::counting_semaphore; + using task_base_type = typename scheduler_type::task_base_type; + + const int num_worker_threads = Kokkos::Experimental::HPX::concurrency(); + + thread_buffer &buffer = Kokkos::Experimental::HPX::impl_get_buffer(); + buffer.resize(num_worker_threads, 512); + + auto &queue = scheduler->queue(); + + counting_semaphore sem(0); + + for (int thread = 0; thread < num_worker_threads; ++thread) { + apply([this, &sem, &queue, &buffer, num_worker_threads, thread]() { + // NOTE: This implementation has been simplified based on the + // assumption that team_size = 1. The HPX backend currently only + // supports a team size of 1. + std::size_t t = Kokkos::Experimental::HPX::impl_hardware_thread_id(); + + buffer.get(Kokkos::Experimental::HPX::impl_hardware_thread_id()); + HPXTeamMember member(TeamPolicyInternal( + Kokkos::Experimental::HPX(), num_worker_threads, 1), + 0, t, buffer.get(t), 512); + + member_type single_exec(*scheduler, member); + member_type &team_exec = single_exec; + + auto &team_scheduler = team_exec.scheduler(); + auto current_task = OptionalRef(nullptr); + + while (!queue.is_done()) { + current_task = + queue.pop_ready_task(team_scheduler.team_scheduler_info()); + + if (current_task) { + KOKKOS_ASSERT(current_task->is_single_runnable() || + current_task->is_team_runnable()); + current_task->as_runnable_task().run(single_exec); + queue.complete((*std::move(current_task)).as_runnable_task(), + team_scheduler.team_scheduler_info()); + } + } + + sem.signal(1); + }); + } + + sem.wait(num_worker_threads); + } + + static uint32_t get_max_team_count(execution_space const &espace) { + return static_cast(espace.concurrency()); + } + + template + static void get_function_pointer(typename TaskType::function_type &ptr, + typename TaskType::destroy_type &dtor) { + ptr = TaskType::apply; + dtor = TaskType::destroy; + } + +private: + const scheduler_type *scheduler; +}; + +template +class TaskQueueSpecializationConstrained< + Scheduler, typename std::enable_if< + std::is_same::value>::type> { +public: + using execution_space = Kokkos::Experimental::HPX; + using scheduler_type = Scheduler; + using member_type = + TaskTeamMemberAdapter; + using memory_space = Kokkos::HostSpace; + + static void + iff_single_thread_recursive_execute(scheduler_type const &scheduler) { + using task_base_type = typename scheduler_type::task_base; + using queue_type = typename scheduler_type::queue_type; + + if (1 == Kokkos::Experimental::HPX::concurrency()) { + task_base_type *const end = (task_base_type *)task_base_type::EndTag; + task_base_type *task = end; + + HPXTeamMember member(TeamPolicyInternal( + Kokkos::Experimental::HPX(), 1, 1), + 0, 0, nullptr, 0); + member_type single_exec(scheduler, member); + + do { + task = end; + + // Loop by priority and then type + for (int i = 0; i < queue_type::NumQueue && end == task; ++i) { + for (int j = 0; j < 2 && end == task; ++j) { + task = + queue_type::pop_ready_task(&scheduler.m_queue->m_ready[i][j]); + } + } + + if (end == task) + break; + + (*task->m_apply)(task, &single_exec); + + scheduler.m_queue->complete(task); + + } while (true); + } + } + + static void execute(scheduler_type const &scheduler) { + // NOTE: We create an instance so that we can use dispatch_execute_task. + // This is not necessarily the most efficient, but can be improved later. + TaskQueueSpecializationConstrained task_queue; + task_queue.scheduler = &scheduler; + Kokkos::Impl::dispatch_execute_task(&task_queue); + Kokkos::Experimental::HPX().fence(); + } + + // Must provide task queue execution function + void execute_task() const { + using hpx::apply; + using hpx::lcos::local::counting_semaphore; + using task_base_type = typename scheduler_type::task_base; + using queue_type = typename scheduler_type::queue_type; + + const int num_worker_threads = Kokkos::Experimental::HPX::concurrency(); + static task_base_type *const end = (task_base_type *)task_base_type::EndTag; + constexpr task_base_type *no_more_tasks_sentinel = nullptr; + + thread_buffer &buffer = Kokkos::Experimental::HPX::impl_get_buffer(); + buffer.resize(num_worker_threads, 512); + + auto &queue = scheduler->queue(); + queue.initialize_team_queues(num_worker_threads); + + counting_semaphore sem(0); + + for (int thread = 0; thread < num_worker_threads; ++thread) { + apply([this, &sem, &buffer, num_worker_threads, thread]() { + // NOTE: This implementation has been simplified based on the assumption + // that team_size = 1. The HPX backend currently only supports a team + // size of 1. + std::size_t t = Kokkos::Experimental::HPX::impl_hardware_thread_id(); + + buffer.get(Kokkos::Experimental::HPX::impl_hardware_thread_id()); + HPXTeamMember member( + TeamPolicyInternal( + Kokkos::Experimental::HPX(), num_worker_threads, 1), + 0, t, buffer.get(t), 512); + + member_type single_exec(*scheduler, member); + member_type &team_exec = single_exec; + + auto &team_queue = team_exec.scheduler().queue(); + task_base_type *task = no_more_tasks_sentinel; + + do { + if (task != no_more_tasks_sentinel && task != end) { + team_queue.complete(task); + } + + if (*((volatile int *)&team_queue.m_ready_count) > 0) { + task = end; + for (int i = 0; i < queue_type::NumQueue && end == task; ++i) { + for (int j = 0; j < 2 && end == task; ++j) { + task = queue_type::pop_ready_task(&team_queue.m_ready[i][j]); + } + } + } else { + task = team_queue.attempt_to_steal_task(); + } + + if (task != no_more_tasks_sentinel && task != end) { + (*task->m_apply)(task, &single_exec); + } + } while (task != no_more_tasks_sentinel); + + sem.signal(1); + }); + } + + sem.wait(num_worker_threads); + } + + template + static void get_function_pointer(typename TaskType::function_type &ptr, + typename TaskType::destroy_type &dtor) { + ptr = TaskType::apply; + dtor = TaskType::destroy; + } + +private: + const scheduler_type *scheduler; +}; + +extern template class TaskQueue< + Kokkos::Experimental::HPX, + typename Kokkos::Experimental::HPX::memory_space>; + +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ +#endif /* #ifndef KOKKOS_HPX_TASK_HPP */ diff --git a/lib/kokkos/core/src/HPX/Kokkos_HPX_ViewCopyETIAvail.hpp b/lib/kokkos/core/src/HPX/Kokkos_HPX_ViewCopyETIAvail.hpp new file mode 100644 index 0000000000..bbc1b33bf9 --- /dev/null +++ b/lib/kokkos/core/src/HPX/Kokkos_HPX_ViewCopyETIAvail.hpp @@ -0,0 +1,57 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_HPX_VIEWETIAVAIL_HPP +#define KOKKOS_HPX_VIEWETIAVAIL_HPP + +namespace Kokkos { +namespace Impl { +#define KOKKOS_IMPL_VIEWCOPY_ETI_AVAIL_EXECSPACE Kokkos::Experimental::HPX + +#include + +#undef KOKKOS_IMPL_VIEWCOPY_ETI_AVAIL_EXECSPACE +} +} +#endif + diff --git a/lib/kokkos/core/src/HPX/Kokkos_HPX_ViewCopyETIDecl.hpp b/lib/kokkos/core/src/HPX/Kokkos_HPX_ViewCopyETIDecl.hpp new file mode 100644 index 0000000000..aa1c2f1518 --- /dev/null +++ b/lib/kokkos/core/src/HPX/Kokkos_HPX_ViewCopyETIDecl.hpp @@ -0,0 +1,57 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_HPX_VIEWETIDECL_HPP +#define KOKKOS_HPX_VIEWETIDECL_HPP + +namespace Kokkos { +namespace Impl { +#define KOKKOS_IMPL_VIEWCOPY_ETI_AVAIL_EXECSPACE Kokkos::Experimental::HPX + +#include + +#undef KOKKOS_IMPL_VIEWCOPY_ETI_AVAIL_EXECSPACE +} +} +#endif + diff --git a/lib/kokkos/core/src/HPX/Kokkos_HPX_WorkGraphPolicy.hpp b/lib/kokkos/core/src/HPX/Kokkos_HPX_WorkGraphPolicy.hpp new file mode 100644 index 0000000000..4dd28dd994 --- /dev/null +++ b/lib/kokkos/core/src/HPX/Kokkos_HPX_WorkGraphPolicy.hpp @@ -0,0 +1,116 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_HPX_WORKGRAPHPOLICY_HPP +#define KOKKOS_HPX_WORKGRAPHPOLICY_HPP + +#include +#include + +namespace Kokkos { +namespace Impl { + +template +class ParallelFor, + Kokkos::Experimental::HPX> { +private: + using Policy = Kokkos::WorkGraphPolicy; + using WorkTag = typename Policy::work_tag; + + Policy m_policy; + FunctorType m_functor; + + template + typename std::enable_if::value>::type + execute_functor(const std::int32_t w) const noexcept { + m_functor(w); + } + + template + typename std::enable_if::value>::type + execute_functor(const std::int32_t w) const noexcept { + const TagType t{}; + m_functor(t, w); + } + +public: + void execute() const { + dispatch_execute_task(this); + Kokkos::Experimental::HPX().fence(); + } + + void execute_task() const { + const int num_worker_threads = Kokkos::Experimental::HPX::concurrency(); + + using hpx::apply; + using hpx::lcos::local::counting_semaphore; + + counting_semaphore sem(0); + + for (int thread = 0; thread < num_worker_threads; ++thread) { + apply([this, &sem]() { + std::int32_t w = m_policy.pop_work(); + while (w != Policy::COMPLETED_TOKEN) { + if (w != Policy::END_TOKEN) { + execute_functor(w); + m_policy.completed_work(w); + } + + w = m_policy.pop_work(); + } + + sem.signal(1); + }); + } + + sem.wait(num_worker_threads); + } + + inline ParallelFor(const FunctorType &arg_functor, const Policy &arg_policy) + : m_policy(arg_policy), m_functor(arg_functor) {} +}; + +} // namespace Impl +} // namespace Kokkos + +#endif /* #define KOKKOS_HPX_WORKGRAPHPOLICY_HPP */ diff --git a/lib/kokkos/core/src/KokkosExp_MDRangePolicy.hpp b/lib/kokkos/core/src/KokkosExp_MDRangePolicy.hpp index fb0d6cde84..1972aa485b 100644 --- a/lib/kokkos/core/src/KokkosExp_MDRangePolicy.hpp +++ b/lib/kokkos/core/src/KokkosExp_MDRangePolicy.hpp @@ -125,6 +125,8 @@ struct MDRangePolicy using traits = Kokkos::Impl::PolicyTraits; using range_policy = RangePolicy; + typename traits::execution_space m_space; + using impl_range_policy = RangePolicy< typename traits::execution_space , typename traits::schedule_type , typename traits::index_type @@ -132,6 +134,9 @@ struct MDRangePolicy typedef MDRangePolicy execution_policy; // needed for is_execution_space interrogation + template + friend struct MDRangePolicy; + static_assert( !std::is_same::value , "Kokkos Error: MD iteration pattern not defined" ); @@ -192,13 +197,54 @@ struct MDRangePolicy static constexpr int Right = static_cast( Iterate::Right ); static constexpr int Left = static_cast( Iterate::Left ); + KOKKOS_INLINE_FUNCTION const typename traits::execution_space & space() const { return m_space ; } + template < typename LT , typename UT , typename TT = array_index_type > + MDRangePolicy(std::initializer_list const& lower, std::initializer_list const& upper, std::initializer_list const& tile = {} ) + : m_space() { + init(lower, upper, tile); + } + + template < typename LT , typename UT , typename TT = array_index_type > + MDRangePolicy(const typename traits::execution_space & work_space, + std::initializer_list const& lower, std::initializer_list const& upper, std::initializer_list const& tile = {} ) + : m_space( work_space ) { + init(lower, upper, tile); + } + MDRangePolicy( point_type const& lower, point_type const& upper, tile_type const& tile = tile_type{} ) - : m_lower(lower) + : m_space() + , m_lower(lower) , m_upper(upper) , m_tile(tile) , m_num_tiles(1) - , m_prod_tile_dims(1) - { + , m_prod_tile_dims(1) { + init(); + } + + MDRangePolicy( const typename traits::execution_space & work_space, + point_type const& lower, point_type const& upper, tile_type const& tile = tile_type{} ) + : m_space( work_space ) + , m_lower(lower) + , m_upper(upper) + , m_tile(tile) + , m_num_tiles(1) + , m_prod_tile_dims(1) { + init(); + } + + template + MDRangePolicy( const MDRangePolicy p ): + m_space(p.m_space), + m_lower(p.m_lower), + m_upper(p.m_upper), + m_tile(p.m_tile), + m_tile_end(p.m_tile_end), + m_num_tiles(p.m_num_tiles), + m_prod_tile_dims(p.m_prod_tile_dims) {} + +private: + + void init() { // Host if ( true #if defined(KOKKOS_ENABLE_CUDA) @@ -211,7 +257,7 @@ struct MDRangePolicy { index_type span; for (int i=0; i 0)) ) @@ -311,11 +357,9 @@ struct MDRangePolicy #endif } - template < typename LT , typename UT , typename TT = array_index_type > - MDRangePolicy( std::initializer_list const& lower, std::initializer_list const& upper, std::initializer_list const& tile = {} ) + void init( std::initializer_list const& lower, std::initializer_list const& upper, std::initializer_list const& tile = {} ) { - if(static_cast(m_lower.size()) != rank || static_cast(m_upper.size()) != rank) Kokkos::abort("MDRangePolicy: Constructor initializer lists have wrong size"); @@ -589,5 +633,26 @@ void md_parallel_reduce( const std::string& str } } // namespace Kokkos::Experimental #endif +namespace Kokkos { +namespace Experimental { +namespace Impl { + +template +struct PolicyPropertyAdaptor,MDRangePolicy> { + typedef MDRangePolicy policy_in_t; + typedef MDRangePolicy> policy_out_t; +}; + +} +} +} + + #endif //KOKKOS_CORE_EXP_MD_RANGE_POLICY_HPP diff --git a/lib/kokkos/core/src/Kokkos_Atomic.hpp b/lib/kokkos/core/src/Kokkos_Atomic.hpp index cf0f25969d..c2268bd35f 100644 --- a/lib/kokkos/core/src/Kokkos_Atomic.hpp +++ b/lib/kokkos/core/src/Kokkos_Atomic.hpp @@ -90,6 +90,7 @@ #if ! defined( KOKKOS_ENABLE_GNU_ATOMICS ) && \ ! defined( KOKKOS_ENABLE_INTEL_ATOMICS ) && \ ! defined( KOKKOS_ENABLE_OPENMP_ATOMICS ) && \ + ! defined( KOKKOS_ENABLE_STD_ATOMICS ) && \ ! defined( KOKKOS_ENABLE_SERIAL_ATOMICS ) // Compiling for non-Cuda atomic implementation has not been pre-selected. @@ -168,6 +169,12 @@ const char * atomic_query_version() } // namespace Kokkos +//---------------------------------------------------------------------------- +// Atomic Memory Orders +// +// Implements Strongly-typed analogs of C++ standard memory orders +#include "impl/Kokkos_Atomic_Memory_Order.hpp" + #if defined( KOKKOS_ENABLE_ROCM ) namespace Kokkos { namespace Impl { @@ -287,6 +294,14 @@ void unlock_address_rocm_space(void* ptr); #ifndef _WIN32 #include "impl/Kokkos_Atomic_Generic.hpp" #endif + +//---------------------------------------------------------------------------- +// Provide atomic loads and stores with memory order semantics + +#include "impl/Kokkos_Atomic_Load.hpp" +#include "impl/Kokkos_Atomic_Store.hpp" + + //---------------------------------------------------------------------------- // This atomic-style macro should be an inlined function, not a macro diff --git a/lib/kokkos/core/src/Kokkos_Complex.hpp b/lib/kokkos/core/src/Kokkos_Complex.hpp index 08cbba3b31..a3ada5d55e 100644 --- a/lib/kokkos/core/src/Kokkos_Complex.hpp +++ b/lib/kokkos/core/src/Kokkos_Complex.hpp @@ -631,8 +631,10 @@ RealType real (const complex& x) { template KOKKOS_INLINE_FUNCTION RealType abs (const complex& x) { - // FIXME (mfh 31 Oct 2014) Scale to avoid unwarranted overflow. - return std::sqrt (real (x) * real (x) + imag (x) * imag (x)); +#ifndef __CUDA_ARCH__ + using std::hypot; +#endif + return hypot(x.real(),x.imag()); } //! Power of a complex number diff --git a/lib/kokkos/core/src/Kokkos_Concepts.hpp b/lib/kokkos/core/src/Kokkos_Concepts.hpp index 117469b0a2..98ae141de4 100644 --- a/lib/kokkos/core/src/Kokkos_Concepts.hpp +++ b/lib/kokkos/core/src/Kokkos_Concepts.hpp @@ -79,6 +79,45 @@ struct IndexType using type = T; }; +namespace Experimental { + struct WorkItemProperty { + template + struct ImplWorkItemProperty { + static const unsigned value = Property; + using work_item_property = ImplWorkItemProperty; + }; + + constexpr static const ImplWorkItemProperty<0> None = ImplWorkItemProperty<0>(); + constexpr static const ImplWorkItemProperty<1> HintLightWeight = ImplWorkItemProperty<1>(); + constexpr static const ImplWorkItemProperty<2> HintHeavyWeight = ImplWorkItemProperty<2>(); + constexpr static const ImplWorkItemProperty<4> HintRegular = ImplWorkItemProperty<4>(); + constexpr static const ImplWorkItemProperty<8> HintIrregular = ImplWorkItemProperty<8>(); + typedef ImplWorkItemProperty<0> None_t; + typedef ImplWorkItemProperty<1> HintLightWeight_t; + typedef ImplWorkItemProperty<2> HintHeavyWeight_t; + typedef ImplWorkItemProperty<4> HintRegular_t; + typedef ImplWorkItemProperty<8> HintIrregular_t; + }; + +template +inline constexpr WorkItemProperty::ImplWorkItemProperty operator | + (WorkItemProperty::ImplWorkItemProperty, WorkItemProperty::ImplWorkItemProperty) { + return WorkItemProperty::ImplWorkItemProperty(); +} + +template +inline constexpr WorkItemProperty::ImplWorkItemProperty operator & + (WorkItemProperty::ImplWorkItemProperty, WorkItemProperty::ImplWorkItemProperty) { + return WorkItemProperty::ImplWorkItemProperty(); +} + +template +inline constexpr bool operator == (WorkItemProperty::ImplWorkItemProperty, WorkItemProperty::ImplWorkItemProperty) { + return pv1 == pv2; +} + +} + /**\brief Specify Launch Bounds for CUDA execution. * * If no launch bounds specified then do not set launch bounds. @@ -105,9 +144,13 @@ namespace Kokkos { template< typename T > struct is_ ## CONCEPT { \ private: \ template< typename , typename = std::true_type > struct have : std::false_type {}; \ - template< typename U > struct have::type, \ - typename std::remove_cv::type \ + template< typename U > struct have::type, \ + typename std::remove_cv::type \ + >::type> : std::true_type {}; \ + template< typename U > struct have::type, \ + typename std::remove_cv::type \ >::type> : std::true_type {}; \ public: \ enum { value = is_ ## CONCEPT::template have::value }; \ @@ -121,6 +164,9 @@ KOKKOS_IMPL_IS_CONCEPT( execution_space ) KOKKOS_IMPL_IS_CONCEPT( execution_policy ) KOKKOS_IMPL_IS_CONCEPT( array_layout ) KOKKOS_IMPL_IS_CONCEPT( reducer ) +namespace Experimental { +KOKKOS_IMPL_IS_CONCEPT( work_item_property ) +} namespace Impl { @@ -138,6 +184,8 @@ KOKKOS_IMPL_IS_CONCEPT( iteration_pattern ) KOKKOS_IMPL_IS_CONCEPT( schedule_type ) KOKKOS_IMPL_IS_CONCEPT( index_type ) KOKKOS_IMPL_IS_CONCEPT( launch_bounds ) +KOKKOS_IMPL_IS_CONCEPT( thread_team_member ) +KOKKOS_IMPL_IS_CONCEPT( host_thread_team_member ) } diff --git a/lib/kokkos/core/src/Kokkos_CopyViews.hpp b/lib/kokkos/core/src/Kokkos_CopyViews.hpp index 31605c9d39..f919fdb755 100644 --- a/lib/kokkos/core/src/Kokkos_CopyViews.hpp +++ b/lib/kokkos/core/src/Kokkos_CopyViews.hpp @@ -186,9 +186,9 @@ struct ViewFill typedef Kokkos::RangePolicy> policy_type; ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_):a(a_),val(val_) { - ExecSpace::fence(); + ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewFill-1D",policy_type(0,a.extent(0)),*this); - ExecSpace::fence(); + ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -206,10 +206,10 @@ struct ViewFill typedef Kokkos::MDRangePolicy> policy_type; ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_):a(a_),val(val_) { - ExecSpace::fence(); + ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewFill-2D", policy_type({0,0},{a.extent(0),a.extent(1)}),*this); - ExecSpace::fence(); + ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -227,10 +227,10 @@ struct ViewFill typedef Kokkos::MDRangePolicy> policy_type; ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_):a(a_),val(val_) { - ExecSpace::fence(); + ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewFill-3D", policy_type({0,0,0},{a.extent(0),a.extent(1),a.extent(2)}),*this); - ExecSpace::fence(); + ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -248,10 +248,10 @@ struct ViewFill typedef Kokkos::MDRangePolicy> policy_type; ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_):a(a_),val(val_) { - ExecSpace::fence(); + ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewFill-4D", policy_type({0,0,0,0},{a.extent(0),a.extent(1),a.extent(2),a.extent(3)}),*this); - ExecSpace::fence(); + ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -269,10 +269,10 @@ struct ViewFill typedef Kokkos::MDRangePolicy> policy_type; ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_):a(a_),val(val_) { - ExecSpace::fence(); + ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewFill-5D", policy_type({0,0,0,0,0},{a.extent(0),a.extent(1),a.extent(2),a.extent(3),a.extent(4)}),*this); - ExecSpace::fence(); + ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -290,10 +290,10 @@ struct ViewFill typedef Kokkos::MDRangePolicy> policy_type; ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_):a(a_),val(val_) { - ExecSpace::fence(); + ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewFill-6D", policy_type({0,0,0,0,0,0},{a.extent(0),a.extent(1),a.extent(2),a.extent(3),a.extent(4),a.extent(5)}),*this); - ExecSpace::fence(); + ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -311,11 +311,11 @@ struct ViewFill typedef Kokkos::MDRangePolicy> policy_type; ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_):a(a_),val(val_) { - ExecSpace::fence(); + ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewFill-7D", policy_type({0,0,0,0,0,0},{a.extent(0),a.extent(1),a.extent(2),a.extent(3), a.extent(5),a.extent(6)}),*this); - ExecSpace::fence(); + ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -335,11 +335,11 @@ struct ViewFill typedef Kokkos::MDRangePolicy> policy_type; ViewFill(const ViewType& a_, typename ViewType::const_value_type& val_):a(a_),val(val_) { - ExecSpace::fence(); + ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewFill-8D", policy_type({0,0,0,0,0,0},{a.extent(0),a.extent(1),a.extent(3), a.extent(5),a.extent(6),a.extent(7)}),*this); - ExecSpace::fence(); + ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -437,10 +437,10 @@ struct ViewCopy> policy_type; ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_):a(a_),b(b_) { - ExecSpace::fence(); + ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewCopy-1D", policy_type(0,a.extent(0)),*this); - ExecSpace::fence(); + ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -459,10 +459,10 @@ struct ViewCopy> policy_type; ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_):a(a_),b(b_) { - ExecSpace::fence(); + ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewCopy-2D", policy_type({0,0},{a.extent(0),a.extent(1)}),*this); - ExecSpace::fence(); + ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -482,10 +482,10 @@ struct ViewCopy> policy_type; ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_):a(a_),b(b_) { - ExecSpace::fence(); + ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewCopy-3D", policy_type({0,0,0},{a.extent(0),a.extent(1),a.extent(2)}),*this); - ExecSpace::fence(); + ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -505,11 +505,11 @@ struct ViewCopy> policy_type; ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_):a(a_),b(b_) { - ExecSpace::fence(); + ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewCopy-4D", policy_type({0,0,0,0},{a.extent(0),a.extent(1),a.extent(2), a.extent(3)}),*this); - ExecSpace::fence(); + ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -530,11 +530,11 @@ struct ViewCopy> policy_type; ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_):a(a_),b(b_) { - ExecSpace::fence(); + ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewCopy-5D", policy_type({0,0,0,0,0},{a.extent(0),a.extent(1),a.extent(2), a.extent(3),a.extent(4)}),*this); - ExecSpace::fence(); + ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -555,11 +555,11 @@ struct ViewCopy> policy_type; ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_):a(a_),b(b_) { - ExecSpace::fence(); + ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewCopy-6D", policy_type({0,0,0,0,0,0},{a.extent(0),a.extent(1),a.extent(2), a.extent(3),a.extent(4),a.extent(5)}),*this); - ExecSpace::fence(); + ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -581,11 +581,11 @@ struct ViewCopy> policy_type; ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_):a(a_),b(b_) { - ExecSpace::fence(); + ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewCopy-7D", policy_type({0,0,0,0,0,0},{a.extent(0),a.extent(1),a.extent(3), a.extent(4),a.extent(5),a.extent(6)}),*this); - ExecSpace::fence(); + ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -607,11 +607,11 @@ struct ViewCopy> policy_type; ViewCopy(const ViewTypeA& a_, const ViewTypeB& b_):a(a_),b(b_) { - ExecSpace::fence(); + ExecSpace().fence(); Kokkos::parallel_for("Kokkos::ViewCopy-8D", policy_type({0,0,0,0,0,0},{a.extent(0),a.extent(1),a.extent(3), a.extent(5),a.extent(6),a.extent(7)}),*this); - ExecSpace::fence(); + ExecSpace().fence(); } KOKKOS_INLINE_FUNCTION @@ -1538,6 +1538,779 @@ void deep_copy } } +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +namespace Experimental { +/** \brief A local deep copy between views of the default specialization, compatible type, + * same non-zero rank. + */ +template< class TeamType, class DT , class ... DP , class ST , class ... SP > +void KOKKOS_INLINE_FUNCTION local_deep_copy_contiguous(const TeamType& team, const View & dst, const View & src) { + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, src.span()), [&] (const int& i) { + dst.data()[i] = src.data()[i]; + }); +} +//---------------------------------------------------------------------------- +template< class DT , class ... DP , class ST , class ... SP > +void KOKKOS_INLINE_FUNCTION local_deep_copy_contiguous(const View & dst, const View & src) { + + for(size_t i=0;i +void KOKKOS_INLINE_FUNCTION local_deep_copy (const TeamType& team, const View & dst, + const View & src, + typename std::enable_if<( unsigned(ViewTraits::rank) == 1 && + unsigned(ViewTraits::rank) == 1 + )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + const size_t N = dst.extent(0); + + team.team_barrier(); + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, N), [&] (const int& i) { + dst(i) = src(i); + }); + team.team_barrier(); +} +//---------------------------------------------------------------------------- +template< class TeamType, class DT , class ... DP , class ST , class ... SP > +void KOKKOS_INLINE_FUNCTION local_deep_copy (const TeamType& team, const View & dst, + const View & src, + typename std::enable_if<( unsigned(ViewTraits::rank) == 2 && + unsigned(ViewTraits::rank) == 2 + )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + const size_t N = dst.extent(0)*dst.extent(1); + + if ( dst.span_is_contiguous() && src.span_is_contiguous() ) { + team.team_barrier(); + local_deep_copy_contiguous(team,dst,src); + team.team_barrier(); + } else { + team.team_barrier(); + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, N), [&] (const int& i) { + int i0 = i%dst.extent(0); + int i1 = i/dst.extent(0); + dst(i0,i1) = src(i0,i1); + }); + team.team_barrier(); + } +} +//---------------------------------------------------------------------------- +template< class TeamType, class DT , class ... DP , class ST , class ... SP > +void KOKKOS_INLINE_FUNCTION local_deep_copy (const TeamType& team, const View & dst, + const View & src, + typename std::enable_if<( unsigned(ViewTraits::rank) == 3 && + unsigned(ViewTraits::rank) == 3 + )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + const size_t N = dst.extent(0)*dst.extent(1)*dst.extent(2); + + if ( dst.span_is_contiguous() && src.span_is_contiguous() ) { + team.team_barrier(); + local_deep_copy_contiguous(team,dst,src); + team.team_barrier(); + } else { + team.team_barrier(); + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, N), [&] (const int& i) { + int i0 = i%dst.extent(0); + int itmp = i/dst.extent(0); + int i1 = itmp%dst.extent(1); + int i2 = itmp/dst.extent(1); + dst(i0,i1,i2) = src(i0,i1,i2); + }); + team.team_barrier(); + } +} +//---------------------------------------------------------------------------- +template< class TeamType, class DT , class ... DP , class ST , class ... SP > +void KOKKOS_INLINE_FUNCTION local_deep_copy (const TeamType& team, const View & dst, + const View & src, + typename std::enable_if<( unsigned(ViewTraits::rank) == 4 && + unsigned(ViewTraits::rank) == 4 + )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + const size_t N = dst.extent(0)*dst.extent(1)*dst.extent(2)*dst.extent(3); + + if ( dst.span_is_contiguous() && src.span_is_contiguous() ) { + team.team_barrier(); + local_deep_copy_contiguous(team,dst,src); + team.team_barrier(); + } else { + team.team_barrier(); + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, N), [&] (const int& i) { + int i0 = i%dst.extent(0); + int itmp = i/dst.extent(0); + int i1 = itmp%dst.extent(1); + itmp = itmp/dst.extent(1); + int i2 = itmp%dst.extent(2); + int i3 = itmp/dst.extent(2); + dst(i0,i1,i2,i3) = src(i0,i1,i2,i3); + }); + team.team_barrier(); + } +} +//---------------------------------------------------------------------------- +template< class TeamType, class DT , class ... DP , class ST , class ... SP > +void KOKKOS_INLINE_FUNCTION local_deep_copy (const TeamType& team, const View & dst, + const View & src, + typename std::enable_if<( unsigned(ViewTraits::rank) == 5 && + unsigned(ViewTraits::rank) == 5 + )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + const size_t N = dst.extent(0)*dst.extent(1)*dst.extent(2)*dst.extent(3)*dst.extent(4); + + if ( dst.span_is_contiguous() && src.span_is_contiguous() ) { + team.team_barrier(); + local_deep_copy_contiguous(team,dst,src); + team.team_barrier(); + } else { + team.team_barrier(); + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, N), [&] (const int& i) { + int i0 = i%dst.extent(0); + int itmp = i/dst.extent(0); + int i1 = itmp%dst.extent(1); + itmp = itmp/dst.extent(1); + int i2 = itmp%dst.extent(2); + itmp = itmp/dst.extent(2); + int i3 = itmp%dst.extent(3); + int i4 = itmp/dst.extent(3); + dst(i0,i1,i2,i3,i4) = src(i0,i1,i2,i3,i4); + }); + team.team_barrier(); + } +} +//---------------------------------------------------------------------------- +template< class TeamType, class DT , class ... DP , class ST , class ... SP > +void KOKKOS_INLINE_FUNCTION local_deep_copy (const TeamType& team, const View & dst, + const View & src, + typename std::enable_if<( unsigned(ViewTraits::rank) == 6 && + unsigned(ViewTraits::rank) == 6 + )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + const size_t N = dst.extent(0)*dst.extent(1)*dst.extent(2)*dst.extent(3)*dst.extent(4)*dst.extent(5); + + if ( dst.span_is_contiguous() && src.span_is_contiguous() ) { + team.team_barrier(); + local_deep_copy_contiguous(team,dst,src); + team.team_barrier(); + } else { + team.team_barrier(); + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, N), [&] (const int& i) { + int i0 = i%dst.extent(0); + int itmp = i/dst.extent(0); + int i1 = itmp%dst.extent(1); + itmp = itmp/dst.extent(1); + int i2 = itmp%dst.extent(2); + itmp = itmp/dst.extent(2); + int i3 = itmp%dst.extent(3); + itmp = itmp/dst.extent(3); + int i4 = itmp%dst.extent(4); + int i5 = itmp/dst.extent(4); + dst(i0,i1,i2,i3,i4,i5) = src(i0,i1,i2,i3,i4,i5); + }); + team.team_barrier(); + } +} +//---------------------------------------------------------------------------- +template< class TeamType, class DT , class ... DP , class ST , class ... SP > +void KOKKOS_INLINE_FUNCTION local_deep_copy (const TeamType& team, const View & dst, + const View & src, + typename std::enable_if<( unsigned(ViewTraits::rank) == 7 && + unsigned(ViewTraits::rank) == 7 + )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + const size_t N = dst.extent(0)*dst.extent(1)*dst.extent(2)*dst.extent(3)*dst.extent(4)*dst.extent(5)*dst.extent(6); + + if ( dst.span_is_contiguous() && src.span_is_contiguous() ) { + team.team_barrier(); + local_deep_copy_contiguous(team,dst,src); + team.team_barrier(); + } else { + team.team_barrier(); + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, N), [&] (const int& i) { + int i0 = i%dst.extent(0); + int itmp = i/dst.extent(0); + int i1 = itmp%dst.extent(1); + itmp = itmp/dst.extent(1); + int i2 = itmp%dst.extent(2); + itmp = itmp/dst.extent(2); + int i3 = itmp%dst.extent(3); + itmp = itmp/dst.extent(3); + int i4 = itmp%dst.extent(4); + itmp = itmp/dst.extent(4); + int i5 = itmp%dst.extent(5); + int i6 = itmp/dst.extent(5); + dst(i0,i1,i2,i3,i4,i5,i6) = src(i0,i1,i2,i3,i4,i5,i6); + }); + team.team_barrier(); + } +} +//---------------------------------------------------------------------------- +template< class DT , class ... DP , class ST , class ... SP > +void KOKKOS_INLINE_FUNCTION local_deep_copy (const View & dst, + const View & src, + typename std::enable_if<( unsigned(ViewTraits::rank) == 1 && + unsigned(ViewTraits::rank) == 1 + )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + const size_t N = dst.extent(0); + + + for(size_t i=0;i +void KOKKOS_INLINE_FUNCTION local_deep_copy (const View & dst, + const View & src, + typename std::enable_if<( unsigned(ViewTraits::rank) == 2 && + unsigned(ViewTraits::rank) == 2 + )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + if ( dst.span_is_contiguous() && src.span_is_contiguous() ) { + local_deep_copy_contiguous(dst,src); + } else { + + for(size_t i0=0;i0 +void KOKKOS_INLINE_FUNCTION local_deep_copy (const View & dst, + const View & src, + typename std::enable_if<( unsigned(ViewTraits::rank) == 3 && + unsigned(ViewTraits::rank) == 3 + )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + if ( dst.span_is_contiguous() && src.span_is_contiguous() ) { + local_deep_copy_contiguous(dst,src); + } else { + + for(size_t i0=0;i0 +void KOKKOS_INLINE_FUNCTION local_deep_copy (const View & dst, + const View & src, + typename std::enable_if<( unsigned(ViewTraits::rank) == 4 && + unsigned(ViewTraits::rank) == 4 + )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + if ( dst.span_is_contiguous() && src.span_is_contiguous() ) { + local_deep_copy_contiguous(dst,src); + } else { + + for(size_t i0=0;i0 +void KOKKOS_INLINE_FUNCTION local_deep_copy (const View & dst, + const View & src, + typename std::enable_if<( unsigned(ViewTraits::rank) == 5 && + unsigned(ViewTraits::rank) == 5 + )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + if ( dst.span_is_contiguous() && src.span_is_contiguous() ) { + local_deep_copy_contiguous(dst,src); + } else { + + for(size_t i0=0;i0 +void KOKKOS_INLINE_FUNCTION local_deep_copy (const View & dst, + const View & src, + typename std::enable_if<( unsigned(ViewTraits::rank) == 6 && + unsigned(ViewTraits::rank) == 6 + )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + if ( dst.span_is_contiguous() && src.span_is_contiguous() ) { + local_deep_copy_contiguous(dst,src); + } else { + + for(size_t i0=0;i0 +void KOKKOS_INLINE_FUNCTION local_deep_copy (const View & dst, + const View & src, + typename std::enable_if<( unsigned(ViewTraits::rank) == 7 && + unsigned(ViewTraits::rank) == 7 + )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + if ( dst.span_is_contiguous() && src.span_is_contiguous() ) { + local_deep_copy_contiguous(dst,src); + } else { + + for(size_t i0=0;i0 +void KOKKOS_INLINE_FUNCTION local_deep_copy_contiguous(const TeamType& team, const View & dst, typename ViewTraits::const_value_type & value) { + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, dst.span()), [&] (const int& i) { + dst.data()[i] = value; + }); +} +//---------------------------------------------------------------------------- +template< class DT , class ... DP > +void KOKKOS_INLINE_FUNCTION local_deep_copy_contiguous(const View & dst, typename ViewTraits::const_value_type & value) { + + for(size_t i=0;i +void KOKKOS_INLINE_FUNCTION local_deep_copy (const TeamType& team, const View & dst, + typename ViewTraits::const_value_type & value, + typename std::enable_if<( unsigned(ViewTraits::rank) == 1 )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + const size_t N = dst.extent(0); + + team.team_barrier(); + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, N), [&] (const int& i) { + dst(i) = value; + }); + team.team_barrier(); +} +//---------------------------------------------------------------------------- +template< class TeamType, class DT , class ... DP > +void KOKKOS_INLINE_FUNCTION local_deep_copy (const TeamType& team, const View & dst, + typename ViewTraits::const_value_type & value, + typename std::enable_if<( unsigned(ViewTraits::rank) == 2 )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + const size_t N = dst.extent(0)*dst.extent(1); + + if ( dst.span_is_contiguous() ) { + team.team_barrier(); + local_deep_copy_contiguous(team,dst,value); + team.team_barrier(); + } else { + team.team_barrier(); + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, N), [&] (const int& i) { + int i0 = i%dst.extent(0); + int i1 = i/dst.extent(0); + dst(i0,i1) = value; + }); + team.team_barrier(); + } +} +//---------------------------------------------------------------------------- +template< class TeamType, class DT , class ... DP > +void KOKKOS_INLINE_FUNCTION local_deep_copy (const TeamType& team, const View & dst, + typename ViewTraits::const_value_type & value, + typename std::enable_if<( unsigned(ViewTraits::rank) == 3 )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + const size_t N = dst.extent(0)*dst.extent(1)*dst.extent(2); + + if ( dst.span_is_contiguous() ) { + team.team_barrier(); + local_deep_copy_contiguous(team,dst,value); + team.team_barrier(); + } else { + team.team_barrier(); + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, N), [&] (const int& i) { + int i0 = i%dst.extent(0); + int itmp = i/dst.extent(0); + int i1 = itmp%dst.extent(1); + int i2 = itmp/dst.extent(1); + dst(i0,i1,i2) = value; + }); + team.team_barrier(); + } +} +//---------------------------------------------------------------------------- +template< class TeamType, class DT , class ... DP > +void KOKKOS_INLINE_FUNCTION local_deep_copy (const TeamType& team, const View & dst, + typename ViewTraits::const_value_type & value, + typename std::enable_if<( unsigned(ViewTraits::rank) == 4 )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + const size_t N = dst.extent(0)*dst.extent(1)*dst.extent(2)*dst.extent(3); + + if ( dst.span_is_contiguous() ) { + team.team_barrier(); + local_deep_copy_contiguous(team,dst,value); + team.team_barrier(); + } else { + team.team_barrier(); + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, N), [&] (const int& i) { + int i0 = i%dst.extent(0); + int itmp = i/dst.extent(0); + int i1 = itmp%dst.extent(1); + itmp = itmp/dst.extent(1); + int i2 = itmp%dst.extent(2); + int i3 = itmp/dst.extent(2); + dst(i0,i1,i2,i3) = value; + }); + team.team_barrier(); + } +} +//---------------------------------------------------------------------------- +template< class TeamType, class DT , class ... DP > +void KOKKOS_INLINE_FUNCTION local_deep_copy (const TeamType& team, const View & dst, + typename ViewTraits::const_value_type & value, + typename std::enable_if<( unsigned(ViewTraits::rank) == 5 )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + const size_t N = dst.extent(0)*dst.extent(1)*dst.extent(2)*dst.extent(3)*dst.extent(4); + + if ( dst.span_is_contiguous() ) { + team.team_barrier(); + local_deep_copy_contiguous(team,dst,value); + team.team_barrier(); + } else { + team.team_barrier(); + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, N), [&] (const int& i) { + int i0 = i%dst.extent(0); + int itmp = i/dst.extent(0); + int i1 = itmp%dst.extent(1); + itmp = itmp/dst.extent(1); + int i2 = itmp%dst.extent(2); + itmp = itmp/dst.extent(2); + int i3 = itmp%dst.extent(3); + int i4 = itmp/dst.extent(3); + dst(i0,i1,i2,i3,i4) = value; + }); + team.team_barrier(); + } +} +//---------------------------------------------------------------------------- +template< class TeamType, class DT , class ... DP > +void KOKKOS_INLINE_FUNCTION local_deep_copy (const TeamType& team, const View & dst, + typename ViewTraits::const_value_type & value, + typename std::enable_if<( unsigned(ViewTraits::rank) == 6 )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + const size_t N = dst.extent(0)*dst.extent(1)*dst.extent(2)*dst.extent(3)*dst.extent(4)*dst.extent(5); + + if ( dst.span_is_contiguous() ) { + team.team_barrier(); + local_deep_copy_contiguous(team,dst,value); + team.team_barrier(); + } else { + team.team_barrier(); + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, N), [&] (const int& i) { + int i0 = i%dst.extent(0); + int itmp = i/dst.extent(0); + int i1 = itmp%dst.extent(1); + itmp = itmp/dst.extent(1); + int i2 = itmp%dst.extent(2); + itmp = itmp/dst.extent(2); + int i3 = itmp%dst.extent(3); + itmp = itmp/dst.extent(3); + int i4 = itmp%dst.extent(4); + int i5 = itmp/dst.extent(4); + dst(i0,i1,i2,i3,i4,i5) = value; + }); + team.team_barrier(); + } +} +//---------------------------------------------------------------------------- +template< class TeamType, class DT , class ... DP > +void KOKKOS_INLINE_FUNCTION local_deep_copy (const TeamType& team, const View & dst, + typename ViewTraits::const_value_type & value, + typename std::enable_if<( unsigned(ViewTraits::rank) == 7 )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + const size_t N = dst.extent(0)*dst.extent(1)*dst.extent(2)*dst.extent(3)*dst.extent(4)*dst.extent(5)*dst.extent(6); + + if ( dst.span_is_contiguous() ) { + team.team_barrier(); + local_deep_copy_contiguous(team,dst,value); + team.team_barrier(); + } else { + team.team_barrier(); + Kokkos::parallel_for(Kokkos::TeamThreadRange(team, N), [&] (const int& i) { + int i0 = i%dst.extent(0); + int itmp = i/dst.extent(0); + int i1 = itmp%dst.extent(1); + itmp = itmp/dst.extent(1); + int i2 = itmp%dst.extent(2); + itmp = itmp/dst.extent(2); + int i3 = itmp%dst.extent(3); + itmp = itmp/dst.extent(3); + int i4 = itmp%dst.extent(4); + itmp = itmp/dst.extent(4); + int i5 = itmp%dst.extent(5); + int i6 = itmp/dst.extent(5); + dst(i0,i1,i2,i3,i4,i5,i6) = value; + }); + team.team_barrier(); + } +} +//---------------------------------------------------------------------------- +template< class DT , class ... DP > +void KOKKOS_INLINE_FUNCTION local_deep_copy (const View & dst, + typename ViewTraits::const_value_type & value, + typename std::enable_if<( unsigned(ViewTraits::rank) == 1 + )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + const size_t N = dst.extent(0); + + + for(size_t i=0;i +void KOKKOS_INLINE_FUNCTION local_deep_copy (const View & dst, + typename ViewTraits::const_value_type & value, + typename std::enable_if<( unsigned(ViewTraits::rank) == 2 + )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + if ( dst.span_is_contiguous() ) { + local_deep_copy_contiguous(dst,value); + } else { + + for(size_t i0=0;i0 +void KOKKOS_INLINE_FUNCTION local_deep_copy (const View & dst, + typename ViewTraits::const_value_type & value, + typename std::enable_if<( unsigned(ViewTraits::rank) == 3 + )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + if ( dst.span_is_contiguous() ) { + local_deep_copy_contiguous(dst,value); + } else { + + for(size_t i0=0;i0 +void KOKKOS_INLINE_FUNCTION local_deep_copy (const View & dst, + typename ViewTraits::const_value_type & value, + typename std::enable_if<( unsigned(ViewTraits::rank) == 4 + )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + if ( dst.span_is_contiguous() ) { + local_deep_copy_contiguous(dst,value); + } else { + + for(size_t i0=0;i0 +void KOKKOS_INLINE_FUNCTION local_deep_copy (const View & dst, + typename ViewTraits::const_value_type & value, + typename std::enable_if<( unsigned(ViewTraits::rank) == 5 + )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + if ( dst.span_is_contiguous() ) { + local_deep_copy_contiguous(dst,value); + } else { + + for(size_t i0=0;i0 +void KOKKOS_INLINE_FUNCTION local_deep_copy (const View & dst, + typename ViewTraits::const_value_type & value, + typename std::enable_if<( unsigned(ViewTraits::rank) == 6 + )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + if ( dst.span_is_contiguous() ) { + local_deep_copy_contiguous(dst,value); + } else { + + for(size_t i0=0;i0 +void KOKKOS_INLINE_FUNCTION local_deep_copy (const View & dst, + typename ViewTraits::const_value_type & value, + typename std::enable_if<( unsigned(ViewTraits::rank) == 7 + )>::type * = 0 ) +{ + if( dst.data() == nullptr ) { + return; + } + + if ( dst.span_is_contiguous() ) { + local_deep_copy_contiguous(dst,value); + } else { + + for(size_t i0=0;i0::value_type >::value , "deep_copy requires non-const type" ); - ExecSpace::fence(); + ExecSpace().fence(); typedef typename View::uniform_runtime_nomemspace_type ViewTypeUniform; Kokkos::Impl::ViewFill< ViewTypeUniform >( dst , value ); - ExecSpace::fence(); + ExecSpace().fence(); } /** \brief Deep copy into a value in Host memory from a view. */ @@ -2184,6 +2957,25 @@ create_mirror_view_and_copy(const Space& , const Kokkos::View & src deep_copy(mirror, src); return mirror; } + +// Create a mirror view in a new space without initializing (specialization for same space) +template +typename Impl::MirrorViewType::view_type +create_mirror_view(const Space& , const Kokkos::View & src + , Kokkos::Impl::WithoutInitializing_t + , typename std::enable_if::is_same_memspace>::type* = 0 ) { + return src; +} + +// Create a mirror view in a new space without initializing (specialization for different space) +template +typename Impl::MirrorViewType::view_type +create_mirror_view(const Space& , const Kokkos::View & src + , Kokkos::Impl::WithoutInitializing_t + , typename std::enable_if::is_same_memspace>::type* = 0 ) { + using Mirror = typename Impl::MirrorViewType::view_type; + return Mirror(Kokkos::ViewAllocateWithoutInitializing(src.label()), src.layout()); +} } /* namespace Kokkos */ diff --git a/lib/kokkos/core/src/Kokkos_Core.hpp b/lib/kokkos/core/src/Kokkos_Core.hpp index 4d0625ee1b..9fbba0abfa 100644 --- a/lib/kokkos/core/src/Kokkos_Core.hpp +++ b/lib/kokkos/core/src/Kokkos_Core.hpp @@ -66,6 +66,10 @@ #include #endif +#if defined( KOKKOS_ENABLE_HPX ) +#include +#endif + #if defined( KOKKOS_ENABLE_THREADS ) #include #endif @@ -87,6 +91,7 @@ #include #include #include +#include #include diff --git a/lib/kokkos/core/src/Kokkos_Core_fwd.hpp b/lib/kokkos/core/src/Kokkos_Core_fwd.hpp index 150865d0f5..55c6a5494a 100644 --- a/lib/kokkos/core/src/Kokkos_Core_fwd.hpp +++ b/lib/kokkos/core/src/Kokkos_Core_fwd.hpp @@ -100,6 +100,12 @@ class Serial; ///< Execution space main process on CPU. class Qthreads; ///< Execution space with Qthreads back-end. #endif +#if defined( KOKKOS_ENABLE_HPX ) +namespace Experimental { +class HPX; ///< Execution space with HPX back-end. +} +#endif + #if defined( KOKKOS_ENABLE_THREADS ) class Threads; ///< Execution space with pthreads back-end. #endif @@ -156,6 +162,8 @@ namespace Kokkos { typedef Threads DefaultExecutionSpace; //#elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_QTHREADS ) // typedef Qthreads DefaultExecutionSpace; +#elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HPX ) + typedef Kokkos::Experimental::HPX DefaultExecutionSpace; #elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_SERIAL ) typedef Serial DefaultExecutionSpace; #else @@ -176,6 +184,8 @@ namespace Kokkos { typedef Threads DefaultHostExecutionSpace; //#elif defined( KOKKOS_ENABLE_QTHREADS ) // typedef Qthreads DefaultHostExecutionSpace; +#elif defined( KOKKOS_ENABLE_HPX ) + typedef Kokkos::Experimental::HPX DefaultHostExecutionSpace; #elif defined( KOKKOS_ENABLE_SERIAL ) typedef Serial DefaultHostExecutionSpace; #else diff --git a/lib/kokkos/core/src/Kokkos_Crs.hpp b/lib/kokkos/core/src/Kokkos_Crs.hpp index ccc3944d86..8412ced921 100644 --- a/lib/kokkos/core/src/Kokkos_Crs.hpp +++ b/lib/kokkos/core/src/Kokkos_Crs.hpp @@ -187,7 +187,7 @@ class GetCrsTransposeCounts { using closure_type = Kokkos::Impl::ParallelFor; const closure_type closure(*this, policy_type(0, index_type(in.entries.size()))); closure.execute(); - execution_space::fence(); + execution_space().fence(); } }; @@ -266,7 +266,7 @@ class FillCrsTransposeEntries { using closure_type = Kokkos::Impl::ParallelFor; const closure_type closure(*this, policy_type(0, index_type(in.numRows()))); closure.execute(); - execution_space::fence(); + execution_space().fence(); } }; diff --git a/lib/kokkos/core/src/Kokkos_Cuda.hpp b/lib/kokkos/core/src/Kokkos_Cuda.hpp index 726a574961..4eb8ab4d4b 100644 --- a/lib/kokkos/core/src/Kokkos_Cuda.hpp +++ b/lib/kokkos/core/src/Kokkos_Cuda.hpp @@ -52,6 +52,7 @@ #include #include +#include #include #include @@ -67,6 +68,7 @@ namespace Kokkos { namespace Impl { class CudaExec ; +class CudaInternal ; } // namespace Impl } // namespace Kokkos @@ -74,6 +76,23 @@ class CudaExec ; namespace Kokkos { +namespace Impl { + namespace Experimental { + enum class CudaLaunchMechanism:unsigned{Default=0,ConstantMemory=1,GlobalMemory=2,LocalMemory=4}; + + constexpr inline CudaLaunchMechanism operator | (CudaLaunchMechanism p1, CudaLaunchMechanism p2) { + return static_cast(static_cast(p1) | static_cast(p2)); + } + constexpr inline CudaLaunchMechanism operator & (CudaLaunchMechanism p1, CudaLaunchMechanism p2) { + return static_cast(static_cast(p1) & static_cast(p2)); + } + + template + struct CudaDispatchProperties { + CudaLaunchMechanism launch_mechanism = l; + }; + } +} /// \class Cuda /// \brief Kokkos Execution Space that uses CUDA to run on GPUs. /// @@ -153,7 +172,13 @@ public: /// return asynchronously, before the functor completes. This /// method does not return until all dispatched functors on this /// device have completed. + static void impl_static_fence(); + + #ifdef KOKKOS_ENABLE_DEPRECATED_CODE static void fence(); + #else + void fence() const; + #endif /** \brief Return the maximum amount of concurrency. */ static int concurrency(); @@ -165,15 +190,18 @@ public: //-------------------------------------------------- //! \name Cuda space instances + KOKKOS_INLINE_FUNCTION ~Cuda() {} + Cuda(); - explicit Cuda( const int instance_id ); Cuda( Cuda && ) = default ; Cuda( const Cuda & ) = default ; Cuda & operator = ( Cuda && ) = default ; Cuda & operator = ( const Cuda & ) = default ; + Cuda(cudaStream_t stream); + //-------------------------------------------------------------------------- //! \name Device-specific functions //@{ @@ -219,18 +247,18 @@ public: */ static std::vector detect_device_arch(); - cudaStream_t cuda_stream() const { return m_stream ; } - int cuda_device() const { return m_device ; } + cudaStream_t cuda_stream() const; + int cuda_device() const; //@} //-------------------------------------------------------------------------- static const char* name(); + inline Impl::CudaInternal* impl_internal_space_instance() const { return m_space_instance; } private: - int m_device ; - cudaStream_t m_stream ; + Impl::CudaInternal* m_space_instance; }; } // namespace Kokkos @@ -302,7 +330,8 @@ struct VerifyExecutionCanAccessMemorySpace /*--------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ -#include +#include +#include #include #include #include diff --git a/lib/kokkos/core/src/Kokkos_ExecPolicy.hpp b/lib/kokkos/core/src/Kokkos_ExecPolicy.hpp index d4693b43c1..5c85850fda 100644 --- a/lib/kokkos/core/src/Kokkos_ExecPolicy.hpp +++ b/lib/kokkos/core/src/Kokkos_ExecPolicy.hpp @@ -46,12 +46,14 @@ #include #include -#include #include #include #include #include #include +#if defined(KOKKOS_ENABLE_PROFILING) +#include +#endif // KOKKOS_ENABLE_PROFILING //---------------------------------------------------------------------------- @@ -91,8 +93,9 @@ template class RangePolicy : public Impl::PolicyTraits { -private: +public: typedef Impl::PolicyTraits traits; +private: typename traits::execution_space m_space ; typename traits::index_type m_begin ; @@ -100,6 +103,9 @@ private: typename traits::index_type m_granularity ; typename traits::index_type m_granularity_mask ; + template + friend class RangePolicy; + public: //! Tag this class as an execution policy typedef RangePolicy execution_policy; @@ -118,6 +124,15 @@ public: RangePolicy(const RangePolicy&) = default; RangePolicy(RangePolicy&&) = default; + template + RangePolicy(const RangePolicy p) { + m_space = p.m_space; + m_begin = p.m_begin; + m_end = p.m_end; + m_granularity = p.m_granularity; + m_granularity_mask = p.m_granularity_mask; + } + inline RangePolicy() : m_space(), m_begin(0), m_end(0) {} /** \brief Total range */ @@ -523,19 +538,22 @@ class TeamPolicy: public typename Impl::PolicyTraits::execution_space, Properties ...> internal_policy; - typedef Impl::PolicyTraits traits; + template + friend class TeamPolicy; public: + typedef Impl::PolicyTraits traits; + typedef TeamPolicy execution_policy; TeamPolicy& operator = (const TeamPolicy&) = default; /** \brief Construct policy with the given instance of the execution space */ - TeamPolicy( const typename traits::execution_space & , int league_size_request , int team_size_request , int vector_length_request = 1 ) - : internal_policy(typename traits::execution_space(),league_size_request,team_size_request, vector_length_request) {first_arg = false;} + TeamPolicy( const typename traits::execution_space & space_ , int league_size_request , int team_size_request , int vector_length_request = 1 ) + : internal_policy(space_,league_size_request,team_size_request, vector_length_request) {first_arg = false;} - TeamPolicy( const typename traits::execution_space & , int league_size_request , const Kokkos::AUTO_t & , int vector_length_request = 1 ) - : internal_policy(typename traits::execution_space(),league_size_request,Kokkos::AUTO(), vector_length_request) {first_arg = false;} + TeamPolicy( const typename traits::execution_space & space_, int league_size_request , const Kokkos::AUTO_t & , int vector_length_request = 1 ) + : internal_policy(space_,league_size_request,Kokkos::AUTO(), vector_length_request) {first_arg = false;} /** \brief Construct policy with the default instance of the execution space */ TeamPolicy( int league_size_request , int team_size_request , int vector_length_request = 1 ) @@ -618,6 +636,11 @@ public: } #endif + template + TeamPolicy(const TeamPolicy p):internal_policy(p) { + first_arg = p.first_arg; + } + private: bool first_arg; TeamPolicy(const internal_policy& p):internal_policy(p) {first_arg = false;} @@ -754,6 +777,59 @@ public: {} }; +template +struct TeamVectorRangeBoundariesStruct { +private: + + KOKKOS_INLINE_FUNCTION static + iType ibegin( const iType & arg_begin + , const iType & arg_end + , const iType & arg_rank + , const iType & arg_size + ) + { + return arg_begin + ( ( arg_end - arg_begin + arg_size - 1 ) / arg_size ) * arg_rank ; + } + + KOKKOS_INLINE_FUNCTION static + iType iend( const iType & arg_begin + , const iType & arg_end + , const iType & arg_rank + , const iType & arg_size + ) + { + const iType end_ = arg_begin + ( ( arg_end - arg_begin + arg_size - 1 ) / arg_size ) * ( arg_rank + 1 ); + return end_ < arg_end ? end_ : arg_end ; + } + +public: + + typedef iType index_type; + const iType start; + const iType end; + enum {increment = 1}; + const TeamMemberType& thread; + + KOKKOS_INLINE_FUNCTION + TeamVectorRangeBoundariesStruct( const TeamMemberType& arg_thread + , const iType& arg_end + ) + : start( ibegin( 0 , arg_end , arg_thread.team_rank() , arg_thread.team_size() ) ) + , end( iend( 0 , arg_end , arg_thread.team_rank() , arg_thread.team_size() ) ) + , thread( arg_thread ) + {} + + KOKKOS_INLINE_FUNCTION + TeamVectorRangeBoundariesStruct( const TeamMemberType& arg_thread + , const iType& arg_begin + , const iType& arg_end + ) + : start( ibegin( arg_begin , arg_end , arg_thread.team_rank() , arg_thread.team_size() ) ) + , end( iend( arg_begin , arg_end , arg_thread.team_rank() , arg_thread.team_size() ) ) + , thread( arg_thread ) + {} +}; + template struct ThreadVectorRangeBoundariesStruct { typedef iType index_type; @@ -804,10 +880,10 @@ struct VectorSingleStruct { * This policy is used together with a parallel pattern as a nested layer within a kernel launched * with the TeamPolicy. This variant expects a single count. So the range is (0,count]. */ -template -KOKKOS_INLINE_FUNCTION +template +KOKKOS_INLINE_FUNCTION_DELETED Impl::TeamThreadRangeBoundariesStruct -TeamThreadRange( const TeamMemberType&, const iType& count ); +TeamThreadRange( const TeamMemberType&, const iType& count ) = delete; /** \brief Execution policy for parallel work over a threads within a team. * @@ -815,10 +891,32 @@ TeamThreadRange( const TeamMemberType&, const iType& count ); * This policy is used together with a parallel pattern as a nested layer within a kernel launched * with the TeamPolicy. This variant expects a begin and end. So the range is (begin,end]. */ -template -KOKKOS_INLINE_FUNCTION +template +KOKKOS_INLINE_FUNCTION_DELETED Impl::TeamThreadRangeBoundariesStruct::type, TeamMemberType> -TeamThreadRange( const TeamMemberType&, const iType1& begin, const iType2& end ); +TeamThreadRange( const TeamMemberType&, const iType1& begin, const iType2& end ) = delete; + +/** \brief Execution policy for parallel work over a threads within a team. + * + * The range is split over all threads in a team. The Mapping scheme depends on the architecture. + * This policy is used together with a parallel pattern as a nested layer within a kernel launched + * with the TeamPolicy. This variant expects a single count. So the range is (0,count]. + */ +template +KOKKOS_INLINE_FUNCTION_DELETED +Impl::TeamThreadRangeBoundariesStruct +TeamVectorRange( const TeamMemberType&, const iType& count ) = delete; + +/** \brief Execution policy for parallel work over a threads within a team. + * + * The range is split over all threads in a team. The Mapping scheme depends on the architecture. + * This policy is used together with a parallel pattern as a nested layer within a kernel launched + * with the TeamPolicy. This variant expects a begin and end. So the range is (begin,end]. + */ +template +KOKKOS_INLINE_FUNCTION_DELETED +Impl::TeamThreadRangeBoundariesStruct::type, TeamMemberType> +TeamVectorRange( const TeamMemberType&, const iType1& begin, const iType2& end ) = delete; /** \brief Execution policy for a vector parallel loop. * @@ -826,15 +924,15 @@ TeamThreadRange( const TeamMemberType&, const iType1& begin, const iType2& end ) * This policy is used together with a parallel pattern as a nested layer within a kernel launched * with the TeamPolicy. This variant expects a single count. So the range is (0,count]. */ -template -KOKKOS_INLINE_FUNCTION +template +KOKKOS_INLINE_FUNCTION_DELETED Impl::ThreadVectorRangeBoundariesStruct -ThreadVectorRange( const TeamMemberType&, const iType& count ); +ThreadVectorRange( const TeamMemberType&, const iType& count ) = delete; -template -KOKKOS_INLINE_FUNCTION +template +KOKKOS_INLINE_FUNCTION_DELETED Impl::ThreadVectorRangeBoundariesStruct -ThreadVectorRange( const TeamMemberType&, const iType& arg_begin, const iType& arg_end ); +ThreadVectorRange( const TeamMemberType&, const iType& arg_begin, const iType& arg_end ) = delete; #if defined(KOKKOS_ENABLE_PROFILING) namespace Impl { @@ -877,5 +975,44 @@ struct ParallelConstructName { } // namespace Kokkos +namespace Kokkos { +namespace Experimental { + +namespace Impl { + template + struct PolicyPropertyAdaptor; + + template + struct PolicyPropertyAdaptor,RangePolicy> { + typedef RangePolicy policy_in_t; + typedef RangePolicy> policy_out_t; + }; + + template + struct PolicyPropertyAdaptor,TeamPolicy> { + typedef TeamPolicy policy_in_t; + typedef TeamPolicy> policy_out_t; + }; +} + +template +constexpr typename Impl::PolicyPropertyAdaptor,PolicyType>::policy_out_t + require(const PolicyType p, WorkItemProperty::ImplWorkItemProperty

){ + return typename Impl::PolicyPropertyAdaptor,PolicyType>::policy_out_t(p); +} +} //Experimental +} //Kokkos #endif /* #define KOKKOS_EXECPOLICY_HPP */ diff --git a/lib/kokkos/core/src/Kokkos_Extents.hpp b/lib/kokkos/core/src/Kokkos_Extents.hpp new file mode 100644 index 0000000000..c8b9110485 --- /dev/null +++ b/lib/kokkos/core/src/Kokkos_Extents.hpp @@ -0,0 +1,186 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2019) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_KOKKOS_EXTENTS_HPP +#define KOKKOS_KOKKOS_EXTENTS_HPP + +#include + +namespace Kokkos { +namespace Experimental { + +constexpr ptrdiff_t dynamic_extent = -1; + +template +struct Extents { + /* TODO @enhancement flesh this out more */ +}; + +template +struct PrependExtent; + +template +struct PrependExtent< + Extents, NewExtent +> { + using type = Extents; +}; + +template +struct AppendExtent; + +template +struct AppendExtent< + Extents, NewExtent +> { + using type = Extents; +}; + +} // end namespace Experimental + +namespace Impl { + +namespace _parse_view_extents_impl { + +template +struct _all_remaining_extents_dynamic : std::true_type { }; + +template +struct _all_remaining_extents_dynamic + : _all_remaining_extents_dynamic +{ }; + +template +struct _all_remaining_extents_dynamic + : std::false_type +{ }; + +template +struct _parse_impl { + using type = Result; +}; + +// We have to treat the case of int**[x] specially, since it *doesn't* go backwards +template +struct _parse_impl< + T*, Experimental::Extents, + typename std::enable_if<_all_remaining_extents_dynamic::value>::type +> + : _parse_impl< + T, Experimental::Extents + > +{ }; + +// int*(*[x])[y] should still work also (meaning int[][x][][y]) +template +struct _parse_impl< + T*, Experimental::Extents, + typename std::enable_if::value>::type +> +{ + using _next = Kokkos::Experimental::AppendExtent< + typename _parse_impl, void>::type, + Experimental::dynamic_extent + >; + using type = typename _next::type; +}; + +template +struct _parse_impl< + T[N], Experimental::Extents, void +> + : _parse_impl< + T, Experimental::Extents // TODO @pedantic this could be a narrowing cast + > +{ }; + +} // end namespace _parse_view_extents_impl + +template +struct ParseViewExtents { + using type = + typename _parse_view_extents_impl + ::_parse_impl>::type; +}; + +template +struct ApplyExtent +{ + using type = ValueType[Ext]; +}; + +template +struct ApplyExtent +{ + using type = ValueType*; +}; + +template +struct ApplyExtent +{ + using type = typename ApplyExtent::type[N]; +}; + +template +struct ApplyExtent +{ + using type = ValueType*[Ext]; +}; + +template +struct ApplyExtent +{ + using type = typename ApplyExtent::type*; +}; + +template +struct ApplyExtent +{ + using type = typename ApplyExtent::type[N]; +}; + +} // end namespace Impl + +} // end namespace Kokkos + +#endif //KOKKOS_KOKKOS_EXTENTS_HPP diff --git a/lib/kokkos/core/src/Kokkos_Future.hpp b/lib/kokkos/core/src/Kokkos_Future.hpp new file mode 100644 index 0000000000..665ce71cf5 --- /dev/null +++ b/lib/kokkos/core/src/Kokkos_Future.hpp @@ -0,0 +1,567 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_FUTURE_HPP +#define KOKKOS_FUTURE_HPP + +//---------------------------------------------------------------------------- + +#include +#if defined( KOKKOS_ENABLE_TASKDAG ) + +#include +#include +//---------------------------------------------------------------------------- + +#include +#include +#include +#include + +#include // is_space + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { + +// For now, hack this in as a partial specialization +// TODO @tasking @cleanup Make this the "normal" class template and make the old code the specialization +template +class BasicFuture> +{ +public: + + using value_type = ValueType; + using execution_space = ExecutionSpace; + using scheduler_type = SimpleTaskScheduler; + using queue_type = typename scheduler_type::task_queue_type; + + +private: + + template + friend class SimpleTaskScheduler; + template + friend class BasicFuture; + + using task_base_type = typename scheduler_type::task_base_type; + using task_queue_type = typename scheduler_type::task_queue_type; + + using task_queue_traits = typename scheduler_type::task_queue_traits; + using task_scheduling_info_type = typename scheduler_type::task_scheduling_info_type; + + using result_storage_type = + Impl::TaskResultStorage< + ValueType, + Impl::SchedulingInfoStorage< + Impl::RunnableTaskBase, + task_scheduling_info_type + > + >; + + + + OwningRawPtr m_task = nullptr; + + KOKKOS_INLINE_FUNCTION + explicit + BasicFuture(task_base_type* task) + : m_task(task) + { + // Note: reference count starts at 2 to account for initial increment + // TODO @tasking @minor DSH verify reference count here and/or encapsulate starting reference count closer to here + } + +public: + + KOKKOS_INLINE_FUNCTION + BasicFuture() noexcept : m_task(nullptr) { } + + KOKKOS_INLINE_FUNCTION + BasicFuture(BasicFuture&& rhs) noexcept + : m_task(std::move(rhs.m_task)) + { + rhs.m_task = nullptr; + } + + KOKKOS_INLINE_FUNCTION + BasicFuture(BasicFuture const& rhs) + // : m_task(rhs.m_task) + : m_task(nullptr) + { + *static_cast(&m_task) = rhs.m_task; + if(m_task) m_task->increment_reference_count(); + } + + KOKKOS_INLINE_FUNCTION + BasicFuture& operator=(BasicFuture&& rhs) noexcept + { + if(m_task != rhs.m_task) { + clear(); + //m_task = std::move(rhs.m_task); + *static_cast(&m_task) = rhs.m_task; + // rhs.m_task reference count is unchanged, since this is a move + } + else { + // They're the same, but this is a move, so 1 fewer references now + rhs.clear(); + } + rhs.m_task = nullptr; + return *this ; + } + + KOKKOS_INLINE_FUNCTION + BasicFuture& operator=(BasicFuture const& rhs) + { + if(m_task != rhs.m_task) { + clear(); + //m_task = rhs.m_task; + *static_cast(&m_task) = rhs.m_task; + } + if(m_task != nullptr) { m_task->increment_reference_count(); } + return *this; + } + + //---------------------------------------- + + template + KOKKOS_INLINE_FUNCTION + BasicFuture(BasicFuture&& rhs) noexcept // NOLINT(google-explicit-constructor) + : m_task(std::move(rhs.m_task)) + { + static_assert( + std::is_same::value || + std::is_same::value, + "Moved Futures must have the same scheduler" + ); + + static_assert( + std::is_same::value || + std::is_same::value, + "Moved Futures must have the same value_type" + ); + + // reference counts are unchanged, since this is a move + rhs.m_task = nullptr; + } + + template + KOKKOS_INLINE_FUNCTION + BasicFuture(BasicFuture const& rhs) // NOLINT(google-explicit-constructor) + //: m_task(rhs.m_task) + : m_task(nullptr) + { + static_assert( + std::is_same::value || + std::is_same::value, + "Copied Futures must have the same scheduler" + ); + + static_assert( + std::is_same::value || + std::is_same::value, + "Copied Futures must have the same value_type" + ); + + *static_cast(&m_task) = rhs.m_task; + if(m_task) m_task->increment_reference_count(); + } + + template + KOKKOS_INLINE_FUNCTION + BasicFuture& + operator=(BasicFuture const& rhs) + { + static_assert( + std::is_same::value || + std::is_same::value, + "Assigned Futures must have the same scheduler" + ); + + static_assert( + std::is_same::value || + std::is_same::value, + "Assigned Futures must have the same value_type" + ); + + if(m_task != rhs.m_task) { + clear(); + //m_task = rhs.m_task; + *static_cast(&m_task) = rhs.m_task; + if(m_task != nullptr) { m_task->increment_reference_count(); } + } + return *this; + } + + template + KOKKOS_INLINE_FUNCTION + BasicFuture& operator=(BasicFuture&& rhs) + { + static_assert( + std::is_same::value || + std::is_same::value, + "Assigned Futures must have the same scheduler" + ); + + static_assert( + std::is_same::value || + std::is_same::value, + "Assigned Futures must have the same value_type" + ); + + if(m_task != rhs.m_task) { + clear(); + //m_task = std::move(rhs.m_task); + *static_cast(&m_task) = rhs.m_task; + // rhs.m_task reference count is unchanged, since this is a move + } + else { + // They're the same, but this is a move, so 1 fewer references now + rhs.clear(); + } + rhs.m_task = nullptr; + return *this ; + } + + KOKKOS_INLINE_FUNCTION + ~BasicFuture() noexcept { clear(); } + + //---------------------------------------- + + KOKKOS_INLINE_FUNCTION + void clear() noexcept { + if(m_task) { + bool should_delete = m_task->decrement_and_check_reference_count(); + if(should_delete) { + static_cast(m_task->ready_queue_base_ptr()) + ->deallocate(std::move(*m_task)); + } + } + //m_task = nullptr; + *static_cast(&m_task) = nullptr; + } + + KOKKOS_INLINE_FUNCTION + bool is_null() const noexcept { + return m_task == nullptr; + } + + + KOKKOS_INLINE_FUNCTION + bool is_ready() const noexcept { + return (m_task == nullptr) || m_task->wait_queue_is_consumed(); + } + + KOKKOS_INLINE_FUNCTION + const typename Impl::TaskResult< ValueType >::reference_type + get() const + { + KOKKOS_EXPECTS(is_ready()); + return static_cast(m_task)->value_reference(); + //return Impl::TaskResult::get(m_task); + } + +}; + +//////////////////////////////////////////////////////////////////////////////// +// OLD CODE +//////////////////////////////////////////////////////////////////////////////// + +template +class BasicFuture { +private: + + template< typename , typename > friend class BasicTaskScheduler ; + template< typename , typename > friend class BasicFuture ; + friend class Impl::TaskBase ; + template< typename , typename , typename > friend class Impl::Task ; + + + //---------------------------------------- + +public: + + //---------------------------------------- + + using scheduler_type = Scheduler; + using queue_type = typename scheduler_type::queue_type; + using execution_space = typename scheduler_type::execution_space; + using value_type = ValueType; + + //---------------------------------------- + +private: + + //---------------------------------------- + + using task_base = Impl::TaskBase; + + task_base * m_task ; + + KOKKOS_INLINE_FUNCTION explicit + BasicFuture( task_base * task ) : m_task(0) + { if ( task ) queue_type::assign( & m_task , task ); } + + //---------------------------------------- + +public: + + //---------------------------------------- + + KOKKOS_INLINE_FUNCTION + bool is_null() const { return 0 == m_task ; } + + KOKKOS_INLINE_FUNCTION + int reference_count() const + { return 0 != m_task ? m_task->reference_count() : 0 ; } + + //---------------------------------------- + + KOKKOS_INLINE_FUNCTION + void clear() + { if ( m_task ) queue_type::assign( & m_task , (task_base*)0 ); } + + //---------------------------------------- + + KOKKOS_INLINE_FUNCTION + ~BasicFuture() { clear(); } + + //---------------------------------------- + + KOKKOS_INLINE_FUNCTION + BasicFuture() noexcept : m_task(nullptr) { } + + KOKKOS_INLINE_FUNCTION + BasicFuture( BasicFuture && rhs ) noexcept + : m_task( rhs.m_task ) + { + rhs.m_task = 0; + } + + KOKKOS_INLINE_FUNCTION + BasicFuture( const BasicFuture & rhs ) + : m_task(0) + { if ( rhs.m_task ) queue_type::assign( & m_task , rhs.m_task ); } + + KOKKOS_INLINE_FUNCTION + BasicFuture& operator=(BasicFuture&& rhs) noexcept + { + clear(); + m_task = rhs.m_task ; + rhs.m_task = 0 ; + return *this ; + } + + KOKKOS_INLINE_FUNCTION + BasicFuture& operator=(BasicFuture const& rhs) + { + if ( m_task || rhs.m_task ) queue_type::assign( & m_task , rhs.m_task ); + return *this ; + } + + //---------------------------------------- + + template + KOKKOS_INLINE_FUNCTION + BasicFuture(BasicFuture&& rhs) noexcept // NOLINT(google-explicit-constructor) + : m_task( rhs.m_task ) + { + static_assert + ( std::is_same::value || + std::is_same::value + , "Assigned Futures must have the same scheduler" ); + + static_assert + ( std::is_same< value_type , void >::value || + std::is_same::value + , "Assigned Futures must have the same value_type" ); + + rhs.m_task = 0 ; + } + + template + KOKKOS_INLINE_FUNCTION + BasicFuture(BasicFuture const& rhs) // NOLINT(google-explicit-constructor) + : m_task(nullptr) + { + static_assert + ( std::is_same::value || + std::is_same::value + , "Assigned Futures must have the same scheduler" ); + + static_assert + ( std::is_same< value_type , void >::value || + std::is_same::value + , "Assigned Futures must have the same value_type" ); + + if ( rhs.m_task ) queue_type::assign( & m_task , rhs.m_task ); + } + + template + KOKKOS_INLINE_FUNCTION + BasicFuture& + operator=(BasicFuture const& rhs) + { + static_assert + ( std::is_same::value || + std::is_same::value + , "Assigned Futures must have the same scheduler" ); + + static_assert + ( std::is_same< value_type , void >::value || + std::is_same::value + , "Assigned Futures must have the same value_type" ); + + if ( m_task || rhs.m_task ) queue_type::assign( & m_task , rhs.m_task ); + return *this ; + } + + template + KOKKOS_INLINE_FUNCTION + BasicFuture& operator=(BasicFuture&& rhs) + { + static_assert + ( std::is_same::value || + std::is_same::value + , "Assigned Futures must have the same scheduler" ); + + static_assert + ( std::is_same< value_type , void >::value || + std::is_same::value + , "Assigned Futures must have the same value_type" ); + + clear(); + m_task = rhs.m_task ; + rhs.m_task = 0 ; + return *this ; + } + + //---------------------------------------- + + KOKKOS_INLINE_FUNCTION + int is_ready() const noexcept + { return ( 0 == m_task ) || ( ((task_base*) task_base::LockTag) == m_task->m_wait ); } + + KOKKOS_INLINE_FUNCTION + const typename Impl::TaskResult< ValueType >::reference_type + get() const + { + if ( 0 == m_task ) { + Kokkos::abort( "Kokkos:::Future::get ERROR: is_null()"); + } + return Impl::TaskResult< ValueType >::get( m_task ); + } +}; + +// Is a Future with the given execution space +template< typename , typename ExecSpace = void > +struct is_future : public std::false_type {}; + +template +struct is_future, ExecSpace> + : std::integral_constant::value + || std::is_void::value + > +{}; + +//////////////////////////////////////////////////////////////////////////////// +// END OLD CODE +//////////////////////////////////////////////////////////////////////////////// + +namespace Impl { + +template +class ResolveFutureArgOrder { +private: + enum { Arg1_is_space = Kokkos::is_space::value }; + enum { Arg2_is_space = Kokkos::is_space::value }; + enum { Arg1_is_value = !Arg1_is_space && !std::is_same::value }; + enum { Arg2_is_value = !Arg2_is_space && !std::is_same::value }; + + static_assert( + ! ( Arg1_is_space && Arg2_is_space ), + "Future cannot be given two spaces" + ); + + static_assert( + ! ( Arg1_is_value && Arg2_is_value ), + "Future cannot be given two value types" + ); + + using value_type = + typename std::conditional::type + >::type; + + using execution_space = + typename std::conditional::type + >::type::execution_space; + +public: + + using type = BasicFuture>; + +}; + +} // end namespace Impl + +/** + * + * Future< space > // value_type == void + * Future< value > // space == Default + * Future< value , space > + * + */ +template +using Future = typename Impl::ResolveFutureArgOrder::type; + +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ +#endif /* #ifndef KOKKOS_FUTURE */ diff --git a/lib/kokkos/core/src/Kokkos_HPX.hpp b/lib/kokkos/core/src/Kokkos_HPX.hpp new file mode 100644 index 0000000000..79a2b74da4 --- /dev/null +++ b/lib/kokkos/core/src/Kokkos_HPX.hpp @@ -0,0 +1,1999 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_HPX_HPP +#define KOKKOS_HPX_HPP + +#include +#if defined(KOKKOS_ENABLE_HPX) + +#include + +#include +#include +#include + +#ifdef KOKKOS_ENABLE_HBWSPACE +#include +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +// There are currently two different implementations for the parallel dispatch +// functions: +// +// - 0: The HPX way. Unfortunately, this comes with unnecessary +// overheads at the moment, so there is +// - 1: The manual way. This way is more verbose and does not take advantage of +// e.g. parallel::for_loop in HPX but it is significantly faster in many +// benchmarks. +// +// In the long run 0 should be the preferred implementation, but until HPX is +// improved 1 will be the default. +#ifndef KOKKOS_HPX_IMPLEMENTATION +#define KOKKOS_HPX_IMPLEMENTATION 1 +#endif + +#if (KOKKOS_HPX_IMPLEMENTATION < 0) || (KOKKOS_HPX_IMPLEMENTATION > 1) +#error "You have chosen an invalid value for KOKKOS_HPX_IMPLEMENTATION" +#endif + +namespace Kokkos { +namespace Impl { +class thread_buffer { + static constexpr std::size_t m_cache_line_size = 64; + + std::size_t m_num_threads; + std::size_t m_size_per_thread; + std::size_t m_size_total; + char *m_data; + + void pad_to_cache_line(std::size_t &size) { + size = ((size + m_cache_line_size - 1) / m_cache_line_size) * + m_cache_line_size; + } + +public: + thread_buffer() + : m_num_threads(0), m_size_per_thread(0), m_size_total(0), + m_data(nullptr) {} + thread_buffer(const std::size_t num_threads, + const std::size_t size_per_thread) { + resize(num_threads, size_per_thread); + } + ~thread_buffer() { delete[] m_data; } + + thread_buffer(const thread_buffer &) = delete; + thread_buffer(thread_buffer &&) = delete; + thread_buffer &operator=(const thread_buffer &) = delete; + thread_buffer &operator=(thread_buffer) = delete; + + void resize(const std::size_t num_threads, + const std::size_t size_per_thread) { + m_num_threads = num_threads; + m_size_per_thread = size_per_thread; + + pad_to_cache_line(m_size_per_thread); + + std::size_t size_total_new = m_num_threads * m_size_per_thread; + + if (m_size_total < size_total_new) { + delete[] m_data; + m_data = new char[size_total_new]; + m_size_total = size_total_new; + } + } + + char *get(std::size_t thread_num) { + assert(thread_num < m_num_threads); + if (m_data == nullptr) { + return nullptr; + } + return &m_data[thread_num * m_size_per_thread]; + } + + std::size_t size_per_thread() const noexcept { return m_size_per_thread; } + std::size_t size_total() const noexcept { return m_size_total; } +}; +} // namespace Impl + +namespace Experimental { +class HPX { +private: + static bool m_hpx_initialized; + static Kokkos::Impl::thread_buffer m_buffer; +#if defined(KOKKOS_ENABLE_HPX_ASYNC_DISPATCH) + static hpx::future m_future; +#endif + +public: + using execution_space = HPX; + using memory_space = HostSpace; + using device_type = Kokkos::Device; + using array_layout = LayoutRight; + using size_type = memory_space::size_type; + using scratch_memory_space = ScratchMemorySpace; + + HPX() noexcept {} + static void print_configuration(std::ostream &, + const bool /* verbose */ = false) { + std::cout << "HPX backend" << std::endl; + } + + static bool in_parallel(HPX const & = HPX()) noexcept { return false; } + static void impl_static_fence(HPX const & = HPX()) + #if defined(KOKKOS_ENABLE_HPX_ASYNC_DISPATCH) + { + if (hpx::threads::get_self_ptr() == nullptr) { + hpx::threads::run_as_hpx_thread([]() { impl_get_future().wait(); }); + } else { + impl_get_future().wait(); + } + } + #else + noexcept { + } + #endif + + #ifdef KOKKOS_ENABLE_DEPRECATED_CODE + static void fence(HPX const & = HPX()) { + #else + void fence() const { + #endif + impl_static_fence(); + } + + static bool is_asynchronous(HPX const & = HPX()) noexcept { +#if defined(KOKKOS_ENABLE_HPX_ASYNC_DISPATCH) + return true; +#else + return false; +#endif + } + + static std::vector partition(...) { + Kokkos::abort("Kokkos::Experimental::HPX::partition_master: can't partition an HPX " + "instance\n"); + return std::vector(); + } + + template + static void partition_master(F const &f, int requested_num_partitions = 0, + int requested_partition_size = 0) { + if (requested_num_partitions > 1) { + Kokkos::abort("Kokkos::Experimental::HPX::partition_master: can't partition an " + "HPX instance\n"); + } + } + + static int concurrency(); + static void impl_initialize(int thread_count); + static void impl_initialize(); + static bool impl_is_initialized() noexcept; + static void impl_finalize(); + + static int impl_thread_pool_size() noexcept { + hpx::runtime *rt = hpx::get_runtime_ptr(); + if (rt == nullptr) { + return 0; + } else { + if (hpx::threads::get_self_ptr() == nullptr) { + return hpx::resource::get_thread_pool(0).get_os_thread_count(); + } else { + return hpx::this_thread::get_pool()->get_os_thread_count(); + } + } + } + + static int impl_thread_pool_rank() noexcept { + hpx::runtime *rt = hpx::get_runtime_ptr(); + if (rt == nullptr) { + return 0; + } else { + if (hpx::threads::get_self_ptr() == nullptr) { + return 0; + } else { + return hpx::this_thread::get_pool()->get_pool_index(); + } + } + } + + static int impl_thread_pool_size(int depth) { + if (depth == 0) { + return impl_thread_pool_size(); + } else { + return 1; + } + } + + static int impl_max_hardware_threads() noexcept { + return hpx::threads::hardware_concurrency(); + } + + static int impl_hardware_thread_id() noexcept { + return hpx::get_worker_thread_num(); + } + + static Kokkos::Impl::thread_buffer &impl_get_buffer() noexcept { + return m_buffer; + } +#if defined(KOKKOS_ENABLE_HPX_ASYNC_DISPATCH) + static hpx::future &impl_get_future() noexcept { return m_future; } +#endif + + static constexpr const char *name() noexcept { return "HPX"; } +}; +} // namespace Experimental + +namespace Impl { +template +inline void dispatch_execute_task(Closure *closure) { +#if defined(KOKKOS_ENABLE_HPX_ASYNC_DISPATCH) + if (hpx::threads::get_self_ptr() == nullptr) { + hpx::threads::run_as_hpx_thread([closure]() { + hpx::future &fut = Kokkos::Experimental::HPX::impl_get_future(); + Closure closure_copy = *closure; + fut = fut.then([closure_copy](hpx::future &&) { + closure_copy.execute_task(); + }); + }); + } else { + hpx::future &fut = Kokkos::Experimental::HPX::impl_get_future(); + Closure closure_copy = *closure; + fut = fut.then( + [closure_copy](hpx::future &&) { closure_copy.execute_task(); }); + } +#else + if (hpx::threads::get_self_ptr() == nullptr) { + hpx::threads::run_as_hpx_thread([closure]() { closure->execute_task(); }); + } else { + closure->execute_task(); + } +#endif +} +} // namespace Impl +} // namespace Kokkos + +namespace Kokkos { +namespace Impl { +template <> +struct MemorySpaceAccess { + enum { assignable = false }; + enum { accessible = true }; + enum { deepcopy = false }; +}; + +template <> +struct VerifyExecutionCanAccessMemorySpace< + Kokkos::Experimental::HPX::memory_space, + Kokkos::Experimental::HPX::scratch_memory_space> { + enum { value = true }; + inline static void verify(void) {} + inline static void verify(const void *) {} +}; +} // namespace Impl +} // namespace Kokkos + +namespace Kokkos { +namespace Experimental { +template <> class UniqueToken { +public: + using execution_space = HPX; + using size_type = int; + UniqueToken(execution_space const & = execution_space()) noexcept {} + + // NOTE: Currently this assumes that there is no oversubscription. + // hpx::get_num_worker_threads can't be used directly because it may yield + // it's task (problematic if called after hpx::get_worker_thread_num). + int size() const noexcept { return HPX::impl_max_hardware_threads(); } + int acquire() const noexcept { return HPX::impl_hardware_thread_id(); } + void release(int) const noexcept {} +}; + +template <> class UniqueToken { +public: + using execution_space = HPX; + using size_type = int; + UniqueToken(execution_space const & = execution_space()) noexcept {} + + // NOTE: Currently this assumes that there is no oversubscription. + // hpx::get_num_worker_threads can't be used directly because it may yield + // it's task (problematic if called after hpx::get_worker_thread_num). + int size() const noexcept { return HPX::impl_max_hardware_threads(); } + int acquire() const noexcept { return HPX::impl_hardware_thread_id(); } + void release(int) const noexcept {} +}; +} // namespace Experimental +} // namespace Kokkos + +namespace Kokkos { +namespace Impl { + +struct HPXTeamMember { +public: + using execution_space = Kokkos::Experimental::HPX; + using scratch_memory_space = + Kokkos::ScratchMemorySpace; + +private: + scratch_memory_space m_team_shared; + std::size_t m_team_shared_size; + + int m_league_size; + int m_league_rank; + int m_team_size; + int m_team_rank; + +public: + KOKKOS_INLINE_FUNCTION + const scratch_memory_space &team_shmem() const { + return m_team_shared.set_team_thread_mode(0, 1, 0); + } + + KOKKOS_INLINE_FUNCTION + const execution_space::scratch_memory_space &team_scratch(const int) const { + return m_team_shared.set_team_thread_mode(0, 1, 0); + } + + KOKKOS_INLINE_FUNCTION + const execution_space::scratch_memory_space &thread_scratch(const int) const { + return m_team_shared.set_team_thread_mode(0, team_size(), team_rank()); + } + + KOKKOS_INLINE_FUNCTION int league_rank() const noexcept { + return m_league_rank; + } + + KOKKOS_INLINE_FUNCTION int league_size() const noexcept { + return m_league_size; + } + + KOKKOS_INLINE_FUNCTION int team_rank() const noexcept { return m_team_rank; } + KOKKOS_INLINE_FUNCTION int team_size() const noexcept { return m_team_size; } + + template + constexpr KOKKOS_INLINE_FUNCTION + HPXTeamMember(const TeamPolicyInternal &policy, + const int team_rank, const int league_rank, void *scratch, + int scratch_size) noexcept + : m_team_shared(scratch, scratch_size, scratch, scratch_size), + m_team_shared_size(scratch_size), m_league_size(policy.league_size()), + m_league_rank(league_rank), m_team_size(policy.team_size()), + m_team_rank(team_rank) {} + + KOKKOS_INLINE_FUNCTION + void team_barrier() const {} + + template + KOKKOS_INLINE_FUNCTION void team_broadcast(ValueType &, const int &) const { + static_assert(std::is_trivially_default_constructible(), + "Only trivial constructible types can be broadcasted"); + } + + template + KOKKOS_INLINE_FUNCTION void team_broadcast(const Closure &, ValueType &, + const int &) const { + static_assert(std::is_trivially_default_constructible(), + "Only trivial constructible types can be broadcasted"); + } + + template + KOKKOS_INLINE_FUNCTION ValueType team_reduce(const ValueType &value, + const JoinOp &) const { + return value; + } + + template + KOKKOS_INLINE_FUNCTION + typename std::enable_if::value>::type + team_reduce(const ReducerType &reducer) const {} + + template + KOKKOS_INLINE_FUNCTION Type + team_scan(const Type &value, Type *const global_accum = nullptr) const { + if (global_accum) { + Kokkos::atomic_fetch_add(global_accum, value); + } + + return 0; + } +}; + +template +class TeamPolicyInternal + : public PolicyTraits { + using traits = PolicyTraits; + + int m_league_size; + int m_team_size; + std::size_t m_team_scratch_size[2]; + std::size_t m_thread_scratch_size[2]; + int m_chunk_size; + +public: + using member_type = HPXTeamMember; + + // NOTE: Max size is 1 for simplicity. In most cases more than 1 is not + // necessary on CPU. Implement later if there is a need. + template + inline static int team_size_max(const FunctorType &) { + return 1; + } + + template + inline static int team_size_recommended(const FunctorType &) { + return 1; + } + + template + inline static int team_size_recommended(const FunctorType &, const int &) { + return 1; + } + + template + int team_size_max(const FunctorType &, const ParallelForTag &) const { + return 1; + } + + template + int team_size_max(const FunctorType &, const ParallelReduceTag &) const { + return 1; + } + template + int team_size_recommended(const FunctorType &, const ParallelForTag &) const { + return 1; + } + template + int team_size_recommended(const FunctorType &, + const ParallelReduceTag &) const { + return 1; + } + +private: + inline void init(const int league_size_request, const int team_size_request) { + m_league_size = league_size_request; + const int max_team_size = 1; // TODO: Can't use team_size_max(...) because + // it requires a functor as argument. + m_team_size = + team_size_request > max_team_size ? max_team_size : team_size_request; + + if (m_chunk_size > 0) { + if (!Impl::is_integral_power_of_two(m_chunk_size)) + Kokkos::abort("TeamPolicy blocking granularity must be power of two"); + } else { + int new_chunk_size = 1; + while (new_chunk_size * 4 * Kokkos::Experimental::HPX::concurrency() < + m_league_size) { + new_chunk_size *= 2; + } + + if (new_chunk_size < 128) { + new_chunk_size = 1; + while ((new_chunk_size * Kokkos::Experimental::HPX::concurrency() < + m_league_size) && + (new_chunk_size < 128)) + new_chunk_size *= 2; + } + + m_chunk_size = new_chunk_size; + } + } + +public: + inline int team_size() const { return m_team_size; } + inline int league_size() const { return m_league_size; } + + inline size_t scratch_size(const int &level, int team_size_ = -1) const { + if (team_size_ < 0) { + team_size_ = m_team_size; + } + return m_team_scratch_size[level] + + team_size_ * m_thread_scratch_size[level]; + } + +public: + template + friend class TeamPolicyInternal; + + template + TeamPolicyInternal( + const TeamPolicyInternal &p) { + m_league_size = p.m_league_size; + m_team_size = p.m_team_size; + m_team_scratch_size[0] = p.m_team_scratch_size[0]; + m_thread_scratch_size[0] = p.m_thread_scratch_size[0]; + m_team_scratch_size[1] = p.m_team_scratch_size[1]; + m_thread_scratch_size[1] = p.m_thread_scratch_size[1]; + m_chunk_size = p.m_chunk_size; + } + + TeamPolicyInternal(const typename traits::execution_space &, + int league_size_request, int team_size_request, + int /* vector_length_request */ = 1) + : m_team_scratch_size{0, 0}, m_thread_scratch_size{0, 0}, + m_chunk_size(0) { + init(league_size_request, team_size_request); + } + + TeamPolicyInternal(const typename traits::execution_space &, + int league_size_request, + const Kokkos::AUTO_t &team_size_request, + int /* vector_length_request */ = 1) + : m_team_scratch_size{0, 0}, m_thread_scratch_size{0, 0}, + m_chunk_size(0) { + init(league_size_request, 1); + } + + TeamPolicyInternal(int league_size_request, int team_size_request, + int /* vector_length_request */ = 1) + : m_team_scratch_size{0, 0}, m_thread_scratch_size{0, 0}, + m_chunk_size(0) { + init(league_size_request, team_size_request); + } + + TeamPolicyInternal(int league_size_request, + const Kokkos::AUTO_t &team_size_request, + int /* vector_length_request */ = 1) + : m_team_scratch_size{0, 0}, m_thread_scratch_size{0, 0}, + m_chunk_size(0) { + init(league_size_request, 1); + } + + inline int chunk_size() const { return m_chunk_size; } + + inline TeamPolicyInternal & + set_chunk_size(typename traits::index_type chunk_size_) { + m_chunk_size = chunk_size_; + return *this; + } + + inline TeamPolicyInternal &set_scratch_size(const int &level, + const PerTeamValue &per_team) { + m_team_scratch_size[level] = per_team.value; + return *this; + } + + inline TeamPolicyInternal & + set_scratch_size(const int &level, const PerThreadValue &per_thread) { + m_thread_scratch_size[level] = per_thread.value; + return *this; + } + + inline TeamPolicyInternal & + set_scratch_size(const int &level, const PerTeamValue &per_team, + const PerThreadValue &per_thread) { + m_team_scratch_size[level] = per_team.value; + m_thread_scratch_size[level] = per_thread.value; + return *this; + } +}; +} // namespace Impl +} // namespace Kokkos + +namespace Kokkos { +namespace Impl { + +template +class ParallelFor, + Kokkos::Experimental::HPX> { +private: + using Policy = Kokkos::RangePolicy; + using WorkTag = typename Policy::work_tag; + using WorkRange = typename Policy::WorkRange; + using Member = typename Policy::member_type; + + const FunctorType m_functor; + const Policy m_policy; + + template + static typename std::enable_if::value>::type + execute_functor(const FunctorType &functor, const Member i) { + functor(i); + } + + template + static typename std::enable_if::value>::type + execute_functor(const FunctorType &functor, const Member i) { + const TagType t{}; + functor(t, i); + } + + template + static typename std::enable_if::value>::type + execute_functor_range(const FunctorType &functor, const Member i_begin, + const Member i_end) { + for (Member i = i_begin; i < i_end; ++i) { + functor(i); + } + } + + template + static typename std::enable_if::value>::type + execute_functor_range(const FunctorType &functor, const Member i_begin, + const Member i_end) { + const TagType t{}; + for (Member i = i_begin; i < i_end; ++i) { + functor(t, i); + } + } + +public: + void execute() const { Kokkos::Impl::dispatch_execute_task(this); } + + void execute_task() const { +#if KOKKOS_HPX_IMPLEMENTATION == 0 + using hpx::parallel::for_loop; + using hpx::parallel::execution::par; + using hpx::parallel::execution::static_chunk_size; + + for_loop(par.with(static_chunk_size(m_policy.chunk_size())), + m_policy.begin(), m_policy.end(), [this](const Member i) { + execute_functor(m_functor, i); + }); + +#elif KOKKOS_HPX_IMPLEMENTATION == 1 + using hpx::apply; + using hpx::lcos::local::counting_semaphore; + + counting_semaphore sem(0); + std::size_t num_tasks = 0; + + for (Member i_begin = m_policy.begin(); i_begin < m_policy.end(); + i_begin += m_policy.chunk_size()) { + apply([this, &sem, i_begin]() { + const Member i_end = + (std::min)(i_begin + m_policy.chunk_size(), m_policy.end()); + execute_functor_range(m_functor, i_begin, i_end); + + sem.signal(1); + }); + + ++num_tasks; + } + + sem.wait(num_tasks); +#endif + } + + inline ParallelFor(const FunctorType &arg_functor, Policy arg_policy) + : m_functor(arg_functor), m_policy(arg_policy) {} +}; + +template +class ParallelFor, + Kokkos::Experimental::HPX> { +private: + using MDRangePolicy = Kokkos::MDRangePolicy; + using Policy = typename MDRangePolicy::impl_range_policy; + using WorkTag = typename MDRangePolicy::work_tag; + using WorkRange = typename Policy::WorkRange; + using Member = typename Policy::member_type; + using iterate_type = + typename Kokkos::Impl::HostIterateTile; + + const FunctorType m_functor; + const MDRangePolicy m_mdr_policy; + const Policy m_policy; + +public: + void execute() const { dispatch_execute_task(this); } + + inline void execute_task() const { +#if KOKKOS_HPX_IMPLEMENTATION == 0 + using hpx::parallel::for_loop; + using hpx::parallel::execution::par; + using hpx::parallel::execution::static_chunk_size; + + for_loop(par.with(static_chunk_size(m_policy.chunk_size())), + m_policy.begin(), m_policy.end(), [this](const Member i) { + iterate_type(m_mdr_policy, m_functor)(i); + }); + +#elif KOKKOS_HPX_IMPLEMENTATION == 1 + using hpx::apply; + using hpx::lcos::local::counting_semaphore; + + counting_semaphore sem(0); + std::size_t num_tasks = 0; + + for (Member i_begin = m_policy.begin(); i_begin < m_policy.end(); + i_begin += m_policy.chunk_size()) { + apply([this, &sem, i_begin]() { + const Member i_end = + (std::min)(i_begin + m_policy.chunk_size(), m_policy.end()); + for (Member i = i_begin; i < i_end; ++i) { + iterate_type(m_mdr_policy, m_functor)(i); + } + + sem.signal(1); + }); + + ++num_tasks; + } + + sem.wait(num_tasks); +#endif + } + + inline ParallelFor(const FunctorType &arg_functor, MDRangePolicy arg_policy) + : m_functor(arg_functor), m_mdr_policy(arg_policy), + m_policy(Policy(0, m_mdr_policy.m_num_tiles).set_chunk_size(1)) {} +}; +} // namespace Impl +} // namespace Kokkos + +namespace Kokkos { +namespace Impl { +template +class ParallelReduce, ReducerType, + Kokkos::Experimental::HPX> { +private: + using Policy = Kokkos::RangePolicy; + using WorkTag = typename Policy::work_tag; + using WorkRange = typename Policy::WorkRange; + using Member = typename Policy::member_type; + using Analysis = + FunctorAnalysis; + using ReducerConditional = + Kokkos::Impl::if_c::value, + FunctorType, ReducerType>; + using ReducerTypeFwd = typename ReducerConditional::type; + using WorkTagFwd = + typename Kokkos::Impl::if_c::value, + WorkTag, void>::type; + using ValueInit = Kokkos::Impl::FunctorValueInit; + using ValueJoin = Kokkos::Impl::FunctorValueJoin; + using ValueOps = Kokkos::Impl::FunctorValueOps; + using value_type = typename Analysis::value_type; + using pointer_type = typename Analysis::pointer_type; + using reference_type = typename Analysis::reference_type; + + const FunctorType m_functor; + const Policy m_policy; + const ReducerType m_reducer; + const pointer_type m_result_ptr; + + bool m_force_synchronous; + + template + inline static + typename std::enable_if::value>::type + execute_functor(const FunctorType &functor, const Member i, + reference_type update) { + functor(i, update); + } + + template + inline static + typename std::enable_if::value>::type + execute_functor(const FunctorType &functor, const Member i, + reference_type update) { + const TagType t{}; + functor(t, i, update); + } + + template + inline typename std::enable_if::value>::type + execute_functor_range(reference_type update, const Member i_begin, + const Member i_end) const { + for (Member i = i_begin; i < i_end; ++i) { + m_functor(i, update); + } + } + + template + inline typename std::enable_if::value>::type + execute_functor_range(reference_type update, const Member i_begin, + const Member i_end) const { + const TagType t{}; + + for (Member i = i_begin; i < i_end; ++i) { + m_functor(t, i, update); + } + } + + class value_type_wrapper { + private: + std::size_t m_value_size; + char *m_value_buffer; + + public: + value_type_wrapper() : m_value_size(0), m_value_buffer(nullptr) {} + + value_type_wrapper(const std::size_t value_size) + : m_value_size(value_size), m_value_buffer(new char[m_value_size]) {} + + value_type_wrapper(const value_type_wrapper &other) + : m_value_size(0), m_value_buffer(nullptr) { + if (this != &other) { + m_value_buffer = new char[other.m_value_size]; + m_value_size = other.m_value_size; + + std::copy(other.m_value_buffer, other.m_value_buffer + m_value_size, + m_value_buffer); + } + } + + ~value_type_wrapper() { delete[] m_value_buffer; } + + value_type_wrapper(value_type_wrapper &&other) + : m_value_size(0), m_value_buffer(nullptr) { + if (this != &other) { + m_value_buffer = other.m_value_buffer; + m_value_size = other.m_value_size; + + other.m_value_buffer = nullptr; + other.m_value_size = 0; + } + } + + value_type_wrapper &operator=(const value_type_wrapper &other) { + if (this != &other) { + delete[] m_value_buffer; + m_value_buffer = new char[other.m_value_size]; + m_value_size = other.m_value_size; + + std::copy(other.m_value_buffer, other.m_value_buffer + m_value_size, + m_value_buffer); + } + + return *this; + } + + value_type_wrapper &operator=(value_type_wrapper &&other) { + if (this != &other) { + delete[] m_value_buffer; + m_value_buffer = other.m_value_buffer; + m_value_size = other.m_value_size; + + other.m_value_buffer = nullptr; + other.m_value_size = 0; + } + + return *this; + } + + pointer_type pointer() const { + return reinterpret_cast(m_value_buffer); + } + + reference_type reference() const { + return ValueOps::reference( + reinterpret_cast(m_value_buffer)); + } + }; + +public: + void execute() const { + dispatch_execute_task(this); + } + + inline void execute_task() const { + const int num_worker_threads = Kokkos::Experimental::HPX::concurrency(); + + std::size_t value_size = + Analysis::value_size(ReducerConditional::select(m_functor, m_reducer)); + + using hpx::parallel::for_loop; + using hpx::parallel::execution::par; + +#if KOKKOS_HPX_IMPLEMENTATION == 0 + // NOTE: This version makes the most use of HPX functionality, but + // requires the struct value_type_wrapper to handle different + // reference_types. It is also significantly slower than the version + // below due to not reusing the buffer used by other functions. + using hpx::parallel::reduction; + using hpx::parallel::execution::static_chunk_size; + + value_type_wrapper final_value(value_size); + value_type_wrapper identity(value_size); + + ValueInit::init(ReducerConditional::select(m_functor, m_reducer), + final_value.pointer()); + ValueInit::init(ReducerConditional::select(m_functor, m_reducer), + identity.pointer()); + + for_loop(par.with(static_chunk_size(m_policy.chunk_size())), + m_policy.begin(), m_policy.end(), + reduction(final_value, identity, + [this](value_type_wrapper &a, + value_type_wrapper &b) -> value_type_wrapper & { + ValueJoin::join( + ReducerConditional::select(m_functor, m_reducer), + a.pointer(), b.pointer()); + return a; + }), + [this](Member i, value_type_wrapper &update) { + execute_functor(m_functor, i, update.reference()); + }); + + pointer_type final_value_ptr = final_value.pointer(); + +#elif KOKKOS_HPX_IMPLEMENTATION == 1 + thread_buffer &buffer = Kokkos::Experimental::HPX::impl_get_buffer(); + buffer.resize(num_worker_threads, value_size); + + for_loop(par, 0, num_worker_threads, [this, &buffer](std::size_t t) { + ValueInit::init(ReducerConditional::select(m_functor, m_reducer), + reinterpret_cast(buffer.get(t))); + }); + + using hpx::apply; + using hpx::lcos::local::counting_semaphore; + + counting_semaphore sem(0); + std::size_t num_tasks = 0; + + for (Member i_begin = m_policy.begin(); i_begin < m_policy.end(); + i_begin += m_policy.chunk_size()) { + apply([this, &buffer, &sem, i_begin]() { + reference_type update = + ValueOps::reference(reinterpret_cast( + buffer.get(Kokkos::Experimental::HPX::impl_hardware_thread_id()))); + const Member i_end = + (std::min)(i_begin + m_policy.chunk_size(), m_policy.end()); + execute_functor_range(update, i_begin, i_end); + + sem.signal(1); + }); + + ++num_tasks; + } + + sem.wait(num_tasks); + + for (int i = 1; i < num_worker_threads; ++i) { + ValueJoin::join(ReducerConditional::select(m_functor, m_reducer), + reinterpret_cast(buffer.get(0)), + reinterpret_cast(buffer.get(i))); + } + + pointer_type final_value_ptr = + reinterpret_cast(buffer.get(0)); +#endif + + Kokkos::Impl::FunctorFinal::final( + ReducerConditional::select(m_functor, m_reducer), final_value_ptr); + + if (m_result_ptr != nullptr) { + const int n = Analysis::value_count( + ReducerConditional::select(m_functor, m_reducer)); + + for (int j = 0; j < n; ++j) { + m_result_ptr[j] = final_value_ptr[j]; + } + } + } + + template + inline ParallelReduce( + const FunctorType &arg_functor, Policy arg_policy, + const ViewType &arg_view, + typename std::enable_if::value && + !Kokkos::is_reducer_type::value, + void *>::type = NULL) + : m_functor(arg_functor), m_policy(arg_policy), m_reducer(InvalidType()), + m_result_ptr(arg_view.data()), + m_force_synchronous(!arg_view.impl_track().has_record()) {} + + inline ParallelReduce(const FunctorType &arg_functor, Policy arg_policy, + const ReducerType &reducer) + : m_functor(arg_functor), m_policy(arg_policy), m_reducer(reducer), + m_result_ptr(reducer.view().data()), + m_force_synchronous(!reducer.view().impl_track().has_record()) {} +}; + +template +class ParallelReduce, ReducerType, + Kokkos::Experimental::HPX> { +private: + using MDRangePolicy = Kokkos::MDRangePolicy; + using Policy = typename MDRangePolicy::impl_range_policy; + using WorkTag = typename MDRangePolicy::work_tag; + using WorkRange = typename Policy::WorkRange; + using Member = typename Policy::member_type; + using Analysis = FunctorAnalysis; + using ReducerConditional = + Kokkos::Impl::if_c::value, + FunctorType, ReducerType>; + using ReducerTypeFwd = typename ReducerConditional::type; + using WorkTagFwd = + typename Kokkos::Impl::if_c::value, + WorkTag, void>::type; + using ValueInit = Kokkos::Impl::FunctorValueInit; + using ValueJoin = Kokkos::Impl::FunctorValueJoin; + using ValueOps = Kokkos::Impl::FunctorValueOps; + using pointer_type = typename Analysis::pointer_type; + using value_type = typename Analysis::value_type; + using reference_type = typename Analysis::reference_type; + using iterate_type = + typename Kokkos::Impl::HostIterateTile; + + const FunctorType m_functor; + const MDRangePolicy m_mdr_policy; + const Policy m_policy; + const ReducerType m_reducer; + const pointer_type m_result_ptr; + + bool m_force_synchronous; + +public: + void execute() const { + dispatch_execute_task(this); + } + + inline void execute_task() const { + const int num_worker_threads = Kokkos::Experimental::HPX::concurrency(); + const std::size_t value_size = + Analysis::value_size(ReducerConditional::select(m_functor, m_reducer)); + + thread_buffer &buffer = Kokkos::Experimental::HPX::impl_get_buffer(); + buffer.resize(num_worker_threads, value_size); + + using hpx::parallel::for_loop; + using hpx::parallel::execution::par; + + for_loop(par, 0, num_worker_threads, [this, &buffer](std::size_t t) { + ValueInit::init(ReducerConditional::select(m_functor, m_reducer), + reinterpret_cast(buffer.get(t))); + }); + +#if KOKKOS_HPX_IMPLEMENTATION == 0 + using hpx::parallel::execution::static_chunk_size; + + for_loop(par.with(static_chunk_size(m_policy.chunk_size())), + m_policy.begin(), m_policy.end(), [this, &buffer](const Member i) { + reference_type update = ValueOps::reference( + reinterpret_cast(buffer.get( + Kokkos::Experimental::HPX::impl_hardware_thread_id()))); + iterate_type(m_mdr_policy, m_functor, update)(i); + }); + +#elif KOKKOS_HPX_IMPLEMENTATION == 1 + using hpx::apply; + using hpx::lcos::local::counting_semaphore; + + counting_semaphore sem(0); + std::size_t num_tasks = 0; + + for (Member i_begin = m_policy.begin(); i_begin < m_policy.end(); + i_begin += m_policy.chunk_size()) { + apply([this, &buffer, &sem, i_begin]() { + reference_type update = + ValueOps::reference(reinterpret_cast( + buffer.get(Kokkos::Experimental::HPX::impl_hardware_thread_id()))); + const Member i_end = + (std::min)(i_begin + m_policy.chunk_size(), m_policy.end()); + + for (Member i = i_begin; i < i_end; ++i) { + iterate_type(m_mdr_policy, m_functor, update)(i); + } + + sem.signal(1); + }); + + ++num_tasks; + } + + sem.wait(num_tasks); +#endif + + for (int i = 1; i < num_worker_threads; ++i) { + ValueJoin::join(ReducerConditional::select(m_functor, m_reducer), + reinterpret_cast(buffer.get(0)), + reinterpret_cast(buffer.get(i))); + } + + Kokkos::Impl::FunctorFinal::final( + ReducerConditional::select(m_functor, m_reducer), + reinterpret_cast(buffer.get(0))); + + if (m_result_ptr != nullptr) { + const int n = Analysis::value_count( + ReducerConditional::select(m_functor, m_reducer)); + + for (int j = 0; j < n; ++j) { + m_result_ptr[j] = reinterpret_cast(buffer.get(0))[j]; + } + } + } + + template + inline ParallelReduce( + const FunctorType &arg_functor, MDRangePolicy arg_policy, + const ViewType &arg_view, + typename std::enable_if::value && + !Kokkos::is_reducer_type::value, + void *>::type = NULL) + : m_functor(arg_functor), m_mdr_policy(arg_policy), + m_policy(Policy(0, m_mdr_policy.m_num_tiles).set_chunk_size(1)), + m_reducer(InvalidType()), m_result_ptr(arg_view.data()), + m_force_synchronous(!arg_view.impl_track().has_record()) {} + + inline ParallelReduce(const FunctorType &arg_functor, + MDRangePolicy arg_policy, const ReducerType &reducer) + : m_functor(arg_functor), m_mdr_policy(arg_policy), + m_policy(Policy(0, m_mdr_policy.m_num_tiles).set_chunk_size(1)), + m_reducer(reducer), m_result_ptr(reducer.view().data()), + m_force_synchronous(!reducer.view().impl_track().has_record()) {} +}; +} // namespace Impl +} // namespace Kokkos + +namespace Kokkos { +namespace Impl { + +template +class ParallelScan, + Kokkos::Experimental::HPX> { +private: + using Policy = Kokkos::RangePolicy; + using WorkTag = typename Policy::work_tag; + using WorkRange = typename Policy::WorkRange; + using Member = typename Policy::member_type; + using Analysis = + FunctorAnalysis; + using ValueInit = Kokkos::Impl::FunctorValueInit; + using ValueJoin = Kokkos::Impl::FunctorValueJoin; + using ValueOps = Kokkos::Impl::FunctorValueOps; + using pointer_type = typename Analysis::pointer_type; + using reference_type = typename Analysis::reference_type; + using value_type = typename Analysis::value_type; + + const FunctorType m_functor; + const Policy m_policy; + + template + inline static + typename std::enable_if::value>::type + execute_functor_range(const FunctorType &functor, const Member i_begin, + const Member i_end, reference_type update, + const bool final) { + for (Member i = i_begin; i < i_end; ++i) { + functor(i, update, final); + } + } + + template + inline static + typename std::enable_if::value>::type + execute_functor_range(const FunctorType &functor, const Member i_begin, + const Member i_end, reference_type update, + const bool final) { + const TagType t{}; + for (Member i = i_begin; i < i_end; ++i) { + functor(t, i, update, final); + } + } + +public: + void execute() const { dispatch_execute_task(this); } + + inline void execute_task() const { + const int num_worker_threads = Kokkos::Experimental::HPX::concurrency(); + const int value_count = Analysis::value_count(m_functor); + const std::size_t value_size = Analysis::value_size(m_functor); + + thread_buffer &buffer = Kokkos::Experimental::HPX::impl_get_buffer(); + buffer.resize(num_worker_threads, 2 * value_size); + + using hpx::lcos::local::barrier; + using hpx::parallel::for_loop; + using hpx::parallel::execution::par; + using hpx::parallel::execution::static_chunk_size; + + barrier bar(num_worker_threads); + + for_loop(par.with(static_chunk_size(1)), 0, num_worker_threads, + [this, &buffer, &bar, num_worker_threads, value_count, + value_size](std::size_t const t) { + reference_type update_sum = ValueInit::init( + m_functor, reinterpret_cast(buffer.get(t))); + + const WorkRange range(m_policy, t, num_worker_threads); + execute_functor_range(m_functor, range.begin(), + range.end(), update_sum, false); + + bar.wait(); + + if (t == 0) { + ValueInit::init(m_functor, reinterpret_cast( + buffer.get(0) + value_size)); + + for (int i = 1; i < num_worker_threads; ++i) { + pointer_type ptr_1_prev = + reinterpret_cast(buffer.get(i - 1)); + pointer_type ptr_2_prev = reinterpret_cast( + buffer.get(i - 1) + value_size); + pointer_type ptr_2 = reinterpret_cast( + buffer.get(i) + value_size); + + for (int j = 0; j < value_count; ++j) { + ptr_2[j] = ptr_2_prev[j]; + } + + ValueJoin::join(m_functor, ptr_2, ptr_1_prev); + } + } + + bar.wait(); + + reference_type update_base = ValueOps::reference( + reinterpret_cast(buffer.get(t) + value_size)); + + execute_functor_range(m_functor, range.begin(), + range.end(), update_base, true); + }); + } + + inline ParallelScan(const FunctorType &arg_functor, const Policy &arg_policy) + : m_functor(arg_functor), m_policy(arg_policy) {} +}; + +template +class ParallelScanWithTotal, + ReturnType, Kokkos::Experimental::HPX> { +private: + using Policy = Kokkos::RangePolicy; + using WorkTag = typename Policy::work_tag; + using WorkRange = typename Policy::WorkRange; + using Member = typename Policy::member_type; + using Analysis = + FunctorAnalysis; + using ValueInit = Kokkos::Impl::FunctorValueInit; + using ValueJoin = Kokkos::Impl::FunctorValueJoin; + using ValueOps = Kokkos::Impl::FunctorValueOps; + using pointer_type = typename Analysis::pointer_type; + using reference_type = typename Analysis::reference_type; + using value_type = typename Analysis::value_type; + + const FunctorType m_functor; + const Policy m_policy; + ReturnType &m_returnvalue; + + template + inline static + typename std::enable_if::value>::type + execute_functor_range(const FunctorType &functor, const Member i_begin, + const Member i_end, reference_type update, + const bool final) { + for (Member i = i_begin; i < i_end; ++i) { + functor(i, update, final); + } + } + + template + inline static + typename std::enable_if::value>::type + execute_functor_range(const FunctorType &functor, const Member i_begin, + const Member i_end, reference_type update, + const bool final) { + const TagType t{}; + for (Member i = i_begin; i < i_end; ++i) { + functor(t, i, update, final); + } + } + +public: + void execute() const { dispatch_execute_task(this); } + + inline void execute_task() const { + const int num_worker_threads = Kokkos::Experimental::HPX::concurrency(); + const int value_count = Analysis::value_count(m_functor); + const std::size_t value_size = Analysis::value_size(m_functor); + + thread_buffer &buffer = Kokkos::Experimental::HPX::impl_get_buffer(); + buffer.resize(num_worker_threads, 2 * value_size); + + using hpx::lcos::local::barrier; + using hpx::parallel::for_loop; + using hpx::parallel::execution::par; + using hpx::parallel::execution::static_chunk_size; + + barrier bar(num_worker_threads); + + for_loop(par.with(static_chunk_size(1)), 0, num_worker_threads, + [this, &buffer, &bar, num_worker_threads, value_count, + value_size](std::size_t const t) { + reference_type update_sum = ValueInit::init( + m_functor, reinterpret_cast(buffer.get(t))); + + const WorkRange range(m_policy, t, num_worker_threads); + execute_functor_range(m_functor, range.begin(), + range.end(), update_sum, false); + + bar.wait(); + + if (t == 0) { + ValueInit::init(m_functor, reinterpret_cast( + buffer.get(0) + value_size)); + + for (int i = 1; i < num_worker_threads; ++i) { + pointer_type ptr_1_prev = + reinterpret_cast(buffer.get(i - 1)); + pointer_type ptr_2_prev = reinterpret_cast( + buffer.get(i - 1) + value_size); + pointer_type ptr_2 = reinterpret_cast( + buffer.get(i) + value_size); + + for (int j = 0; j < value_count; ++j) { + ptr_2[j] = ptr_2_prev[j]; + } + + ValueJoin::join(m_functor, ptr_2, ptr_1_prev); + } + } + + bar.wait(); + + reference_type update_base = ValueOps::reference( + reinterpret_cast(buffer.get(t) + value_size)); + + execute_functor_range(m_functor, range.begin(), + range.end(), update_base, true); + + if (t == std::size_t(num_worker_threads - 1)) { + m_returnvalue = update_base; + } + }); + } + + inline ParallelScanWithTotal(const FunctorType &arg_functor, + const Policy &arg_policy, + ReturnType &arg_returnvalue) + : m_functor(arg_functor), m_policy(arg_policy), + m_returnvalue(arg_returnvalue) {} +}; +} // namespace Impl +} // namespace Kokkos + +namespace Kokkos { +namespace Impl { +template +class ParallelFor, + Kokkos::Experimental::HPX> { +private: + using Policy = TeamPolicyInternal; + using WorkTag = typename Policy::work_tag; + using Member = typename Policy::member_type; + using memory_space = Kokkos::HostSpace; + + const FunctorType m_functor; + const Policy m_policy; + const int m_league; + const std::size_t m_shared; + + template + inline static + typename std::enable_if::value>::type + execute_functor(const FunctorType &functor, const Policy &policy, + const int league_rank, char *local_buffer, + const std::size_t local_buffer_size) { + functor(Member(policy, 0, league_rank, local_buffer, local_buffer_size)); + } + + template + inline static + typename std::enable_if::value>::type + execute_functor(const FunctorType &functor, const Policy &policy, + const int league_rank, char *local_buffer, + const std::size_t local_buffer_size) { + const TagType t{}; + functor(t, Member(policy, 0, league_rank, local_buffer, local_buffer_size)); + } + + template + inline static + typename std::enable_if::value>::type + execute_functor_range(const FunctorType &functor, const Policy &policy, + const int league_rank_begin, + const int league_rank_end, char *local_buffer, + const std::size_t local_buffer_size) { + for (int league_rank = league_rank_begin; league_rank < league_rank_end; + ++league_rank) { + functor(Member(policy, 0, league_rank, local_buffer, local_buffer_size)); + } + } + + template + inline static + typename std::enable_if::value>::type + execute_functor_range(const FunctorType &functor, const Policy &policy, + const int league_rank_begin, + const int league_rank_end, char *local_buffer, + const std::size_t local_buffer_size) { + const TagType t{}; + for (int league_rank = league_rank_begin; league_rank < league_rank_end; + ++league_rank) { + functor(t, + Member(policy, 0, league_rank, local_buffer, local_buffer_size)); + } + } + +public: + void execute() const { dispatch_execute_task(this); } + + inline void execute_task() const { + const int num_worker_threads = Kokkos::Experimental::HPX::concurrency(); + + thread_buffer &buffer = Kokkos::Experimental::HPX::impl_get_buffer(); + buffer.resize(num_worker_threads, m_shared); + +#if KOKKOS_HPX_IMPLEMENTATION == 0 + using hpx::parallel::for_loop; + using hpx::parallel::execution::par; + using hpx::parallel::execution::static_chunk_size; + + for_loop(par.with(static_chunk_size(m_policy.chunk_size())), 0, + m_policy.league_size(), [this, &buffer](const int league_rank) { + execute_functor( + m_functor, m_policy, league_rank, + buffer.get(Kokkos::Experimental::HPX::impl_hardware_thread_id()), + m_shared); + }); + +#elif KOKKOS_HPX_IMPLEMENTATION == 1 + using hpx::apply; + using hpx::lcos::local::counting_semaphore; + + counting_semaphore sem(0); + std::size_t num_tasks = 0; + + for (int league_rank_begin = 0; league_rank_begin < m_policy.league_size(); + league_rank_begin += m_policy.chunk_size()) { + apply([this, &buffer, &sem, league_rank_begin]() { + const int league_rank_end = (std::min)( + league_rank_begin + m_policy.chunk_size(), m_policy.league_size()); + execute_functor_range( + m_functor, m_policy, league_rank_begin, league_rank_end, + buffer.get(Kokkos::Experimental::HPX::impl_hardware_thread_id()), m_shared); + + sem.signal(1); + }); + + ++num_tasks; + } + + sem.wait(num_tasks); +#endif + } + + ParallelFor(const FunctorType &arg_functor, const Policy &arg_policy) + : m_functor(arg_functor), m_policy(arg_policy), + m_league(arg_policy.league_size()), + m_shared(arg_policy.scratch_size(0) + arg_policy.scratch_size(1) + + FunctorTeamShmemSize::value( + arg_functor, arg_policy.team_size())) {} +}; + +template +class ParallelReduce, + ReducerType, Kokkos::Experimental::HPX> { +private: + using Policy = TeamPolicyInternal; + using Analysis = + FunctorAnalysis; + using Member = typename Policy::member_type; + using WorkTag = typename Policy::work_tag; + using ReducerConditional = + Kokkos::Impl::if_c::value, + FunctorType, ReducerType>; + using ReducerTypeFwd = typename ReducerConditional::type; + using WorkTagFwd = + typename Kokkos::Impl::if_c::value, + WorkTag, void>::type; + using ValueInit = Kokkos::Impl::FunctorValueInit; + using ValueJoin = Kokkos::Impl::FunctorValueJoin; + using ValueOps = Kokkos::Impl::FunctorValueOps; + using pointer_type = typename Analysis::pointer_type; + using reference_type = typename Analysis::reference_type; + using value_type = typename Analysis::value_type; + + const FunctorType m_functor; + const int m_league; + const Policy m_policy; + const ReducerType m_reducer; + pointer_type m_result_ptr; + const std::size_t m_shared; + + bool m_force_synchronous; + + template + inline static + typename std::enable_if::value>::type + execute_functor(const FunctorType &functor, const Policy &policy, + const int league_rank, char *local_buffer, + const std::size_t local_buffer_size, + reference_type update) { + functor(Member(policy, 0, league_rank, local_buffer, local_buffer_size), + update); + } + + template + inline static + typename std::enable_if::value>::type + execute_functor(const FunctorType &functor, const Policy &policy, + const int league_rank, char *local_buffer, + const std::size_t local_buffer_size, + reference_type update) { + const TagType t{}; + functor(t, Member(policy, 0, league_rank, local_buffer, local_buffer_size), + update); + } + + template + inline static + typename std::enable_if::value>::type + execute_functor_range(const FunctorType &functor, const Policy &policy, + const int league_rank_begin, + const int league_rank_end, char *local_buffer, + const std::size_t local_buffer_size, + reference_type update) { + for (int league_rank = league_rank_begin; league_rank < league_rank_end; + ++league_rank) { + functor(Member(policy, 0, league_rank, local_buffer, local_buffer_size), + update); + } + } + + template + inline static + typename std::enable_if::value>::type + execute_functor_range(const FunctorType &functor, const Policy &policy, + const int league_rank_begin, + const int league_rank_end, char *local_buffer, + const std::size_t local_buffer_size, + reference_type update) { + const TagType t{}; + for (int league_rank = league_rank_begin; league_rank < league_rank_end; + ++league_rank) { + functor(t, + Member(policy, 0, league_rank, local_buffer, local_buffer_size), + update); + } + } + +public: + void execute() const { + dispatch_execute_task(this); + } + + inline void execute_task() const { + const int num_worker_threads = Kokkos::Experimental::HPX::concurrency(); + const std::size_t value_size = + Analysis::value_size(ReducerConditional::select(m_functor, m_reducer)); + + thread_buffer &buffer = Kokkos::Experimental::HPX::impl_get_buffer(); + buffer.resize(num_worker_threads, value_size + m_shared); + + using hpx::parallel::for_loop; + using hpx::parallel::execution::par; + + for_loop(par, 0, num_worker_threads, [this, &buffer](std::size_t t) { + ValueInit::init(ReducerConditional::select(m_functor, m_reducer), + reinterpret_cast(buffer.get(t))); + }); + +#if KOKKOS_HPX_IMPLEMENTATION == 0 + using hpx::parallel::execution::static_chunk_size; + + hpx::parallel::for_loop( + par.with(static_chunk_size(m_policy.chunk_size())), 0, + m_policy.league_size(), + [this, &buffer, value_size](const int league_rank) { + std::size_t t = Kokkos::Experimental::HPX::impl_hardware_thread_id(); + reference_type update = ValueOps::reference( + reinterpret_cast(buffer.get(t))); + + execute_functor(m_functor, m_policy, league_rank, + buffer.get(t) + value_size, m_shared, + update); + }); + +#elif KOKKOS_HPX_IMPLEMENTATION == 1 + using hpx::apply; + using hpx::lcos::local::counting_semaphore; + + counting_semaphore sem(0); + std::size_t num_tasks = 0; + + for (int league_rank_begin = 0; league_rank_begin < m_policy.league_size(); + league_rank_begin += m_policy.chunk_size()) { + apply([this, &buffer, &sem, league_rank_begin, value_size]() { + std::size_t t = Kokkos::Experimental::HPX::impl_hardware_thread_id(); + reference_type update = + ValueOps::reference(reinterpret_cast(buffer.get(t))); + const int league_rank_end = (std::min)( + league_rank_begin + m_policy.chunk_size(), m_policy.league_size()); + execute_functor_range( + m_functor, m_policy, league_rank_begin, league_rank_end, + buffer.get(t) + value_size, m_shared, update); + + sem.signal(1); + }); + + ++num_tasks; + } + + sem.wait(num_tasks); +#endif + + const pointer_type ptr = reinterpret_cast(buffer.get(0)); + for (int t = 1; t < num_worker_threads; ++t) { + ValueJoin::join(ReducerConditional::select(m_functor, m_reducer), ptr, + reinterpret_cast(buffer.get(t))); + } + + Kokkos::Impl::FunctorFinal::final( + ReducerConditional::select(m_functor, m_reducer), ptr); + + if (m_result_ptr) { + const int n = Analysis::value_count( + ReducerConditional::select(m_functor, m_reducer)); + + for (int j = 0; j < n; ++j) { + m_result_ptr[j] = ptr[j]; + } + } + } + + template + ParallelReduce( + const FunctorType &arg_functor, const Policy &arg_policy, + const ViewType &arg_result, + typename std::enable_if::value && + !Kokkos::is_reducer_type::value, + void *>::type = NULL) + : m_functor(arg_functor), m_league(arg_policy.league_size()), + m_policy(arg_policy), m_reducer(InvalidType()), + m_result_ptr(arg_result.data()), + m_shared(arg_policy.scratch_size(0) + arg_policy.scratch_size(1) + + FunctorTeamShmemSize::value( + m_functor, arg_policy.team_size())), + m_force_synchronous(!arg_result.impl_track().has_record()) {} + + inline ParallelReduce(const FunctorType &arg_functor, Policy arg_policy, + const ReducerType &reducer) + : m_functor(arg_functor), m_league(arg_policy.league_size()), + m_policy(arg_policy), m_reducer(reducer), + m_result_ptr(reducer.view().data()), + m_shared(arg_policy.scratch_size(0) + arg_policy.scratch_size(1) + + FunctorTeamShmemSize::value( + arg_functor, arg_policy.team_size())), + m_force_synchronous(!reducer.view().impl_track().has_record()) {} +}; +} // namespace Impl +} // namespace Kokkos + +namespace Kokkos { + +template +KOKKOS_INLINE_FUNCTION + Impl::TeamThreadRangeBoundariesStruct + TeamThreadRange(const Impl::HPXTeamMember &thread, const iType &count) { + return Impl::TeamThreadRangeBoundariesStruct( + thread, count); +} + +template +KOKKOS_INLINE_FUNCTION Impl::TeamThreadRangeBoundariesStruct< + typename std::common_type::type, Impl::HPXTeamMember> +TeamThreadRange(const Impl::HPXTeamMember &thread, const iType1 &i_begin, + const iType2 &i_end) { + using iType = typename std::common_type::type; + return Impl::TeamThreadRangeBoundariesStruct( + thread, iType(i_begin), iType(i_end)); +} + +template +KOKKOS_INLINE_FUNCTION + Impl::TeamThreadRangeBoundariesStruct + TeamVectorRange(const Impl::HPXTeamMember &thread, const iType &count) { + return Impl::TeamThreadRangeBoundariesStruct( + thread, count); +} + +template +KOKKOS_INLINE_FUNCTION Impl::TeamThreadRangeBoundariesStruct< + typename std::common_type::type, Impl::HPXTeamMember> +TeamVectorRange(const Impl::HPXTeamMember &thread, const iType1 &i_begin, + const iType2 &i_end) { + using iType = typename std::common_type::type; + return Impl::TeamThreadRangeBoundariesStruct( + thread, iType(i_begin), iType(i_end)); +} + +template +KOKKOS_INLINE_FUNCTION + Impl::ThreadVectorRangeBoundariesStruct + ThreadVectorRange(const Impl::HPXTeamMember &thread, const iType &count) { + return Impl::ThreadVectorRangeBoundariesStruct( + thread, count); +} + +template +KOKKOS_INLINE_FUNCTION + Impl::ThreadVectorRangeBoundariesStruct + ThreadVectorRange(const Impl::HPXTeamMember &thread, const iType &i_begin, + const iType &i_end) { + return Impl::ThreadVectorRangeBoundariesStruct( + thread, i_begin, i_end); +} + +KOKKOS_INLINE_FUNCTION +Impl::ThreadSingleStruct +PerTeam(const Impl::HPXTeamMember &thread) { + return Impl::ThreadSingleStruct(thread); +} + +KOKKOS_INLINE_FUNCTION +Impl::VectorSingleStruct +PerThread(const Impl::HPXTeamMember &thread) { + return Impl::VectorSingleStruct(thread); +} + +/** \brief Inter-thread parallel_for. Executes lambda(iType i) for each + * i=0..N-1. + * + * The range i=0..N-1 is mapped to all threads of the the calling thread team. + * This functionality requires C++11 support.*/ +template +KOKKOS_INLINE_FUNCTION void parallel_for( + const Impl::TeamThreadRangeBoundariesStruct + &loop_boundaries, + const Lambda &lambda) { + for (iType i = loop_boundaries.start; i < loop_boundaries.end; + i += loop_boundaries.increment) + lambda(i); +} + +/** \brief Inter-thread vector parallel_reduce. Executes lambda(iType i, + * ValueType & val) for each i=0..N-1. + * + * The range i=0..N-1 is mapped to all threads of the the calling thread team + * and a summation of val is performed and put into result. This functionality + * requires C++11 support.*/ +template +KOKKOS_INLINE_FUNCTION void parallel_reduce( + const Impl::TeamThreadRangeBoundariesStruct + &loop_boundaries, + const Lambda &lambda, ValueType &result) { + result = ValueType(); + for (iType i = loop_boundaries.start; i < loop_boundaries.end; + i += loop_boundaries.increment) { + lambda(i, result); + } +} + +/** \brief Intra-thread vector parallel_for. Executes lambda(iType i) for each + * i=0..N-1. + * + * The range i=0..N-1 is mapped to all vector lanes of the the calling thread. + * This functionality requires C++11 support.*/ +template +KOKKOS_INLINE_FUNCTION void parallel_for( + const Impl::ThreadVectorRangeBoundariesStruct + &loop_boundaries, + const Lambda &lambda) { +#ifdef KOKKOS_ENABLE_PRAGMA_IVDEP +#pragma ivdep +#endif + for (iType i = loop_boundaries.start; i < loop_boundaries.end; + i += loop_boundaries.increment) { + lambda(i); + } +} + +/** \brief Intra-thread vector parallel_reduce. Executes lambda(iType i, + * ValueType & val) for each i=0..N-1. + * + * The range i=0..N-1 is mapped to all vector lanes of the the calling thread + * and a summation of val is performed and put into result. This functionality + * requires C++11 support.*/ +template +KOKKOS_INLINE_FUNCTION void parallel_reduce( + const Impl::ThreadVectorRangeBoundariesStruct + &loop_boundaries, + const Lambda &lambda, ValueType &result) { + result = ValueType(); +#ifdef KOKKOS_ENABLE_PRAGMA_IVDEP +#pragma ivdep +#endif + for (iType i = loop_boundaries.start; i < loop_boundaries.end; + i += loop_boundaries.increment) { + lambda(i, result); + } +} + +template +KOKKOS_INLINE_FUNCTION void parallel_reduce( + const Impl::TeamThreadRangeBoundariesStruct + &loop_boundaries, + const Lambda &lambda, const ReducerType &reducer) { + reducer.init(reducer.reference()); + for (iType i = loop_boundaries.start; i < loop_boundaries.end; + i += loop_boundaries.increment) { + lambda(i, reducer.reference()); + } +} + +template +KOKKOS_INLINE_FUNCTION void parallel_reduce( + const Impl::ThreadVectorRangeBoundariesStruct + &loop_boundaries, + const Lambda &lambda, const ReducerType &reducer) { + reducer.init(reducer.reference()); +#ifdef KOKKOS_ENABLE_PRAGMA_IVDEP +#pragma ivdep +#endif + for (iType i = loop_boundaries.start; i < loop_boundaries.end; + i += loop_boundaries.increment) { + lambda(i, reducer.reference()); + } +} + +template +KOKKOS_INLINE_FUNCTION void parallel_scan( + Impl::TeamThreadRangeBoundariesStruct const + &loop_boundaries, + const FunctorType &lambda) { + using value_type = typename Kokkos::Impl::FunctorAnalysis< + Kokkos::Impl::FunctorPatternInterface::SCAN, void, + FunctorType>::value_type; + + value_type scan_val = value_type(); + + // Intra-member scan + for (iType i = loop_boundaries.start; i < loop_boundaries.end; + i += loop_boundaries.increment) { + lambda(i, scan_val, false); + } + + // 'scan_val' output is the exclusive prefix sum + scan_val = loop_boundaries.thread.team_scan(scan_val); + + for (iType i = loop_boundaries.start; i < loop_boundaries.end; + i += loop_boundaries.increment) { + lambda(i, scan_val, true); + } +} + +/** \brief Intra-thread vector parallel exclusive prefix sum. Executes + * lambda(iType i, ValueType & val, bool final) for each i=0..N-1. + * + * The range i=0..N-1 is mapped to all vector lanes in the thread and a scan + * operation is performed. Depending on the target execution space the operator + * might be called twice: once with final=false and once with final=true. When + * final==true val contains the prefix sum value. The contribution of this "i" + * needs to be added to val no matter whether final==true or not. In a serial + * execution (i.e. team_size==1) the operator is only called once with + * final==true. Scan_val will be set to the final sum value over all vector + * lanes. This functionality requires C++11 support.*/ +template +KOKKOS_INLINE_FUNCTION void parallel_scan( + const Impl::ThreadVectorRangeBoundariesStruct + &loop_boundaries, + const FunctorType &lambda) { + using ValueTraits = Kokkos::Impl::FunctorValueTraits; + using value_type = typename ValueTraits::value_type; + + value_type scan_val = value_type(); + +#ifdef KOKKOS_ENABLE_PRAGMA_IVDEP +#pragma ivdep +#endif + for (iType i = loop_boundaries.start; i < loop_boundaries.end; + i += loop_boundaries.increment) { + lambda(i, scan_val, true); + } +} + +template +KOKKOS_INLINE_FUNCTION void +single(const Impl::VectorSingleStruct &single_struct, + const FunctorType &lambda) { + lambda(); +} + +template +KOKKOS_INLINE_FUNCTION void +single(const Impl::ThreadSingleStruct &single_struct, + const FunctorType &lambda) { + lambda(); +} + +template +KOKKOS_INLINE_FUNCTION void +single(const Impl::VectorSingleStruct &single_struct, + const FunctorType &lambda, ValueType &val) { + lambda(val); +} + +template +KOKKOS_INLINE_FUNCTION void +single(const Impl::ThreadSingleStruct &single_struct, + const FunctorType &lambda, ValueType &val) { + lambda(val); +} + +} // namespace Kokkos + +#include + +#endif /* #if defined( KOKKOS_ENABLE_HPX ) */ +#endif /* #ifndef KOKKOS_HPX_HPP */ diff --git a/lib/kokkos/core/src/Kokkos_HostSpace.hpp b/lib/kokkos/core/src/Kokkos_HostSpace.hpp index 3fd55d9148..921ba0df34 100644 --- a/lib/kokkos/core/src/Kokkos_HostSpace.hpp +++ b/lib/kokkos/core/src/Kokkos_HostSpace.hpp @@ -57,6 +57,8 @@ #include #include +#include "impl/Kokkos_HostSpace_deepcopy.hpp" + /*--------------------------------------------------------------------------*/ namespace Kokkos { @@ -113,6 +115,8 @@ public: typedef Kokkos::OpenMP execution_space; #elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_THREADS ) typedef Kokkos::Threads execution_space; +#elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HPX ) + typedef Kokkos::Experimental::HPX execution_space; //#elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_QTHREADS ) // typedef Kokkos::Qthreads execution_space; #elif defined( KOKKOS_ENABLE_OPENMP ) @@ -121,6 +125,8 @@ public: typedef Kokkos::Threads execution_space; //#elif defined( KOKKOS_ENABLE_QTHREADS ) // typedef Kokkos::Qthreads execution_space; +#elif defined( KOKKOS_ENABLE_HPX ) + typedef Kokkos::Experimental::HPX execution_space; #elif defined( KOKKOS_ENABLE_SERIAL ) typedef Kokkos::Serial execution_space; #else @@ -291,15 +297,18 @@ namespace Kokkos { namespace Impl { +#define PAR_DEEP_COPY_USE_MEMCPY + template< class ExecutionSpace > struct DeepCopy< HostSpace, HostSpace, ExecutionSpace > { DeepCopy( void * dst, const void * src, size_t n ) { - memcpy( dst, src, n ); + hostspace_parallel_deepcopy(dst,src,n); } DeepCopy( const ExecutionSpace& exec, void * dst, const void * src, size_t n ) { exec.fence(); - memcpy( dst, src, n ); + hostspace_parallel_deepcopy(dst,src,n); + exec.fence(); } }; diff --git a/lib/kokkos/core/src/Kokkos_Layout.hpp b/lib/kokkos/core/src/Kokkos_Layout.hpp index 43e117783b..6f423d545f 100644 --- a/lib/kokkos/core/src/Kokkos_Layout.hpp +++ b/lib/kokkos/core/src/Kokkos_Layout.hpp @@ -193,6 +193,9 @@ struct LayoutStride { {} }; +// ========================================================================== +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE + //---------------------------------------------------------------------------- /// \struct LayoutTileLeft /// \brief Memory layout tag indicating left-to-right (Fortran scheme) @@ -243,6 +246,8 @@ struct LayoutTileLeft { : dimension { argN0 , argN1 , argN2 , argN3 , argN4 , argN5 , argN6 , argN7 } {} }; +#endif // KOKKOS_ENABLE_DEPRECATED_CODE +// =================================================================================== ////////////////////////////////////////////////////////////////////////////////////// @@ -269,14 +274,14 @@ namespace Experimental { template < Kokkos::Iterate OuterP, Kokkos::Iterate InnerP, unsigned ArgN0 , unsigned ArgN1 , unsigned ArgN2 = 0, unsigned ArgN3 = 0, unsigned ArgN4 = 0, unsigned ArgN5 = 0, unsigned ArgN6 = 0, unsigned ArgN7 = 0, bool IsPowerOfTwo = - ( Impl::is_integral_power_of_two(ArgN0) && - Impl::is_integral_power_of_two(ArgN1) && - (Impl::is_integral_power_of_two(ArgN2) || (ArgN2 == 0) ) && - (Impl::is_integral_power_of_two(ArgN3) || (ArgN3 == 0) ) && - (Impl::is_integral_power_of_two(ArgN4) || (ArgN4 == 0) ) && - (Impl::is_integral_power_of_two(ArgN5) || (ArgN5 == 0) ) && - (Impl::is_integral_power_of_two(ArgN6) || (ArgN6 == 0) ) && - (Impl::is_integral_power_of_two(ArgN7) || (ArgN7 == 0) ) + ( Kokkos::Impl::is_integral_power_of_two(ArgN0) && + Kokkos::Impl::is_integral_power_of_two(ArgN1) && + (Kokkos::Impl::is_integral_power_of_two(ArgN2) || (ArgN2 == 0) ) && + (Kokkos::Impl::is_integral_power_of_two(ArgN3) || (ArgN3 == 0) ) && + (Kokkos::Impl::is_integral_power_of_two(ArgN4) || (ArgN4 == 0) ) && + (Kokkos::Impl::is_integral_power_of_two(ArgN5) || (ArgN5 == 0) ) && + (Kokkos::Impl::is_integral_power_of_two(ArgN6) || (ArgN6 == 0) ) && + (Kokkos::Impl::is_integral_power_of_two(ArgN7) || (ArgN7 == 0) ) ) > struct LayoutTiled { diff --git a/lib/kokkos/core/src/Kokkos_Macros.hpp b/lib/kokkos/core/src/Kokkos_Macros.hpp index 10fc09423e..6b8ae02f82 100644 --- a/lib/kokkos/core/src/Kokkos_Macros.hpp +++ b/lib/kokkos/core/src/Kokkos_Macros.hpp @@ -50,6 +50,7 @@ * KOKKOS_ENABLE_CUDA Kokkos::Cuda execution and memory spaces * KOKKOS_ENABLE_THREADS Kokkos::Threads execution space * KOKKOS_ENABLE_QTHREADS Kokkos::Qthreads execution space + * KOKKOS_ENABLE_HPX Kokkos::Experimental::HPX execution space * KOKKOS_ENABLE_OPENMP Kokkos::OpenMP execution space * KOKKOS_ENABLE_OPENMPTARGET Kokkos::Experimental::OpenMPTarget execution space * KOKKOS_ENABLE_HWLOC HWLOC library is available. @@ -98,12 +99,14 @@ #if defined(KOKKOS_ENABLE_SERIAL) || defined(KOKKOS_ENABLE_THREADS) || \ defined(KOKKOS_ENABLE_OPENMP) || defined(KOKKOS_ENABLE_QTHREADS) || \ + defined(KOKKOS_ENABLE_HPX) || \ defined(KOKKOS_ENABLE_ROCM) || defined(KOKKOS_ENABLE_OPENMPTARGET) #define KOKKOS_INTERNAL_ENABLE_NON_CUDA_BACKEND #endif #if !defined(KOKKOS_ENABLE_THREADS) && !defined(KOKKOS_ENABLE_CUDA) && \ !defined(KOKKOS_ENABLE_OPENMP) && !defined(KOKKOS_ENABLE_QTHREADS) && \ + !defined(KOKKOS_ENABLE_HPX) && \ !defined(KOKKOS_ENABLE_ROCM) && !defined(KOKKOS_ENABLE_OPENMPTARGET) #define KOKKOS_INTERNAL_NOT_PARALLEL #endif @@ -174,33 +177,22 @@ #if ( 10000 > CUDA_VERSION ) #define KOKKOS_ENABLE_PRE_CUDA_10_DEPRECATION_API #endif -#endif // #if defined( KOKKOS_ENABLE_CUDA ) && defined( __CUDACC__ ) - -//---------------------------------------------------------------------------- -// Language info: C++, CUDA, OPENMP -#if defined( KOKKOS_ENABLE_CUDA ) - // Compiling Cuda code to 'ptx' - - #define KOKKOS_FORCEINLINE_FUNCTION __device__ __host__ __forceinline__ - #define KOKKOS_INLINE_FUNCTION __device__ __host__ inline - #define KOKKOS_FUNCTION __device__ __host__ -#endif // #if defined( __CUDA_ARCH__ ) + #if defined(__CUDA_ARCH__) && (__CUDA_ARCH__ >= 700) + // PTX atomics with memory order semantics are only available on volta and later + #if !defined(KOKKOS_DISABLE_CUDA_ASM) + #if !defined(KOKKOS_ENABLE_CUDA_ASM) + #define KOKKOS_ENABLE_CUDA_ASM + #if !defined(KOKKOS_DISABLE_CUDA_ASM_ATOMICS) + #define KOKKOS_ENABLE_CUDA_ASM_ATOMICS + #endif + #endif + #endif + #endif -#if defined( KOKKOS_ENABLE_ROCM ) && defined( __HCC__ ) - #define KOKKOS_FORCEINLINE_FUNCTION __attribute__((amp,cpu)) inline - #define KOKKOS_INLINE_FUNCTION __attribute__((amp,cpu)) inline - #define KOKKOS_FUNCTION __attribute__((amp,cpu)) - #define KOKKOS_LAMBDA [=] __attribute__((amp,cpu)) -#endif +#endif // #if defined( KOKKOS_ENABLE_CUDA ) && defined( __CUDACC__ ) -#if defined( _OPENMP ) - // Compiling with OpenMP. - // The value of _OPENMP is an integer value YYYYMM - // where YYYY and MM are the year and month designation - // of the supported OpenMP API version. -#endif // #if defined( _OPENMP ) //---------------------------------------------------------------------------- // Mapping compiler built-ins to KOKKOS_COMPILER_*** macros @@ -263,7 +255,7 @@ #endif #endif -#if defined( __PGIC__ ) +#if defined( __PGIC__ ) #define KOKKOS_COMPILER_PGI __PGIC__*100+__PGIC_MINOR__*10+__PGIC_PATCHLEVEL__ #if ( 1540 > KOKKOS_COMPILER_PGI ) @@ -272,6 +264,36 @@ #endif //#endif // #if !defined( __CUDA_ARCH__ ) +//---------------------------------------------------------------------------- +// Language info: C++, CUDA, OPENMP + +#if defined( KOKKOS_ENABLE_CUDA ) + // Compiling Cuda code to 'ptx' + + #define KOKKOS_FORCEINLINE_FUNCTION __device__ __host__ __forceinline__ + #define KOKKOS_INLINE_FUNCTION __device__ __host__ inline + #define KOKKOS_FUNCTION __device__ __host__ + #if defined( KOKKOS_COMPILER_NVCC ) + #define KOKKOS_INLINE_FUNCTION_DELETED inline + #else + #define KOKKOS_INLINE_FUNCTION_DELETED __device__ __host__ inline + #endif +#endif // #if defined( __CUDA_ARCH__ ) + +#if defined( KOKKOS_ENABLE_ROCM ) && defined( __HCC__ ) + + #define KOKKOS_FORCEINLINE_FUNCTION __attribute__((amp,cpu)) inline + #define KOKKOS_INLINE_FUNCTION __attribute__((amp,cpu)) inline + #define KOKKOS_FUNCTION __attribute__((amp,cpu)) + #define KOKKOS_LAMBDA [=] __attribute__((amp,cpu)) +#endif + +#if defined( _OPENMP ) + // Compiling with OpenMP. + // The value of _OPENMP is an integer value YYYYMM + // where YYYY and MM are the year and month designation + // of the supported OpenMP API version. +#endif // #if defined( _OPENMP ) //---------------------------------------------------------------------------- // Intel compiler macros @@ -320,7 +342,10 @@ #if defined( KOKKOS_ARCH_AVX512MIC ) #define KOKKOS_ENABLE_RFO_PREFETCH 1 - #endif + #if (KOKKOS_COMPILER_INTEL < 1800) && !defined(KOKKOS_KNL_USE_ASM_WORKAROUND) + #define KOKKOS_KNL_USE_ASM_WORKAROUND 1 + #endif + #endif #if defined( __MIC__ ) // Compiling for Xeon Phi @@ -386,6 +411,8 @@ #define KOKKOS_FORCEINLINE_FUNCTION inline __attribute__((always_inline)) #endif + #define KOKKOS_RESTRICT __restrict__ + #if !defined( KOKKOS_ENABLE_ASM ) && !defined( __PGIC__ ) && \ ( defined( __amd64 ) || defined( __amd64__ ) || \ defined( __x86_64 ) || defined( __x86_64__ ) || \ @@ -416,7 +443,7 @@ // Define function marking macros if compiler specific macros are undefined: #if !defined( KOKKOS_FORCEINLINE_FUNCTION ) - #define KOKKOS_FORCEINLINE_FUNCTION inline + define KOKKOS_FORCEINLINE_FUNCTION inline #endif #if !defined( KOKKOS_INLINE_FUNCTION ) @@ -427,6 +454,9 @@ #define KOKKOS_FUNCTION /**/ #endif +#if !defined( KOKKOS_INLINE_FUNCTION_DELETED ) + #define KOKKOS_INLINE_FUNCTION_DELETED inline +#endif //---------------------------------------------------------------------------- // Define empty macro for restrict if necessary: @@ -459,18 +489,20 @@ ( defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMP ) ? 1 : 0 ) + \ ( defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_THREADS ) ? 1 : 0 ) + \ ( defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_QTHREADS ) ? 1 : 0 ) + \ + ( defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HPX ) ? 1 : 0 ) + \ ( defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_SERIAL ) ? 1 : 0 ) ) #error "More than one KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_* specified." #endif // If default is not specified then chose from enabled execution spaces. -// Priority: CUDA, OPENMP, THREADS, QTHREADS, SERIAL +// Priority: CUDA, OPENMP, THREADS, QTHREADS, HPX, SERIAL #if defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_CUDA ) #elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_ROCM ) #elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMPTARGET ) #elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMP ) #elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_THREADS ) //#elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_QTHREADS ) +#elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HPX ) #elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_SERIAL ) #elif defined( KOKKOS_ENABLE_CUDA ) #define KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_CUDA @@ -484,6 +516,8 @@ #define KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_THREADS //#elif defined( KOKKOS_ENABLE_QTHREADS ) // #define KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_QTHREADS +#elif defined( KOKKOS_ENABLE_HPX ) + #define KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_HPX #else #define KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_SERIAL #endif @@ -539,7 +573,27 @@ #define KOKKOS_IMPL_CTOR_DEFAULT_ARG KOKKOS_INVALID_INDEX #endif +#if (defined(KOKKOS_ENABLE_CXX14) || defined(KOKKOS_ENABLE_CXX17) || defined(KOKKOS_ENABLE_CXX20)) + #define KOKKOS_CONSTEXPR_14 constexpr + #define KOKKOS_DEPRECATED [[deprecated]] + #define KOKKOS_DEPRECATED_TRAILING_ATTRIBUTE +#else + #define KOKKOS_CONSTEXPR_14 + #if defined(KOKKOS_COMPILER_GNU) || defined(KOKKOS_COMPILER_CLANG) + #define KOKKOS_DEPRECATED + #define KOKKOS_DEPRECATED_TRAILING_ATTRIBUTE __attribute__ ((deprecated)) + #else + #define KOKKOS_DEPRECATED + #define KOKKOS_DEPRECATED_TRAILING_ATTRIBUTE + #endif +#endif + +// DJS 05/28/2019: Bugfix: Issue 2155 +// Use KOKKOS_ENABLE_CUDA_LDG_INTRINSIC to avoid memory leak in RandomAccess View +#if defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_CUDA_LDG_INTRINSIC) + #define KOKKOS_ENABLE_CUDA_LDG_INTRINSIC +#endif #endif // #ifndef KOKKOS_MACROS_HPP diff --git a/lib/kokkos/core/src/Kokkos_MemoryPool.hpp b/lib/kokkos/core/src/Kokkos_MemoryPool.hpp index 157345c552..365db2baec 100644 --- a/lib/kokkos/core/src/Kokkos_MemoryPool.hpp +++ b/lib/kokkos/core/src/Kokkos_MemoryPool.hpp @@ -132,12 +132,18 @@ private: public: + using memory_space = typename DeviceType::memory_space; + /**\brief The maximum size of a superblock and block */ enum : uint32_t { max_superblock_size = 1LU << 31 /* 2 gigabytes */ }; enum : uint32_t { max_block_per_superblock = max_bit_count }; //-------------------------------------------------------------------------- + KOKKOS_INLINE_FUNCTION + bool operator==(MemoryPool const& other) const + { return m_sb_state_array == other.m_sb_state_array; } + KOKKOS_INLINE_FUNCTION size_t capacity() const noexcept { return size_t(m_sb_count) << m_sb_size_lg2 ; } diff --git a/lib/kokkos/core/src/Kokkos_MemoryTraits.hpp b/lib/kokkos/core/src/Kokkos_MemoryTraits.hpp index eebc83cf3d..509ac6499e 100644 --- a/lib/kokkos/core/src/Kokkos_MemoryTraits.hpp +++ b/lib/kokkos/core/src/Kokkos_MemoryTraits.hpp @@ -71,13 +71,18 @@ template < unsigned T > struct MemoryTraits { //! Tag this class as a kokkos memory traits: typedef MemoryTraits memory_traits ; - +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE enum : bool { Unmanaged = (unsigned(0) != (T & unsigned(Kokkos::Unmanaged))) }; enum : bool { RandomAccess = (unsigned(0) != (T & unsigned(Kokkos::RandomAccess))) }; enum : bool { Atomic = (unsigned(0) != (T & unsigned(Kokkos::Atomic))) }; enum : bool { Restrict = (unsigned(0) != (T & unsigned(Kokkos::Restrict))) }; enum : bool { Aligned = (unsigned(0) != (T & unsigned(Kokkos::Aligned))) }; - +#endif + enum : bool { is_unmanaged = (unsigned(0) != (T & unsigned(Kokkos::Unmanaged))) }; + enum : bool { is_random_access = (unsigned(0) != (T & unsigned(Kokkos::RandomAccess))) }; + enum : bool { is_atomic = (unsigned(0) != (T & unsigned(Kokkos::Atomic))) }; + enum : bool { is_restrict = (unsigned(0) != (T & unsigned(Kokkos::Restrict))) }; + enum : bool { is_aligned = (unsigned(0) != (T & unsigned(Kokkos::Aligned))) }; }; } // namespace Kokkos diff --git a/lib/kokkos/core/src/Kokkos_OpenMP.hpp b/lib/kokkos/core/src/Kokkos_OpenMP.hpp index ed4071a6da..6ee8f08dc8 100644 --- a/lib/kokkos/core/src/Kokkos_OpenMP.hpp +++ b/lib/kokkos/core/src/Kokkos_OpenMP.hpp @@ -107,8 +107,14 @@ public: /// \brief Wait until all dispatched functors complete on the given instance /// /// This is a no-op on OpenMP - inline + static void impl_static_fence( OpenMP const& = OpenMP() ) noexcept; + + #ifdef KOKKOS_ENABLE_DEPRECATED_CODE static void fence( OpenMP const& = OpenMP() ) noexcept; + #else + void fence() const; + #endif + /// \brief Does the given instance return immediately after launching /// a parallel algorithm diff --git a/lib/kokkos/core/src/Kokkos_Pair.hpp b/lib/kokkos/core/src/Kokkos_Pair.hpp index 1be763be85..ab0ab8152a 100644 --- a/lib/kokkos/core/src/Kokkos_Pair.hpp +++ b/lib/kokkos/core/src/Kokkos_Pair.hpp @@ -528,6 +528,15 @@ KOKKOS_FORCEINLINE_FUNCTION constexpr bool operator>= (const pair& lhs, const pair& rhs) { return !(lhs struct is_pair_like : std::false_type { }; +template struct is_pair_like> : std::true_type { }; +template struct is_pair_like> : std::true_type { }; + +} // end namespace Impl + } // namespace Kokkos diff --git a/lib/kokkos/core/src/Kokkos_Parallel.hpp b/lib/kokkos/core/src/Kokkos_Parallel.hpp index b095f5728e..09dcf60b11 100644 --- a/lib/kokkos/core/src/Kokkos_Parallel.hpp +++ b/lib/kokkos/core/src/Kokkos_Parallel.hpp @@ -525,7 +525,7 @@ void parallel_scan( const ExecutionPolicy & policy Kokkos::Profiling::endParallelScan(kpID); } #endif - + Kokkos::fence(); } template< class FunctorType, class ReturnType > @@ -560,7 +560,7 @@ void parallel_scan( const size_t work_count Kokkos::Profiling::endParallelScan(kpID); } #endif - + Kokkos::fence(); } template< class ExecutionPolicy, class FunctorType, class ReturnType > diff --git a/lib/kokkos/core/src/Kokkos_Parallel_Reduce.hpp b/lib/kokkos/core/src/Kokkos_Parallel_Reduce.hpp index 06aaa6546e..36bc6e4153 100644 --- a/lib/kokkos/core/src/Kokkos_Parallel_Reduce.hpp +++ b/lib/kokkos/core/src/Kokkos_Parallel_Reduce.hpp @@ -69,18 +69,19 @@ public: typedef Sum reducer; typedef typename std::remove_cv::type value_type; - typedef Kokkos::View > result_view_type; + typedef Kokkos::View result_view_type; private: - value_type* value; + result_view_type value; + bool references_scalar_v; public: KOKKOS_INLINE_FUNCTION - Sum(value_type& value_): value(&value_) {} + Sum(value_type& value_): value(&value_),references_scalar_v(true) {} KOKKOS_INLINE_FUNCTION - Sum(const result_view_type& value_): value(value_.data()) {} + Sum(const result_view_type& value_): value(value_),references_scalar_v(false) {} //Required KOKKOS_INLINE_FUNCTION @@ -100,12 +101,17 @@ public: KOKKOS_INLINE_FUNCTION value_type& reference() const { - return *value; + return *value.data(); } KOKKOS_INLINE_FUNCTION result_view_type view() const { - return result_view_type(value); + return value; + } + + KOKKOS_INLINE_FUNCTION + bool references_scalar() const { + return references_scalar_v; } }; @@ -116,18 +122,19 @@ public: typedef Prod reducer; typedef typename std::remove_cv::type value_type; - typedef Kokkos::View > result_view_type; + typedef Kokkos::View result_view_type; private: - value_type* value; + result_view_type value; + bool references_scalar_v; public: KOKKOS_INLINE_FUNCTION - Prod(value_type& value_): value(&value_) {} + Prod(value_type& value_): value(&value_),references_scalar_v(true) {} KOKKOS_INLINE_FUNCTION - Prod(const result_view_type& value_): value(value_.data()) {} + Prod(const result_view_type& value_): value(value_),references_scalar_v(false) {} //Required KOKKOS_INLINE_FUNCTION @@ -147,12 +154,17 @@ public: KOKKOS_INLINE_FUNCTION value_type& reference() const { - return *value; + return *value.data(); } KOKKOS_INLINE_FUNCTION result_view_type view() const { - return result_view_type(value); + return value; + } + + KOKKOS_INLINE_FUNCTION + bool references_scalar() const { + return references_scalar_v; } }; @@ -163,18 +175,19 @@ public: typedef Min reducer; typedef typename std::remove_cv::type value_type; - typedef Kokkos::View > result_view_type; + typedef Kokkos::View result_view_type; private: - value_type* value; + result_view_type value; + bool references_scalar_v; public: KOKKOS_INLINE_FUNCTION - Min(value_type& value_): value(&value_) {} + Min(value_type& value_): value(&value_),references_scalar_v(true) {} KOKKOS_INLINE_FUNCTION - Min(const result_view_type& value_): value(value_.data()) {} + Min(const result_view_type& value_): value(value_),references_scalar_v(false) {} //Required KOKKOS_INLINE_FUNCTION @@ -196,12 +209,17 @@ public: KOKKOS_INLINE_FUNCTION value_type& reference() const { - return *value; + return *value.data(); } KOKKOS_INLINE_FUNCTION result_view_type view() const { - return result_view_type(value); + return value; + } + + KOKKOS_INLINE_FUNCTION + bool references_scalar() const { + return references_scalar_v; } }; @@ -212,18 +230,19 @@ public: typedef Max reducer; typedef typename std::remove_cv::type value_type; - typedef Kokkos::View > result_view_type; + typedef Kokkos::View result_view_type; private: - value_type* value; + result_view_type value; + bool references_scalar_v; public: KOKKOS_INLINE_FUNCTION - Max(value_type& value_): value(&value_) {} + Max(value_type& value_): value(&value_),references_scalar_v(true) {} KOKKOS_INLINE_FUNCTION - Max(const result_view_type& value_): value(value_.data()) {} + Max(const result_view_type& value_): value(value_),references_scalar_v(false) {} //Required KOKKOS_INLINE_FUNCTION @@ -246,12 +265,17 @@ public: KOKKOS_INLINE_FUNCTION value_type& reference() const { - return *value; + return *value.data(); } KOKKOS_INLINE_FUNCTION result_view_type view() const { - return result_view_type(value); + return value; + } + + KOKKOS_INLINE_FUNCTION + bool references_scalar() const { + return references_scalar_v; } }; @@ -262,18 +286,19 @@ public: typedef LAnd reducer; typedef typename std::remove_cv::type value_type; - typedef Kokkos::View > result_view_type; + typedef Kokkos::View result_view_type; private: - value_type* value; + result_view_type value; + bool references_scalar_v; public: KOKKOS_INLINE_FUNCTION - LAnd(value_type& value_): value(&value_) {} + LAnd(value_type& value_): value(&value_),references_scalar_v(true) {} KOKKOS_INLINE_FUNCTION - LAnd(const result_view_type& value_): value(value_.data()) {} + LAnd(const result_view_type& value_): value(value_),references_scalar_v(false) {} KOKKOS_INLINE_FUNCTION void join(value_type& dest, const value_type& src) const { @@ -292,12 +317,17 @@ public: KOKKOS_INLINE_FUNCTION value_type& reference() const { - return *value; + return *value.data(); } KOKKOS_INLINE_FUNCTION result_view_type view() const { - return result_view_type(value); + return value; + } + + KOKKOS_INLINE_FUNCTION + bool references_scalar() const { + return references_scalar_v; } }; @@ -308,18 +338,19 @@ public: typedef LOr reducer; typedef typename std::remove_cv::type value_type; - typedef Kokkos::View > result_view_type; + typedef Kokkos::View result_view_type; private: - value_type* value; + result_view_type value; + bool references_scalar_v; public: KOKKOS_INLINE_FUNCTION - LOr(value_type& value_): value(&value_) {} + LOr(value_type& value_): value(&value_),references_scalar_v(true) {} KOKKOS_INLINE_FUNCTION - LOr(const result_view_type& value_): value(value_.data()) {} + LOr(const result_view_type& value_): value(value_),references_scalar_v(false) {} //Required KOKKOS_INLINE_FUNCTION @@ -339,12 +370,17 @@ public: KOKKOS_INLINE_FUNCTION value_type& reference() const { - return *value; + return *value.data(); } KOKKOS_INLINE_FUNCTION result_view_type view() const { - return result_view_type(value); + return value; + } + + KOKKOS_INLINE_FUNCTION + bool references_scalar() const { + return references_scalar_v; } }; @@ -355,18 +391,19 @@ public: typedef BAnd reducer; typedef typename std::remove_cv::type value_type; - typedef Kokkos::View > result_view_type; + typedef Kokkos::View result_view_type; private: - value_type* value; + result_view_type value; + bool references_scalar_v; public: KOKKOS_INLINE_FUNCTION - BAnd(value_type& value_): value(&value_) {} + BAnd(value_type& value_): value(&value_),references_scalar_v(true) {} KOKKOS_INLINE_FUNCTION - BAnd(const result_view_type& value_): value(value_.data()) {} + BAnd(const result_view_type& value_): value(value_),references_scalar_v(false) {} //Required KOKKOS_INLINE_FUNCTION @@ -386,12 +423,17 @@ public: KOKKOS_INLINE_FUNCTION value_type& reference() const { - return *value; + return *value.data(); } KOKKOS_INLINE_FUNCTION result_view_type view() const { - return result_view_type(value); + return value; + } + + KOKKOS_INLINE_FUNCTION + bool references_scalar() const { + return references_scalar_v; } }; @@ -402,18 +444,19 @@ public: typedef BOr reducer; typedef typename std::remove_cv::type value_type; - typedef Kokkos::View > result_view_type; + typedef Kokkos::View result_view_type; private: - value_type* value; + result_view_type value; + bool references_scalar_v; public: KOKKOS_INLINE_FUNCTION - BOr(value_type& value_): value(&value_) {} + BOr(value_type& value_): value(&value_),references_scalar_v(true) {} KOKKOS_INLINE_FUNCTION - BOr(const result_view_type& value_): value(value_.data()) {} + BOr(const result_view_type& value_): value(value_),references_scalar_v(false) {} //Required KOKKOS_INLINE_FUNCTION @@ -433,12 +476,17 @@ public: KOKKOS_INLINE_FUNCTION value_type& reference() const { - return *value; + return *value.data(); } KOKKOS_INLINE_FUNCTION result_view_type view() const { - return result_view_type(value); + return value; + } + + KOKKOS_INLINE_FUNCTION + bool references_scalar() const { + return references_scalar_v; } }; @@ -471,18 +519,19 @@ public: typedef MinLoc reducer; typedef ValLocScalar value_type; - typedef Kokkos::View > result_view_type; + typedef Kokkos::View result_view_type; private: - value_type* value; + result_view_type value; + bool references_scalar_v; public: KOKKOS_INLINE_FUNCTION - MinLoc(value_type& value_): value(&value_) {} + MinLoc(value_type& value_): value(&value_),references_scalar_v(true) {} KOKKOS_INLINE_FUNCTION - MinLoc(const result_view_type& value_): value(value_.data()) {} + MinLoc(const result_view_type& value_): value(value_),references_scalar_v(false) {} //Required @@ -506,12 +555,17 @@ public: KOKKOS_INLINE_FUNCTION value_type& reference() const { - return *value; + return *value.data(); } KOKKOS_INLINE_FUNCTION result_view_type view() const { - return result_view_type(value); + return value; + } + + KOKKOS_INLINE_FUNCTION + bool references_scalar() const { + return references_scalar_v; } }; @@ -526,18 +580,19 @@ public: typedef MaxLoc reducer; typedef ValLocScalar value_type; - typedef Kokkos::View > result_view_type; + typedef Kokkos::View result_view_type; private: - value_type* value; + result_view_type value; + bool references_scalar_v; public: KOKKOS_INLINE_FUNCTION - MaxLoc(value_type& value_): value(&value_) {} + MaxLoc(value_type& value_): value(&value_),references_scalar_v(true) {} KOKKOS_INLINE_FUNCTION - MaxLoc(const result_view_type& value_): value(value_.data()) {} + MaxLoc(const result_view_type& value_): value(value_),references_scalar_v(false) {} //Required KOKKOS_INLINE_FUNCTION @@ -560,12 +615,17 @@ public: KOKKOS_INLINE_FUNCTION value_type& reference() const { - return *value; + return *value.data(); } KOKKOS_INLINE_FUNCTION result_view_type view() const { - return result_view_type(value); + return value; + } + + KOKKOS_INLINE_FUNCTION + bool references_scalar() const { + return references_scalar_v; } }; @@ -596,18 +656,19 @@ public: typedef MinMax reducer; typedef MinMaxScalar value_type; - typedef Kokkos::View > result_view_type; + typedef Kokkos::View result_view_type; private: - value_type* value; + result_view_type value; + bool references_scalar_v; public: KOKKOS_INLINE_FUNCTION - MinMax(value_type& value_): value(&value_) {} + MinMax(value_type& value_): value(&value_),references_scalar_v(true) {} KOKKOS_INLINE_FUNCTION - MinMax(const result_view_type& value_): value(value_.data()) {} + MinMax(const result_view_type& value_): value(value_),references_scalar_v(false) {} //Required KOKKOS_INLINE_FUNCTION @@ -638,12 +699,17 @@ public: KOKKOS_INLINE_FUNCTION value_type& reference() const { - return *value; + return *value.data(); } KOKKOS_INLINE_FUNCTION result_view_type view() const { - return result_view_type(value); + return value; + } + + KOKKOS_INLINE_FUNCTION + bool references_scalar() const { + return references_scalar_v; } }; @@ -680,18 +746,19 @@ public: typedef MinMaxLoc reducer; typedef MinMaxLocScalar value_type; - typedef Kokkos::View > result_view_type; + typedef Kokkos::View result_view_type; private: - value_type* value; + result_view_type value; + bool references_scalar_v; public: KOKKOS_INLINE_FUNCTION - MinMaxLoc(value_type& value_): value(&value_) {} + MinMaxLoc(value_type& value_): value(&value_),references_scalar_v(true) {} KOKKOS_INLINE_FUNCTION - MinMaxLoc(const result_view_type& value_): value(value_.data()) {} + MinMaxLoc(const result_view_type& value_): value(value_),references_scalar_v(false) {} //Required KOKKOS_INLINE_FUNCTION @@ -728,12 +795,17 @@ public: KOKKOS_INLINE_FUNCTION value_type& reference() const { - return *value; + return *value.data(); } KOKKOS_INLINE_FUNCTION result_view_type view() const { - return result_view_type(value); + return value; + } + + KOKKOS_INLINE_FUNCTION + bool references_scalar() const { + return references_scalar_v; } }; } @@ -813,7 +885,7 @@ struct ParallelReduceReturnValue + struct ReducerHasTestReferenceFunction + { + template static std::true_type test_func( decltype(&E::references_scalar) ) ; + template static std::false_type test_func(...); + + enum { value = std::is_same(0))>::value }; + }; + + template::value> + struct ParallelReduceFence { + static void fence(const T&) { + Kokkos::fence(); + } + }; + template + struct ParallelReduceFence, false> { + static void fence(const View) {}; + }; + template + struct ParallelReduceFence { + static void fence(const T& reducer) { + if(reducer.references_scalar()) + Kokkos::fence(); + } + }; +} + /** \brief Parallel reduction * * parallel_reduce performs parallel reductions with arbitrary functions - i.e. @@ -959,6 +1062,7 @@ void parallel_reduce(const std::string& label, Kokkos::Impl::is_execution_policy::value >::type * = 0) { Impl::ParallelReduceAdaptor::execute(label,policy,functor,return_value); + Impl::ParallelReduceFence::fence(return_value); } template< class PolicyType, class FunctorType, class ReturnType > @@ -970,6 +1074,7 @@ void parallel_reduce(const PolicyType& policy, Kokkos::Impl::is_execution_policy::value >::type * = 0) { Impl::ParallelReduceAdaptor::execute("",policy,functor,return_value); + Impl::ParallelReduceFence::fence(return_value); } template< class FunctorType, class ReturnType > @@ -979,6 +1084,7 @@ void parallel_reduce(const size_t& policy, ReturnType& return_value) { typedef typename Impl::ParallelReducePolicyType::policy_type policy_type; Impl::ParallelReduceAdaptor::execute("",policy_type(0,policy),functor,return_value); + Impl::ParallelReduceFence::fence(return_value); } template< class FunctorType, class ReturnType > @@ -989,6 +1095,7 @@ void parallel_reduce(const std::string& label, ReturnType& return_value) { typedef typename Impl::ParallelReducePolicyType::policy_type policy_type; Impl::ParallelReduceAdaptor::execute(label,policy_type(0,policy),functor,return_value); + Impl::ParallelReduceFence::fence(return_value); } // ReturnValue as View or Reducer: take by copy to allow for inline construction @@ -1004,6 +1111,7 @@ void parallel_reduce(const std::string& label, >::type * = 0) { ReturnType return_value_impl = return_value; Impl::ParallelReduceAdaptor::execute(label,policy,functor,return_value_impl); + Impl::ParallelReduceFence::fence(return_value); } template< class PolicyType, class FunctorType, class ReturnType > @@ -1016,6 +1124,7 @@ void parallel_reduce(const PolicyType& policy, >::type * = 0) { ReturnType return_value_impl = return_value; Impl::ParallelReduceAdaptor::execute("",policy,functor,return_value_impl); + Impl::ParallelReduceFence::fence(return_value); } template< class FunctorType, class ReturnType > @@ -1026,6 +1135,7 @@ void parallel_reduce(const size_t& policy, typedef typename Impl::ParallelReducePolicyType::policy_type policy_type; ReturnType return_value_impl = return_value; Impl::ParallelReduceAdaptor::execute("",policy_type(0,policy),functor,return_value_impl); + Impl::ParallelReduceFence::fence(return_value); } template< class FunctorType, class ReturnType > @@ -1037,6 +1147,7 @@ void parallel_reduce(const std::string& label, typedef typename Impl::ParallelReducePolicyType::policy_type policy_type; ReturnType return_value_impl = return_value; Impl::ParallelReduceAdaptor::execute(label,policy_type(0,policy),functor,return_value_impl); + Impl::ParallelReduceFence::fence(return_value); } // No Return Argument diff --git a/lib/kokkos/core/src/Kokkos_PointerOwnership.hpp b/lib/kokkos/core/src/Kokkos_PointerOwnership.hpp new file mode 100644 index 0000000000..be76ec3def --- /dev/null +++ b/lib/kokkos/core/src/Kokkos_PointerOwnership.hpp @@ -0,0 +1,74 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +// Experimental unified task-data parallel manycore LDRD + +#ifndef KOKKOS_IMPL_POINTEROWNERSHIP_HPP +#define KOKKOS_IMPL_POINTEROWNERSHIP_HPP + +#include + +#include + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { + +/// Trivial wrapper for raw pointers that express ownership. +template +using OwningRawPtr = T*; + +/// Trivial wrapper for raw pointers that do not express ownership. +template +using ObservingRawPtr = T*; + +} // end namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + + + +#endif /* #ifndef KOKKOS_IMPL_POINTEROWNERSHIP_HPP */ + diff --git a/lib/kokkos/core/src/Kokkos_ROCm.hpp b/lib/kokkos/core/src/Kokkos_ROCm.hpp index 469d6b2787..96207e73c6 100644 --- a/lib/kokkos/core/src/Kokkos_ROCm.hpp +++ b/lib/kokkos/core/src/Kokkos_ROCm.hpp @@ -140,7 +140,14 @@ public: static bool wake() ; /** \brief Wait until all dispatched functors complete. A noop for OpenMP. */ - static void fence() ; + static void impl_static_fence(); + + #ifdef KOKKOS_ENABLE_DEPRECATED_CODE + static void fence(); + #else + void fence() const; + #endif + /// \brief Print configuration information to the given output stream. static void print_configuration( std::ostream & , const bool detail = false ); diff --git a/lib/kokkos/core/src/Kokkos_Serial.hpp b/lib/kokkos/core/src/Kokkos_Serial.hpp index 01701e53a2..5821b0c0c5 100644 --- a/lib/kokkos/core/src/Kokkos_Serial.hpp +++ b/lib/kokkos/core/src/Kokkos_Serial.hpp @@ -118,10 +118,16 @@ public: /// return asynchronously, before the functor completes. This /// method does not return until all dispatched functors on this /// device have completed. + static void impl_static_fence() {} + + #ifdef KOKKOS_ENABLE_DEPRECATED_CODE static void fence() {} + #else + void fence() const {} + #endif /** \brief Return the maximum amount of concurrency. */ - static int concurrency() {return 1;}; + static int concurrency() {return 1;} //! Print configuration information to the given output stream. static void print_configuration( std::ostream & , const bool /* detail */ = false ) {} @@ -261,6 +267,20 @@ public: return *this; } + template + friend class TeamPolicyInternal; + + template< class ... OtherProperties > + TeamPolicyInternal(const TeamPolicyInternal& p) { + m_league_size = p.m_league_size; + m_team_scratch_size[0] = p.m_team_scratch_size[0]; + m_thread_scratch_size[0] = p.m_thread_scratch_size[0]; + m_team_scratch_size[1] = p.m_team_scratch_size[1]; + m_thread_scratch_size[1] = p.m_thread_scratch_size[1]; + m_chunk_size = p.m_chunk_size; + } + + //---------------------------------------- #ifdef KOKKOS_ENABLE_DEPRECATED_CODE template< class FunctorType > @@ -302,7 +322,7 @@ public: 20*1024*1024); } /** \brief Specify league size, request team size */ - TeamPolicyInternal( execution_space & + TeamPolicyInternal( const execution_space & , int league_size_request #ifndef KOKKOS_ENABLE_DEPRECATED_CODE , int team_size_request @@ -320,7 +340,7 @@ public: #endif } - TeamPolicyInternal( execution_space & + TeamPolicyInternal( const execution_space & , int league_size_request , const Kokkos::AUTO_t & /* team_size_request */ , int /* vector_length_request */ = 1 ) diff --git a/lib/kokkos/core/src/Kokkos_TaskScheduler.hpp b/lib/kokkos/core/src/Kokkos_TaskScheduler.hpp index 5045e9cbbc..1c3d58af08 100644 --- a/lib/kokkos/core/src/Kokkos_TaskScheduler.hpp +++ b/lib/kokkos/core/src/Kokkos_TaskScheduler.hpp @@ -50,393 +50,203 @@ #if defined( KOKKOS_ENABLE_TASKDAG ) #include +#include //---------------------------------------------------------------------------- #include #include -//---------------------------------------------------------------------------- - -namespace Kokkos { - -// Forward declarations used in Impl::TaskQueue - -template< typename Arg1 = void , typename Arg2 = void > -class Future ; - -template< typename Space > -class TaskScheduler ; - -template< typename Space > -void wait( TaskScheduler< Space > const & ); - -template< typename Space > -struct is_scheduler : public std::false_type {}; - -template< typename Space > -struct is_scheduler< TaskScheduler< Space > > : public std::true_type {}; - -} // namespace Kokkos - +#include #include +#include +#include +#include +#include +#include //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- -namespace Kokkos { -namespace Impl { - -/*\brief Implementation data for task data management, access, and execution. - * - * CRTP Inheritance structure to allow static_cast from the - * task root type and a task's FunctorType. - * - * TaskBase< Space , ResultType , FunctorType > - * : TaskBase< Space , ResultType , void > - * , FunctorType - * { ... }; - * - * TaskBase< Space , ResultType , void > - * : TaskBase< Space , void , void > - * { ... }; - */ -template< typename Space , typename ResultType , typename FunctorType > -class TaskBase ; - -} // namespace Impl -} // namespace Kokkos - -//---------------------------------------------------------------------------- - namespace Kokkos { -/** - * - * Future< space > // value_type == void - * Future< value > // space == Default - * Future< value , space > - * - */ -template< typename Arg1 , typename Arg2 > -class Future { -private: - - template< typename > friend class TaskScheduler ; - template< typename , typename > friend class Future ; - template< typename , typename , typename > friend class Impl::TaskBase ; - - enum { Arg1_is_space = Kokkos::is_space< Arg1 >::value }; - enum { Arg2_is_space = Kokkos::is_space< Arg2 >::value }; - enum { Arg1_is_value = ! Arg1_is_space && - ! std::is_same< Arg1 , void >::value }; - enum { Arg2_is_value = ! Arg2_is_space && - ! std::is_same< Arg2 , void >::value }; - - static_assert( ! ( Arg1_is_space && Arg2_is_space ) - , "Future cannot be given two spaces" ); - - static_assert( ! ( Arg1_is_value && Arg2_is_value ) - , "Future cannot be given two value types" ); - - using ValueType = - typename std::conditional< Arg1_is_value , Arg1 , - typename std::conditional< Arg2_is_value , Arg2 , void - >::type >::type ; - - using Space = - typename std::conditional< Arg1_is_space , Arg1 , - typename std::conditional< Arg2_is_space , Arg2 , void - >::type >::type ; - - using task_base = Impl::TaskBase< void , void , void > ; - using queue_type = Impl::TaskQueue< Space > ; +namespace Impl { - task_base * m_task ; +template +class TaskExec; - KOKKOS_INLINE_FUNCTION explicit - Future( task_base * task ) : m_task(0) - { if ( task ) queue_type::assign( & m_task , task ); } +} // end namespace Impl - //---------------------------------------- +template +class BasicTaskScheduler : public Impl::TaskSchedulerBase +{ public: - using execution_space = typename Space::execution_space ; - using value_type = ValueType ; + using scheduler_type = BasicTaskScheduler; + using execution_space = ExecSpace; + using queue_type = QueueType; + using memory_space = typename queue_type::memory_space; + using memory_pool = typename queue_type::memory_pool; + using specialization = Impl::TaskQueueSpecialization; + using member_type = typename specialization::member_type; + using team_scheduler_type = BasicTaskScheduler; + template + using runnable_task_type = Impl::Task; + template + using future_type = Kokkos::BasicFuture; + template + using future_type_for_functor = future_type; - //---------------------------------------- - - KOKKOS_INLINE_FUNCTION - bool is_null() const { return 0 == m_task ; } - - KOKKOS_INLINE_FUNCTION - int reference_count() const - { return 0 != m_task ? m_task->reference_count() : 0 ; } +private: - //---------------------------------------- + using track_type = Kokkos::Impl::SharedAllocationTracker ; + using task_base = Impl::TaskBase; - KOKKOS_INLINE_FUNCTION - void clear() - { if ( m_task ) queue_type::assign( & m_task , (task_base*)0 ); } + track_type m_track; + queue_type * m_queue; //---------------------------------------- - KOKKOS_INLINE_FUNCTION - ~Future() { clear(); } + template + friend class Impl::TaskQueue; + template + friend struct Impl::TaskQueueSpecialization; + template + friend class Impl::TaskQueueSpecializationConstrained; + template + friend class Impl::TaskTeamMemberAdapter; + template + friend class Impl::TaskExec; //---------------------------------------- KOKKOS_INLINE_FUNCTION - constexpr Future() noexcept : m_task(0) {} + BasicTaskScheduler( + track_type arg_track, + queue_type* arg_queue + ) + : m_track(std::move(arg_track)), + m_queue(std::move(arg_queue)) + { } KOKKOS_INLINE_FUNCTION - Future( Future && rhs ) - : m_task( rhs.m_task ) { rhs.m_task = 0 ; } - - KOKKOS_INLINE_FUNCTION - Future( const Future & rhs ) - : m_task(0) - { if ( rhs.m_task ) queue_type::assign( & m_task , rhs.m_task ); } - - KOKKOS_INLINE_FUNCTION - Future & operator = ( Future && rhs ) - { - clear(); - m_task = rhs.m_task ; - rhs.m_task = 0 ; - return *this ; - } - - KOKKOS_INLINE_FUNCTION - Future & operator = ( const Future & rhs ) - { - if ( m_task || rhs.m_task ) queue_type::assign( & m_task , rhs.m_task ); - return *this ; - } + team_scheduler_type get_team_scheduler(int team_rank) const { + return { m_track, &m_queue->get_team_queue(team_rank) }; + } //---------------------------------------- - template< class A1 , class A2 > - KOKKOS_INLINE_FUNCTION - Future( Future && rhs ) - : m_task( rhs.m_task ) - { - static_assert - ( std::is_same< Space , void >::value || - std::is_same< Space , typename Future::Space >::value - , "Assigned Futures must have the same space" ); - - static_assert - ( std::is_same< value_type , void >::value || - std::is_same< value_type , typename Future::value_type >::value - , "Assigned Futures must have the same value_type" ); - - rhs.m_task = 0 ; - } - - template< class A1 , class A2 > KOKKOS_INLINE_FUNCTION - Future( const Future & rhs ) - : m_task(0) - { - static_assert - ( std::is_same< Space , void >::value || - std::is_same< Space , typename Future::Space >::value - , "Assigned Futures must have the same space" ); - - static_assert - ( std::is_same< value_type , void >::value || - std::is_same< value_type , typename Future::value_type >::value - , "Assigned Futures must have the same value_type" ); - - if ( rhs.m_task ) queue_type::assign( & m_task , rhs.m_task ); - } - - template< class A1 , class A2 > - KOKKOS_INLINE_FUNCTION - Future & operator = ( const Future & rhs ) - { - static_assert - ( std::is_same< Space , void >::value || - std::is_same< Space , typename Future::Space >::value - , "Assigned Futures must have the same space" ); - - static_assert - ( std::is_same< value_type , void >::value || - std::is_same< value_type , typename Future::value_type >::value - , "Assigned Futures must have the same value_type" ); - - if ( m_task || rhs.m_task ) queue_type::assign( & m_task , rhs.m_task ); - return *this ; - } - - template< class A1 , class A2 > - KOKKOS_INLINE_FUNCTION - Future & operator = ( Future && rhs ) - { - static_assert - ( std::is_same< Space , void >::value || - std::is_same< Space , typename Future::Space >::value - , "Assigned Futures must have the same space" ); - - static_assert - ( std::is_same< value_type , void >::value || - std::is_same< value_type , typename Future::value_type >::value - , "Assigned Futures must have the same value_type" ); - - clear(); - m_task = rhs.m_task ; - rhs.m_task = 0 ; - return *this ; - } - - //---------------------------------------- + static constexpr task_base* _get_task_ptr(std::nullptr_t) { return nullptr; } + template KOKKOS_INLINE_FUNCTION - int is_ready() const noexcept - { return ( 0 == m_task ) || ( ((task_base*) task_base::LockTag) == m_task->m_wait ); } + static constexpr task_base* _get_task_ptr(future_type&& f) + { + return f.m_task; + } - KOKKOS_INLINE_FUNCTION - const typename Impl::TaskResult< ValueType >::reference_type - get() const - { - if ( 0 == m_task ) { - Kokkos::abort( "Kokkos:::Future::get ERROR: is_null()"); - } - return Impl::TaskResult< ValueType >::get( m_task ); + template< int TaskEnum , typename DepTaskType , typename FunctorType > + KOKKOS_FUNCTION + Kokkos::BasicFuture + _spawn_impl( + DepTaskType* arg_predecessor_task, + TaskPriority arg_priority, + typename task_base::function_type arg_function, + typename task_base::destroy_type arg_destroy, + FunctorType&& arg_functor + ) + { + using functor_future_type = future_type_for_functor::type>; + using task_type = Impl::Task; + + //---------------------------------------- + // Give single-thread back-ends an opportunity to clear + // queue of ready tasks before allocating a new task + + // TODO @tasking @optimization DSH re-enable this, maybe? + // specialization::iff_single_thread_recursive_execute(scheduler); + + //---------------------------------------- + + functor_future_type f ; + + // Allocate task from memory pool + + const size_t alloc_size = + m_queue->template spawn_allocation_size< FunctorType >(); + + void* task_storage = m_queue->allocate(alloc_size); + + if (task_storage) { + + // Placement new construction + // Reference count starts at two: + // +1 for the matching decrement when task is complete + // +1 for the future + f.m_task = new (task_storage) task_type( std::forward(arg_functor) ); + + f.m_task->m_apply = arg_function; + //f.m_task->m_destroy = arg_destroy; + f.m_task->m_queue = m_queue; + f.m_task->m_next = arg_predecessor_task; + f.m_task->m_ref_count = 2; + f.m_task->m_alloc_size = alloc_size; + f.m_task->m_task_type = TaskEnum; + f.m_task->m_priority = (int16_t)arg_priority; + + Kokkos::memory_fence(); + + // The dependence (if any) is processed immediately + // within the schedule function, as such the dependence's + // reference count does not need to be incremented for + // the assignment. + + m_queue->schedule_runnable( f.m_task ); + // This task may be updated or executed at any moment, + // even during the call to 'schedule'. } -}; -// Is a Future with the given execution space -template< typename , typename ExecSpace = void > -struct is_future : public std::false_type {}; - -template< typename Arg1 , typename Arg2 , typename ExecSpace > -struct is_future< Future , ExecSpace > - : public std::integral_constant - < bool , - ( std::is_same< ExecSpace , void >::value || - std::is_same< ExecSpace - , typename Future::execution_space >::value ) - > {}; - -} // namespace Kokkos - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- + return f; -namespace Kokkos { - -enum class TaskPriority : int { High = 0 - , Regular = 1 - , Low = 2 }; - -} // namespace Kokkos - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Impl { - -//---------------------------------------------------------------------------- - -template< int TaskEnum , typename DepFutureType > -struct TaskPolicyData -{ - using execution_space = typename DepFutureType::execution_space ; - using scheduler_type = TaskScheduler< execution_space > ; - - enum : int { m_task_type = TaskEnum }; - - scheduler_type const * m_scheduler ; - DepFutureType const m_dependence ; - int m_priority ; - - TaskPolicyData() = delete ; - TaskPolicyData( TaskPolicyData && ) = default ; - TaskPolicyData( TaskPolicyData const & ) = default ; - TaskPolicyData & operator = ( TaskPolicyData && ) = default ; - TaskPolicyData & operator = ( TaskPolicyData const & ) = default ; - - KOKKOS_INLINE_FUNCTION - TaskPolicyData( DepFutureType const & arg_future - , Kokkos::TaskPriority const & arg_priority ) - : m_scheduler( 0 ) - , m_dependence( arg_future ) - , m_priority( static_cast( arg_priority ) ) - {} - - KOKKOS_INLINE_FUNCTION - TaskPolicyData( scheduler_type const & arg_scheduler - , Kokkos::TaskPriority const & arg_priority ) - : m_scheduler( & arg_scheduler ) - , m_dependence() - , m_priority( static_cast( arg_priority ) ) - {} - - KOKKOS_INLINE_FUNCTION - TaskPolicyData( scheduler_type const & arg_scheduler - , DepFutureType const & arg_future - , Kokkos::TaskPriority const & arg_priority ) - : m_scheduler( & arg_scheduler ) - , m_dependence( arg_future ) - , m_priority( static_cast( arg_priority ) ) - {} -}; - -} // namespace Impl -} // namespace Kokkos - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { - -template< typename ExecSpace > -class TaskScheduler -{ -private: - - using track_type = Kokkos::Impl::SharedAllocationTracker ; - using queue_type = Kokkos::Impl::TaskQueue< ExecSpace > ; - using task_base = Impl::TaskBase< void , void , void > ; - - track_type m_track ; - queue_type * m_queue ; - - //---------------------------------------- + } public: - using execution_space = ExecSpace ; - using memory_space = typename queue_type::memory_space ; - using memory_pool = typename queue_type::memory_pool ; - using member_type = - typename Kokkos::Impl::TaskQueueSpecialization< ExecSpace >::member_type ; KOKKOS_INLINE_FUNCTION - TaskScheduler() : m_track(), m_queue(0) {} + BasicTaskScheduler() : m_track(), m_queue(0) {} KOKKOS_INLINE_FUNCTION - TaskScheduler( TaskScheduler && rhs ) - : m_track( rhs.m_track ), m_queue( rhs.m_queue ) {} + BasicTaskScheduler( BasicTaskScheduler && rhs ) noexcept + : m_track(rhs.m_track), // probably should be a move, but this is deprecated code anyway + m_queue(std::move(rhs.m_queue)) + { } KOKKOS_INLINE_FUNCTION - TaskScheduler( TaskScheduler const & rhs ) - : m_track( rhs.m_track ), m_queue( rhs.m_queue ) {} + BasicTaskScheduler( BasicTaskScheduler const & rhs ) + : m_track(rhs.m_track), + m_queue(rhs.m_queue) + { } KOKKOS_INLINE_FUNCTION - TaskScheduler & operator = ( TaskScheduler && rhs ) - { m_track = rhs.m_track ; m_queue = rhs.m_queue ; return *this ; } + BasicTaskScheduler& operator=(BasicTaskScheduler&& rhs) noexcept + { + m_track = rhs.m_track; // probably should be a move, but this is deprecated code anyway + m_queue = std::move(rhs.m_queue); + return *this; + } KOKKOS_INLINE_FUNCTION - TaskScheduler & operator = ( TaskScheduler const & rhs ) - { m_track = rhs.m_track ; m_queue = rhs.m_queue ; return *this ; } - - TaskScheduler( memory_pool const & arg_memory_pool ) - : m_track() - , m_queue(0) + BasicTaskScheduler& operator=(BasicTaskScheduler const& rhs) + { + m_track = rhs.m_track; + m_queue = rhs.m_queue; + return *this; + } + + explicit BasicTaskScheduler(memory_pool const & arg_memory_pool) noexcept + : m_track(), m_queue(0) { typedef Kokkos::Impl::SharedAllocationRecord < memory_space , typename queue_type::Destroy > @@ -455,13 +265,13 @@ public: m_track.assign_allocated_record_to_uninitialized( record ); } - TaskScheduler( memory_space const & arg_memory_space + BasicTaskScheduler( memory_space const & arg_memory_space , size_t const mempool_capacity , unsigned const mempool_min_block_size // = 1u << 6 , unsigned const mempool_max_block_size // = 1u << 10 , unsigned const mempool_superblock_size // = 1u << 12 ) - : TaskScheduler( memory_pool( arg_memory_space + : BasicTaskScheduler( memory_pool( arg_memory_space , mempool_capacity , mempool_min_block_size , mempool_max_block_size @@ -470,6 +280,12 @@ public: //---------------------------------------- + KOKKOS_INLINE_FUNCTION + queue_type& queue() const noexcept { + KOKKOS_EXPECTS(m_queue != nullptr); + return *m_queue; + } + KOKKOS_INLINE_FUNCTION memory_pool * memory() const noexcept { return m_queue ? &( m_queue->m_memory ) : (memory_pool*) 0 ; } @@ -486,216 +302,173 @@ public: size_t when_all_allocation_size( int narg ) const { return m_queue->when_all_allocation_size( narg ); } + //---------------------------------------- - template< int TaskEnum , typename DepFutureType , typename FunctorType > + template KOKKOS_FUNCTION static - Kokkos::Future< typename FunctorType::value_type , execution_space > - spawn( Impl::TaskPolicyData const & arg_policy - , typename task_base::function_type arg_function - , FunctorType && arg_functor - ) - { - using value_type = typename FunctorType::value_type ; - using future_type = Future< value_type , execution_space > ; - using task_type = Impl::TaskBase< execution_space - , value_type - , FunctorType > ; - - queue_type * const queue = - arg_policy.m_scheduler ? arg_policy.m_scheduler->m_queue : ( - arg_policy.m_dependence.m_task - ? static_cast(arg_policy.m_dependence.m_task->m_queue) - : (queue_type*) 0 ); - - if ( 0 == queue ) { - Kokkos::abort("Kokkos spawn requires scheduler or non-null Future"); - } - - if ( arg_policy.m_dependence.m_task != 0 && - arg_policy.m_dependence.m_task->m_queue != queue ) { - Kokkos::abort("Kokkos spawn given incompatible scheduler and Future"); - } - - //---------------------------------------- - // Give single-thread back-ends an opportunity to clear - // queue of ready tasks before allocating a new task - - queue->iff_single_thread_recursive_execute(); - - //---------------------------------------- - - future_type f ; - - // Allocate task from memory pool - - const size_t alloc_size = - queue->template spawn_allocation_size< FunctorType >(); - - f.m_task = - reinterpret_cast< task_type * >(queue->allocate(alloc_size) ); - - if ( f.m_task ) { - - // Placement new construction - // Reference count starts at two: - // +1 for the matching decrement when task is complete - // +1 for the future - new ( f.m_task ) task_type( std::move(arg_functor) ); - - f.m_task->m_apply = arg_function ; - f.m_task->m_queue = queue ; - f.m_task->m_next = arg_policy.m_dependence.m_task ; - f.m_task->m_ref_count = 2 ; - f.m_task->m_alloc_size = alloc_size ; - f.m_task->m_task_type = arg_policy.m_task_type ; - f.m_task->m_priority = arg_policy.m_priority ; - - Kokkos::memory_fence(); - - // The dependence (if any) is processed immediately - // within the schedule function, as such the dependence's - // reference count does not need to be incremented for - // the assignment. - - queue->schedule_runnable( f.m_task ); - // This task may be updated or executed at any moment, - // even during the call to 'schedule'. - } - - return f ; - } - - template< typename FunctorType , typename A1 , typename A2 > + Kokkos::BasicFuture + spawn( + Impl::TaskPolicyWithScheduler&& arg_policy, + typename task_base::function_type arg_function, + typename task_base::destroy_type arg_destroy, + FunctorType&& arg_functor + ) + { + return std::move(arg_policy.scheduler()).template _spawn_impl( + _get_task_ptr(std::move(arg_policy.predecessor())), + arg_policy.priority(), + arg_function, + arg_destroy, + std::forward(arg_functor) + ); + } + + template + KOKKOS_FUNCTION + future_type_for_functor::type> + spawn( + Impl::TaskPolicyWithPredecessor&& arg_policy, + FunctorType&& arg_functor + ) + { + using task_type = runnable_task_type; + typename task_type::function_type const ptr = task_type::apply; + typename task_type::destroy_type const dtor = task_type::destroy; + + return _spawn_impl( + _get_task_ptr(std::move(arg_policy).predecessor()), + arg_policy.priority(), + ptr, dtor, + std::forward(arg_functor) + ); + } + + template KOKKOS_FUNCTION static void - respawn( FunctorType * arg_self - , Future const & arg_dependence - , TaskPriority const & arg_priority - ) - { - // Precondition: task is in Executing state + respawn( + FunctorType* arg_self, + BasicFuture const & arg_dependence, + TaskPriority const & arg_priority + ) { + // Precondition: task is in Executing state - using value_type = typename FunctorType::value_type ; - using task_type = Impl::TaskBase< execution_space - , value_type - , FunctorType > ; + using value_type = typename FunctorType::value_type ; + using task_type = Impl::Task; - task_type * const task = static_cast< task_type * >( arg_self ); + task_type * const task = static_cast< task_type * >( arg_self ); - task->m_priority = static_cast(arg_priority); + task->m_priority = static_cast(arg_priority); - task->add_dependence( arg_dependence.m_task ); + task->add_dependence( arg_dependence.m_task ); - // Postcondition: task is in Executing-Respawn state - } + // Postcondition: task is in Executing-Respawn state + } template< typename FunctorType > KOKKOS_FUNCTION static void - respawn( FunctorType * arg_self - , TaskScheduler const & - , TaskPriority const & arg_priority - ) - { - // Precondition: task is in Executing state + respawn( + FunctorType* arg_self, + BasicTaskScheduler const &, + TaskPriority const & arg_priority + ) + { + // Precondition: task is in Executing state - using value_type = typename FunctorType::value_type ; - using task_type = Impl::TaskBase< execution_space - , value_type - , FunctorType > ; + using value_type = typename FunctorType::value_type; + using task_type = Impl::Task; - task_type * const task = static_cast< task_type * >( arg_self ); + task_type * const task = static_cast< task_type * >( arg_self ); - task->m_priority = static_cast(arg_priority); + task->m_priority = static_cast(arg_priority); - task->add_dependence( (task_base*) 0 ); + task->add_dependence( (task_base*) 0 ); - // Postcondition: task is in Executing-Respawn state - } + // Postcondition: task is in Executing-Respawn state + } //---------------------------------------- /**\brief Return a future that is complete * when all input futures are complete. */ - template< typename A1 , typename A2 > - KOKKOS_FUNCTION static - Future< execution_space > - when_all( Future< A1 , A2 > const arg[] , int narg ) - { - using future_type = Future< execution_space > ; + template + KOKKOS_FUNCTION + BasicFuture< void, scheduler_type > + when_all(BasicFuture const arg[], int narg) + { - future_type f ; + future_type f ; - if ( narg ) { + if ( narg ) { - queue_type * queue = 0 ; + queue_type* q = m_queue; - for ( int i = 0 ; i < narg ; ++i ) { - task_base * const t = arg[i].m_task ; - if ( 0 != t ) { - // Increment reference count to track subsequent assignment. - Kokkos::atomic_increment( &(t->m_ref_count) ); - if ( queue == 0 ) { - queue = static_cast< queue_type * >( t->m_queue ); - } - else if ( queue != static_cast< queue_type * >( t->m_queue ) ) { - Kokkos::abort("Kokkos when_all Futures must be in the same scheduler" ); - } + //BasicTaskScheduler const* scheduler_ptr = nullptr; + + for ( int i = 0 ; i < narg ; ++i ) { + task_base * const t = arg[i].m_task ; + if ( nullptr != t ) { + // Increment reference count to track subsequent assignment. + Kokkos::atomic_increment( &(t->m_ref_count) ); + if(q != static_cast< queue_type const* >(t->m_queue)) { + Kokkos::abort("Kokkos when_all Futures must be in the same scheduler" ); } } + } - if ( queue != 0 ) { + if ( q != 0 ) { // this should probably handle the queue == 0 case, but this is deprecated code anyway - size_t const alloc_size = queue->when_all_allocation_size( narg ); + size_t const alloc_size = q->when_all_allocation_size( narg ); - f.m_task = - reinterpret_cast< task_base * >( queue->allocate( alloc_size ) ); + f.m_task = + reinterpret_cast< task_base * >( q->allocate( alloc_size ) ); + //f.m_scheduler = *scheduler_ptr; - if ( f.m_task ) { + if ( f.m_task ) { - // Reference count starts at two: - // +1 to match decrement when task completes - // +1 for the future + // Reference count starts at two: + // +1 to match decrement when task completes + // +1 for the future - new( f.m_task ) task_base(); + new( f.m_task ) task_base(); - f.m_task->m_queue = queue ; - f.m_task->m_ref_count = 2 ; - f.m_task->m_alloc_size = alloc_size ; - f.m_task->m_dep_count = narg ; - f.m_task->m_task_type = task_base::Aggregate ; + f.m_task->m_queue = q; + f.m_task->m_ref_count = 2 ; + f.m_task->m_alloc_size = static_cast(alloc_size); + f.m_task->m_dep_count = narg ; + f.m_task->m_task_type = task_base::Aggregate ; - // Assign dependences, reference counts were already incremented + // Assign dependences, reference counts were already incremented - task_base * volatile * const dep = - f.m_task->aggregate_dependences(); + task_base * volatile * const dep = + f.m_task->aggregate_dependences(); - for ( int i = 0 ; i < narg ; ++i ) { dep[i] = arg[i].m_task ; } + for ( int i = 0 ; i < narg ; ++i ) { dep[i] = arg[i].m_task ; } - Kokkos::memory_fence(); + Kokkos::memory_fence(); - queue->schedule_aggregate( f.m_task ); - // this when_all may be processed at any moment - } + q->schedule_aggregate( f.m_task ); + // this when_all may be processed at any moment } } - - return f ; } + return f ; + } + template < class F > KOKKOS_FUNCTION - Future< execution_space > + BasicFuture< void, scheduler_type > when_all( int narg , F const func ) { using input_type = decltype( func(0) ); - using future_type = Future< execution_space > ; static_assert( is_future< input_type >::value , "Functor must return a Kokkos::Future" ); - future_type f ; + future_type f ; if ( 0 == narg ) return f ; @@ -711,12 +484,16 @@ public: // +1 for the future new( f.m_task ) task_base(); + //f.m_scheduler = *this; - f.m_task->m_queue = m_queue ; - f.m_task->m_ref_count = 2 ; - f.m_task->m_alloc_size = alloc_size ; - f.m_task->m_dep_count = narg ; - f.m_task->m_task_type = task_base::Aggregate ; + //f.m_task->m_scheduler = &f.m_scheduler; + f.m_task->m_queue = m_queue; + f.m_task->m_ref_count = 2 ; + f.m_task->m_alloc_size = static_cast(alloc_size); + f.m_task->m_dep_count = narg ; + f.m_task->m_task_type = task_base::Aggregate ; + //f.m_task->m_apply = nullptr; + //f.m_task->m_destroy = nullptr; // Assign dependences, reference counts were already incremented @@ -727,9 +504,10 @@ public: const input_type arg_f = func(i); if ( 0 != arg_f.m_task ) { - if ( m_queue != static_cast< queue_type * >( arg_f.m_task->m_queue ) ) { - Kokkos::abort("Kokkos when_all Futures must be in the same scheduler" ); - } + // Not scheduled, so task scheduler is not yet set + //if ( m_queue != static_cast< BasicTaskScheduler const * >( arg_f.m_task->m_scheduler )->m_queue ) { + // Kokkos::abort("Kokkos when_all Futures must be in the same scheduler" ); + //} // Increment reference count to track subsequent assignment. Kokkos::atomic_increment( &(arg_f.m_task->m_ref_count) ); dep[i] = arg_f.m_task ; @@ -764,9 +542,9 @@ public: //---------------------------------------- - template< typename S > + template friend - void Kokkos::wait( Kokkos::TaskScheduler< S > const & ); + void wait(Kokkos::BasicTaskScheduler const&); }; @@ -780,84 +558,122 @@ namespace Kokkos { //---------------------------------------------------------------------------- // Construct a TaskTeam execution policy -template< typename T > -Kokkos::Impl::TaskPolicyData - < Kokkos::Impl::TaskBase::TaskTeam - , typename std::conditional< Kokkos::is_future< T >::value , T , - typename Kokkos::Future< typename T::execution_space > >::type - > +template +Impl::TaskPolicyWithPredecessor< + Impl::TaskType::TaskTeam, + Kokkos::BasicFuture +> KOKKOS_INLINE_FUNCTION -TaskTeam( T const & arg - , TaskPriority const & arg_priority = TaskPriority::Regular - ) +TaskTeam( + Kokkos::BasicFuture arg_future, + TaskPriority arg_priority = TaskPriority::Regular +) { - static_assert( Kokkos::is_future::value || - Kokkos::is_scheduler::value - , "Kokkos TaskTeam argument must be Future or TaskScheduler" ); - - return - Kokkos::Impl::TaskPolicyData - < Kokkos::Impl::TaskBase::TaskTeam - , typename std::conditional< Kokkos::is_future< T >::value , T , - typename Kokkos::Future< typename T::execution_space > >::type - >( arg , arg_priority ); + return { std::move(arg_future), arg_priority }; } -template< typename E , typename F > -Kokkos::Impl:: - TaskPolicyData< Kokkos::Impl::TaskBase::TaskTeam , F > +template +Impl::TaskPolicyWithScheduler< + Impl::TaskType::TaskTeam, Scheduler +> KOKKOS_INLINE_FUNCTION -TaskTeam( TaskScheduler const & arg_scheduler - , F const & arg_future - , typename std::enable_if< Kokkos::is_future::value , - TaskPriority >::type const & arg_priority = TaskPriority::Regular - ) +TaskTeam( + Scheduler arg_scheduler, + typename std::enable_if< + Kokkos::is_scheduler::value, + TaskPriority + >::type arg_priority = TaskPriority::Regular +) { - return - Kokkos::Impl::TaskPolicyData - < Kokkos::Impl::TaskBase::TaskTeam , F > - ( arg_scheduler , arg_future , arg_priority ); + return { std::move(arg_scheduler), arg_priority }; +} + +template< + class Scheduler, + class PredecessorFuture +> +Impl::TaskPolicyWithScheduler< + Kokkos::Impl::TaskType::TaskTeam, + Scheduler, + PredecessorFuture +> +KOKKOS_INLINE_FUNCTION +TaskTeam( + Scheduler arg_scheduler, + PredecessorFuture arg_future, + typename std::enable_if< + Kokkos::is_scheduler::value + && Kokkos::is_future::value, + TaskPriority + >::type arg_priority = TaskPriority::Regular +) +{ + static_assert( + std::is_same::value, + "Can't create a task policy from a scheduler and a future from a different scheduler" + ); + + return { std::move(arg_scheduler), std::move(arg_future), arg_priority }; } // Construct a TaskSingle execution policy -template< typename T > -Kokkos::Impl::TaskPolicyData - < Kokkos::Impl::TaskBase::TaskSingle - , typename std::conditional< Kokkos::is_future< T >::value , T , - typename Kokkos::Future< typename T::execution_space > >::type - > +template +Impl::TaskPolicyWithPredecessor< + Impl::TaskType::TaskSingle, + Kokkos::BasicFuture +> KOKKOS_INLINE_FUNCTION -TaskSingle( T const & arg - , TaskPriority const & arg_priority = TaskPriority::Regular - ) +TaskSingle( + Kokkos::BasicFuture arg_future, + TaskPriority arg_priority = TaskPriority::Regular +) { - static_assert( Kokkos::is_future::value || - Kokkos::is_scheduler::value - , "Kokkos TaskSingle argument must be Future or TaskScheduler" ); - - return - Kokkos::Impl::TaskPolicyData - < Kokkos::Impl::TaskBase::TaskSingle - , typename std::conditional< Kokkos::is_future< T >::value , T , - typename Kokkos::Future< typename T::execution_space > >::type - >( arg , arg_priority ); + return { std::move(arg_future), arg_priority }; } -template< typename E , typename F > -Kokkos::Impl:: - TaskPolicyData< Kokkos::Impl::TaskBase::TaskSingle , F > +template +Impl::TaskPolicyWithScheduler< + Impl::TaskType::TaskSingle, Scheduler +> KOKKOS_INLINE_FUNCTION -TaskSingle( TaskScheduler const & arg_scheduler - , F const & arg_future - , typename std::enable_if< Kokkos::is_future::value , - TaskPriority >::type const & arg_priority = TaskPriority::Regular - ) +TaskSingle( + Scheduler arg_scheduler, + typename std::enable_if< + Kokkos::is_scheduler::value, + TaskPriority + >::type arg_priority = TaskPriority::Regular +) { - return - Kokkos::Impl::TaskPolicyData - < Kokkos::Impl::TaskBase::TaskSingle , F > - ( arg_scheduler , arg_future , arg_priority ); + return { std::move(arg_scheduler), arg_priority }; +} + +template< + class Scheduler, + class PredecessorFuture +> +Impl::TaskPolicyWithScheduler< + Kokkos::Impl::TaskType::TaskSingle, + Scheduler, + PredecessorFuture +> +KOKKOS_INLINE_FUNCTION +TaskSingle( + Scheduler arg_scheduler, + PredecessorFuture arg_future, + typename std::enable_if< + Kokkos::is_scheduler::value + && Kokkos::is_future::value, + TaskPriority + >::type arg_priority = TaskPriority::Regular +) +{ + static_assert( + std::is_same::value, + "Can't create a task policy from a scheduler and a future from a different scheduler" + ); + + return { std::move(arg_scheduler), std::move(arg_future), arg_priority }; } //---------------------------------------------------------------------------- @@ -868,34 +684,31 @@ TaskSingle( TaskScheduler const & arg_scheduler * 2) With scheduler or dependence * 3) High, Normal, or Low priority */ -template< int TaskEnum - , typename DepFutureType - , typename FunctorType > -Future< typename FunctorType::value_type - , typename DepFutureType::execution_space > -host_spawn( Impl::TaskPolicyData const & arg_policy - , FunctorType && arg_functor - ) -{ - using exec_space = typename DepFutureType::execution_space ; - using scheduler = TaskScheduler< exec_space > ; - - typedef Impl::TaskBase< exec_space - , typename FunctorType::value_type - , FunctorType - > task_type ; - - static_assert( TaskEnum == task_type::TaskTeam || - TaskEnum == task_type::TaskSingle - , "Kokkos host_spawn requires TaskTeam or TaskSingle" ); +template +typename Scheduler::template future_type_for_functor::type> +host_spawn( + Impl::TaskPolicyWithScheduler arg_policy, + FunctorType&& arg_functor +) { + using scheduler_type = Scheduler; + using task_type = + typename scheduler_type::template runnable_task_type; + + static_assert( + TaskEnum == Impl::TaskType::TaskTeam || TaskEnum == Impl::TaskType::TaskSingle, + "Kokkos host_spawn requires TaskTeam or TaskSingle" + ); // May be spawning a Cuda task, must use the specialization // to query on-device function pointer. - typename task_type::function_type const ptr = - Kokkos::Impl::TaskQueueSpecialization< exec_space >:: - template get_function_pointer< task_type >(); - - return scheduler::spawn( arg_policy , ptr , std::move(arg_functor) ); + typename task_type::function_type ptr; + typename task_type::destroy_type dtor; + Kokkos::Impl::TaskQueueSpecialization< scheduler_type >:: + template get_function_pointer< task_type >(ptr, dtor); + + return scheduler_type::spawn( + std::move(arg_policy), ptr, dtor, std::forward(arg_functor) + ); } /**\brief A task spawns a task with options @@ -904,39 +717,38 @@ host_spawn( Impl::TaskPolicyData const & arg_policy * 2) With scheduler or dependence * 3) High, Normal, or Low priority */ -template< int TaskEnum - , typename DepFutureType - , typename FunctorType > -Future< typename FunctorType::value_type - , typename DepFutureType::execution_space > +template +typename Scheduler::template future_type_for_functor::type> KOKKOS_INLINE_FUNCTION -task_spawn( Impl::TaskPolicyData const & arg_policy - , FunctorType && arg_functor - ) +task_spawn( + Impl::TaskPolicyWithScheduler arg_policy, + FunctorType&& arg_functor +) { - using exec_space = typename DepFutureType::execution_space ; - using scheduler = TaskScheduler< exec_space > ; + using scheduler_type = Scheduler; - typedef Impl::TaskBase< exec_space - , typename FunctorType::value_type - , FunctorType - > task_type ; + using task_type = + typename scheduler_type::template runnable_task_type; -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) && \ - defined( KOKKOS_ENABLE_CUDA ) + #if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) && \ + defined( KOKKOS_ENABLE_CUDA ) - static_assert( ! std::is_same< Kokkos::Cuda , exec_space >::value - , "Error calling Kokkos::task_spawn for Cuda space within Host code" ); + static_assert( ! std::is_same< Kokkos::Cuda , typename Scheduler::execution_space >::value + , "Error calling Kokkos::task_spawn for Cuda space within Host code" ); -#endif + #endif - static_assert( TaskEnum == task_type::TaskTeam || - TaskEnum == task_type::TaskSingle - , "Kokkos host_spawn requires TaskTeam or TaskSingle" ); + static_assert( + TaskEnum == Impl::TaskType::TaskTeam || TaskEnum == Impl::TaskType::TaskSingle, + "Kokkos task_spawn requires TaskTeam or TaskSingle" + ); typename task_type::function_type const ptr = task_type::apply ; + typename task_type::destroy_type const dtor = task_type::destroy ; - return scheduler::spawn( arg_policy , ptr , std::move(arg_functor) ); + return scheduler_type::spawn(std::move(arg_policy), ptr, dtor, + std::forward(arg_functor) + ); } /**\brief A task respawns itself with options @@ -956,36 +768,42 @@ respawn( FunctorType * arg_self Kokkos::is_scheduler::value , "Kokkos respawn argument must be Future or TaskScheduler" ); - TaskScheduler< typename T::execution_space >:: - respawn( arg_self , arg , arg_priority ); + T::scheduler_type::respawn( + arg_self , arg , arg_priority + ); } //---------------------------------------------------------------------------- -template< typename A1 , typename A2 > -KOKKOS_INLINE_FUNCTION -Future< typename Future< A1 , A2 >::execution_space > -when_all( Future< A1 , A2 > const arg[] - , int narg - ) -{ - return TaskScheduler< typename Future::execution_space >:: - when_all( arg , narg ); -} +//template +//KOKKOS_INLINE_FUNCTION +//BasicFuture +//when_all(BasicFuture const arg[], int narg) +//{ +// return BasicFuture::scheduler_type::when_all(arg, narg); +//} //---------------------------------------------------------------------------- // Wait for all runnable tasks to complete -template< typename ExecSpace > +template inline -void wait( TaskScheduler< ExecSpace > const & scheduler ) -{ scheduler.m_queue->execute(); } +void wait(BasicTaskScheduler const& scheduler) +{ + using scheduler_type = BasicTaskScheduler; + scheduler_type::specialization::execute(scheduler); + //scheduler.m_queue->execute(); +} } // namespace Kokkos //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- +//////////////////////////////////////////////////////////////////////////////// +// END OLD CODE +//////////////////////////////////////////////////////////////////////////////// + #endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ #endif /* #ifndef KOKKOS_TASKSCHEDULER_HPP */ diff --git a/lib/kokkos/core/src/Kokkos_TaskScheduler_fwd.hpp b/lib/kokkos/core/src/Kokkos_TaskScheduler_fwd.hpp new file mode 100644 index 0000000000..79d502c729 --- /dev/null +++ b/lib/kokkos/core/src/Kokkos_TaskScheduler_fwd.hpp @@ -0,0 +1,249 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_TASKSCHEDULER_FWD_HPP +#define KOKKOS_TASKSCHEDULER_FWD_HPP + +//---------------------------------------------------------------------------- + +#include +#if defined( KOKKOS_ENABLE_TASKDAG ) + +#include +//---------------------------------------------------------------------------- + +namespace Kokkos { + +// Forward declarations used in Impl::TaskQueue + +template +class BasicFuture; + +template +class SimpleTaskScheduler; + +template +class BasicTaskScheduler; + +template< typename Space > +struct is_scheduler : public std::false_type {}; + +template +struct is_scheduler> : public std::true_type {}; + +template +struct is_scheduler> : public std::true_type {}; + +enum class TaskPriority : int { + High = 0, + Regular = 1, + Low = 2 +}; + +} // namespace Kokkos + +//---------------------------------------------------------------------------- + +namespace Kokkos { + +template +class MemoryPool; + +namespace Impl { + +template +class TaskNode; + +class TaskBase; + +/*\brief Implementation data for task data management, access, and execution. + * (Deprecated) + * CRTP Inheritance structure to allow static_cast from the + * task root type and a task's FunctorType. + * + * TaskBase< Space , ResultType , FunctorType > + * : TaskBase< Space , ResultType , void > + * , FunctorType + * { ... }; + * + * TaskBase< Space , ResultType , void > + * : TaskBase< Space , void , void > + * { ... }; + */ +template< typename Space , typename ResultType , typename FunctorType > +class Task; + +class TaskQueueBase; + +template< typename Space, typename MemorySpace> +class TaskQueue; + +template< typename ExecSpace, typename MemorySpace> +class TaskQueueMultiple; + +template< + typename ExecSpace, typename MemSpace, typename TaskQueueTraits, + class MemoryPool = Kokkos::MemoryPool> +> +class SingleTaskQueue; + +template< typename ExecSpace, typename MemSpace, typename TaskQueueTraits, class MemoryPool> +class MultipleTaskQueue; + +struct TaskQueueTraitsLockBased; + +template +struct TaskQueueTraitsChaseLev; + +template< typename ResultType > +struct TaskResult; + +struct TaskSchedulerBase; + +template +struct default_tasking_memory_space_for_execution_space +{ + using type = typename ExecSpace::memory_space; +}; + +#if defined( KOKKOS_ENABLE_CUDA ) +template <> +struct default_tasking_memory_space_for_execution_space +{ + using type = Kokkos::CudaUVMSpace; +}; +#endif + +template +using default_tasking_memory_space_for_execution_space_t = + typename default_tasking_memory_space_for_execution_space::type; + +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- + +namespace Kokkos { + +template< typename Space > +using DeprecatedTaskScheduler = BasicTaskScheduler< + Space, + Impl::TaskQueue> +>; + +template< typename Space > +using DeprecatedTaskSchedulerMultiple = BasicTaskScheduler< + Space, + Impl::TaskQueueMultiple> +>; + +template< typename Space > +using TaskScheduler = SimpleTaskScheduler< + Space, + Impl::SingleTaskQueue< + Space, + Impl::default_tasking_memory_space_for_execution_space_t, + Impl::TaskQueueTraitsLockBased + > +>; + +template< typename Space > +using TaskSchedulerMultiple = SimpleTaskScheduler< + Space, + Impl::MultipleTaskQueue< + Space, + Impl::default_tasking_memory_space_for_execution_space_t, + Impl::TaskQueueTraitsLockBased, + Kokkos::MemoryPool< + Kokkos::Device< + Space, + Impl::default_tasking_memory_space_for_execution_space_t + > + > + > +>; + +template< typename Space > +using ChaseLevTaskScheduler = SimpleTaskScheduler< + Space, + Impl::MultipleTaskQueue< + Space, + Impl::default_tasking_memory_space_for_execution_space_t, + Impl::TaskQueueTraitsChaseLev<>, + Kokkos::MemoryPool< + Kokkos::Device< + Space, + Impl::default_tasking_memory_space_for_execution_space_t + > + > + > +>; + +template +void wait(BasicTaskScheduler const&); + +namespace Impl { + +struct TaskSchedulerBase { }; + +class TaskQueueBase { }; + +template +class TaskQueueSpecializationConstrained { }; + +template +struct TaskQueueSpecialization : TaskQueueSpecializationConstrained { }; + +template +struct TaskPolicyData; + + +} // end namespace Impl + +} // namespace Kokkos + +//---------------------------------------------------------------------------- + +#endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ +#endif /* #ifndef KOKKOS_TASKSCHEDULER_FWD_HPP */ + diff --git a/lib/kokkos/core/src/Kokkos_Threads.hpp b/lib/kokkos/core/src/Kokkos_Threads.hpp index d5e684e4ea..03dab1acaf 100644 --- a/lib/kokkos/core/src/Kokkos_Threads.hpp +++ b/lib/kokkos/core/src/Kokkos_Threads.hpp @@ -105,7 +105,13 @@ public: /// return asynchronously, before the functor completes. This /// method does not return until all dispatched functors on this /// device have completed. + static void impl_static_fence(); + + #ifdef KOKKOS_ENABLE_DEPRECATED_CODE static void fence(); + #else + void fence() const; + #endif /** \brief Return the maximum amount of concurrency. */ static int concurrency(); diff --git a/lib/kokkos/core/src/Kokkos_View.hpp b/lib/kokkos/core/src/Kokkos_View.hpp index 754a0ab8c0..3fe8e6f067 100644 --- a/lib/kokkos/core/src/Kokkos_View.hpp +++ b/lib/kokkos/core/src/Kokkos_View.hpp @@ -74,7 +74,11 @@ template< class DataType , class ArrayLayout struct ViewDataAnalysis ; template< class , class ... > -class ViewMapping { public: enum { is_assignable = false }; }; +class ViewMapping { + public: + enum { is_assignable_data_type = false }; + enum { is_assignable = false }; +}; @@ -97,6 +101,7 @@ std::size_t count_valid_integers(const IntType i0, } +#ifndef KOKKOS_ENABLE_DEPRECATED_CODE KOKKOS_INLINE_FUNCTION void runtime_check_rank_device(const size_t dyn_rank, const bool is_void_spec, @@ -109,8 +114,6 @@ void runtime_check_rank_device(const size_t dyn_rank, const size_t i6, const size_t i7 ){ -#ifndef KOKKOS_ENABLE_DEPRECATED_CODE - if ( is_void_spec ) { const size_t num_passed_args = count_valid_integers(i0, i1, i2, i3, i4, i5, i6, i7); @@ -121,10 +124,25 @@ void runtime_check_rank_device(const size_t dyn_rank, } } -#endif } +#else +KOKKOS_INLINE_FUNCTION +void runtime_check_rank_device(const size_t , + const bool , + const size_t , + const size_t , + const size_t , + const size_t , + const size_t , + const size_t , + const size_t , + const size_t ){ + +} +#endif #ifdef KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST +#ifndef KOKKOS_ENABLE_DEPRECATED_CODE KOKKOS_INLINE_FUNCTION void runtime_check_rank_host(const size_t dyn_rank, const bool is_void_spec, @@ -137,7 +155,6 @@ void runtime_check_rank_host(const size_t dyn_rank, const size_t i6, const size_t i7, const std::string & label ){ -#ifndef KOKKOS_ENABLE_DEPRECATED_CODE if ( is_void_spec ) { const size_t num_passed_args = count_valid_integers(i0, i1, i2, i3, @@ -150,8 +167,20 @@ void runtime_check_rank_host(const size_t dyn_rank, Kokkos::abort(message.c_str()) ; } } -#endif } +#else +KOKKOS_INLINE_FUNCTION +void runtime_check_rank_host(const size_t , + const bool , + const size_t , + const size_t , + const size_t , + const size_t , + const size_t , + const size_t , + const size_t , + const size_t , const std::string &){} +#endif #endif } /* namespace Impl */ @@ -362,8 +391,8 @@ public: typedef typename MemorySpace::size_type size_type ; enum { is_hostspace = std::is_same< MemorySpace , HostSpace >::value }; - enum { is_managed = MemoryTraits::Unmanaged == 0 }; - enum { is_random_access = MemoryTraits::RandomAccess == 1 }; + enum { is_managed = MemoryTraits::is_unmanaged == 0 }; + enum { is_random_access = MemoryTraits::is_random_access == 1 }; //------------------------------------ }; @@ -1965,7 +1994,10 @@ public: template< class RT , class ... RP > KOKKOS_INLINE_FUNCTION - View( const View & rhs ) + View( const View & rhs, + typename std::enable_if::traits , typename traits::specialize >::is_assignable_data_type>::type* = 0 + ) : m_track( rhs.m_track , traits::is_managed ) , m_map() { @@ -1977,7 +2009,9 @@ public: template< class RT , class ... RP > KOKKOS_INLINE_FUNCTION - View & operator = ( const View & rhs ) + typename std::enable_if::traits , typename traits::specialize >::is_assignable_data_type, + View>::type & operator = ( const View & rhs ) { typedef typename View::traits SrcTraits ; typedef Kokkos::Impl::ViewMapping< traits , SrcTraits , typename traits::specialize > Mapping ; @@ -1994,7 +2028,7 @@ public: template< class RT , class ... RP , class Arg0 , class ... Args > KOKKOS_INLINE_FUNCTION View( const View< RT , RP... > & src_view - , const Arg0 & arg0 , Args ... args ) + , const Arg0 arg0 , Args ... args ) : m_track( src_view.m_track , traits::is_managed ) , m_map() { @@ -2077,7 +2111,7 @@ public: } // Copy the input allocation properties with possibly defaulted properties - alloc_prop prop( arg_prop ); + alloc_prop prop_copy( arg_prop ); //------------------------------------------------------------ #if defined( KOKKOS_ENABLE_CUDA ) @@ -2087,18 +2121,18 @@ public: // Fence using the trait's executon space (which will be Kokkos::Cuda) // to avoid incomplete type errors from usng Kokkos::Cuda directly. if ( std::is_same< Kokkos::CudaUVMSpace , typename traits::device_type::memory_space >::value ) { - traits::device_type::memory_space::execution_space::fence(); + typename traits::device_type::memory_space::execution_space().fence(); } #endif //------------------------------------------------------------ Kokkos::Impl::SharedAllocationRecord<> * - record = m_map.allocate_shared( prop , arg_layout ); + record = m_map.allocate_shared( prop_copy , arg_layout ); //------------------------------------------------------------ #if defined( KOKKOS_ENABLE_CUDA ) if ( std::is_same< Kokkos::CudaUVMSpace , typename traits::device_type::memory_space >::value ) { - traits::device_type::memory_space::execution_space::fence(); + typename traits::device_type::memory_space::execution_space().fence(); } #endif //------------------------------------------------------------ diff --git a/lib/kokkos/core/src/Kokkos_WorkGraphPolicy.hpp b/lib/kokkos/core/src/Kokkos_WorkGraphPolicy.hpp index 33a0579df5..dd5e29a400 100644 --- a/lib/kokkos/core/src/Kokkos_WorkGraphPolicy.hpp +++ b/lib/kokkos/core/src/Kokkos_WorkGraphPolicy.hpp @@ -55,7 +55,7 @@ class WorkGraphExec; namespace Kokkos { template< class ... Properties > -class WorkGraphPolicy +class WorkGraphPolicy: public Kokkos::Impl::PolicyTraits { public: @@ -64,7 +64,6 @@ public: using traits = Kokkos::Impl::PolicyTraits; using index_type = typename traits::index_type; using member_type = index_type; - using work_tag = typename traits::work_tag; using execution_space = typename traits::execution_space; using memory_space = typename execution_space::memory_space; using graph_type = Kokkos::Crs; @@ -217,7 +216,7 @@ public: using closure_type = Kokkos::Impl::ParallelFor; const closure_type closure(*this, policy_type(0, m_queue.size())); closure.execute(); - execution_space::fence(); + execution_space().fence(); } { // execute-after counts @@ -225,7 +224,7 @@ public: using closure_type = Kokkos::Impl::ParallelFor; const closure_type closure(*this,policy_type(0,m_graph.entries.size())); closure.execute(); - execution_space::fence(); + execution_space().fence(); } { // Scheduling ready tasks @@ -233,7 +232,7 @@ public: using closure_type = Kokkos::Impl::ParallelFor; const closure_type closure(*this,policy_type(0,m_graph.numRows())); closure.execute(); - execution_space::fence(); + execution_space().fence(); } } }; @@ -256,4 +255,8 @@ public: #include "Threads/Kokkos_Threads_WorkGraphPolicy.hpp" #endif +#ifdef KOKKOS_ENABLE_HPX +#include "HPX/Kokkos_HPX_WorkGraphPolicy.hpp" +#endif + #endif /* #define KOKKOS_WORKGRAPHPOLICY_HPP */ diff --git a/lib/kokkos/core/src/Makefile b/lib/kokkos/core/src/Makefile index c2dbddf45e..ae8dc17510 100644 --- a/lib/kokkos/core/src/Makefile +++ b/lib/kokkos/core/src/Makefile @@ -40,6 +40,10 @@ ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) CONDITIONAL_COPIES += copy-openmp endif +ifeq ($(KOKKOS_INTERNAL_USE_HPX), 1) + CONDITIONAL_COPIES += copy-hpx +endif + ifeq ($(KOKKOS_INTERNAL_USE_ROCM), 1) CONDITIONAL_COPIES += copy-rocm endif @@ -91,6 +95,10 @@ copy-openmp: mkdir mkdir -p $(PREFIX)/include/OpenMP $(CP) $(COPY_FLAG) $(KOKKOS_HEADERS_OPENMP) $(PREFIX)/include/OpenMP +copy-hpx: mkdir + mkdir -p $(PREFIX)/include/HPX + $(CP) $(COPY_FLAG) $(KOKKOS_HEADERS_HPX) $(PREFIX)/include/HPX + copy-rocm: mkdir mkdir -p $(PREFIX)/include/ROCm $(CP) $(COPY_FLAG) $(KOKKOS_HEADERS_ROCM) $(PREFIX)/include/ROCm diff --git a/lib/kokkos/core/src/Makefile.generate_build_files b/lib/kokkos/core/src/Makefile.generate_build_files index cc856ee9a3..651b9d5fe9 100644 --- a/lib/kokkos/core/src/Makefile.generate_build_files +++ b/lib/kokkos/core/src/Makefile.generate_build_files @@ -84,6 +84,7 @@ generate_build_settings: $(KOKKOS_CONFIG_HEADER) $(KOKKOS_PKGCONFIG) @$(call kokkos_append_var,KOKKOS_HEADERS_IMPL,'STRING "Kokkos headers impl list"') @$(call kokkos_append_var,KOKKOS_HEADERS_CUDA,'STRING "Kokkos headers Cuda list"') @$(call kokkos_append_var,KOKKOS_HEADERS_OPENMP,'STRING "Kokkos headers OpenMP list"') + @$(call kokkos_append_var,KOKKOS_HEADERS_HPX,'STRING "Kokkos headers HPX list"') @$(call kokkos_append_var,KOKKOS_HEADERS_ROCM,'STRING "Kokkos headers ROCm list"') @$(call kokkos_append_var,KOKKOS_HEADERS_THREADS,'STRING "Kokkos headers Threads list"') @$(call kokkos_append_var,KOKKOS_HEADERS_QTHREADS,'STRING "Kokkos headers QThreads list"') @@ -103,11 +104,13 @@ generate_build_settings: $(KOKKOS_CONFIG_HEADER) $(KOKKOS_PKGCONFIG) @$(call kokkos_append_string,"#Internal settings which need to propagated for Kokkos examples") @$(call kokkos_append_var,KOKKOS_INTERNAL_USE_CUDA,'STRING ""') @$(call kokkos_append_var,KOKKOS_INTERNAL_USE_OPENMP,'STRING ""') + @$(call kokkos_append_var,KOKKOS_INTERNAL_USE_HPX,'STRING ""') @$(call kokkos_append_var,KOKKOS_INTERNAL_USE_PTHREADS,'STRING ""') @$(call kokkos_append_var,KOKKOS_INTERNAL_USE_SERIAL,'STRING ""') @$(call kokkos_append_var,KOKKOS_INTERNAL_USE_ROCM,'STRING ""') + @$(call kokkos_append_var,KOKKOS_INTERNAL_USE_HPX,'STRING ""') @$(call kokkos_append_var,KOKKOS_INTERNAL_USE_QTHREADS,'STRING ""') # Not in original cmake gen - @$(call kokkos_append_cmakefile "mark_as_advanced(KOKKOS_HEADERS KOKKOS_SRC KOKKOS_INTERNAL_USE_CUDA KOKKOS_INTERNAL_USE_OPENMP KOKKOS_INTERNAL_USE_PTHREADS KOKKOS_INTERNAL_USE_SERIAL)") + @$(call kokkos_append_cmakefile "mark_as_advanced(KOKKOS_HEADERS KOKKOS_SRC KOKKOS_INTERNAL_USE_CUDA KOKKOS_INTERNAL_USE_OPENMP KOKKOS_INTERNAL_USE_HPX KOKKOS_INTERNAL_USE_PTHREADS KOKKOS_INTERNAL_USE_SERIAL)") @$(call kokkos_append_makefile,"") @$(call kokkos_append_makefile,"#Fake kokkos-clean target") @$(call kokkos_append_makefile,"kokkos-clean:") diff --git a/lib/kokkos/core/src/Makefile.generate_header_lists b/lib/kokkos/core/src/Makefile.generate_header_lists index cd308bf8f4..afbefb3806 100644 --- a/lib/kokkos/core/src/Makefile.generate_header_lists +++ b/lib/kokkos/core/src/Makefile.generate_header_lists @@ -22,6 +22,10 @@ ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) KOKKOS_HEADERS_OPENMP += $(wildcard $(KOKKOS_PATH)/core/src/OpenMP/*.hpp) endif +ifeq ($(KOKKOS_INTERNAL_USE_HPX), 1) + KOKKOS_HEADERS_HPX += $(wildcard $(KOKKOS_PATH)/core/src/HPX/*.hpp) +endif + ifeq ($(KOKKOS_INTERNAL_USE_ROCM), 1) KOKKOS_HEADERS_ROCM += $(wildcard $(KOKKOS_PATH)/core/src/ROCm/*.hpp) endif diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.cpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.cpp index e57b61d7cb..1946c10741 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.cpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.cpp @@ -472,6 +472,10 @@ int OpenMP::concurrency() { return Impl::g_openmp_hardware_max_threads; } +#ifndef KOKKOS_ENABLE_DEPRECATED_CODE +void OpenMP::fence() const {} +#endif + #ifdef KOKKOS_ENABLE_DEPRECATED_CODE void OpenMP::initialize( int thread_count , int, int ) diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.hpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.hpp index 43fa7888cf..5178199ac2 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.hpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Exec.hpp @@ -184,8 +184,13 @@ int OpenMP::impl_thread_pool_rank() noexcept #endif } +inline +void OpenMP::impl_static_fence( OpenMP const& instance ) noexcept {} + +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE inline void OpenMP::fence( OpenMP const& instance ) noexcept {} +#endif inline bool OpenMP::is_asynchronous( OpenMP const& instance ) noexcept diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Parallel.hpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Parallel.hpp index e0bb572a3b..ae6b49f650 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Parallel.hpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Parallel.hpp @@ -128,11 +128,10 @@ public: OpenMPExec::verify_is_master("Kokkos::OpenMP parallel_for"); #ifdef KOKKOS_ENABLE_DEPRECATED_CODE - const int pool_size = OpenMP::thread_pool_size(); + #pragma omp parallel num_threads(OpenMP::thread_pool_size()) #else - const int pool_size = OpenMP::impl_thread_pool_size(); + #pragma omp parallel num_threads(OpenMP::impl_thread_pool_size()) #endif - #pragma omp parallel num_threads(pool_size) { HostThreadTeamData & data = *(m_instance->get_thread_data()); @@ -228,11 +227,10 @@ public: OpenMPExec::verify_is_master("Kokkos::OpenMP parallel_for"); #ifdef KOKKOS_ENABLE_DEPRECATED_CODE - const int pool_size = OpenMP::thread_pool_size(); + #pragma omp parallel num_threads(OpenMP::thread_pool_size()) #else - const int pool_size = OpenMP::impl_thread_pool_size(); + #pragma omp parallel num_threads(OpenMP::impl_thread_pool_size()) #endif - #pragma omp parallel num_threads(pool_size) { HostThreadTeamData & data = *(m_instance->get_thread_data()); @@ -703,11 +701,10 @@ public: ); #ifdef KOKKOS_ENABLE_DEPRECATED_CODE - const int pool_size = OpenMP::thread_pool_size(); + #pragma omp parallel num_threads(OpenMP::thread_pool_size()) #else - const int pool_size = OpenMP::impl_thread_pool_size(); + #pragma omp parallel num_threads(OpenMP::impl_thread_pool_size()) #endif - #pragma omp parallel num_threads(pool_size) { HostThreadTeamData & data = *(m_instance->get_thread_data()); @@ -840,11 +837,10 @@ public: ); #ifdef KOKKOS_ENABLE_DEPRECATED_CODE - const int pool_size = OpenMP::thread_pool_size(); + #pragma omp parallel num_threads(OpenMP::thread_pool_size()) #else - const int pool_size = OpenMP::impl_thread_pool_size(); + #pragma omp parallel num_threads(OpenMP::impl_thread_pool_size()) #endif - #pragma omp parallel num_threads(pool_size) { HostThreadTeamData & data = *(m_instance->get_thread_data()); @@ -1005,11 +1001,10 @@ public: , thread_local_size ); #ifdef KOKKOS_ENABLE_DEPRECATED_CODE - const int pool_size = OpenMP::thread_pool_size(); + #pragma omp parallel num_threads(OpenMP::thread_pool_size()) #else - const int pool_size = OpenMP::impl_thread_pool_size(); + #pragma omp parallel num_threads(OpenMP::impl_thread_pool_size()) #endif - #pragma omp parallel num_threads(pool_size) { HostThreadTeamData & data = *(m_instance->get_thread_data()); diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Task.cpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Task.cpp index 2f2c768460..3b1c187c6d 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Task.cpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Task.cpp @@ -48,6 +48,8 @@ #include #include +#include +#include //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- @@ -55,200 +57,44 @@ namespace Kokkos { namespace Impl { -template class TaskQueue< Kokkos::OpenMP > ; +template class TaskQueue< Kokkos::OpenMP, typename Kokkos::OpenMP::memory_space > ; -class HostThreadTeamDataSingleton : private HostThreadTeamData { -private: - - HostThreadTeamDataSingleton() : HostThreadTeamData() - { - Kokkos::OpenMP::memory_space space ; - const size_t num_pool_reduce_bytes = 32 ; - const size_t num_team_reduce_bytes = 32 ; - const size_t num_team_shared_bytes = 1024 ; - const size_t num_thread_local_bytes = 1024 ; - const size_t alloc_bytes = - HostThreadTeamData::scratch_size( num_pool_reduce_bytes - , num_team_reduce_bytes - , num_team_shared_bytes - , num_thread_local_bytes ); - - HostThreadTeamData::scratch_assign - ( space.allocate( alloc_bytes ) - , alloc_bytes - , num_pool_reduce_bytes - , num_team_reduce_bytes - , num_team_shared_bytes - , num_thread_local_bytes ); - } - - ~HostThreadTeamDataSingleton() - { - Kokkos::OpenMP::memory_space space ; - space.deallocate( HostThreadTeamData::scratch_buffer() - , HostThreadTeamData::scratch_bytes() ); - } - -public: - - static HostThreadTeamData & singleton() - { - static HostThreadTeamDataSingleton s ; - return s ; - } -}; - -//---------------------------------------------------------------------------- - -void TaskQueueSpecialization< Kokkos::OpenMP >::execute - ( TaskQueue< Kokkos::OpenMP > * const queue ) +HostThreadTeamData& HostThreadTeamDataSingleton::singleton() { - using task_root_type = TaskBase< void , void , void > ; - using Member = Impl::HostThreadTeamMember< execution_space > ; - - static task_root_type * const end = - (task_root_type *) task_root_type::EndTag ; - - - HostThreadTeamData & team_data_single = - HostThreadTeamDataSingleton::singleton(); - - Impl::OpenMPExec * instance = t_openmp_instance; -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE - const int pool_size = OpenMP::thread_pool_size(); -#else - const int pool_size = OpenMP::impl_thread_pool_size(); -#endif - - const int team_size = 1; // Threads per core - instance->resize_thread_data( 0 /* global reduce buffer */ - , 512 * team_size /* team reduce buffer */ - , 0 /* team shared buffer */ - , 0 /* thread local buffer */ - ); - - #pragma omp parallel num_threads(pool_size) - { - Impl::HostThreadTeamData & self = *(instance->get_thread_data()); - - // Organizing threads into a team performs a barrier across the - // entire pool to insure proper initialization of the team - // rendezvous mechanism before a team rendezvous can be performed. - - if ( self.organize_team( team_size ) ) { - - Member single_exec( team_data_single ); - Member team_exec( self ); - - // Loop until all queues are empty and no tasks in flight - - task_root_type * task = 0 ; - - do { - // Each team lead attempts to acquire either a thread team task - // or a single thread task for the team. - - if ( 0 == team_exec.team_rank() ) { - - bool leader_loop = false ; - - do { - - if ( 0 != task && end != task ) { - // team member #0 completes the previously executed task, - // completion may delete the task - queue->complete( task ); - } - - // If 0 == m_ready_count then set task = 0 - - task = 0 < *((volatile int *) & queue->m_ready_count) ? end : 0 ; - - // Attempt to acquire a task - // Loop by priority and then type - for ( int i = 0 ; i < queue_type::NumQueue && end == task ; ++i ) { - for ( int j = 0 ; j < 2 && end == task ; ++j ) { - task = queue_type::pop_ready_task( & queue->m_ready[i][j] ); - } - } - - // If still tasks are still executing - // and no task could be acquired - // then continue this leader loop - leader_loop = end == task ; - - if ( ( ! leader_loop ) && - ( 0 != task ) && - ( task_root_type::TaskSingle == task->m_task_type ) ) { - - // if a single thread task then execute now - - (*task->m_apply)( task , & single_exec ); - - leader_loop = true ; - } - } while ( leader_loop ); - } - - // Team lead either found 0 == m_ready_count or a team task - // Team lead broadcast acquired task: - - team_exec.team_broadcast( task , 0); - - if ( 0 != task ) { // Thread Team Task - - (*task->m_apply)( task , & team_exec ); - - // The m_apply function performs a barrier - } - } while( 0 != task ); - } - self.disband_team(); - } + static HostThreadTeamDataSingleton s; + return s; } -void TaskQueueSpecialization< Kokkos::OpenMP >:: - iff_single_thread_recursive_execute - ( TaskQueue< Kokkos::OpenMP > * const queue ) +HostThreadTeamDataSingleton::HostThreadTeamDataSingleton() + : HostThreadTeamData() { - using task_root_type = TaskBase< void , void , void > ; - using Member = Impl::HostThreadTeamMember< execution_space > ; - -#ifdef KOKKOS_ENABLE_DEPRECATED_CODE - if ( 1 == OpenMP::thread_pool_size() ) -#else - if ( 1 == OpenMP::impl_thread_pool_size() ) -#endif - { - - task_root_type * const end = (task_root_type *) task_root_type::EndTag ; - - HostThreadTeamData & team_data_single = - HostThreadTeamDataSingleton::singleton(); - - Member single_exec( team_data_single ); - - task_root_type * task = end ; - - do { - - task = end ; - - // Loop by priority and then type - for ( int i = 0 ; i < queue_type::NumQueue && end == task ; ++i ) { - for ( int j = 0 ; j < 2 && end == task ; ++j ) { - task = queue_type::pop_ready_task( & queue->m_ready[i][j] ); - } - } - - if ( end == task ) break ; - - (*task->m_apply)( task , & single_exec ); - - queue->complete( task ); + Kokkos::OpenMP::memory_space space ; + const size_t num_pool_reduce_bytes = 32 ; + const size_t num_team_reduce_bytes = 32 ; + const size_t num_team_shared_bytes = 1024 ; + const size_t num_thread_local_bytes = 1024 ; + const size_t alloc_bytes = + HostThreadTeamData::scratch_size( num_pool_reduce_bytes + , num_team_reduce_bytes + , num_team_shared_bytes + , num_thread_local_bytes ); + + HostThreadTeamData::scratch_assign + ( space.allocate( alloc_bytes ) + , alloc_bytes + , num_pool_reduce_bytes + , num_team_reduce_bytes + , num_team_shared_bytes + , num_thread_local_bytes ); +} - } while(1); - } +HostThreadTeamDataSingleton::~HostThreadTeamDataSingleton() +{ + Kokkos::OpenMP::memory_space space ; + space.deallocate( + HostThreadTeamData::scratch_buffer(), + static_cast(HostThreadTeamData::scratch_bytes()) + ); } }} /* namespace Kokkos::Impl */ diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Task.hpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Task.hpp index b99c149b06..4029c015b3 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Task.hpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Task.hpp @@ -47,38 +47,388 @@ #include #if defined( KOKKOS_ENABLE_OPENMP ) && defined( KOKKOS_ENABLE_TASKDAG ) +#include + +#include +#include + +#include +#include + //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- namespace Kokkos { namespace Impl { -template<> -class TaskQueueSpecialization< Kokkos::OpenMP > +class HostThreadTeamDataSingleton : private HostThreadTeamData { +private: + + HostThreadTeamDataSingleton(); + ~HostThreadTeamDataSingleton(); + +public: + + static HostThreadTeamData & singleton(); + +}; + +// Hack this as a partial specialization for now +// TODO @tasking @cleanup DSH Make this the general class template and make the old code the partial specialization +template +class TaskQueueSpecialization< + SimpleTaskScheduler +> { public: - using execution_space = Kokkos::OpenMP ; - using queue_type = Kokkos::Impl::TaskQueue< execution_space > ; - using task_base_type = Kokkos::Impl::TaskBase< void , void , void > ; - using member_type = Kokkos::Impl::HostThreadTeamMember< execution_space > ; + using execution_space = Kokkos::OpenMP; + using scheduler_type = SimpleTaskScheduler; + using member_type = TaskTeamMemberAdapter< + Kokkos::Impl::HostThreadTeamMember, + scheduler_type + >; + using memory_space = Kokkos::HostSpace; + + enum : int { max_league_size = HostThreadTeamData::max_pool_members }; + + // Must provide task queue execution function + static void execute(scheduler_type const& scheduler) + { + using task_base_type = typename scheduler_type::task_base_type; + + // Unused; ChaseLev queue still needs worker ID even in single case (so we need to use + // the thread data from inside of the parallel region. Team size is fixed at 1 for now + // anyway + //HostThreadTeamData& team_data_single = HostThreadTeamDataSingleton::singleton(); + + // TODO @tasking @generalization DSH use scheduler.get_execution_space().impl() (or something like that) instead of the thread-local variable + Impl::OpenMPExec* instance = t_openmp_instance; + const int pool_size = get_max_team_count(scheduler.get_execution_space()); + + // TODO @tasking @new_feature DSH allow team sizes other than 1 + const int team_size = 1; // Threads per core + instance->resize_thread_data( + 0, /* global reduce buffer */ + 512 * team_size, /* team reduce buffer */ + 0, /* team shared buffer */ + 0 /* thread local buffer */ + ); + assert(pool_size % team_size == 0); + + auto& queue = scheduler.queue(); + + //queue.initialize_team_queues(pool_size / team_size); + + #pragma omp parallel num_threads(pool_size) + { + Impl::HostThreadTeamData & self = *(instance->get_thread_data()); + + // Organizing threads into a team performs a barrier across the + // entire pool to insure proper initialization of the team + // rendezvous mechanism before a team rendezvous can be performed. + + // organize_team() returns true if this is an active team member + if(self.organize_team(team_size)) { + + member_type single_exec(scheduler, self); + member_type team_exec(scheduler, self); + + auto& team_scheduler = team_exec.scheduler(); + + auto current_task = OptionalRef(nullptr); + + while(not queue.is_done()) { + + // Each team lead attempts to acquire either a thread team task + // or a single thread task for the team. + if(team_exec.team_rank() == 0) { + + // loop while both: + // - the queue is not done + // - the most recently popped task is a single task or empty + while(not queue.is_done()) { + + current_task = queue.pop_ready_task(team_scheduler.team_scheduler_info()); + + if(current_task) { + + if(current_task->is_team_runnable()) { + // break out of the team leader loop to run the team task + break; + } + else { + KOKKOS_ASSERT(current_task->is_single_runnable()); + current_task->as_runnable_task().run(single_exec); + // Respawns are handled in the complete function + queue.complete( + (*std::move(current_task)).as_runnable_task(), + team_scheduler.team_scheduler_info() + ); + } + + } // end if current_task is not null + + current_task = nullptr; + + } // end team leader loop + + } + + // Otherwise, make sure everyone in the team has the same task + team_exec.team_broadcast(current_task, 0); + + if(current_task) { + KOKKOS_ASSERT(current_task->is_team_runnable()); + current_task->as_runnable_task().run(team_exec); + + if(team_exec.team_rank() == 0) { + // Respawns are handled in the complete function + queue.complete( + (*std::move(current_task)).as_runnable_task(), + team_scheduler.team_scheduler_info() + ); + } + + } + + } + } + self.disband_team(); + } // end pragma omp parallel + } + + static uint32_t + get_max_team_count(execution_space const& espace) { +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE + return static_cast(espace.thread_pool_size()); +#else + return static_cast(espace.impl_thread_pool_size()); +#endif + } + + // TODO @tasking @optimization DSH specialize this for trivially destructible types + template + static void + get_function_pointer( + typename TaskType::function_type& ptr, + typename TaskType::destroy_type& dtor + ) { + ptr = TaskType::apply; + dtor = TaskType::destroy; + } +}; + + +template +class TaskQueueSpecializationConstrained< + Scheduler, + typename std::enable_if< + std::is_same::value + >::type +> +{ +public: - // Must specify memory space + using execution_space = Kokkos::OpenMP; + using scheduler_type = Scheduler; + using member_type = TaskTeamMemberAdapter< + Kokkos::Impl::HostThreadTeamMember, + scheduler_type + >; using memory_space = Kokkos::HostSpace ; + enum : int { max_league_size = HostThreadTeamData::max_pool_members }; + static - void iff_single_thread_recursive_execute( queue_type * const ); + void iff_single_thread_recursive_execute( scheduler_type const& scheduler ) { + using task_base_type = typename scheduler_type::task_base; + using queue_type = typename scheduler_type::queue_type; + +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE + if ( 1 == OpenMP::thread_pool_size() ) +#else + if ( 1 == OpenMP::impl_thread_pool_size() ) +#endif + { + + task_base_type * const end = (task_base_type *) task_base_type::EndTag ; + + HostThreadTeamData & team_data_single = + HostThreadTeamDataSingleton::singleton(); + + member_type single_exec( scheduler, team_data_single ); + + task_base_type * task = end ; + + do { + + task = end ; + + // Loop by priority and then type + for ( int i = 0 ; i < queue_type::NumQueue && end == task ; ++i ) { + for ( int j = 0 ; j < 2 && end == task ; ++j ) { + task = queue_type::pop_ready_task( & scheduler.m_queue->m_ready[i][j] ); + } + } + + if ( end == task ) break ; + + (*task->m_apply)( task , & single_exec ); + + scheduler.m_queue->complete( task ); + + } while(1); + } + + } // Must provide task queue execution function - static void execute( queue_type * const ); + static void execute(scheduler_type const& scheduler) + { + using task_base_type = typename scheduler_type::task_base; + using queue_type = typename scheduler_type::queue_type; + + static task_base_type * const end = + (task_base_type *) task_base_type::EndTag ; + + constexpr task_base_type* no_more_tasks_sentinel = nullptr; + + + HostThreadTeamData & team_data_single = + HostThreadTeamDataSingleton::singleton(); + + Impl::OpenMPExec * instance = t_openmp_instance; +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE + const int pool_size = OpenMP::thread_pool_size(); +#else + const int pool_size = OpenMP::impl_thread_pool_size(); +#endif + + const int team_size = 1; // Threads per core + instance->resize_thread_data( 0 /* global reduce buffer */ + , 512 * team_size /* team reduce buffer */ + , 0 /* team shared buffer */ + , 0 /* thread local buffer */ + ); + assert(pool_size % team_size == 0); + auto& queue = scheduler.queue(); + queue.initialize_team_queues(pool_size / team_size); + +#pragma omp parallel num_threads(pool_size) + { + Impl::HostThreadTeamData & self = *(instance->get_thread_data()); + + // Organizing threads into a team performs a barrier across the + // entire pool to insure proper initialization of the team + // rendezvous mechanism before a team rendezvous can be performed. + + // organize_team() returns true if this is an active team member + if ( self.organize_team( team_size ) ) { + + member_type single_exec(scheduler, team_data_single); + member_type team_exec(scheduler, self); + + auto& team_queue = team_exec.scheduler().queue(); + + // Loop until all queues are empty and no tasks in flight + + task_base_type * task = no_more_tasks_sentinel; + + + do { + // Each team lead attempts to acquire either a thread team task + // or a single thread task for the team. + + if ( 0 == team_exec.team_rank() ) { + + bool leader_loop = false ; + + do { + + if ( task != no_more_tasks_sentinel && task != end ) { + // team member #0 completes the previously executed task, + // completion may delete the task + team_queue.complete( task ); + } + + // If 0 == m_ready_count then set task = 0 + + if( *((volatile int *) & team_queue.m_ready_count) > 0 ) { + task = end; + // Attempt to acquire a task + // Loop by priority and then type + for ( int i = 0 ; i < queue_type::NumQueue && end == task ; ++i ) { + for ( int j = 0 ; j < 2 && end == task ; ++j ) { + task = queue_type::pop_ready_task( & team_queue.m_ready[i][j] ); + } + } + } + else { + // returns nullptr if and only if all other queues have a ready + // count of 0 also. Otherwise, returns a task from another queue + // or `end` if one couldn't be popped + task = team_queue.attempt_to_steal_task(); + #if 0 + if(task != no_more_tasks_sentinel && task != end) { + std::printf("task stolen on rank %d\n", team_exec.league_rank()); + } + #endif + } + + // If still tasks are still executing + // and no task could be acquired + // then continue this leader loop + if(task == end) { + // this means that the ready task count was not zero, but we + // couldn't pop a task (because, for instance, someone else + // got there before us + leader_loop = true; + } + else if ( ( task != no_more_tasks_sentinel ) && + ( task_base_type::TaskSingle == task->m_task_type ) ) { + + // if a single thread task then execute now + + (*task->m_apply)(task, &single_exec); + + leader_loop = true; + } + else { + leader_loop = false; + } + } while ( leader_loop ); + } + + // Team lead either found 0 == m_ready_count or a team task + // Team lead broadcast acquired task: + + team_exec.team_broadcast( task , 0); + + if ( task != no_more_tasks_sentinel ) { // Thread Team Task + + (*task->m_apply)( task , & team_exec ); + + // The m_apply function performs a barrier + } + } while( task != no_more_tasks_sentinel ); + } + self.disband_team(); + } // end pragma omp parallel + } template< typename TaskType > - static - typename TaskType::function_type - get_function_pointer() { return TaskType::apply ; } + static void + get_function_pointer( + typename TaskType::function_type& ptr, + typename TaskType::destroy_type& dtor + ) { + ptr = TaskType::apply; + dtor = TaskType::destroy; + } }; -extern template class TaskQueue< Kokkos::OpenMP > ; +extern template class TaskQueue< Kokkos::OpenMP, typename Kokkos::OpenMP::memory_space > ; }} /* namespace Kokkos::Impl */ diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Team.hpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Team.hpp index e8fbc467e0..38b062bdc0 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Team.hpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_Team.hpp @@ -74,6 +74,21 @@ public: return *this; } + template + friend class TeamPolicyInternal; + + template< class ... OtherProperties > + TeamPolicyInternal(const TeamPolicyInternal& p) { + m_league_size = p.m_league_size; + m_team_size = p.m_team_size; + m_team_alloc = p.m_team_alloc; + m_team_iter = p.m_team_iter; + m_team_scratch_size[0] = p.m_team_scratch_size[0]; + m_thread_scratch_size[0] = p.m_thread_scratch_size[0]; + m_team_scratch_size[1] = p.m_team_scratch_size[1]; + m_thread_scratch_size[1] = p.m_thread_scratch_size[1]; + m_chunk_size = p.m_chunk_size; + } //---------------------------------------- #ifdef KOKKOS_ENABLE_DEPRECATED_CODE @@ -208,7 +223,7 @@ public: } /** \brief Specify league size, request team size */ - TeamPolicyInternal( typename traits::execution_space & + TeamPolicyInternal( const typename traits::execution_space & , int league_size_request , int team_size_request , int /* vector_length_request */ = 1 ) @@ -217,14 +232,18 @@ public: , m_chunk_size(0) { init( league_size_request , team_size_request ); } - TeamPolicyInternal( typename traits::execution_space & + TeamPolicyInternal( const typename traits::execution_space & , int league_size_request , const Kokkos::AUTO_t & /* team_size_request */ , int /* vector_length_request */ = 1) : m_team_scratch_size { 0 , 0 } , m_thread_scratch_size { 0 , 0 } , m_chunk_size(0) +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE { init( league_size_request , traits::execution_space::thread_pool_size(2) ); } +#else + { init( league_size_request , traits::execution_space::impl_thread_pool_size(2) ); } +#endif TeamPolicyInternal( int league_size_request , int team_size_request diff --git a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_WorkGraphPolicy.hpp b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_WorkGraphPolicy.hpp index 879d5d2d24..0742575cb8 100644 --- a/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_WorkGraphPolicy.hpp +++ b/lib/kokkos/core/src/OpenMP/Kokkos_OpenMP_WorkGraphPolicy.hpp @@ -76,11 +76,10 @@ public: void execute() { #ifdef KOKKOS_ENABLE_DEPRECATED_CODE - const int pool_size = OpenMP::thread_pool_size(); + #pragma omp parallel num_threads(OpenMP::thread_pool_size()) #else - const int pool_size = OpenMP::impl_thread_pool_size(); + #pragma omp parallel num_threads(OpenMP::impl_thread_pool_size()) #endif - #pragma omp parallel num_threads(pool_size) { // Spin until COMPLETED_TOKEN. // END_TOKEN indicates no work is currently available. diff --git a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel.hpp b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel.hpp index fc31a91b22..c93a88606d 100644 --- a/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel.hpp +++ b/lib/kokkos/core/src/OpenMPTarget/Kokkos_OpenMPTarget_Parallel.hpp @@ -697,13 +697,13 @@ namespace Impl { const iType increment; inline - TeamThreadRangeBoundariesStruct (const OpenMPTargetExecTeamMember& thread_, const iType& count): + TeamThreadRangeBoundariesStruct (const OpenMPTargetExecTeamMember& thread_, iType count): start( thread_.team_rank() ), end( count ), increment( thread_.team_size() ) {} inline - TeamThreadRangeBoundariesStruct (const OpenMPTargetExecTeamMember& thread_, const iType& begin_, const iType& end_): + TeamThreadRangeBoundariesStruct (const OpenMPTargetExecTeamMember& thread_, iType begin_, iType end_): start( begin_+thread_.team_rank() ), end( end_ ), increment( thread_.team_size() ) @@ -718,13 +718,13 @@ namespace Impl { const index_type increment; inline - ThreadVectorRangeBoundariesStruct (const OpenMPTargetExecTeamMember& thread_, const index_type& count): + ThreadVectorRangeBoundariesStruct (const OpenMPTargetExecTeamMember& thread_, index_type count): start( thread_.m_vector_lane ), end( count ), increment( thread_.m_vector_length ) {} inline - ThreadVectorRangeBoundariesStruct (const OpenMPTargetExecTeamMember& thread_, const index_type& begin_, const index_type& end_): + ThreadVectorRangeBoundariesStruct (const OpenMPTargetExecTeamMember& thread_, index_type begin_, index_type end_): start( begin_+thread_.m_vector_lane ), end( end_ ), increment( thread_.m_vector_length ) @@ -734,28 +734,28 @@ namespace Impl { template KOKKOS_INLINE_FUNCTION Impl::TeamThreadRangeBoundariesStruct - TeamThreadRange(const Impl::OpenMPTargetExecTeamMember& thread, const iType& count) { + TeamThreadRange(const Impl::OpenMPTargetExecTeamMember& thread, iType count) { return Impl::TeamThreadRangeBoundariesStruct(thread,count); } template KOKKOS_INLINE_FUNCTION Impl::TeamThreadRangeBoundariesStruct - TeamThreadRange(const Impl::OpenMPTargetExecTeamMember& thread, const iType& begin, const iType& end) { + TeamThreadRange(const Impl::OpenMPTargetExecTeamMember& thread, iType begin, iType end) { return Impl::TeamThreadRangeBoundariesStruct(thread,begin,end); } template KOKKOS_INLINE_FUNCTION Impl::ThreadVectorRangeBoundariesStruct - ThreadVectorRange(const Impl::OpenMPTargetExecTeamMember& thread, const iType& count) { + ThreadVectorRange(const Impl::OpenMPTargetExecTeamMember& thread, iType count) { return Impl::ThreadVectorRangeBoundariesStruct(thread,count); } template KOKKOS_INLINE_FUNCTION Impl::ThreadVectorRangeBoundariesStruct - ThreadVectorRange(const Impl::OpenMPTargetExecTeamMember& thread, const iType& begin, const iType& end) { + ThreadVectorRange(const Impl::OpenMPTargetExecTeamMember& thread, iType begin, iType end) { return Impl::ThreadVectorRangeBoundariesStruct(thread,begin,end); } diff --git a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Parallel.hpp b/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Parallel.hpp index 5ad90436af..7b1b63befe 100644 --- a/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Parallel.hpp +++ b/lib/kokkos/core/src/Qthreads/Kokkos_Qthreads_Parallel.hpp @@ -51,7 +51,6 @@ #include -#include #include #include diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Exec.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Exec.hpp index 205e6a2955..3e81883278 100644 --- a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Exec.hpp +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Exec.hpp @@ -227,7 +227,7 @@ struct ROCmParallelLaunch< DriverType //#if defined( KOKKOS_ENABLE_DEBUG_BOUNDS_CHECK ) // ROCM_SAFE_CALL( rocmGetLastError() ); -// Kokkos::ROCm::fence(); +// Kokkos::ROCm().fence(); //#endif } } diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Parallel.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Parallel.hpp index edd1c12e45..48654555b2 100644 --- a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Parallel.hpp +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Parallel.hpp @@ -86,6 +86,21 @@ public: return *this; } + template + friend class TeamPolicyInternal; + + template< class ... OtherProperties > + TeamPolicyInternal(const TeamPolicyInternal& p) { + m_league_size = p.m_league_size; + m_team_size = p.m_team_size; + m_vector_length = p.m_vector_length; + m_team_scratch_size[0] = p.m_team_scratch_size[0]; + m_team_scratch_size[1] = p.m_team_scratch_size[1]; + m_thread_scratch_size[0] = p.m_thread_scratch_size[0]; + m_thread_scratch_size[1] = p.m_thread_scratch_size[1]; + m_chunk_size = p.m_chunk_size; + } + TeamPolicyInternal() : m_league_size( 0 ) , m_team_size( 0 ) @@ -1099,7 +1114,7 @@ public: ROCmParallelLaunch< ParallelReduce, LaunchBounds >( *this, grid, block, shmem ); // copy to device and execute - ROCM::fence(); + ROCM().fence(); if ( m_result_ptr ) { const int size = ValueTraits::value_size( ReducerConditional::select(m_functor , m_reducer) ); @@ -1494,14 +1509,14 @@ namespace Kokkos { template KOKKOS_INLINE_FUNCTION Impl::TeamThreadRangeBoundariesStruct - TeamThreadRange(const Impl::ROCmTeamMember& thread, const iType& count) { + TeamThreadRange(const Impl::ROCmTeamMember& thread, iType count) { return Impl::TeamThreadRangeBoundariesStruct(thread,count); } template KOKKOS_INLINE_FUNCTION Impl::TeamThreadRangeBoundariesStruct::type,Impl::ROCmTeamMember> - TeamThreadRange(const Impl::ROCmTeamMember& thread, const iType1& begin, const iType2& end) { + TeamThreadRange(const Impl::ROCmTeamMember& thread, iType1 begin, iType2 end) { typedef typename std::common_type< iType1, iType2 >::type iType; return Impl::TeamThreadRangeBoundariesStruct(thread,begin,end); } @@ -1509,14 +1524,14 @@ Impl::TeamThreadRangeBoundariesStruct KOKKOS_INLINE_FUNCTION Impl::ThreadVectorRangeBoundariesStruct - ThreadVectorRange(const Impl::ROCmTeamMember& thread, const iType& count) { + ThreadVectorRange(const Impl::ROCmTeamMember& thread, iType count) { return Impl::ThreadVectorRangeBoundariesStruct(thread,count); } template KOKKOS_INLINE_FUNCTION Impl::ThreadVectorRangeBoundariesStruct - ThreadVectorRange(const Impl::ROCmTeamMember& thread, const iType& arg_begin, const iType& arg_end) { + ThreadVectorRange(const Impl::ROCmTeamMember& thread, iType arg_begin, iType arg_end) { return Impl::ThreadVectorRangeBoundariesStruct(thread,arg_begin,arg_end); } diff --git a/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec.cpp b/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec.cpp index 559d6f2fcb..347778f289 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec.cpp +++ b/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec.cpp @@ -804,6 +804,10 @@ int Threads::concurrency() { return impl_thread_pool_size(0); #endif } +#ifndef KOKKOS_ENABLE_DEPRECATED_CODE +void Threads::fence() const +{ Impl::ThreadsExec::fence() ; } +#endif #ifdef KOKKOS_ENABLE_DEPRECATED_CODE Threads & Threads::instance(int) diff --git a/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec.hpp b/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec.hpp index 61d7667d58..7af9d9e065 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec.hpp +++ b/lib/kokkos/core/src/Threads/Kokkos_ThreadsExec.hpp @@ -649,8 +649,12 @@ inline bool Threads::wake() { return Impl::ThreadsExec::wake() ; } #endif +inline void Threads::impl_static_fence() +{ Impl::ThreadsExec::fence() ; } +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE inline void Threads::fence() { Impl::ThreadsExec::fence() ; } +#endif } /* namespace Kokkos */ diff --git a/lib/kokkos/core/src/Threads/Kokkos_ThreadsTeam.hpp b/lib/kokkos/core/src/Threads/Kokkos_ThreadsTeam.hpp index e88abdba50..9d6c0fa8cf 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_ThreadsTeam.hpp +++ b/lib/kokkos/core/src/Threads/Kokkos_ThreadsTeam.hpp @@ -72,9 +72,12 @@ private: enum { TEAM_REDUCE_SIZE = 512 }; +public: typedef Kokkos::Threads execution_space ; - typedef execution_space::scratch_memory_space space ; + typedef execution_space::scratch_memory_space scratch_memory_space ; +private: + typedef execution_space::scratch_memory_space space ; ThreadsExec * const m_exec ; ThreadsExec * const * m_team_base ; ///< Base for team fan-in space m_team_shared ; @@ -228,14 +231,20 @@ public: } #endif + template< typename ReducerType > + KOKKOS_INLINE_FUNCTION + typename std::enable_if< is_reducer< ReducerType >::value >::type + team_reduce( ReducerType const & reducer ) const noexcept + { team_reduce(reducer,reducer.reference()); } + template< typename ReducerType > KOKKOS_INLINE_FUNCTION typename std::enable_if< Kokkos::is_reducer< ReducerType >::value >::type #if ! defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - team_reduce( const ReducerType & ) const + team_reduce( const ReducerType &, const typename ReducerType::value_type ) const {} #else - team_reduce( const ReducerType & reducer ) const + team_reduce( const ReducerType & reducer, const typename ReducerType::value_type contribution ) const { typedef typename ReducerType::value_type value_type; // Make sure there is enough scratch space: @@ -247,7 +256,7 @@ public: type * const local_value = ((type*) m_exec->scratch_memory()); // Set this thread's contribution - *local_value = reducer.reference() ; + *local_value = contribution ; // Fence to make sure the base team member has access: memory_fence(); @@ -277,58 +286,7 @@ public: } #endif - template< class ValueType, class JoinOp > - KOKKOS_INLINE_FUNCTION ValueType - team_reduce( const ValueType & value - , const JoinOp & op_in ) const - #if ! defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - { return ValueType(); } - #else - { - typedef ValueType value_type; - const JoinLambdaAdapter op(op_in); - #endif -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - // Make sure there is enough scratch space: - typedef typename if_c< sizeof(value_type) < TEAM_REDUCE_SIZE - , value_type , void >::type type ; - - if ( 0 == m_exec ) return value ; - - type * const local_value = ((type*) m_exec->scratch_memory()); - - // Set this thread's contribution - *local_value = value ; - - // Fence to make sure the base team member has access: - memory_fence(); - - if ( team_fan_in() ) { - // The last thread to synchronize returns true, all other threads wait for team_fan_out() - type * const team_value = ((type*) m_team_base[0]->scratch_memory()); - - // Join to the team value: - for ( int i = 1 ; i < m_team_size ; ++i ) { - op.join( *team_value , *((type*) m_team_base[i]->scratch_memory()) ); - } - - // Team base thread may "lap" member threads so copy out to their local value. - for ( int i = 1 ; i < m_team_size ; ++i ) { - *((type*) m_team_base[i]->scratch_memory()) = *team_value ; - } - - // Fence to make sure all team members have access - memory_fence(); - } - - team_fan_out(); - - // Value was changed by the team base - return *((type volatile const *) local_value); - } -#endif - - /** \brief Intra-team exclusive prefix sum with team_rank() ordering + /** \brief Intra-team exclusive prefix sum with team_rank() ordering * with intra-team non-deterministic ordering accumulation. * * The global inter-team accumulation value will, at the end of the @@ -645,6 +603,22 @@ public: return *this; } + template + friend class TeamPolicyInternal; + + template< class ... OtherProperties > + TeamPolicyInternal(const TeamPolicyInternal& p) { + m_league_size = p.m_league_size; + m_team_size = p.m_team_size; + m_team_alloc = p.m_team_alloc; + m_team_iter = p.m_team_iter; + m_team_scratch_size[0] = p.m_team_scratch_size[0]; + m_thread_scratch_size[0] = p.m_thread_scratch_size[0]; + m_team_scratch_size[1] = p.m_team_scratch_size[1]; + m_thread_scratch_size[1] = p.m_thread_scratch_size[1]; + m_chunk_size = p.m_chunk_size; + } + //---------------------------------------- #ifdef KOKKOS_ENABLE_DEPRECATED_CODE @@ -734,7 +708,7 @@ public: inline int team_iter() const { return m_team_iter ; } /** \brief Specify league size, request team size */ - TeamPolicyInternal( typename traits::execution_space & + TeamPolicyInternal( const typename traits::execution_space & , int league_size_request , int team_size_request , int vector_length_request = 1 ) @@ -747,7 +721,7 @@ public: { init(league_size_request,team_size_request); (void) vector_length_request; } /** \brief Specify league size, request team size */ - TeamPolicyInternal( typename traits::execution_space & + TeamPolicyInternal( const typename traits::execution_space & , int league_size_request , const Kokkos::AUTO_t & /* team_size_request */ , int /* vector_length_request */ = 1 ) @@ -757,7 +731,11 @@ public: , m_team_scratch_size { 0 , 0 } , m_thread_scratch_size { 0 , 0 } , m_chunk_size(0) +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE { init(league_size_request,traits::execution_space::thread_pool_size(2)); } +#else + { init(league_size_request,traits::execution_space::impl_thread_pool_size(2)); } +#endif TeamPolicyInternal( int league_size_request , int team_size_request @@ -924,6 +902,23 @@ TeamThreadRange( const Impl::ThreadsExecTeamMember& thread, const iType1 & begin return Impl::TeamThreadRangeBoundariesStruct< iType, Impl::ThreadsExecTeamMember >( thread, iType(begin), iType(end) ); } +template< typename iType > +KOKKOS_INLINE_FUNCTION +Impl::TeamThreadRangeBoundariesStruct< iType, Impl::ThreadsExecTeamMember > +TeamVectorRange( const Impl::ThreadsExecTeamMember& thread, const iType& count ) +{ + return Impl::TeamThreadRangeBoundariesStruct< iType, Impl::ThreadsExecTeamMember >( thread, count ); +} + +template< typename iType1, typename iType2 > +KOKKOS_INLINE_FUNCTION +Impl::TeamThreadRangeBoundariesStruct< typename std::common_type< iType1, iType2 >::type, + Impl::ThreadsExecTeamMember> +TeamVectorRange( const Impl::ThreadsExecTeamMember& thread, const iType1 & begin, const iType2 & end ) +{ + typedef typename std::common_type< iType1, iType2 >::type iType; + return Impl::TeamThreadRangeBoundariesStruct< iType, Impl::ThreadsExecTeamMember >( thread, iType(begin), iType(end) ); +} template KOKKOS_INLINE_FUNCTION @@ -974,15 +969,18 @@ typename std::enable_if< !Kokkos::is_reducer< ValueType >::value >::type parallel_reduce(const Impl::TeamThreadRangeBoundariesStruct& loop_boundaries, const Lambda & lambda, ValueType& result) { - result = ValueType(); + ValueType intermediate; + Sum sum(intermediate); + sum.init(intermediate); for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { ValueType tmp = ValueType(); lambda(i,tmp); - result+=tmp; + intermediate+=tmp; } - result = loop_boundaries.thread.team_reduce(result,Impl::JoinAdd()); + loop_boundaries.thread.team_reduce(sum,intermediate); + result = sum.reference(); } template< typename iType, class Lambda, typename ReducerType > @@ -991,36 +989,14 @@ typename std::enable_if< Kokkos::is_reducer< ReducerType >::value >::type parallel_reduce(const Impl::TeamThreadRangeBoundariesStruct& loop_boundaries, const Lambda & lambda, const ReducerType& reducer) { - reducer.init(reducer.reference()); - - for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { - lambda(i,reducer.reference()); - } - - loop_boundaries.thread.team_reduce(reducer); -} - -/** \brief Intra-thread vector parallel_reduce. Executes lambda(iType i, ValueType & val) for each i=0..N-1. - * - * The range i=0..N-1 is mapped to all vector lanes of the the calling thread and a reduction of - * val is performed using JoinType(ValueType& val, const ValueType& update) and put into init_result. - * The input value of init_result is used as initializer for temporary variables of ValueType. Therefore - * the input value should be the neutral element with respect to the join operation (e.g. '0 for +-' or - * '1 for *'). This functionality requires C++11 support.*/ -template< typename iType, class Lambda, typename ValueType, class JoinType > -KOKKOS_INLINE_FUNCTION -void parallel_reduce(const Impl::TeamThreadRangeBoundariesStruct& loop_boundaries, - const Lambda & lambda, const JoinType& join, ValueType& init_result) { - - ValueType result = init_result; + typename ReducerType::value_type value; + reducer.init(value); for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { - ValueType tmp = ValueType(); - lambda(i,tmp); - join(result,tmp); + lambda(i,value); } - init_result = loop_boundaries.thread.team_reduce(result,Impl::JoinLambdaAdapter(join)); + loop_boundaries.thread.team_reduce(reducer,value); } } //namespace Kokkos @@ -1068,25 +1044,6 @@ parallel_reduce(const Impl::ThreadVectorRangeBoundariesStruct -KOKKOS_INLINE_FUNCTION -void parallel_reduce(const Impl::ThreadVectorRangeBoundariesStruct& - loop_boundaries, const Lambda & lambda, const JoinType& join, ValueType& result ) { - -#ifdef KOKKOS_ENABLE_PRAGMA_IVDEP -#pragma ivdep -#endif - for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { - lambda(i,result); - } -} /** \brief Intra-thread vector parallel exclusive prefix sum. Executes lambda(iType i, ValueType & val, bool final) * for each i=0..N-1. diff --git a/lib/kokkos/core/src/Threads/Kokkos_Threads_Parallel.hpp b/lib/kokkos/core/src/Threads/Kokkos_Threads_Parallel.hpp index 42269176ed..022a5fc188 100644 --- a/lib/kokkos/core/src/Threads/Kokkos_Threads_Parallel.hpp +++ b/lib/kokkos/core/src/Threads/Kokkos_Threads_Parallel.hpp @@ -52,7 +52,6 @@ #include -#include #include #include diff --git a/lib/kokkos/core/src/eti/CMakeLists.txt b/lib/kokkos/core/src/eti/CMakeLists.txt index a4db7a7eb6..a7e7717a6e 100644 --- a/lib/kokkos/core/src/eti/CMakeLists.txt +++ b/lib/kokkos/core/src/eti/CMakeLists.txt @@ -4,6 +4,9 @@ endif() if (KOKKOS_ENABLE_OPENMP) add_subdirectory(OpenMP) endif() +if (KOKKOS_ENABLE_HPX) + add_subdirectory(HPX) +endif() if (KOKKOS_ENABLE_ROCM) add_subdirectory(ROCm) endif() diff --git a/lib/kokkos/core/src/eti/HPX/CMakeLists.txt b/lib/kokkos/core/src/eti/HPX/CMakeLists.txt new file mode 100644 index 0000000000..131a2d2e6e --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/CMakeLists.txt @@ -0,0 +1,148 @@ +set(D "${CMAKE_CURRENT_SOURCE_DIR}") +set(ETI_SOURCES +${ETI_SOURCES} +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank8.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank1.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank2.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank3.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank4.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank5.cpp +${D}/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank8.cpp +PARENT_SCOPE) diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank1.cpp new file mode 100644 index 0000000000..905c97c54e --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double*,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank2.cpp new file mode 100644 index 0000000000..a7632852ce --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double**,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double**,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double**,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double**,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank3.cpp new file mode 100644 index 0000000000..cff22240cf --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double***,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double***,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double***,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double***,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank4.cpp new file mode 100644 index 0000000000..2b667c674f --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double****,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double****,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double****,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double****,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank5.cpp new file mode 100644 index 0000000000..cd1a445d81 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*****,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*****,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*****,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double*****,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank8.cpp new file mode 100644 index 0000000000..3d805d5134 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double********,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double********,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double********,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double********,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank1.cpp new file mode 100644 index 0000000000..3883d581b6 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double*,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank2.cpp new file mode 100644 index 0000000000..55f3e200a5 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double**,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double**,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double**,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double**,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank3.cpp new file mode 100644 index 0000000000..ed6d57260b --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double***,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double***,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double***,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double***,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank4.cpp new file mode 100644 index 0000000000..ed1954e683 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double****,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double****,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double****,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double****,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank5.cpp new file mode 100644 index 0000000000..fb8dadb8d0 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*****,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*****,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*****,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double*****,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank8.cpp new file mode 100644 index 0000000000..16a0ed3e9c --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double********,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double********,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double********,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double********,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank1.cpp new file mode 100644 index 0000000000..f846f94a96 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double*,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank2.cpp new file mode 100644 index 0000000000..f4b51a1d78 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double**,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double**,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double**,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double**,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank3.cpp new file mode 100644 index 0000000000..622b3119bd --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double***,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double***,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double***,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double***,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank4.cpp new file mode 100644 index 0000000000..de871103dd --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double****,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double****,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double****,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double****,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank5.cpp new file mode 100644 index 0000000000..720e075aea --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*****,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*****,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*****,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double*****,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank8.cpp new file mode 100644 index 0000000000..4c57c457c2 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double********,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double********,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double********,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double********,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank1.cpp new file mode 100644 index 0000000000..5a37da22c4 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float*,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank2.cpp new file mode 100644 index 0000000000..93a96ee554 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float**,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float**,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float**,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float**,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank3.cpp new file mode 100644 index 0000000000..dcfcc8a0e3 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float***,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float***,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float***,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float***,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank4.cpp new file mode 100644 index 0000000000..7082701282 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float****,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float****,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float****,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float****,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank5.cpp new file mode 100644 index 0000000000..cbbd7c9ef3 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*****,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*****,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*****,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float*****,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank8.cpp new file mode 100644 index 0000000000..22d6fc5387 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float********,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float********,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float********,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float********,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank1.cpp new file mode 100644 index 0000000000..d44e95e67e --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float*,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank2.cpp new file mode 100644 index 0000000000..ae79919c42 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float**,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float**,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float**,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float**,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank3.cpp new file mode 100644 index 0000000000..0c671ad593 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float***,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float***,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float***,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float***,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank4.cpp new file mode 100644 index 0000000000..24dd1c8354 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float****,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float****,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float****,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float****,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank5.cpp new file mode 100644 index 0000000000..6e2de8a02e --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*****,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*****,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*****,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float*****,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank8.cpp new file mode 100644 index 0000000000..38840ac9e6 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float********,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float********,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float********,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float********,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank1.cpp new file mode 100644 index 0000000000..bcb105628b --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float*,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank2.cpp new file mode 100644 index 0000000000..8730f92f20 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float**,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float**,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float**,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float**,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank3.cpp new file mode 100644 index 0000000000..785996558b --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float***,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float***,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float***,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float***,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank4.cpp new file mode 100644 index 0000000000..3ae193ca65 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float****,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float****,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float****,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float****,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank5.cpp new file mode 100644 index 0000000000..81f91019d6 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*****,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*****,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*****,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float*****,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank8.cpp new file mode 100644 index 0000000000..d34a4870b9 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float********,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float********,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float********,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float********,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank1.cpp new file mode 100644 index 0000000000..0da5ed1770 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t*,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank2.cpp new file mode 100644 index 0000000000..444dad079b --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t**,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t**,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t**,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t**,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank3.cpp new file mode 100644 index 0000000000..3f36a1d714 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t***,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t***,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t***,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t***,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank4.cpp new file mode 100644 index 0000000000..51c964b92d --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t****,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t****,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t****,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t****,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank5.cpp new file mode 100644 index 0000000000..1a26522ff5 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*****,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*****,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*****,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t*****,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank8.cpp new file mode 100644 index 0000000000..9bd9af3fe3 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t********,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t********,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t********,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t********,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank1.cpp new file mode 100644 index 0000000000..dd5a325535 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t*,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank2.cpp new file mode 100644 index 0000000000..30a44c0a80 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t**,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t**,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t**,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t**,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank3.cpp new file mode 100644 index 0000000000..0b73280c6e --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t***,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t***,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t***,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t***,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank4.cpp new file mode 100644 index 0000000000..3997d8ca58 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t****,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t****,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t****,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t****,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank5.cpp new file mode 100644 index 0000000000..6cbaa59223 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*****,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*****,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*****,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t*****,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank8.cpp new file mode 100644 index 0000000000..351001c8d1 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t********,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t********,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t********,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t********,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank1.cpp new file mode 100644 index 0000000000..d37e34af30 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t*,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank2.cpp new file mode 100644 index 0000000000..7609d9478f --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t**,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t**,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t**,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t**,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank3.cpp new file mode 100644 index 0000000000..30f0c1d882 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t***,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t***,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t***,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t***,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank4.cpp new file mode 100644 index 0000000000..4c4109e298 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t****,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t****,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t****,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t****,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank5.cpp new file mode 100644 index 0000000000..189245d352 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*****,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*****,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*****,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t*****,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank8.cpp new file mode 100644 index 0000000000..921a8e88c7 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t********,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t********,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t********,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t********,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank1.cpp new file mode 100644 index 0000000000..7e492aa25f --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int*,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank2.cpp new file mode 100644 index 0000000000..13b1a78d7c --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int**,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int**,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int**,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int**,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank3.cpp new file mode 100644 index 0000000000..03fa72c21c --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int***,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int***,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int***,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int***,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank4.cpp new file mode 100644 index 0000000000..10a46bcd9d --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int****,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int****,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int****,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int****,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank5.cpp new file mode 100644 index 0000000000..4c23c7e796 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*****,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*****,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*****,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int*****,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank8.cpp new file mode 100644 index 0000000000..1bc7ab41f7 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int********,LayoutLeft,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int********,LayoutLeft,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int********,LayoutLeft,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int********,LayoutLeft,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank1.cpp new file mode 100644 index 0000000000..0206838af6 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int*,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank2.cpp new file mode 100644 index 0000000000..78b67a4a2a --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int**,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int**,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int**,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int**,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank3.cpp new file mode 100644 index 0000000000..564f530d9b --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int***,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int***,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int***,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int***,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank4.cpp new file mode 100644 index 0000000000..b5ae4ae52a --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int****,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int****,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int****,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int****,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank5.cpp new file mode 100644 index 0000000000..b2c91a1aa1 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*****,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*****,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*****,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int*****,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank8.cpp new file mode 100644 index 0000000000..18e3f2b9b9 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int********,LayoutRight,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int********,LayoutRight,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int********,LayoutRight,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int********,LayoutRight,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank1.cpp new file mode 100644 index 0000000000..e3d08c6e38 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int*,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank2.cpp new file mode 100644 index 0000000000..5001fc2781 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int**,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int**,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int**,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int**,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank3.cpp new file mode 100644 index 0000000000..fd45308d15 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int***,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int***,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int***,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int***,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank4.cpp new file mode 100644 index 0000000000..d2fca73151 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int****,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int****,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int****,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int****,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank5.cpp new file mode 100644 index 0000000000..c7fafd4aec --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*****,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*****,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*****,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int*****,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank8.cpp new file mode 100644 index 0000000000..046aafa6ad --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int********,LayoutStride,LayoutRight, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int********,LayoutStride,LayoutLeft, Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int********,LayoutStride,LayoutStride,Experimental::HPX,int64_t) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int********,LayoutStride,Experimental::HPX,int64_t) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank1.cpp new file mode 100644 index 0000000000..60f78b7a57 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double*,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank2.cpp new file mode 100644 index 0000000000..304a5afc0d --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double**,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double**,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double**,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double**,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank3.cpp new file mode 100644 index 0000000000..8aeaf8a1f8 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double***,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double***,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double***,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double***,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank4.cpp new file mode 100644 index 0000000000..26ff7aefed --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double****,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double****,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double****,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double****,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank5.cpp new file mode 100644 index 0000000000..518d000eea --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*****,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*****,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*****,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double*****,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank8.cpp new file mode 100644 index 0000000000..36b3b4fab8 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double********,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double********,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double********,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double********,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank1.cpp new file mode 100644 index 0000000000..df5c890a49 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double*,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank2.cpp new file mode 100644 index 0000000000..b120215692 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double**,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double**,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double**,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double**,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank3.cpp new file mode 100644 index 0000000000..9b5e4c2e5f --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double***,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double***,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double***,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double***,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank4.cpp new file mode 100644 index 0000000000..74ad489303 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double****,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double****,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double****,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double****,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank5.cpp new file mode 100644 index 0000000000..bc9dbc65c1 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*****,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*****,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*****,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double*****,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank8.cpp new file mode 100644 index 0000000000..fbd98c8011 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double********,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double********,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double********,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double********,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank1.cpp new file mode 100644 index 0000000000..d52c5306d0 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double*,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank2.cpp new file mode 100644 index 0000000000..5cc29daaca --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double**,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double**,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double**,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double**,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank3.cpp new file mode 100644 index 0000000000..7e63d80236 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double***,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double***,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double***,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double***,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank4.cpp new file mode 100644 index 0000000000..11447c11b5 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double****,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double****,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double****,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double****,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank5.cpp new file mode 100644 index 0000000000..bafe266044 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*****,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*****,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double*****,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double*****,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank8.cpp new file mode 100644 index 0000000000..e4ef20c370 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double********,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double********,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(double********,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(double********,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank1.cpp new file mode 100644 index 0000000000..fb00c3bfd3 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float*,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank2.cpp new file mode 100644 index 0000000000..12718353e8 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float**,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float**,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float**,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float**,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank3.cpp new file mode 100644 index 0000000000..c9ab75062d --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float***,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float***,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float***,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float***,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank4.cpp new file mode 100644 index 0000000000..71380c21a2 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float****,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float****,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float****,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float****,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank5.cpp new file mode 100644 index 0000000000..9787086a80 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*****,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*****,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*****,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float*****,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank8.cpp new file mode 100644 index 0000000000..81072d77cb --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float********,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float********,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float********,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float********,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank1.cpp new file mode 100644 index 0000000000..363b05bace --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float*,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank2.cpp new file mode 100644 index 0000000000..ce1bc89e01 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float**,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float**,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float**,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float**,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank3.cpp new file mode 100644 index 0000000000..4af590818c --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float***,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float***,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float***,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float***,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank4.cpp new file mode 100644 index 0000000000..ad399eff76 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float****,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float****,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float****,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float****,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank5.cpp new file mode 100644 index 0000000000..661edef668 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*****,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*****,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*****,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float*****,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank8.cpp new file mode 100644 index 0000000000..48cb4a34b1 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float********,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float********,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float********,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float********,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank1.cpp new file mode 100644 index 0000000000..d2f88bb243 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float*,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank2.cpp new file mode 100644 index 0000000000..58ce6f1911 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float**,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float**,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float**,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float**,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank3.cpp new file mode 100644 index 0000000000..bc4efab1e4 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float***,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float***,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float***,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float***,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank4.cpp new file mode 100644 index 0000000000..6225cf9720 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float****,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float****,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float****,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float****,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank5.cpp new file mode 100644 index 0000000000..e50472d850 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*****,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*****,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float*****,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float*****,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank8.cpp new file mode 100644 index 0000000000..5ad427acc5 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float********,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float********,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(float********,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(float********,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank1.cpp new file mode 100644 index 0000000000..4ae2437fc8 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t*,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank2.cpp new file mode 100644 index 0000000000..02a2b8e1d9 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t**,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t**,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t**,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t**,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank3.cpp new file mode 100644 index 0000000000..ff693c9b4f --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t***,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t***,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t***,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t***,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank4.cpp new file mode 100644 index 0000000000..d96960d4a7 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t****,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t****,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t****,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t****,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank5.cpp new file mode 100644 index 0000000000..05c3ef68eb --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*****,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*****,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*****,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t*****,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank8.cpp new file mode 100644 index 0000000000..d96f47ece0 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t********,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t********,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t********,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t********,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank1.cpp new file mode 100644 index 0000000000..208933899e --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t*,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank2.cpp new file mode 100644 index 0000000000..aa7d9b8f15 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t**,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t**,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t**,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t**,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank3.cpp new file mode 100644 index 0000000000..e43a1783fd --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t***,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t***,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t***,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t***,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank4.cpp new file mode 100644 index 0000000000..6706074819 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t****,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t****,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t****,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t****,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank5.cpp new file mode 100644 index 0000000000..cd7082dcb3 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*****,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*****,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*****,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t*****,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank8.cpp new file mode 100644 index 0000000000..8735d58605 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t********,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t********,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t********,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t********,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank1.cpp new file mode 100644 index 0000000000..ec371dcba7 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t*,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank2.cpp new file mode 100644 index 0000000000..354da99794 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t**,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t**,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t**,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t**,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank3.cpp new file mode 100644 index 0000000000..bbc32aba03 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t***,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t***,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t***,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t***,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank4.cpp new file mode 100644 index 0000000000..addbbb291a --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t****,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t****,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t****,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t****,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank5.cpp new file mode 100644 index 0000000000..dbebda1594 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*****,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*****,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t*****,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t*****,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank8.cpp new file mode 100644 index 0000000000..f8a89b4226 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t********,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t********,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int64_t********,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int64_t********,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank1.cpp new file mode 100644 index 0000000000..7f0b9fc346 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int*,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank2.cpp new file mode 100644 index 0000000000..4a31e60a3a --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int**,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int**,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int**,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int**,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank3.cpp new file mode 100644 index 0000000000..e876da3a6c --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int***,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int***,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int***,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int***,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank4.cpp new file mode 100644 index 0000000000..a7ee2c554d --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int****,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int****,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int****,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int****,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank5.cpp new file mode 100644 index 0000000000..4769c235bc --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*****,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*****,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*****,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int*****,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank8.cpp new file mode 100644 index 0000000000..3ac618b5dd --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int********,LayoutLeft,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int********,LayoutLeft,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int********,LayoutLeft,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int********,LayoutLeft,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank1.cpp new file mode 100644 index 0000000000..825bee722f --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int*,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank2.cpp new file mode 100644 index 0000000000..44e24e57f3 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int**,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int**,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int**,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int**,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank3.cpp new file mode 100644 index 0000000000..0b18c7e5c0 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int***,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int***,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int***,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int***,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank4.cpp new file mode 100644 index 0000000000..951d770305 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int****,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int****,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int****,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int****,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank5.cpp new file mode 100644 index 0000000000..a0e80d764d --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*****,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*****,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*****,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int*****,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank8.cpp new file mode 100644 index 0000000000..d8cd0155af --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int********,LayoutRight,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int********,LayoutRight,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int********,LayoutRight,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int********,LayoutRight,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank1.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank1.cpp new file mode 100644 index 0000000000..c4bd8a043a --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank1.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int*,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank2.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank2.cpp new file mode 100644 index 0000000000..566eb71e4d --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank2.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int**,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int**,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int**,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int**,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank3.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank3.cpp new file mode 100644 index 0000000000..4b99a8fd0c --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank3.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int***,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int***,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int***,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int***,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank4.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank4.cpp new file mode 100644 index 0000000000..6cf55bb5b4 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank4.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int****,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int****,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int****,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int****,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank5.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank5.cpp new file mode 100644 index 0000000000..932a322bac --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank5.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*****,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*****,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int*****,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int*****,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank8.cpp b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank8.cpp new file mode 100644 index 0000000000..f46a156a93 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank8.cpp @@ -0,0 +1,54 @@ +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Kokkos is licensed under 3-clause BSD terms of use: +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER + +#define KOKKOS_IMPL_COMPILING_LIBRARY true +#include +namespace Kokkos { +namespace Impl { +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int********,LayoutStride,LayoutRight, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int********,LayoutStride,LayoutLeft, Experimental::HPX,int) +KOKKOS_IMPL_VIEWCOPY_ETI_INST(int********,LayoutStride,LayoutStride,Experimental::HPX,int) +KOKKOS_IMPL_VIEWFILL_ETI_INST(int********,LayoutStride,Experimental::HPX,int) + +} +} diff --git a/lib/kokkos/core/src/eti/HPX/Makefile.eti_HPX b/lib/kokkos/core/src/eti/HPX/Makefile.eti_HPX new file mode 100644 index 0000000000..904f32fb82 --- /dev/null +++ b/lib/kokkos/core/src/eti/HPX/Makefile.eti_HPX @@ -0,0 +1,288 @@ +Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutLeft_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutRight_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int_LayoutStride_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutLeft_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutRight_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int_LayoutStride_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutLeft_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutRight_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_int64_t_LayoutStride_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutLeft_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutRight_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_int64_t_LayoutStride_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutLeft_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutRight_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_float_LayoutStride_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutLeft_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutRight_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_float_LayoutStride_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutLeft_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutRight_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int_double_LayoutStride_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutLeft_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutRight_Rank8.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank1.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank1.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank1.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank2.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank2.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank2.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank3.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank3.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank3.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank4.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank4.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank4.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank5.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank5.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank5.cpp +Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank8.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank8.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_ETI_PATH)/HPX/Kokkos_HPX_ViewCopyETIInst_int64_t_double_LayoutStride_Rank8.cpp diff --git a/lib/kokkos/core/src/impl/Kokkos_AnalyzePolicy.hpp b/lib/kokkos/core/src/impl/Kokkos_AnalyzePolicy.hpp index d27c2e1306..50af5ec82e 100644 --- a/lib/kokkos/core/src/impl/Kokkos_AnalyzePolicy.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_AnalyzePolicy.hpp @@ -56,11 +56,12 @@ template < typename ExecutionSpace = void , typename IndexType = void , typename IterationPattern = void , typename LaunchBounds = void + , typename MyWorkItemProperty = Kokkos::Experimental::WorkItemProperty::None_t > struct PolicyTraitsBase { using type = PolicyTraitsBase< ExecutionSpace, Schedule, WorkTag, IndexType, - IterationPattern, LaunchBounds>; + IterationPattern, LaunchBounds, MyWorkItemProperty>; using execution_space = ExecutionSpace; using schedule_type = Schedule; @@ -68,8 +69,23 @@ struct PolicyTraitsBase using index_type = IndexType; using iteration_pattern = IterationPattern; using launch_bounds = LaunchBounds; + using work_item_property = MyWorkItemProperty; }; +template +struct SetWorkItemProperty +{ + static_assert( std::is_same::value + , "Kokkos Error: More than one work item property given" ); + using type = PolicyTraitsBase< typename PolicyBase::execution_space + , typename PolicyBase::schedule_type + , typename PolicyBase::work_tag + , typename PolicyBase::index_type + , typename PolicyBase::iteration_pattern + , typename PolicyBase::launch_bounds + , Property + >; +}; template struct SetExecutionSpace @@ -82,6 +98,7 @@ struct SetExecutionSpace , typename PolicyBase::index_type , typename PolicyBase::iteration_pattern , typename PolicyBase::launch_bounds + , typename PolicyBase::work_item_property >; }; @@ -96,6 +113,7 @@ struct SetSchedule , typename PolicyBase::index_type , typename PolicyBase::iteration_pattern , typename PolicyBase::launch_bounds + , typename PolicyBase::work_item_property >; }; @@ -110,6 +128,7 @@ struct SetWorkTag , typename PolicyBase::index_type , typename PolicyBase::iteration_pattern , typename PolicyBase::launch_bounds + , typename PolicyBase::work_item_property >; }; @@ -124,6 +143,7 @@ struct SetIndexType , IndexType , typename PolicyBase::iteration_pattern , typename PolicyBase::launch_bounds + , typename PolicyBase::work_item_property >; }; @@ -139,6 +159,7 @@ struct SetIterationPattern , typename PolicyBase::index_type , IterationPattern , typename PolicyBase::launch_bounds + , typename PolicyBase::work_item_property >; }; @@ -154,6 +175,7 @@ struct SetLaunchBounds , typename PolicyBase::index_type , typename PolicyBase::iteration_pattern , LaunchBounds + , typename PolicyBase::work_item_property >; }; @@ -170,8 +192,9 @@ struct AnalyzePolicy : public , typename std::conditional< std::is_integral::value , SetIndexType > , typename std::conditional< is_iteration_pattern::value, SetIterationPattern , typename std::conditional< is_launch_bounds::value , SetLaunchBounds + , typename std::conditional< Experimental::is_work_item_property::value, SetWorkItemProperty , SetWorkTag - >::type >::type >::type >::type >::type>::type::type + >::type >::type >::type >::type >::type>::type>::type::type , Traits... > {}; @@ -208,13 +231,15 @@ struct AnalyzePolicy , typename Base::launch_bounds >::type; + using work_item_property = typename Base::work_item_property; + using type = PolicyTraitsBase< execution_space , schedule_type , work_tag , index_type , iteration_pattern , launch_bounds - >; + , work_item_property>; }; template diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Strong.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Strong.hpp index 3d99b07568..63067c137a 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Strong.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Strong.hpp @@ -53,6 +53,13 @@ #include #endif +#include +#include + +#if defined(KOKKOS_ENABLE_CUDA) +#include +#endif + namespace Kokkos { //---------------------------------------------------------------------------- @@ -326,7 +333,165 @@ bool atomic_compare_exchange_strong(volatile T* const dest, const T compare, con } //---------------------------------------------------------------------------- +namespace Impl { +// memory-ordered versions are in the Impl namespace + +template +KOKKOS_INLINE_FUNCTION +bool _atomic_compare_exchange_strong_fallback( + T* dest, T compare, T val, memory_order_seq_cst_t, MemoryOrderFailure +) +{ + Kokkos::memory_fence(); + auto rv = Kokkos::atomic_compare_exchange_strong( + dest, compare, val + ); + Kokkos::memory_fence(); + return rv; +} + +template +KOKKOS_INLINE_FUNCTION +bool _atomic_compare_exchange_strong_fallback( + T* dest, T compare, T val, memory_order_acquire_t, MemoryOrderFailure +) +{ + auto rv = Kokkos::atomic_compare_exchange_strong( + dest, compare, val + ); + Kokkos::memory_fence(); + return rv; +} + +template +KOKKOS_INLINE_FUNCTION +bool _atomic_compare_exchange_strong_fallback( + T* dest, T compare, T val, memory_order_release_t, MemoryOrderFailure +) +{ + Kokkos::memory_fence(); + return Kokkos::atomic_compare_exchange_strong( + dest, compare, val + ); +} + +template +KOKKOS_INLINE_FUNCTION +bool _atomic_compare_exchange_strong_fallback( + T* dest, T compare, T val, memory_order_relaxed_t, MemoryOrderFailure +) +{ + return Kokkos::atomic_compare_exchange_strong( + dest, compare, val + ); +} + +#if (defined(KOKKOS_ENABLE_GNU_ATOMICS) && !defined(__CUDA_ARCH__)) \ + || (defined(KOKKOS_ENABLE_INTEL_ATOMICS) && !defined(__CUDA_ARCH__)) \ + || defined(KOKKOS_ENABLE_CUDA_ASM_ATOMICS) + +#if defined(__CUDA_ARCH__) + #define KOKKOS_INTERNAL_INLINE_DEVICE_IF_CUDA_ARCH __inline__ __device__ +#else + #define KOKKOS_INTERNAL_INLINE_DEVICE_IF_CUDA_ARCH inline +#endif + +template +KOKKOS_INTERNAL_INLINE_DEVICE_IF_CUDA_ARCH +bool _atomic_compare_exchange_strong( + T* dest, T compare, T val, + MemoryOrderSuccess, + MemoryOrderFailure, + typename std::enable_if< + ( + sizeof(T) == 1 + || sizeof(T) == 2 + || sizeof(T) == 4 + || sizeof(T) == 8 + ) + && std::is_same< + typename MemoryOrderSuccess::memory_order, + typename std::remove_cv::type + >::value + && std::is_same< + typename MemoryOrderFailure::memory_order, + typename std::remove_cv::type + >::value, + void const** + >::type = nullptr +) { + return __atomic_compare_exchange_n( + dest, &compare, val, /* weak = */ false, + MemoryOrderSuccess::gnu_constant, + MemoryOrderFailure::gnu_constant + ); +} + +template +KOKKOS_INTERNAL_INLINE_DEVICE_IF_CUDA_ARCH +bool _atomic_compare_exchange_strong( + T* dest, T compare, T val, + MemoryOrderSuccess order_success, + MemoryOrderFailure order_failure, + typename std::enable_if< + !( + sizeof(T) == 1 + || sizeof(T) == 2 + || sizeof(T) == 4 + || sizeof(T) == 8 + ) + && std::is_same< + typename MemoryOrderSuccess::memory_order, + typename std::remove_cv::type + >::value + && std::is_same< + typename MemoryOrderFailure::memory_order, + typename std::remove_cv::type + >::value, + void const** + >::type = nullptr +) { + return _atomic_compare_exchange_fallback( + dest, compare, val, + order_success, order_failure + ); +} + +#else + +template +KOKKOS_INLINE_FUNCTION +bool _atomic_compare_exchange_strong( + T* dest, T compare, T val, + MemoryOrderSuccess order_success, + MemoryOrderFailure order_failure +) { + return _atomic_compare_exchange_strong_fallback( + dest, compare, val, order_success, order_failure + ); +} + +#endif + +// TODO static asserts in overloads that don't make sense (as listed in https://gcc.gnu.org/onlinedocs/gcc-5.2.0/gcc/_005f_005fatomic-Builtins.html) +template +KOKKOS_FORCEINLINE_FUNCTION +bool atomic_compare_exchange_strong( + T* dest, T compare, T val, + MemoryOrderSuccess order_success, + MemoryOrderFailure order_failure +) { + return _atomic_compare_exchange_strong(dest, compare, val, order_success, order_failure); +} + + +} // end namespace Impl + } // namespace Kokkos +#if defined(KOKKOS_ENABLE_CUDA) +#include +#endif + #endif diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Weak.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Weak.hpp new file mode 100644 index 0000000000..3abc8ed4b7 --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Weak.hpp @@ -0,0 +1,418 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#if defined( KOKKOS_ENABLE_RFO_PREFETCH ) +#include +#endif + +#include +#include +#ifndef KOKKOS_ATOMIC_COMPARE_EXCHANGE_WEAK_HPP +#define KOKKOS_ATOMIC_COMPARE_EXCHANGE_WEAK_HPP + +#if defined(KOKKOS_ENABLE_CUDA) +#include +#endif + +namespace Kokkos { + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +// Cuda sm_70 or greater supports C++-like semantics directly + +#if defined( KOKKOS_ENABLE_CUDA ) + +#if defined(__CUDA_ARCH__) || defined(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND) + + +#if __CUDA_ARCH__ >= 700 +// See: https://github.com/ogiroux/freestanding +# define kokkos_cuda_internal_cas_release_32(ptr, old, expected, desired) \ + asm volatile("atom.cas.release.sys.b32 %0, [%1], %2, %3;" : "=r"(old) : "l"(ptr), "r"(expected), "r"(desired) : "memory") +# define kokkos_cuda_internal_cas_acquire_32(ptr, old, expected, desired) \ + asm volatile("atom.cas.acquire.sys.b32 %0, [%1], %2, %3;" : "=r"(old) : "l"(ptr), "r"(expected), "r"(desired) : "memory") +# define kokkos_cuda_internal_cas_acq_rel_32(ptr, old, expected, desired) \ + asm volatile("atom.cas.acq_rel.sys.b32 %0, [%1], %2, %3;" : "=r"(old) : "l"(ptr), "r"(expected), "r"(desired) : "memory") +# define kokkos_cuda_internal_cas_relaxed_32(ptr, old, expected, desired) \ + asm volatile("atom.cas.relaxed.sys.b32 %0, [%1], %2, %3;" : "=r"(old) : "l"(ptr), "r"(expected), "r"(desired) : "memory") +# define kokkos_cuda_internal_fence_seq_cst() asm volatile("fence.sc.sys;" : : : "memory") +# define kokkos_cuda_internal_fence_acq_rel() asm volatile("fence.acq_rel.sys;" : : : "memory") +#else +# define kokkos_cuda_internal_fence_acq_rel() asm volatile("membar.sys;" : : : "memory") +# define kokkos_cuda_internal_fence_seq_cst() asm volatile("membar.sys;" : : : "memory") +#endif + + +// 32-bit version +template ::type = 0 +> +__inline__ __device__ +bool +atomic_compare_exchange_weak( + T volatile* const dest, + T* const expected, + T const desired, + std::memory_order success_order = std::memory_order_seq_cst, + std::memory_order failure_order = std::memory_order_seq_cst +) { + // TODO assert that success_order >= failure_order + // See: https://github.com/ogiroux/freestanding + int32_t tmp = 0; + int32_t old = 0; + memcpy(&tmp, &desired, sizeof(T)); + memcpy(&old, expected, sizeof(T)); + int32_t old_tmp = old; +#if __CUDA_ARCH__ >= 700 + switch(success_order) { + case std::memory_order_seq_cst: + // sequentially consistent is just an acquire with a seq_cst fence + kokkos_cuda_internal_fence_seq_cst(); + kokkos_cuda_internal_cas_acquire_32((T*)dest, old, old_tmp, tmp); + break; + case std::memory_order_acquire: + kokkos_cuda_internal_cas_acquire_32((T*)dest, old, old_tmp, tmp); + break; + case std::memory_order_consume: + // same as acquire on PTX compatible platforms + kokkos_cuda_internal_cas_acquire_32((T*)dest, old, old_tmp, tmp); + break; + case std::memory_order_acq_rel: + kokkos_cuda_internal_cas_acq_rel_32((T*)dest, old, old_tmp, tmp); + break; + case std::memory_order_release: + kokkos_cuda_internal_cas_release_32((T*)dest, old, old_tmp, tmp); + break; + case std::memory_order_relaxed: + kokkos_cuda_internal_cas_relaxed_32((T*)dest, old, old_tmp, tmp); + break; + }; +#else + // All of the orders that require a fence before the relaxed atomic operation: + if( + success_order == std::memory_order_release + || success_order == std::memory_order_acq_rel + ) { + kokkos_cuda_internal_fence_acq_rel(); + } + else if(success_order == std::memory_order_seq_cst) { + kokkos_cuda_internal_fence_seq_cst(); + } + // This is relaxed: + // Cuda API requires casting away volatile + atomicCAS((T*)dest, old_tmp, tmp); +#endif + bool const rv = (old == old_tmp); +#if __CUDA_ARCH__ < 700 + if(rv) { + if( + success_order == std::memory_order_acquire + || success_order == std::memory_order_consume + || success_order == std::memory_order_acq_rel + ) { + kokkos_cuda_internal_fence_acq_rel(); + } + else if(success_order == std::memory_order_seq_cst) { + kokkos_cuda_internal_fence_seq_cst(); + } + } + else { + if( + failure_order == std::memory_order_acquire + || failure_order == std::memory_order_consume + || failure_order == std::memory_order_acq_rel + ) { + kokkos_cuda_internal_fence_acq_rel(); + } + else if(failure_order == std::memory_order_seq_cst) { + kokkos_cuda_internal_fence_seq_cst(); + } + } +#endif + memcpy(expected, &old, sizeof(T)); + return rv; +} + +// 64-bit version +template ::type = 0 +> +bool +atomic_compare_exchange_weak( + T volatile* const dest, + T* const expected, + T const desired, + std::memory_order success_order = std::memory_order_seq_cst, + std::memory_order failure_order = std::memory_order_seq_cst +) { + // TODO assert that success_order >= failure_order + // See: https://github.com/ogiroux/freestanding + int64_t tmp = 0; + int64_t old = 0; + memcpy(&tmp, &desired, sizeof(T)); + memcpy(&old, expected, sizeof(T)); + int64_t old_tmp = old; +#if __CUDA_ARCH__ >= 700 + switch(success_order) { + case std::memory_order_seq_cst: + // sequentially consistent is just an acquire with a seq_cst fence + kokkos_cuda_internal_fence_seq_cst(); + kokkos_cuda_internal_cas_acquire_64((T*)dest, old, old_tmp, tmp); + break; + case std::memory_order_acquire: + kokkos_cuda_internal_cas_acquire_64((T*)dest, old, old_tmp, tmp); + break; + case std::memory_order_consume: + // same as acquire on PTX compatible platforms + kokkos_cuda_internal_cas_acquire_64((T*)dest, old, old_tmp, tmp); + break; + case std::memory_order_acq_rel: + kokkos_cuda_internal_cas_acq_rel_64((T*)dest, old, old_tmp, tmp); + break; + case std::memory_order_release: + kokkos_cuda_internal_cas_release_64((T*)dest, old, old_tmp, tmp); + break; + case std::memory_order_relaxed: + kokkos_cuda_internal_cas_relaxed_64((T*)dest, old, old_tmp, tmp); + break; + }; +#else + // Cuda API requires casting away volatile + atomicCAS((T*)dest, old_tmp, tmp); +#endif + bool const rv = (old == old_tmp); + memcpy(expected, &old, sizeof(T)); + return rv; +} + +#endif // defined(__CUDA_ARCH__) || defined(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND) + +#endif // defined( KOKKOS_ENABLE_CUDA ) + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +// GCC native CAS supports int, long, unsigned int, unsigned long. +// Intel native CAS support int and long with the same interface as GCC. +#if !defined(KOKKOS_ENABLE_ROCM_ATOMICS) +#if !defined(__CUDA_ARCH__) || defined(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND) +#if defined(KOKKOS_ENABLE_GNU_ATOMICS) || defined(KOKKOS_ENABLE_INTEL_ATOMICS) + +inline +int atomic_compare_exchange( volatile int * const dest, const int compare, const int val) +{ +#if defined( KOKKOS_ENABLE_RFO_PREFETCH ) + _mm_prefetch( (const char*) dest, _MM_HINT_ET0 ); +#endif + return __sync_val_compare_and_swap(dest,compare,val); +} + +inline +long atomic_compare_exchange( volatile long * const dest, const long compare, const long val ) +{ +#if defined( KOKKOS_ENABLE_RFO_PREFETCH ) + _mm_prefetch( (const char*) dest, _MM_HINT_ET0 ); +#endif + return __sync_val_compare_and_swap(dest,compare,val); +} + +#if defined( KOKKOS_ENABLE_GNU_ATOMICS ) + +// GCC supports unsigned + +inline +unsigned int atomic_compare_exchange( volatile unsigned int * const dest, const unsigned int compare, const unsigned int val ) +{ return __sync_val_compare_and_swap(dest,compare,val); } + +inline +unsigned long atomic_compare_exchange( volatile unsigned long * const dest , + const unsigned long compare , + const unsigned long val ) +{ return __sync_val_compare_and_swap(dest,compare,val); } + +#endif + +template < typename T > +inline +T atomic_compare_exchange( volatile T * const dest, const T & compare, + typename Kokkos::Impl::enable_if< sizeof(T) == sizeof(int) , const T & >::type val ) +{ + union U { + int i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {}; + } tmp ; + +#if defined( KOKKOS_ENABLE_RFO_PREFETCH ) + _mm_prefetch( (const char*) dest, _MM_HINT_ET0 ); +#endif + + tmp.i = __sync_val_compare_and_swap( (int*) dest , *((int*)&compare) , *((int*)&val) ); + return tmp.t ; +} + +template < typename T > +inline +T atomic_compare_exchange( volatile T * const dest, const T & compare, + typename Kokkos::Impl::enable_if< sizeof(T) != sizeof(int) && + sizeof(T) == sizeof(long) , const T & >::type val ) +{ + union U { + long i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {}; + } tmp ; + +#if defined( KOKKOS_ENABLE_RFO_PREFETCH ) + _mm_prefetch( (const char*) dest, _MM_HINT_ET0 ); +#endif + + tmp.i = __sync_val_compare_and_swap( (long*) dest , *((long*)&compare) , *((long*)&val) ); + return tmp.t ; +} + +#if defined( KOKKOS_ENABLE_ASM) && defined ( KOKKOS_ENABLE_ISA_X86_64 ) +template < typename T > +inline +T atomic_compare_exchange( volatile T * const dest, const T & compare, + typename Kokkos::Impl::enable_if< sizeof(T) != sizeof(int) && + sizeof(T) != sizeof(long) && + sizeof(T) == sizeof(Impl::cas128_t), const T & >::type val ) +{ + union U { + Impl::cas128_t i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {}; + } tmp ; + +#if defined( KOKKOS_ENABLE_RFO_PREFETCH ) + _mm_prefetch( (const char*) dest, _MM_HINT_ET0 ); +#endif + + tmp.i = Impl::cas128( (Impl::cas128_t*) dest , *((Impl::cas128_t*)&compare) , *((Impl::cas128_t*)&val) ); + return tmp.t ; +} +#endif + +template < typename T > +inline +T atomic_compare_exchange( volatile T * const dest , const T compare , + typename Kokkos::Impl::enable_if< + ( sizeof(T) != 4 ) + && ( sizeof(T) != 8 ) + #if defined(KOKKOS_ENABLE_ASM) && defined ( KOKKOS_ENABLE_ISA_X86_64 ) + && ( sizeof(T) != 16 ) + #endif + , const T >::type& val ) +{ +#if defined( KOKKOS_ENABLE_RFO_PREFETCH ) + _mm_prefetch( (const char*) dest, _MM_HINT_ET0 ); +#endif + + while( !Impl::lock_address_host_space( (void*) dest ) ); + T return_val = *dest; + if( return_val == compare ) { + // Don't use the following line of code here: + // + //const T tmp = *dest = val; + // + // Instead, put each assignment in its own statement. This is + // because the overload of T::operator= for volatile *this should + // return void, not volatile T&. See Kokkos #177: + // + // https://github.com/kokkos/kokkos/issues/177 + *dest = val; + const T tmp = *dest; + #ifndef KOKKOS_COMPILER_CLANG + (void) tmp; + #endif + } + Impl::unlock_address_host_space( (void*) dest ); + return return_val; +} +//---------------------------------------------------------------------------- + +#elif defined( KOKKOS_ENABLE_OPENMP_ATOMICS ) + +template< typename T > +KOKKOS_INLINE_FUNCTION +T atomic_compare_exchange( volatile T * const dest, const T compare, const T val ) +{ + T retval; +#pragma omp critical + { + retval = dest[0]; + if ( retval == compare ) + dest[0] = val; + } + return retval; +} + +#elif defined( KOKKOS_ENABLE_SERIAL_ATOMICS ) + +template< typename T > +KOKKOS_INLINE_FUNCTION +T atomic_compare_exchange( volatile T * const dest_v, const T compare, const T val ) +{ + T* dest = const_cast(dest_v); + T retval = *dest; + if (retval == compare) *dest = val; + return retval; +} + +#endif +#endif +#endif // !defined ROCM_ATOMICS + +template +KOKKOS_INLINE_FUNCTION +bool atomic_compare_exchange_strong(volatile T* const dest, const T compare, const T val) +{ + return compare == atomic_compare_exchange(dest, compare, val); +} +//---------------------------------------------------------------------------- + +} // namespace Kokkos + +#endif + diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Add.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Add.hpp index d6fab81133..495fd48477 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Add.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Add.hpp @@ -90,10 +90,12 @@ __inline__ __device__ T atomic_fetch_add( volatile T * const dest , typename Kokkos::Impl::enable_if< sizeof(T) == sizeof(int) , const T >::type val ) { - union U { + // to work around a bug in the clang cuda compiler, the name here needs to be + // different from the one internal to the other overloads + union U1 { int i ; T t ; - KOKKOS_INLINE_FUNCTION U() {}; + KOKKOS_INLINE_FUNCTION U1() {}; } assume , oldval , newval ; oldval.t = *dest ; @@ -113,10 +115,12 @@ T atomic_fetch_add( volatile T * const dest , typename Kokkos::Impl::enable_if< sizeof(T) != sizeof(int) && sizeof(T) == sizeof(unsigned long long int) , const T >::type val ) { - union U { + // to work around a bug in the clang cuda compiler, the name here needs to be + // different from the one internal to the other overloads + union U2 { unsigned long long int i ; T t ; - KOKKOS_INLINE_FUNCTION U() {}; + KOKKOS_INLINE_FUNCTION U2() {}; } assume , oldval , newval ; oldval.t = *dest ; @@ -176,7 +180,7 @@ T atomic_fetch_add( volatile T * const dest , #if !defined(__CUDA_ARCH__) || defined(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND) #if defined(KOKKOS_ENABLE_GNU_ATOMICS) || defined(KOKKOS_ENABLE_INTEL_ATOMICS) -#if defined( KOKKOS_ENABLE_ASM ) && defined ( KOKKOS_ENABLE_ISA_X86_64 ) +#if defined( KOKKOS_ENABLE_ASM ) && (defined(KOKKOS_ENABLE_ISA_X86_64) || defined(KOKKOS_KNL_USE_ASM_WORKAROUND)) inline int atomic_fetch_add( volatile int * dest , const int val ) { diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Sub.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Sub.hpp index 48dc8731ef..7a4f95cd99 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Sub.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Sub.hpp @@ -89,7 +89,11 @@ __inline__ __device__ T atomic_fetch_sub( volatile T * const dest , typename Kokkos::Impl::enable_if< sizeof(T) == sizeof(int) , const T >::type val ) { - union { int i ; T t ; } oldval , assume , newval ; + union U { + int i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {} + } oldval , assume , newval ; oldval.t = *dest ; @@ -108,7 +112,11 @@ T atomic_fetch_sub( volatile T * const dest , typename Kokkos::Impl::enable_if< sizeof(T) != sizeof(int) && sizeof(T) == sizeof(unsigned long long int) , const T >::type val ) { - union { unsigned long long int i ; T t ; } oldval , assume , newval ; + union U { + unsigned long long int i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {} + } oldval , assume , newval ; oldval.t = *dest ; @@ -211,7 +219,11 @@ inline T atomic_fetch_sub( volatile T * const dest , typename Kokkos::Impl::enable_if< sizeof(T) == sizeof(int) , const T >::type val ) { - union { int i ; T t ; } assume , oldval , newval ; + union U { + int i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {} + } oldval , assume , newval ; #if defined( KOKKOS_ENABLE_RFO_PREFETCH ) _mm_prefetch( (const char*) dest, _MM_HINT_ET0 ); @@ -238,7 +250,11 @@ T atomic_fetch_sub( volatile T * const dest , _mm_prefetch( (const char*) dest, _MM_HINT_ET0 ); #endif - union { long i ; T t ; } assume , oldval , newval ; + union U { + long i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {} + } oldval , assume , newval ; oldval.t = *dest ; diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic.hpp index a3a18166af..c1a7d80364 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic.hpp @@ -156,13 +156,17 @@ T atomic_fetch_oper( const Oper& op, volatile T * const dest , typename Kokkos::Impl::enable_if< sizeof(T) != sizeof(int) && sizeof(T) == sizeof(unsigned long long int) , const T >::type val ) { - union { unsigned long long int i ; T t ; } oldval , assume , newval ; + union U { + unsigned long long int i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {} + } oldval , assume , newval ; oldval.t = *dest ; do { assume.i = oldval.i ; - newval.t = Oper::apply(assume.t, val) ; + newval.t = op.apply(assume.t, val) ; oldval.i = Kokkos::atomic_compare_exchange( (unsigned long long int*)dest , assume.i , newval.i ); } while ( assume.i != oldval.i ); @@ -175,7 +179,11 @@ T atomic_oper_fetch( const Oper& op, volatile T * const dest , typename Kokkos::Impl::enable_if< sizeof(T) != sizeof(int) && sizeof(T) == sizeof(unsigned long long int) , const T >::type val ) { - union { unsigned long long int i ; T t ; } oldval , assume , newval ; + union U { + unsigned long long int i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {} + } oldval , assume , newval ; oldval.t = *dest ; @@ -193,13 +201,17 @@ KOKKOS_INLINE_FUNCTION T atomic_fetch_oper( const Oper& op, volatile T * const dest , typename Kokkos::Impl::enable_if< sizeof(T) == sizeof(int) , const T >::type val ) { - union { int i ; T t ; } oldval , assume , newval ; + union U { + int i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {} + } oldval , assume , newval ; oldval.t = *dest ; do { assume.i = oldval.i ; - newval.t = Oper::apply(assume.t, val) ; + newval.t = op.apply(assume.t, val) ; oldval.i = Kokkos::atomic_compare_exchange( (int*)dest , assume.i , newval.i ); } while ( assume.i != oldval.i ); @@ -211,7 +223,11 @@ KOKKOS_INLINE_FUNCTION T atomic_oper_fetch( const Oper& op, volatile T * const dest , typename Kokkos::Impl::enable_if< sizeof(T) == sizeof(int), const T >::type val ) { - union { int i ; T t ; } oldval , assume , newval ; + union U { + int i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {} + } oldval , assume , newval ; oldval.t = *dest ; diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Load.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Load.hpp new file mode 100644 index 0000000000..2db74b9f1e --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Load.hpp @@ -0,0 +1,266 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2019) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_IMPL_KOKKOS_ATOMIC_LOAD_HPP +#define KOKKOS_IMPL_KOKKOS_ATOMIC_LOAD_HPP + +#include +#if defined(KOKKOS_ATOMIC_HPP) + +#include + +#if defined(KOKKOS_ENABLE_CUDA) +#include +#endif + +namespace Kokkos { +namespace Impl { + +// Olivier's implementation helpfully binds to the same builtins as GNU, so +// we make this code common across multiple options +#if (defined(KOKKOS_ENABLE_GNU_ATOMICS) && !defined(__CUDA_ARCH__)) \ + || (defined(KOKKOS_ENABLE_INTEL_ATOMICS) && !defined(__CUDA_ARCH__)) \ + || defined(KOKKOS_ENABLE_CUDA_ASM_ATOMICS) + +#if defined(__CUDA_ARCH__) && defined(KOKKOS_ENABLE_CUDA_ASM_ATOMICS) + #define KOKKOS_INTERNAL_INLINE_DEVICE_IF_CUDA_ARCH __inline__ __device__ +#else + #define KOKKOS_INTERNAL_INLINE_DEVICE_IF_CUDA_ARCH inline +#endif + +template +KOKKOS_INTERNAL_INLINE_DEVICE_IF_CUDA_ARCH +T _atomic_load( + T* ptr, MemoryOrder, + typename std::enable_if< + ( + sizeof(T) == 1 + || sizeof(T) == 2 + || sizeof(T) == 4 + || sizeof(T) == 8 + ) + && std::is_same< + typename MemoryOrder::memory_order, + typename std::remove_cv::type + >::value, + void const** + >::type = nullptr +) { + return __atomic_load_n(ptr, MemoryOrder::gnu_constant); +} + +template +KOKKOS_INTERNAL_INLINE_DEVICE_IF_CUDA_ARCH +T _atomic_load( + T* ptr, MemoryOrder, + typename std::enable_if< + !( + sizeof(T) == 1 + || sizeof(T) == 2 + || sizeof(T) == 4 + || sizeof(T) == 8 + ) + && std::is_default_constructible::value + && std::is_same< + typename MemoryOrder::memory_order, + typename std::remove_cv::type + >::value, + void const** + >::type = nullptr +) { + T rv{}; + __atomic_load(ptr, &rv, MemoryOrder::gnu_constant); + return rv; +} + +#undef KOKKOS_INTERNAL_INLINE_DEVICE_IF_CUDA_ARCH + +#elif defined(__CUDA_ARCH__) + +// Not compiling for Volta or later, or Cuda ASM atomics were manually disabled + +template +__device__ __inline__ +T _relaxed_atomic_load_impl( + T* ptr, + typename std::enable_if< + ( + sizeof(T) == 1 + || sizeof(T) == 2 + || sizeof(T) == 4 + || sizeof(T) == 8 + ), + void const** + >::type = nullptr +) { + return *ptr; +} + +template +struct NoOpOper { + __device__ __inline__ + static constexpr T apply(T const&, T const&) noexcept { } +}; + +template +__device__ __inline__ +T _relaxed_atomic_load_impl( + T* ptr, + typename std::enable_if< + !( + sizeof(T) == 1 + || sizeof(T) == 2 + || sizeof(T) == 4 + || sizeof(T) == 8 + ), + void const** + >::type = nullptr +) { + T rv{}; + // TODO remove a copy operation here? + Kokkos::atomic_oper_fetch(NoOpOper{}, &rv, rv); + return rv; +} + +template +__device__ __inline__ +T _atomic_load(T* ptr, memory_order_seq_cst_t) { + Kokkos::memory_fence(); + T rv = Impl::_relaxed_atomic_load_impl(ptr); + Kokkos::memory_fence(); + return rv; +} + +template +__device__ __inline__ +T _atomic_load(T* ptr, memory_order_acquire_t) { + T rv = Impl::_relaxed_atomic_load_impl(ptr); + Kokkos::memory_fence(); + return rv; +} + +template +__device__ __inline__ +T _atomic_load(T* ptr, memory_order_relaxed_t) { + return _relaxed_atomic_load_impl(ptr); +} + +#elif defined(KOKKOS_ENABLE_OPENMP_ATOMICS) + +template +inline +T _atomic_load(T* ptr, MemoryOrder) +{ + // AFAICT, all OpenMP atomics are sequentially consistent, so memory order doesn't matter + T retval{ }; +#pragma omp atomic read + { + retval = *ptr; + } + return retval; +} + +#elif defined(KOKKOS_ENABLE_SERIAL_ATOMICS) + +template +inline +T _atomic_load(T* ptr, MemoryOrder) +{ + return *ptr; +} + +#endif // end of all atomic implementations + + +template +KOKKOS_FORCEINLINE_FUNCTION +T atomic_load(T* ptr, Impl::memory_order_seq_cst_t) { + return _atomic_load(ptr, Impl::memory_order_seq_cst); +} + +template +KOKKOS_FORCEINLINE_FUNCTION +T atomic_load(T* ptr, Impl::memory_order_acquire_t) { + return _atomic_load(ptr, Impl::memory_order_acquire); +} + +template +KOKKOS_FORCEINLINE_FUNCTION +T atomic_load(T* ptr, Impl::memory_order_relaxed_t) { + return _atomic_load(ptr, Impl::memory_order_relaxed); +} + +template +KOKKOS_FORCEINLINE_FUNCTION +T atomic_load(T* ptr, Impl::memory_order_release_t) { + static_assert( + sizeof(T) == 0, // just something that will always be false, but only on instantiation + "atomic_load with memory order release doesn't make any sense!" + ); +} + +template +KOKKOS_FORCEINLINE_FUNCTION +T atomic_load(T* ptr, Impl::memory_order_acq_rel_t) { + static_assert( + sizeof(T) == 0, // just something that will always be false, but only on instantiation + "atomic_load with memory order acq_rel doesn't make any sense!" + ); +} + +template +KOKKOS_FORCEINLINE_FUNCTION +T atomic_load(T* ptr) { + // relaxed by default! + return _atomic_load(ptr, Impl::memory_order_relaxed); +} + +} // end namespace Impl +} // end namespace Kokkos + +#if defined(KOKKOS_ENABLE_CUDA) +#include +#endif + +#endif // defined(KOKKOS_ATOMIC_HPP) +#endif //KOKKOS_IMPL_KOKKOS_ATOMIC_LOAD_HPP diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Memory_Order.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Memory_Order.hpp new file mode 100644 index 0000000000..7b9c08551c --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Memory_Order.hpp @@ -0,0 +1,122 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2019) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_KOKKOS_ATOMIC_MEMORY_ORDER_HPP +#define KOKKOS_KOKKOS_ATOMIC_MEMORY_ORDER_HPP + +#include + +#include + +namespace Kokkos { +namespace Impl { + +/** @file + * Provides strongly-typed analogs of the standard memory order enumerators. + * In addition to (very slightly) reducing the constant propagation burden on + * the compiler, this allows us to give compile-time errors for things that + * don't make sense, like atomic_load with memory order release. + */ + +struct memory_order_seq_cst_t { + using memory_order = memory_order_seq_cst_t; +#if defined(KOKKOS_ENABLE_GNU_ATOMICS) \ + || defined(KOKKOS_ENABLE_INTEL_ATOMICS) \ + || defined(KOKKOS_ENABLE_CUDA_ASM_ATOMICS) + static constexpr auto gnu_constant = __ATOMIC_SEQ_CST; +#endif + static constexpr auto std_constant = std::memory_order_seq_cst; +}; +constexpr memory_order_seq_cst_t memory_order_seq_cst = { }; + +struct memory_order_relaxed_t { + using memory_order = memory_order_relaxed_t; +#if defined(KOKKOS_ENABLE_GNU_ATOMICS) \ + || defined(KOKKOS_ENABLE_INTEL_ATOMICS) \ + || defined(KOKKOS_ENABLE_CUDA_ASM_ATOMICS) + static constexpr auto gnu_constant = __ATOMIC_RELAXED; +#endif + static constexpr auto std_constant = std::memory_order_relaxed; +}; +constexpr memory_order_relaxed_t memory_order_relaxed = { }; + +struct memory_order_acquire_t { + using memory_order = memory_order_acquire_t; +#if defined(KOKKOS_ENABLE_GNU_ATOMICS) \ + || defined(KOKKOS_ENABLE_INTEL_ATOMICS) \ + || defined(KOKKOS_ENABLE_CUDA_ASM_ATOMICS) + static constexpr auto gnu_constant = __ATOMIC_ACQUIRE; +#endif + static constexpr auto std_constant = std::memory_order_acquire; +}; +constexpr memory_order_acquire_t memory_order_acquire = { }; + +struct memory_order_release_t { + using memory_order = memory_order_release_t; +#if defined(KOKKOS_ENABLE_GNU_ATOMICS) \ + || defined(KOKKOS_ENABLE_INTEL_ATOMICS) \ + || defined(KOKKOS_ENABLE_CUDA_ASM_ATOMICS) + static constexpr auto gnu_constant = __ATOMIC_RELEASE; +#endif + static constexpr auto std_constant = std::memory_order_release; +}; +constexpr memory_order_release_t memory_order_release = { }; + +struct memory_order_acq_rel_t { + using memory_order = memory_order_acq_rel_t; +#if defined(KOKKOS_ENABLE_GNU_ATOMICS) \ + || defined(KOKKOS_ENABLE_INTEL_ATOMICS) \ + || defined(KOKKOS_ENABLE_CUDA_ASM_ATOMICS) + static constexpr auto gnu_constant = __ATOMIC_ACQ_REL; +#endif + static constexpr auto std_constant = std::memory_order_acq_rel; +}; +constexpr memory_order_acq_rel_t memory_order_acq_rel = { }; + + +// Intentionally omit consume (for now) + +} // end namespace Impl +} // end namespace Kokkos + +#endif //KOKKOS_KOKKOS_ATOMIC_MEMORY_ORDER_HPP diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Store.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Store.hpp new file mode 100644 index 0000000000..066f90480d --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Store.hpp @@ -0,0 +1,258 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2019) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_IMPL_KOKKOS_ATOMIC_STORE_HPP +#define KOKKOS_IMPL_KOKKOS_ATOMIC_STORE_HPP + +#include +#if defined(KOKKOS_ATOMIC_HPP) + +#include + +#if defined(KOKKOS_ENABLE_CUDA) +#include +#endif + +namespace Kokkos { +namespace Impl { + +// Olivier's implementation helpfully binds to the same builtins as GNU, so +// we make this code common across multiple options +#if (defined(KOKKOS_ENABLE_GNU_ATOMICS) && !defined(__CUDA_ARCH__)) \ + || (defined(KOKKOS_ENABLE_INTEL_ATOMICS) && !defined(__CUDA_ARCH__)) \ + || defined(KOKKOS_ENABLE_CUDA_ASM_ATOMICS) + +#if defined(__CUDA_ARCH__) && defined(KOKKOS_ENABLE_CUDA_ASM_ATOMICS) + #define KOKKOS_INTERNAL_INLINE_DEVICE_IF_CUDA_ARCH __inline__ __device__ +#else + #define KOKKOS_INTERNAL_INLINE_DEVICE_IF_CUDA_ARCH inline +#endif + +template +KOKKOS_INTERNAL_INLINE_DEVICE_IF_CUDA_ARCH +void _atomic_store( + T* ptr, T val, MemoryOrder, + typename std::enable_if< + ( + sizeof(T) == 1 + || sizeof(T) == 2 + || sizeof(T) == 4 + || sizeof(T) == 8 + ) + && std::is_same< + typename MemoryOrder::memory_order, + typename std::remove_cv::type + >::value, + void const** + >::type = nullptr +) { + __atomic_store_n(ptr, val, MemoryOrder::gnu_constant); +} + +template +KOKKOS_INTERNAL_INLINE_DEVICE_IF_CUDA_ARCH +void _atomic_store( + T* ptr, T val, MemoryOrder, + typename std::enable_if< + !( + sizeof(T) == 1 + || sizeof(T) == 2 + || sizeof(T) == 4 + || sizeof(T) == 8 + ) + && std::is_default_constructible::value + && std::is_same< + typename MemoryOrder::memory_order, + typename std::remove_cv::type + >::value, + void const** + >::type = nullptr +) { + __atomic_store(ptr, &val, MemoryOrder::gnu_constant); +} + +#undef KOKKOS_INTERNAL_INLINE_DEVICE_IF_CUDA_ARCH + +#elif defined(__CUDA_ARCH__) + +// Not compiling for Volta or later, or Cuda ASM atomics were manually disabled + +template +__device__ __inline__ +void _relaxed_atomic_store_impl( + T* ptr, T val, + typename std::enable_if< + ( + sizeof(T) == 1 + || sizeof(T) == 2 + || sizeof(T) == 4 + || sizeof(T) == 8 + ), + void const** + >::type = nullptr +) { + *ptr = val; +} + +template +struct StoreOper { + __device__ __inline__ + static constexpr T apply(T const&, T const& val) noexcept { return val; } +}; + +template +__device__ __inline__ +void _relaxed_atomic_store_impl( + T* ptr, T val, + typename std::enable_if< + !( + sizeof(T) == 1 + || sizeof(T) == 2 + || sizeof(T) == 4 + || sizeof(T) == 8 + ), + void const** + >::type = nullptr +) { + Kokkos::atomic_oper_fetch(StoreOper{}, &rv, (T&&)val); +} + +template +__device__ __inline__ +void _atomic_store(T* ptr, T val, memory_order_seq_cst_t) { + Kokkos::memory_fence(); + Impl::_relaxed_atomic_store_impl(ptr, val); + Kokkos::memory_fence(); + return rv; +} + +template +__device__ __inline__ +void _atomic_store(T* ptr, T val, memory_order_release_t) { + Kokkos::memory_fence(); + _relaxed_atomic_store_impl(ptr, val); +} + +template +__device__ __inline__ +void _atomic_store(T* ptr, T val, memory_order_relaxed_t) { + _relaxed_atomic_store_impl(ptr, val); +} + +#elif defined(KOKKOS_ENABLE_OPENMP_ATOMICS) + +template +inline +void _atomic_store(T* ptr, T val, MemoryOrder) +{ + // AFAICT, all OpenMP atomics are sequentially consistent, so memory order doesn't matter +#pragma omp atomic write + { + *ptr = val; + } +} + +#elif defined(KOKKOS_ENABLE_SERIAL_ATOMICS) + +template +inline +void _atomic_store(T* ptr, T val, MemoryOrder) +{ + *ptr = val; +} + +#endif // end of all atomic implementations + + +template +KOKKOS_FORCEINLINE_FUNCTION +void atomic_store(T* ptr, T val, Impl::memory_order_seq_cst_t) { + _atomic_store(ptr, val, Impl::memory_order_seq_cst); +} + +template +KOKKOS_FORCEINLINE_FUNCTION +void atomic_store(T* ptr, T val, Impl::memory_order_release_t) { + _atomic_store(ptr, val, Impl::memory_order_release); +} + +template +KOKKOS_FORCEINLINE_FUNCTION +void atomic_store(T* ptr, T val, Impl::memory_order_relaxed_t) { + _atomic_store(ptr, val, Impl::memory_order_relaxed); +} + +template +KOKKOS_FORCEINLINE_FUNCTION +void atomic_store(T* ptr, T val, Impl::memory_order_acquire_t) { + static_assert( + sizeof(T) == 0, // just something that will always be false, but only on instantiation + "atomic_store with memory order acquire doesn't make any sense!" + ); +} + +template +KOKKOS_FORCEINLINE_FUNCTION +void atomic_store(T* ptr, T val, Impl::memory_order_acq_rel_t) { + static_assert( + sizeof(T) == 0, // just something that will always be false, but only on instantiation + "atomic_store with memory order acq_rel doesn't make any sense!" + ); +} + +template +KOKKOS_FORCEINLINE_FUNCTION +void atomic_store(T* ptr, T val) { + // relaxed by default! + _atomic_store(ptr, Impl::memory_order_relaxed); +} + +} // end namespace Impl +} // end namespace Kokkos + +#if defined(KOKKOS_ENABLE_CUDA) +#include +#endif + +#endif // defined(KOKKOS_ATOMIC_HPP) +#endif //KOKKOS_IMPL_KOKKOS_ATOMIC_STORE_HPP diff --git a/lib/kokkos/core/src/impl/Kokkos_ChaseLev.hpp b/lib/kokkos/core/src/impl/Kokkos_ChaseLev.hpp new file mode 100644 index 0000000000..f86e68cb1d --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_ChaseLev.hpp @@ -0,0 +1,314 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +// Experimental unified task-data parallel manycore LDRD + +#ifndef KOKKOS_IMPL_LOCKFREEDEQUE_HPP +#define KOKKOS_IMPL_LOCKFREEDEQUE_HPP + +#include +#ifdef KOKKOS_ENABLE_TASKDAG // Note: implies CUDA_VERSION >= 8000 if using CUDA + +#include + +#include +#include +#include // KOKKOS_EXPECTS +#include // KOKKOS_EXPECTS + +#include // atomic_compare_exchange, atomic_fence +#include "Kokkos_LIFO.hpp" + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +template +struct fixed_size_circular_buffer { +public: + + using node_type = NodeType; + using size_type = SizeType; + +private: + + node_type* m_buffer[CircularBufferSize] = { nullptr }; + +public: + + fixed_size_circular_buffer() = default; + fixed_size_circular_buffer(fixed_size_circular_buffer const&) = delete; + fixed_size_circular_buffer(fixed_size_circular_buffer&&) = default; + fixed_size_circular_buffer& operator=(fixed_size_circular_buffer const&) = delete; + fixed_size_circular_buffer& operator=(fixed_size_circular_buffer&&) = default; + ~fixed_size_circular_buffer() = default; + + KOKKOS_FORCEINLINE_FUNCTION + static constexpr size_type size() noexcept { + return size_type(CircularBufferSize); + } + + KOKKOS_FORCEINLINE_FUNCTION + node_type* operator[](size_type idx) const noexcept { + return m_buffer[idx % size()]; + } + + KOKKOS_FORCEINLINE_FUNCTION + node_type*& operator[](size_type idx) noexcept { + return m_buffer[idx % size()]; + } +}; + +template +struct non_owning_variable_size_circular_buffer { +public: + + using node_type = NodeType; + using size_type = SizeType; + +private: + + ObservingRawPtr m_buffer = nullptr; + size_type m_size = 0; + +public: + + KOKKOS_INLINE_FUNCTION + non_owning_variable_size_circular_buffer( + ObservingRawPtr buffer, + size_type arg_size + ) noexcept + : m_buffer(buffer), + m_size(arg_size) + { } + + non_owning_variable_size_circular_buffer() = default; + non_owning_variable_size_circular_buffer(non_owning_variable_size_circular_buffer const&) = delete; + non_owning_variable_size_circular_buffer(non_owning_variable_size_circular_buffer&&) = default; + non_owning_variable_size_circular_buffer& operator=(non_owning_variable_size_circular_buffer const&) = delete; + non_owning_variable_size_circular_buffer& operator=(non_owning_variable_size_circular_buffer&&) = default; + ~non_owning_variable_size_circular_buffer() = default; + + KOKKOS_FORCEINLINE_FUNCTION + constexpr size_type size() const noexcept { + return m_size; + } + + KOKKOS_FORCEINLINE_FUNCTION + node_type* operator[](size_type idx) const noexcept { + return m_buffer[idx % size()]; + } + + KOKKOS_FORCEINLINE_FUNCTION + node_type*& operator[](size_type idx) noexcept { + return m_buffer[idx % size()]; + } +}; + +/** Based on "Correct and Efficient Work-Stealing for Weak Memory Models," + * PPoPP '13, https://www.di.ens.fr/~zappa/readings/ppopp13.pdf + * + */ +template < + class T, + class CircularBufferT, + class SizeType = int32_t +> +struct ChaseLevDeque { +public: + + using size_type = SizeType; + using value_type = T; + // Still using intrusive linked list for waiting queue + using node_type = SimpleSinglyLinkedListNode<>; + +private: + + // TODO @tasking @new_feature DSH variable size circular buffer? + + CircularBufferT m_array; + size_type m_top = 0; + size_type m_bottom = 0; + + +public: + + template < + class _ignore=void, + class=typename std::enable_if< + std::is_default_constructible::value + >::type + > + ChaseLevDeque() : m_array() { } + + explicit + ChaseLevDeque(CircularBufferT buffer) + : m_array(std::move(buffer)) + { } + + KOKKOS_INLINE_FUNCTION + bool empty() const { + // TODO @tasking @memory_order DSH memory order + return m_top > m_bottom - 1; + } + + KOKKOS_INLINE_FUNCTION + OptionalRef + pop() { + auto b = m_bottom - 1; // atomic load relaxed + auto& a = m_array; // atomic load relaxed + m_bottom = b; // atomic store relaxed + Kokkos::memory_fence(); // memory order seq_cst + auto t = m_top; // atomic load relaxed + OptionalRef return_value; + if(t <= b) { + /* non-empty queue */ + return_value = *static_cast(a[b]); // relaxed load + if(t == b) { + /* single last element in the queue. */ + if(not Impl::atomic_compare_exchange_strong(&m_top, t, t+1, memory_order_seq_cst, memory_order_relaxed)) { + /* failed race, someone else stole it */ + return_value = nullptr; + } + m_bottom = b + 1; // memory order relaxed + } + } else { + /* empty queue */ + m_bottom = b + 1; // memory order relaxed + } + return return_value; + } + + KOKKOS_INLINE_FUNCTION + bool push(node_type&& node) + { + // Just forward to the lvalue version + return push(node); + } + + KOKKOS_INLINE_FUNCTION + bool push(node_type& node) + { + auto b = m_bottom; // memory order relaxed + auto t = Impl::atomic_load(&m_top, memory_order_acquire); + auto& a = m_array; + if(b - t > a.size() - 1) { + /* queue is full, resize */ + //m_array = a->grow(); + //a = m_array; + return false; + } + a[b] = &node; // relaxed + Impl::atomic_store(&m_bottom, b + 1, memory_order_release); + return true; + } + + KOKKOS_INLINE_FUNCTION + OptionalRef + steal() { + auto t = m_top; // TODO @tasking @memory_order DSH: atomic load acquire + Kokkos::memory_fence(); // seq_cst fence, so why does the above need to be acquire? + auto b = Impl::atomic_load(&m_bottom, memory_order_acquire); + OptionalRef return_value; + if(t < b) { + /* Non-empty queue */ + auto& a = m_array; // TODO @tasking @memory_order DSH: technically consume ordered, but acquire should be fine + Kokkos::load_fence(); // TODO @tasking @memory_order DSH memory order instead of fence + return_value = *static_cast(a[t]); // relaxed + if(not Impl::atomic_compare_exchange_strong(&m_top, t, t+1, memory_order_seq_cst, memory_order_relaxed)) { + return_value = nullptr; + } + } + return return_value; + } + +}; + +/* + // The atomicity of this load was more important in the paper's version + // because that version had a circular buffer that could grow. We're + // essentially using the memory order in this version as a fence, which + // may be unnecessary + auto buffer_ptr = (node_type***)&m_array.buffer; + auto a = Impl::atomic_load(buffer_ptr, memory_order_acquire); // technically consume ordered, but acquire should be fine + return_value = *static_cast(a[t % m_array->size]); // relaxed; we'd have to replace the m_array->size if we ever allow growth +*/ + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +template +struct TaskQueueTraitsChaseLev { + + template + using ready_queue_type = ChaseLevDeque< + Task, + fixed_size_circular_buffer, CircularBufferSize, int32_t>, + int32_t + >; + + template + using waiting_queue_type = SingleConsumeOperationLIFO; + + template + using intrusive_task_base_type = + typename ready_queue_type::node_type; + + static constexpr auto ready_queue_insertion_may_fail = true; + +}; + +} // end namespace Impl +} // end namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* defined KOKKOS_ENABLE_TASKDAG */ +#endif /* #ifndef KOKKOS_IMPL_LOCKFREEDEQUE_HPP */ + diff --git a/lib/kokkos/core/src/impl/Kokkos_Core.cpp b/lib/kokkos/core/src/impl/Kokkos_Core.cpp index 82fdee4399..0d472e98bb 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Core.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_Core.cpp @@ -85,7 +85,8 @@ setenv("MEMKIND_HBW_NODES", "1", 0); } // Protect declarations, to prevent "unused variable" warnings. -#if defined( KOKKOS_ENABLE_OPENMP ) || defined( KOKKOS_ENABLE_THREADS ) || defined( KOKKOS_ENABLE_OPENMPTARGET ) +#if defined( KOKKOS_ENABLE_OPENMP ) || defined( KOKKOS_ENABLE_THREADS ) ||\ + defined( KOKKOS_ENABLE_OPENMPTARGET ) || defined ( KOKKOS_ENABLE_HPX ) const int num_threads = args.num_threads; #endif #if defined( KOKKOS_ENABLE_THREADS ) || defined( KOKKOS_ENABLE_OPENMPTARGET ) @@ -160,6 +161,21 @@ setenv("MEMKIND_HBW_NODES", "1", 0); } #endif +#if defined( KOKKOS_ENABLE_HPX ) + if( std::is_same< Kokkos::Experimental::HPX , Kokkos::DefaultExecutionSpace >::value || + std::is_same< Kokkos::Experimental::HPX , Kokkos::HostSpace::execution_space >::value ) { + if(num_threads>0) { + Kokkos::Experimental::HPX::impl_initialize(num_threads); + } else { + Kokkos::Experimental::HPX::impl_initialize(); + } + //std::cout << "Kokkos::initialize() fyi: HPX enabled and initialized" << std::endl ; + } + else { + //std::cout << "Kokkos::initialize() fyi: HPX enabled but not initialized" << std::endl ; + } +#endif + #if defined( KOKKOS_ENABLE_SERIAL ) // Prevent "unused variable" warning for 'args' input struct. If // Serial::initialize() ever needs to take arguments from the input @@ -268,6 +284,8 @@ void finalize_internal( const bool all_spaces = false ) Kokkos::Cuda::impl_finalize(); #endif } +#else + (void)all_spaces; #endif #if defined( KOKKOS_ENABLE_ROCM ) @@ -298,6 +316,15 @@ void finalize_internal( const bool all_spaces = false ) } #endif +#if defined( KOKKOS_ENABLE_HPX ) + if( std::is_same< Kokkos::Experimental::HPX , Kokkos::DefaultExecutionSpace >::value || + std::is_same< Kokkos::Experimental::HPX , Kokkos::HostSpace::execution_space >::value || + all_spaces ) { + if(Kokkos::Experimental::HPX::impl_is_initialized()) + Kokkos::Experimental::HPX::impl_finalize(); + } +#endif + #if defined( KOKKOS_ENABLE_THREADS ) if( std::is_same< Kokkos::Threads , Kokkos::DefaultExecutionSpace >::value || std::is_same< Kokkos::Threads , Kokkos::HostSpace::execution_space >::value || @@ -331,34 +358,38 @@ void fence_internal() #if defined( KOKKOS_ENABLE_CUDA ) if( std::is_same< Kokkos::Cuda , Kokkos::DefaultExecutionSpace >::value ) { - Kokkos::Cuda::fence(); + Kokkos::Cuda::impl_static_fence(); } #endif #if defined( KOKKOS_ENABLE_ROCM ) if( std::is_same< Kokkos::Experimental::ROCm , Kokkos::DefaultExecutionSpace >::value ) { - Kokkos::Experimental::ROCm::fence(); + Kokkos::Experimental::ROCm().fence(); } #endif #if defined( KOKKOS_ENABLE_OPENMP ) if( std::is_same< Kokkos::OpenMP , Kokkos::DefaultExecutionSpace >::value || std::is_same< Kokkos::OpenMP , Kokkos::HostSpace::execution_space >::value ) { - Kokkos::OpenMP::fence(); + Kokkos::OpenMP::impl_static_fence(); } #endif +#if defined( KOKKOS_ENABLE_HPX ) + Kokkos::Experimental::HPX::impl_static_fence(); +#endif + #if defined( KOKKOS_ENABLE_THREADS ) if( std::is_same< Kokkos::Threads , Kokkos::DefaultExecutionSpace >::value || std::is_same< Kokkos::Threads , Kokkos::HostSpace::execution_space >::value ) { - Kokkos::Threads::fence(); + Kokkos::Threads::impl_static_fence(); } #endif #if defined( KOKKOS_ENABLE_SERIAL ) if( std::is_same< Kokkos::Serial , Kokkos::DefaultExecutionSpace >::value || std::is_same< Kokkos::Serial , Kokkos::HostSpace::execution_space >::value ) { - Kokkos::Serial::fence(); + Kokkos::Serial::impl_static_fence(); } #endif @@ -708,6 +739,12 @@ void print_configuration( std::ostream & out , const bool detail ) msg << "yes" << std::endl; #else msg << "no" << std::endl; +#endif + msg << " KOKKOS_ENABLE_HPX: "; +#ifdef KOKKOS_ENABLE_HPX + msg << "yes" << std::endl; +#else + msg << "no" << std::endl; #endif msg << " KOKKOS_ENABLE_THREADS: "; #ifdef KOKKOS_ENABLE_THREADS @@ -957,6 +994,9 @@ void print_configuration( std::ostream & out , const bool detail ) #ifdef KOKKOS_ENABLE_OPENMP OpenMP::print_configuration(msg, detail); #endif +#ifdef KOKKOS_ENABLE_HPX + Experimental::HPX::print_configuration(msg, detail); +#endif #if defined( KOKKOS_ENABLE_THREADS ) Threads::print_configuration(msg, detail); #endif diff --git a/lib/kokkos/core/src/impl/Kokkos_EBO.hpp b/lib/kokkos/core/src/impl/Kokkos_EBO.hpp new file mode 100644 index 0000000000..69bb74e2c5 --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_EBO.hpp @@ -0,0 +1,343 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_EBO_HPP +#define KOKKOS_EBO_HPP + +//---------------------------------------------------------------------------- + +#include + +#include +//---------------------------------------------------------------------------- + + +#include +#include + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template +struct NotOnDeviceCtorDisambiguator { }; + +template +struct NoCtorsNotOnDevice : std::false_type { }; + +template +struct DefaultCtorNotOnDevice : std::false_type { }; + +template <> +struct DefaultCtorNotOnDevice<> : std::true_type { }; + +template class CtorNotOnDevice = NoCtorsNotOnDevice> +struct EBOBaseImpl; + +template class CtorNotOnDevice> +struct EBOBaseImpl { + + /* + * Workaround for constexpr in C++11: we need to still call T(args...), but we + * can't do so in the body of a constexpr function (in C++11), and there's no + * data member to construct into. But we can construct into an argument + * of a delegating constructor... + */ + // TODO @minor DSH the destructor gets called too early with this workaround + struct _constexpr_14_workaround_tag { }; + struct _constexpr_14_workaround_no_device_tag { }; + KOKKOS_FORCEINLINE_FUNCTION + constexpr EBOBaseImpl(_constexpr_14_workaround_tag, T&&) noexcept { } + inline constexpr EBOBaseImpl(_constexpr_14_workaround_no_device_tag, T&&) noexcept { } + + template < + class... Args, + class _ignored = void, + typename std::enable_if< + std::is_void<_ignored>::value + && std::is_constructible::value + && !CtorNotOnDevice::value, + int + >::type = 0 + > + KOKKOS_FORCEINLINE_FUNCTION + constexpr explicit + EBOBaseImpl( + Args&&... args + ) noexcept(noexcept(T(std::forward(args)...))) + // still call the constructor + : EBOBaseImpl(_constexpr_14_workaround_tag{}, T(std::forward(args)...)) + { } + + template < + class... Args, + class _ignored=void, + typename std::enable_if< + std::is_void<_ignored>::value + && std::is_constructible::value + && CtorNotOnDevice::value, + long + >::type = 0 + > + inline constexpr explicit + EBOBaseImpl( + Args&&... args + ) noexcept(noexcept(T(std::forward(args)...))) + // still call the constructor + : EBOBaseImpl(_constexpr_14_workaround_no_device_tag{}, T(std::forward(args)...)) + { } + + KOKKOS_FORCEINLINE_FUNCTION + constexpr EBOBaseImpl(EBOBaseImpl const&) = default; + + KOKKOS_FORCEINLINE_FUNCTION + constexpr EBOBaseImpl(EBOBaseImpl&&) = default; + + KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_CONSTEXPR_14 + EBOBaseImpl& operator=(EBOBaseImpl const&) = default; + + KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_CONSTEXPR_14 + EBOBaseImpl& operator=(EBOBaseImpl&&) = default; + + KOKKOS_FORCEINLINE_FUNCTION + ~EBOBaseImpl() = default; + + KOKKOS_INLINE_FUNCTION + KOKKOS_CONSTEXPR_14 + T& _ebo_data_member() & { + return *reinterpret_cast(this); + } + + KOKKOS_INLINE_FUNCTION + constexpr + T const& _ebo_data_member() const & { + return *reinterpret_cast(this); + } + + KOKKOS_INLINE_FUNCTION + T volatile& _ebo_data_member() volatile & { + return *reinterpret_cast(this); + } + + KOKKOS_INLINE_FUNCTION + T const volatile& _ebo_data_member() const volatile & { + return *reinterpret_cast(this); + } + + KOKKOS_INLINE_FUNCTION + KOKKOS_CONSTEXPR_14 + T&& _ebo_data_member() && { + return std::move(*reinterpret_cast(this)); + } + +}; + +template class CTorsNotOnDevice> +struct EBOBaseImpl { + + T m_ebo_object; + + template < + class... Args, + class _ignored=void, + typename std::enable_if< + std::is_void<_ignored>::value + && !CTorsNotOnDevice::value + && std::is_constructible::value, + int + >::type = 0 + > + KOKKOS_FORCEINLINE_FUNCTION + constexpr explicit + EBOBaseImpl( + Args&&... args + ) noexcept(noexcept(T(std::forward(args)...))) + : m_ebo_object(std::forward(args)...) + { } + + template < + class... Args, + class _ignored=void, + typename std::enable_if< + std::is_void<_ignored>::value + && CTorsNotOnDevice::value + && std::is_constructible::value, + long + >::type = 0 + > + inline + constexpr explicit + EBOBaseImpl( + Args&&... args + ) noexcept(noexcept(T(std::forward(args)...))) + : m_ebo_object(std::forward(args)...) + { } + + + // TODO @tasking @minor DSH noexcept in the right places? + + KOKKOS_FORCEINLINE_FUNCTION + constexpr + EBOBaseImpl(EBOBaseImpl const&) = default; + + KOKKOS_FORCEINLINE_FUNCTION + constexpr + EBOBaseImpl(EBOBaseImpl&&) noexcept = default; + + KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_CONSTEXPR_14 + EBOBaseImpl& operator=(EBOBaseImpl const&) = default; + + KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_CONSTEXPR_14 + EBOBaseImpl& operator=(EBOBaseImpl&&) = default; + + KOKKOS_FORCEINLINE_FUNCTION + ~EBOBaseImpl() = default; + + KOKKOS_INLINE_FUNCTION + T& _ebo_data_member() & { + return m_ebo_object; + } + + KOKKOS_INLINE_FUNCTION + T const& _ebo_data_member() const & { + return m_ebo_object; + } + + KOKKOS_INLINE_FUNCTION + T volatile& _ebo_data_member() volatile & { + return m_ebo_object; + } + + KOKKOS_INLINE_FUNCTION + T const volatile& _ebo_data_member() const volatile & { + return m_ebo_object; + } + + KOKKOS_INLINE_FUNCTION + T&& _ebo_data_member() && { + return m_ebo_object; + } + +}; + +/** + * + * @tparam T + */ +template class CtorsNotOnDevice=NoCtorsNotOnDevice> +struct StandardLayoutNoUniqueAddressMemberEmulation + : EBOBaseImpl::value, CtorsNotOnDevice> +{ +private: + + using ebo_base_t = EBOBaseImpl::value, CtorsNotOnDevice>; + +public: + + using ebo_base_t::ebo_base_t; + + KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_CONSTEXPR_14 + T& no_unique_address_data_member() & { + return this->ebo_base_t::_ebo_data_member(); + } + + KOKKOS_FORCEINLINE_FUNCTION + constexpr + T const& no_unique_address_data_member() const & { + return this->ebo_base_t::_ebo_data_member(); + } + + KOKKOS_FORCEINLINE_FUNCTION + T volatile& no_unique_address_data_member() volatile & { + return this->ebo_base_t::_ebo_data_member(); + } + + KOKKOS_FORCEINLINE_FUNCTION + T const volatile& no_unique_address_data_member() const volatile & { + return this->ebo_base_t::_ebo_data_member(); + } + + KOKKOS_FORCEINLINE_FUNCTION + KOKKOS_CONSTEXPR_14 + T&& no_unique_address_data_member() && { + return this->ebo_base_t::_ebo_data_member(); + } +}; + +/** + * + * @tparam T + */ +template class CtorsNotOnDevice=NoCtorsNotOnDevice> +class NoUniqueAddressMemberEmulation + : private StandardLayoutNoUniqueAddressMemberEmulation +{ +private: + + using base_t = StandardLayoutNoUniqueAddressMemberEmulation; + +public: + + using base_t::base_t; + using base_t::no_unique_address_data_member; + +}; + + +} // end namespace Impl +} // end namespace Kokkos + + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + + +#endif /* #ifndef KOKKOS_EBO_HPP */ + diff --git a/lib/kokkos/core/src/impl/Kokkos_Error.hpp b/lib/kokkos/core/src/impl/Kokkos_Error.hpp index e7d5f9344c..3d634fe5d1 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Error.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Error.hpp @@ -51,6 +51,10 @@ #include #endif +#ifndef KOKKOS_ABORT_MESSAGE_BUFFER_SIZE +# define KOKKOS_ABORT_MESSAGE_BUFFER_SIZE 2048 +#endif // ifndef KOKKOS_ABORT_MESSAGE_BUFFER_SIZE + namespace Kokkos { namespace Impl { @@ -83,6 +87,50 @@ void abort( const char * const message ) { } + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + + +#if !defined(NDEBUG) || defined(KOKKOS_ENFORCE_CONTRACTS) || defined(KOKKOS_DEBUG) +# define KOKKOS_EXPECTS(...) \ + { \ + if(!bool(__VA_ARGS__)) { \ + ::Kokkos::abort( \ + "Kokkos contract violation:\n " \ + " Expected precondition `" #__VA_ARGS__ "` evaluated false." \ + ); \ + } \ + } +# define KOKKOS_ENSURES(...) \ + { \ + if(!bool(__VA_ARGS__)) { \ + ::Kokkos::abort( \ + "Kokkos contract violation:\n " \ + " Ensured postcondition `" #__VA_ARGS__ "` evaluated false." \ + ); \ + } \ + } +// some projects already define this for themselves, so don't mess them up +# ifndef KOKKOS_ASSERT +# define KOKKOS_ASSERT(...) \ + { \ + if(!bool(__VA_ARGS__)) { \ + ::Kokkos::abort( \ + "Kokkos contract violation:\n " \ + " Asserted condition `" #__VA_ARGS__ "` evaluated false." \ + ); \ + } \ + } +# endif // ifndef KOKKOS_ASSERT +#else // not debug mode +# define KOKKOS_EXPECTS(...) +# define KOKKOS_ENSURES(...) +# ifndef KOKKOS_ASSERT +# define KOKKOS_ASSERT(...) +# endif // ifndef KOKKOS_ASSERT +#endif // end debug mode ifdefs + //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- diff --git a/lib/kokkos/core/src/impl/Kokkos_FixedBufferMemoryPool.hpp b/lib/kokkos/core/src/impl/Kokkos_FixedBufferMemoryPool.hpp new file mode 100644 index 0000000000..3053d8d9d0 --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_FixedBufferMemoryPool.hpp @@ -0,0 +1,307 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2019) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_IMPL_KOKKOS_FIXEDBUFFERMEMORYPOOL_HPP +#define KOKKOS_IMPL_KOKKOS_FIXEDBUFFERMEMORYPOOL_HPP + +#include +#include + +#include +#include + +namespace Kokkos { +namespace Impl { + +template < + class DeviceType, + size_t Size, + size_t Align=1, + class SizeType = typename DeviceType::execution_space::size_type +> +class FixedBlockSizeMemoryPool + : private MemorySpaceInstanceStorage +{ +public: + + using memory_space = typename DeviceType::memory_space; + using size_type = SizeType; + +private: + + using memory_space_storage_base = MemorySpaceInstanceStorage; + using tracker_type = Kokkos::Impl::SharedAllocationTracker; + using record_type = Kokkos::Impl::SharedAllocationRecord; + + struct alignas(Align) Block { union { char ignore; char data[Size]; }; }; + + static constexpr auto actual_size = sizeof(Block); + + // TODO shared allocation tracker + // TODO @optimization put the index values on different cache lines (CPU) or pages (GPU)? + + tracker_type m_tracker = { }; + size_type m_num_blocks = 0; + size_type m_first_free_idx = 0; + size_type m_last_free_idx = 0; + Kokkos::OwningRawPtr m_first_block = nullptr; + Kokkos::OwningRawPtr m_free_indices = nullptr; + + enum : size_type { IndexInUse = ~size_type(0) }; + +public: + + FixedBlockSizeMemoryPool( + memory_space const& mem_space, + size_type num_blocks + ) : memory_space_storage_base(mem_space), + m_tracker(), + m_num_blocks(num_blocks), + m_first_free_idx(0), + m_last_free_idx(num_blocks) + { + // TODO alignment? + auto block_record = record_type::allocate( + mem_space, "FixedBlockSizeMemPool_blocks", num_blocks * sizeof(Block) + ); + KOKKOS_ASSERT(intptr_t(block_record->data()) % Align == 0); + m_tracker.assign_allocated_record_to_uninitialized(block_record); + m_first_block = (Block*)block_record->data(); + + auto idx_record = record_type::allocate( + mem_space, "FixedBlockSizeMemPool_blocks", num_blocks * sizeof(size_type) + ); + KOKKOS_ASSERT(intptr_t(idx_record->data()) % alignof(size_type) == 0); + m_tracker.assign_allocated_record_to_uninitialized(idx_record); + m_free_indices = (size_type*)idx_record->data(); + + for(size_type i = 0; i < num_blocks; ++i) { + m_free_indices[i] = i; + } + + Kokkos::memory_fence(); + } + + // For compatibility with MemoryPool<> + FixedBlockSizeMemoryPool( + memory_space const& mem_space, + size_t mempool_capacity, + unsigned, unsigned, unsigned + ) : FixedBlockSizeMemoryPool(mem_space, mempool_capacity / actual_size) + { /* forwarding ctor, must be empty */ } + + KOKKOS_INLINE_FUNCTION FixedBlockSizeMemoryPool() = default; + KOKKOS_INLINE_FUNCTION FixedBlockSizeMemoryPool(FixedBlockSizeMemoryPool&&) = default; + KOKKOS_INLINE_FUNCTION FixedBlockSizeMemoryPool(FixedBlockSizeMemoryPool const&) = default; + KOKKOS_INLINE_FUNCTION FixedBlockSizeMemoryPool& operator=(FixedBlockSizeMemoryPool&&) = default; + KOKKOS_INLINE_FUNCTION FixedBlockSizeMemoryPool& operator=(FixedBlockSizeMemoryPool const&) = default; + + + KOKKOS_INLINE_FUNCTION + void* allocate(size_type alloc_size) const noexcept + { + KOKKOS_EXPECTS(alloc_size <= Size); + auto free_idx_counter = Kokkos::atomic_fetch_add((volatile size_type*)&m_first_free_idx, size_type(1)); + auto free_idx_idx = free_idx_counter % m_num_blocks; + + // We don't have exclusive access to m_free_indices[free_idx_idx] because + // the allocate counter might have lapped us since we incremented it + auto current_free_idx = m_free_indices[free_idx_idx]; + size_type free_idx = IndexInUse; + free_idx = + Kokkos::atomic_compare_exchange(&m_free_indices[free_idx_idx], current_free_idx, free_idx); + Kokkos::memory_fence(); + + // TODO figure out how to decrement here? + + if(free_idx == IndexInUse) { + return nullptr; + } + else { + return (void*)&m_first_block[free_idx]; + } + } + + KOKKOS_INLINE_FUNCTION + void deallocate(void* ptr, size_type alloc_size) const noexcept + { + // figure out which block we are + auto offset = intptr_t(ptr) - intptr_t(m_first_block); + + KOKKOS_EXPECTS(offset % actual_size == 0 && offset/actual_size < m_num_blocks); + + Kokkos::memory_fence(); + auto last_idx_idx = Kokkos::atomic_fetch_add((volatile size_type*)&m_last_free_idx, size_type(1)); + last_idx_idx %= m_num_blocks; + m_free_indices[last_idx_idx] = offset / actual_size; + } + +}; + +#if 0 +template < + class DeviceType, + size_t Size, + size_t Align=1, + class SizeType = typename DeviceType::execution_space::size_type +> +class FixedBlockSizeChaseLevMemoryPool + : private MemorySpaceInstanceStorage +{ +public: + + using memory_space = typename DeviceType::memory_space; + using size_type = SizeType; + +private: + + using memory_space_storage_base = MemorySpaceInstanceStorage; + using tracker_type = Kokkos::Impl::SharedAllocationTracker; + using record_type = Kokkos::Impl::SharedAllocationRecord; + + struct alignas(Align) Block { union { char ignore; char data[Size]; }; }; + + static constexpr auto actual_size = sizeof(Block); + + tracker_type m_tracker = { }; + size_type m_num_blocks = 0; + size_type m_first_free_idx = 0; + size_type m_last_free_idx = 0; + + + enum : size_type { IndexInUse = ~size_type(0) }; + +public: + + FixedBlockSizeMemoryPool( + memory_space const& mem_space, + size_type num_blocks + ) : memory_space_storage_base(mem_space), + m_tracker(), + m_num_blocks(num_blocks), + m_first_free_idx(0), + m_last_free_idx(num_blocks) + { + // TODO alignment? + auto block_record = record_type::allocate( + mem_space, "FixedBlockSizeMemPool_blocks", num_blocks * sizeof(Block) + ); + KOKKOS_ASSERT(intptr_t(block_record->data()) % Align == 0); + m_tracker.assign_allocated_record_to_uninitialized(block_record); + m_first_block = (Block*)block_record->data(); + + auto idx_record = record_type::allocate( + mem_space, "FixedBlockSizeMemPool_blocks", num_blocks * sizeof(size_type) + ); + KOKKOS_ASSERT(intptr_t(idx_record->data()) % alignof(size_type) == 0); + m_tracker.assign_allocated_record_to_uninitialized(idx_record); + m_free_indices = (size_type*)idx_record->data(); + + for(size_type i = 0; i < num_blocks; ++i) { + m_free_indices[i] = i; + } + + Kokkos::memory_fence(); + } + + // For compatibility with MemoryPool<> + FixedBlockSizeMemoryPool( + memory_space const& mem_space, + size_t mempool_capacity, + unsigned, unsigned, unsigned + ) : FixedBlockSizeMemoryPool(mem_space, mempool_capacity / actual_size) + { /* forwarding ctor, must be empty */ } + + KOKKOS_INLINE_FUNCTION FixedBlockSizeMemoryPool() = default; + KOKKOS_INLINE_FUNCTION FixedBlockSizeMemoryPool(FixedBlockSizeMemoryPool&&) = default; + KOKKOS_INLINE_FUNCTION FixedBlockSizeMemoryPool(FixedBlockSizeMemoryPool const&) = default; + KOKKOS_INLINE_FUNCTION FixedBlockSizeMemoryPool& operator=(FixedBlockSizeMemoryPool&&) = default; + KOKKOS_INLINE_FUNCTION FixedBlockSizeMemoryPool& operator=(FixedBlockSizeMemoryPool const&) = default; + + + KOKKOS_INLINE_FUNCTION + void* allocate(size_type alloc_size) const noexcept + { + KOKKOS_EXPECTS(alloc_size <= Size); + auto free_idx_counter = Kokkos::atomic_fetch_add((volatile size_type*)&m_first_free_idx, size_type(1)); + auto free_idx_idx = free_idx_counter % m_num_blocks; + + // We don't have exclusive access to m_free_indices[free_idx_idx] because + // the allocate counter might have lapped us since we incremented it + auto current_free_idx = m_free_indices[free_idx_idx]; + size_type free_idx = IndexInUse; + free_idx = + Kokkos::atomic_compare_exchange(&m_free_indices[free_idx_idx], current_free_idx, free_idx); + Kokkos::memory_fence(); + + // TODO figure out how to decrement here? + + if(free_idx == IndexInUse) { + return nullptr; + } + else { + return (void*)&m_first_block[free_idx]; + } + } + + KOKKOS_INLINE_FUNCTION + void deallocate(void* ptr, size_type alloc_size) const noexcept + { + // figure out which block we are + auto offset = intptr_t(ptr) - intptr_t(m_first_block); + + KOKKOS_EXPECTS(offset % actual_size == 0 && offset/actual_size < m_num_blocks); + + Kokkos::memory_fence(); + auto last_idx_idx = Kokkos::atomic_fetch_add((volatile size_type*)&m_last_free_idx, size_type(1)); + last_idx_idx %= m_num_blocks; + m_free_indices[last_idx_idx] = offset / actual_size; + } + +}; +#endif + +} // end namespace Impl +} // end namespace Kokkos + +#endif //KOKKOS_IMPL_KOKKOS_FIXEDBUFFERMEMORYPOOL_HPP diff --git a/lib/kokkos/core/src/impl/Kokkos_FunctorAdapter.hpp b/lib/kokkos/core/src/impl/Kokkos_FunctorAdapter.hpp index 7d4ffb85c1..ea3480b48b 100644 --- a/lib/kokkos/core/src/impl/Kokkos_FunctorAdapter.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_FunctorAdapter.hpp @@ -1432,7 +1432,10 @@ namespace Impl { template struct JoinLambdaAdapter::enable_if( & JoinOp::join ) )> { typedef ValueType value_type; - typedef StaticAssertSame assert_value_types_match; + static_assert( + std::is_same::value, + "JoinLambdaAdapter static_assert Fail: ValueType != JoinOp::value_type"); + const JoinOp& lambda; KOKKOS_INLINE_FUNCTION JoinLambdaAdapter(const JoinOp& lambda_):lambda(lambda_) {} diff --git a/lib/kokkos/core/src/impl/Kokkos_HostSpace.cpp b/lib/kokkos/core/src/impl/Kokkos_HostSpace.cpp index d8cb7593bf..848746d265 100644 --- a/lib/kokkos/core/src/impl/Kokkos_HostSpace.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_HostSpace.cpp @@ -420,15 +420,19 @@ SharedAllocationRecord< Kokkos::HostSpace , void >::get_record( void * alloc_ptr } // Iterate records to print orphaned memory ... +#ifdef KOKKOS_DEBUG void SharedAllocationRecord< Kokkos::HostSpace , void >:: print_records( std::ostream & s , const Kokkos::HostSpace & , bool detail ) { -#ifdef KOKKOS_DEBUG SharedAllocationRecord< void , void >::print_host_accessible_records( s , "HostSpace" , & s_root_record , detail ); +} #else +void SharedAllocationRecord< Kokkos::HostSpace , void >:: +print_records( std::ostream & , const Kokkos::HostSpace & , bool ) +{ throw_runtime_exception("SharedAllocationRecord::print_records only works with KOKKOS_DEBUG enabled"); -#endif } +#endif } // namespace Impl } // namespace Kokkos diff --git a/lib/kokkos/core/src/impl/Kokkos_HostSpace_deepcopy.cpp b/lib/kokkos/core/src/impl/Kokkos_HostSpace_deepcopy.cpp new file mode 100644 index 0000000000..21b95f6985 --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_HostSpace_deepcopy.cpp @@ -0,0 +1,134 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include "Kokkos_Core.hpp" +#include "Kokkos_HostSpace_deepcopy.hpp" + +namespace Kokkos { + +namespace Impl { + +#ifndef KOKKOS_IMPL_HOST_DEEP_COPY_SERIAL_LIMIT +#define KOKKOS_IMPL_HOST_DEEP_COPY_SERIAL_LIMIT 10*8192 +#endif + +void hostspace_parallel_deepcopy(void * dst, const void * src, ptrdiff_t n) { + if((n policy_t; + + // Both src and dst are aligned the same way with respect to 8 byte words + if(reinterpret_cast(src)%8 == reinterpret_cast(dst)%8) { + char* dst_c = reinterpret_cast(dst); + const char* src_c = reinterpret_cast(src); + int count = 0; + // get initial bytes copied + while(reinterpret_cast(dst_c)%8!=0) { + *dst_c=*src_c; + dst_c++; src_c++; count++; + } + + // copy the bulk of the data + double* dst_p = reinterpret_cast(dst_c); + const double* src_p = reinterpret_cast(src_c); + Kokkos::parallel_for("Kokkos::Impl::host_space_deepcopy_double",policy_t(0,(n-count)/8),[=](const ptrdiff_t i) { + dst_p[i] = src_p[i]; + }); + + // get final data copied + dst_c += ((n-count)/8) * 8; + src_c += ((n-count)/8) * 8; + char* dst_end = reinterpret_cast(dst)+n; + while(dst_c != dst_end) { + *dst_c = *src_c; + dst_c++; src_c++; + } + return; + } + + // Both src and dst are aligned the same way with respect to 4 byte words + if(reinterpret_cast(src)%4 == reinterpret_cast(dst)%4) { + char* dst_c = reinterpret_cast(dst); + const char* src_c = reinterpret_cast(src); + int count = 0; + // get initial bytes copied + while(reinterpret_cast(dst_c)%4!=0) { + *dst_c=*src_c; + dst_c++; src_c++; count++; + } + + // copy the bulk of the data + int32_t* dst_p = reinterpret_cast(dst_c); + const int32_t* src_p = reinterpret_cast(src_c); + Kokkos::parallel_for("Kokkos::Impl::host_space_deepcopy_int",policy_t(0,(n-count)/4),[=](const ptrdiff_t i) { + dst_p[i] = src_p[i]; + }); + + // get final data copied + dst_c += ((n-count)/4) * 4; + src_c += ((n-count)/4) * 4; + char* dst_end = reinterpret_cast(dst)+n; + while(dst_c != dst_end) { + *dst_c = *src_c; + dst_c++; src_c++; + } + return; + } + + // Src and dst are not aligned the same way, we can only to byte wise copy. + { + char* dst_p = reinterpret_cast(dst); + const char* src_p = reinterpret_cast(src); + Kokkos::parallel_for("Kokkos::Impl::host_space_deepcopy_char",policy_t(0,n),[=](const ptrdiff_t i) { + dst_p[i] = src_p[i]; + }); + } +} + +} // namespace Impl + +} // namespace Kokkos + diff --git a/lib/kokkos/core/src/impl/Kokkos_HostSpace_deepcopy.hpp b/lib/kokkos/core/src/impl/Kokkos_HostSpace_deepcopy.hpp new file mode 100644 index 0000000000..b8aea95363 --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_HostSpace_deepcopy.hpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ +#include + +namespace Kokkos { + +namespace Impl { + +void hostspace_parallel_deepcopy(void * dst, const void * src, ptrdiff_t n); + +} // namespace Impl + +} // namespace Kokkos + diff --git a/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.hpp b/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.hpp index fff48e87f6..f44a13c574 100644 --- a/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.hpp @@ -52,6 +52,8 @@ #include #include +#include // std::numeric_limits + //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- @@ -477,6 +479,9 @@ class HostThreadTeamMember { public: using scratch_memory_space = typename HostExecSpace::scratch_memory_space ; + using execution_space = HostExecSpace; + using thread_team_member = HostThreadTeamMember; + using host_thread_team_member = HostThreadTeamMember; private: @@ -490,8 +495,8 @@ public: constexpr HostThreadTeamMember( HostThreadTeamData & arg_data ) noexcept : m_scratch( arg_data.team_shared() , arg_data.team_shared_bytes() ) , m_data( arg_data ) - , m_league_rank(0) - , m_league_size(1) + , m_league_rank(arg_data.m_league_rank) + , m_league_size(arg_data.m_league_size) {} constexpr HostThreadTeamMember( HostThreadTeamData & arg_data @@ -630,6 +635,12 @@ public: KOKKOS_INLINE_FUNCTION typename std::enable_if< is_reducer< ReducerType >::value >::type team_reduce( ReducerType const & reducer ) const noexcept + { team_reduce(reducer,reducer.reference()); } + + template< typename ReducerType > + KOKKOS_INLINE_FUNCTION + typename std::enable_if< is_reducer< ReducerType >::value >::type + team_reduce( ReducerType const & reducer, typename ReducerType::value_type contribution ) const noexcept #if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) { if ( 1 < m_data.m_team_size ) { @@ -640,7 +651,7 @@ public: // Non-root copies to their local buffer: /*reducer.copy( (value_type*) m_data.team_reduce_local() , reducer.data() );*/ - *((value_type*) m_data.team_reduce_local()) = reducer.reference(); + *((value_type*) m_data.team_reduce_local()) = contribution; } // Root does not overwrite shared memory until all threads arrive @@ -656,12 +667,13 @@ public: value_type * const src = (value_type*) m_data.team_member(i)->team_reduce_local(); - reducer.join( reducer.reference(), *src); + reducer.join( contribution, *src); } // Copy result to root member's buffer: // reducer.copy( (value_type*) m_data.team_reduce() , reducer.data() ); - *((value_type*) m_data.team_reduce()) = reducer.reference(); + *((value_type*) m_data.team_reduce()) = contribution; + reducer.reference() = contribution; m_data.team_rendezvous_release(); // This thread released all other threads from 'team_rendezvous' // with a return value of 'false' @@ -670,6 +682,8 @@ public: // Copy from root member's buffer: reducer.reference() = *((value_type*) m_data.team_reduce()); } + } else { + reducer.reference() = contribution; } } #else @@ -795,50 +809,105 @@ public: namespace Kokkos { -template +template KOKKOS_INLINE_FUNCTION -Impl::TeamThreadRangeBoundariesStruct > -TeamThreadRange( Impl::HostThreadTeamMember const & member - , iType const & count ) +Impl::TeamThreadRangeBoundariesStruct +TeamThreadRange( + Member const & member, + iType count, + typename std::enable_if< + Impl::is_thread_team_member::value + >::type const** = nullptr +) { return Impl::TeamThreadRangeBoundariesStruct - >(member,0,count); + (member,0,count); } -template +template KOKKOS_INLINE_FUNCTION -Impl::TeamThreadRangeBoundariesStruct - < typename std::common_type< iType1, iType2 >::type - , Impl::HostThreadTeamMember > -TeamThreadRange( Impl::HostThreadTeamMember const & member - , iType1 const & begin , iType2 const & end ) +Impl::TeamThreadRangeBoundariesStruct< + typename std::common_type< iType1, iType2 >::type, Member +> +TeamThreadRange( + Member const & member, + iType1 begin, + iType2 end, + typename std::enable_if< + Impl::is_thread_team_member::value + >::type const** = nullptr +) { return Impl::TeamThreadRangeBoundariesStruct < typename std::common_type< iType1, iType2 >::type - , Impl::HostThreadTeamMember >( member , begin , end ); + , Member >( member , begin , end ); } -template +template KOKKOS_INLINE_FUNCTION -Impl::ThreadVectorRangeBoundariesStruct > -ThreadVectorRange - ( Impl::HostThreadTeamMember const & member - , const iType & count ) +Impl::TeamThreadRangeBoundariesStruct +TeamVectorRange( + Member const & member, + iType count, + typename std::enable_if< + Impl::is_thread_team_member::value + >::type const** = nullptr +) { - return Impl::ThreadVectorRangeBoundariesStruct >(member,count); + return + Impl::TeamThreadRangeBoundariesStruct + (member,0,count); } -template +template KOKKOS_INLINE_FUNCTION -Impl::ThreadVectorRangeBoundariesStruct > -ThreadVectorRange - ( Impl::HostThreadTeamMember const & member - , const iType & arg_begin - , const iType & arg_end ) +Impl::TeamThreadRangeBoundariesStruct< + typename std::common_type< iType1, iType2 >::type, Member +> +TeamVectorRange( + Member const & member, + iType1 begin, + iType2 end, + typename std::enable_if< + Impl::is_thread_team_member::value + >::type const** = nullptr +) { - return Impl::ThreadVectorRangeBoundariesStruct >(member,arg_begin,arg_end); + return + Impl::TeamThreadRangeBoundariesStruct + < typename std::common_type< iType1, iType2 >::type + , Member >( member , begin , end ); +} + +template +KOKKOS_INLINE_FUNCTION +Impl::ThreadVectorRangeBoundariesStruct +ThreadVectorRange( + Member const & member, + iType count, + typename std::enable_if< + Impl::is_thread_team_member::value + >::type const** = nullptr +) +{ + return Impl::ThreadVectorRangeBoundariesStruct(member,count); +} + +template +KOKKOS_INLINE_FUNCTION +Impl::ThreadVectorRangeBoundariesStruct +ThreadVectorRange( + Member const & member, + iType arg_begin, + iType arg_end, + typename std::enable_if< + Impl::is_thread_team_member::value + >::type const** = nullptr +) +{ + return Impl::ThreadVectorRangeBoundariesStruct(member,arg_begin,arg_end); } //---------------------------------------------------------------------------- @@ -848,11 +917,14 @@ ThreadVectorRange * * The range [0..N) is mapped to all threads of the the calling thread team. */ -template +template KOKKOS_INLINE_FUNCTION void parallel_for - ( Impl::TeamThreadRangeBoundariesStruct > const & loop_boundaries + ( Impl::TeamThreadRangeBoundariesStruct const & loop_boundaries , Closure const & closure + , typename std::enable_if< + Impl::is_host_thread_team_member::value + >::type const** = nullptr ) { for( iType i = loop_boundaries.start @@ -862,11 +934,14 @@ void parallel_for } } -template +template KOKKOS_INLINE_FUNCTION void parallel_for - ( Impl::ThreadVectorRangeBoundariesStruct > const & loop_boundaries + ( Impl::ThreadVectorRangeBoundariesStruct const & loop_boundaries , Closure const & closure + , typename std::enable_if< + Impl::is_host_thread_team_member::value + >::type const** = nullptr ) { #ifdef KOKKOS_ENABLE_PRAGMA_IVDEP @@ -881,40 +956,47 @@ void parallel_for //---------------------------------------------------------------------------- -template< typename iType, class Space, class Closure, class Reducer > +template< typename iType, class Closure, class Reducer, class Member > KOKKOS_INLINE_FUNCTION -typename std::enable_if< Kokkos::is_reducer< Reducer >::value >::type +typename std::enable_if< + Kokkos::is_reducer< Reducer >::value + && Impl::is_host_thread_team_member::value +>::type parallel_reduce - ( Impl::TeamThreadRangeBoundariesStruct > + ( Impl::TeamThreadRangeBoundariesStruct const & loop_boundaries , Closure const & closure , Reducer const & reducer ) { - reducer.init( reducer.reference() ); + typename Reducer::value_type value; + reducer.init( value ); for( iType i = loop_boundaries.start ; i < loop_boundaries.end ; i += loop_boundaries.increment ) { - closure( i , reducer.reference() ); + closure( i , value ); } - - loop_boundaries.thread.team_reduce( reducer ); + + loop_boundaries.thread.team_reduce( reducer, value ); } -template< typename iType, class Space, typename Closure, typename ValueType > +template< typename iType, typename Closure, typename ValueType, typename Member > KOKKOS_INLINE_FUNCTION -typename std::enable_if< ! Kokkos::is_reducer::value >::type +typename std::enable_if< + ! Kokkos::is_reducer::value + && Impl::is_host_thread_team_member::value +>::type parallel_reduce - ( Impl::TeamThreadRangeBoundariesStruct > + ( Impl::TeamThreadRangeBoundariesStruct const & loop_boundaries , Closure const & closure , ValueType & result ) { - Sum reducer( result ); - - reducer.init( result ); + ValueType val; + Sum reducer( val ); + reducer.init( val ); for( iType i = loop_boundaries.start ; i < loop_boundaries.end @@ -923,6 +1005,7 @@ parallel_reduce } loop_boundaries.thread.team_reduce( reducer ); + result = reducer.reference(); } /*template< typename iType, class Space @@ -958,11 +1041,14 @@ void parallel_reduce * calling thread team and a summation of val is * performed and put into result. */ -template< typename iType, class Space , class Lambda, typename ValueType > +template< typename iType, class Lambda, typename ValueType, typename Member > KOKKOS_INLINE_FUNCTION -typename std::enable_if< ! Kokkos::is_reducer::value >::type +typename std::enable_if< + ! Kokkos::is_reducer::value + && Impl::is_host_thread_team_member::value +>::type parallel_reduce - (const Impl::ThreadVectorRangeBoundariesStruct >& loop_boundaries, + (const Impl::ThreadVectorRangeBoundariesStruct& loop_boundaries, const Lambda & lambda, ValueType& result) { @@ -974,11 +1060,14 @@ parallel_reduce } } -template< typename iType, class Space , class Lambda, typename ReducerType > +template< typename iType, class Lambda, typename ReducerType, typename Member > KOKKOS_INLINE_FUNCTION -typename std::enable_if< Kokkos::is_reducer< ReducerType >::value >::type +typename std::enable_if< + Kokkos::is_reducer< ReducerType >::value + && Impl::is_host_thread_team_member::value +>::type parallel_reduce - (const Impl::ThreadVectorRangeBoundariesStruct >& loop_boundaries, + (const Impl::ThreadVectorRangeBoundariesStruct& loop_boundaries, const Lambda & lambda, const ReducerType& reducer) { @@ -990,41 +1079,15 @@ parallel_reduce } } -/** \brief Intra-thread vector parallel_reduce. - * - * Executes lambda(iType i, ValueType & val) for each i=[0..N) - * - * The range [0..N) is mapped to all vector lanes of the the - * calling thread and a reduction of val is performed using - * JoinType(ValueType& val, const ValueType& update) - * and put into init_result. - * The input value of init_result is used as initializer for - * temporary variables of ValueType. Therefore * the input - * value should be the neutral element with respect to the - * join operation (e.g. '0 for +-' or * '1 for *'). - */ -template< typename iType, class Space - , class Lambda, class JoinType , typename ValueType > -KOKKOS_INLINE_FUNCTION -void parallel_reduce - (const Impl::ThreadVectorRangeBoundariesStruct >& loop_boundaries, - const Lambda & lambda, - const JoinType & join, - ValueType& result) -{ - for( iType i = loop_boundaries.start ; - i < loop_boundaries.end ; - i += loop_boundaries.increment ) { - lambda(i,result); - } -} - //---------------------------------------------------------------------------- -template< typename iType, class Space, class Closure > +template< typename iType, class Closure, class Member > KOKKOS_INLINE_FUNCTION -void parallel_scan - ( Impl::TeamThreadRangeBoundariesStruct > const & loop_boundaries +typename std::enable_if< + Impl::is_host_thread_team_member::value +>::type +parallel_scan + ( Impl::TeamThreadRangeBoundariesStruct const & loop_boundaries , Closure const & closure ) { @@ -1056,10 +1119,13 @@ void parallel_scan } -template< typename iType, class Space, class ClosureType > +template< typename iType, class ClosureType, class Member > KOKKOS_INLINE_FUNCTION -void parallel_scan - ( Impl::ThreadVectorRangeBoundariesStruct > const & loop_boundaries +typename std::enable_if< + Impl::is_host_thread_team_member::value +>::type +parallel_scan + ( Impl::ThreadVectorRangeBoundariesStruct const & loop_boundaries , ClosureType const & closure ) { @@ -1083,47 +1149,65 @@ void parallel_scan //---------------------------------------------------------------------------- -template< class Space > +template< class Member > KOKKOS_INLINE_FUNCTION -Impl::ThreadSingleStruct > -PerTeam(const Impl::HostThreadTeamMember & member ) +Impl::ThreadSingleStruct +PerTeam( + Member const& member, + typename std::enable_if::value>::type const** = nullptr +) { - return Impl::ThreadSingleStruct >(member); + return Impl::ThreadSingleStruct(member); } -template< class Space > +template< class Member > KOKKOS_INLINE_FUNCTION -Impl::VectorSingleStruct > -PerThread(const Impl::HostThreadTeamMember & member) +Impl::VectorSingleStruct +PerThread( + Member const& member, + typename std::enable_if::value>::type const** = nullptr +) { - return Impl::VectorSingleStruct >(member); + return Impl::VectorSingleStruct(member); } -template< class Space , class FunctorType > +template< class Member , class FunctorType > KOKKOS_INLINE_FUNCTION -void single( const Impl::ThreadSingleStruct< Impl::HostThreadTeamMember > & single , const FunctorType & functor ) +typename std::enable_if< + Impl::is_host_thread_team_member::value +>::type +single( const Impl::ThreadSingleStruct & single , const FunctorType & functor ) { // 'single' does not perform a barrier. if ( single.team_member.team_rank() == 0 ) functor(); } -template< class Space , class FunctorType , typename ValueType > +template< class Member, class FunctorType , typename ValueType > KOKKOS_INLINE_FUNCTION -void single( const Impl::ThreadSingleStruct< Impl::HostThreadTeamMember > & single , const FunctorType & functor , ValueType & val ) +typename std::enable_if< + Impl::is_host_thread_team_member::value +>::type +single( const Impl::ThreadSingleStruct & single , const FunctorType & functor , ValueType & val ) { single.team_member.team_broadcast( functor , val , 0 ); } -template< class Space , class FunctorType > +template< class Member, class FunctorType > KOKKOS_INLINE_FUNCTION -void single( const Impl::VectorSingleStruct< Impl::HostThreadTeamMember > & , const FunctorType & functor ) +typename std::enable_if< + Impl::is_host_thread_team_member::value +>::type +single( const Impl::VectorSingleStruct & , const FunctorType & functor ) { functor(); } -template< class Space , class FunctorType , typename ValueType > +template< class Member, class FunctorType , typename ValueType > KOKKOS_INLINE_FUNCTION -void single( const Impl::VectorSingleStruct< Impl::HostThreadTeamMember > & , const FunctorType & functor , ValueType & val ) +typename std::enable_if< + Impl::is_host_thread_team_member::value +>::type +single( const Impl::VectorSingleStruct & , const FunctorType & functor , ValueType & val ) { functor(val); } diff --git a/lib/kokkos/core/src/impl/Kokkos_LIFO.hpp b/lib/kokkos/core/src/impl/Kokkos_LIFO.hpp new file mode 100644 index 0000000000..43e9783beb --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_LIFO.hpp @@ -0,0 +1,431 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +// Experimental unified task-data parallel manycore LDRD + +#ifndef KOKKOS_IMPL_LIFO_HPP +#define KOKKOS_IMPL_LIFO_HPP + +#include +#ifdef KOKKOS_ENABLE_TASKDAG // Note: implies CUDA_VERSION >= 8000 if using CUDA + +#include + +#include +#include +#include // KOKKOS_EXPECTS +#include + +#include // atomic_compare_exchange, atomic_fence + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +template +struct LockBasedLIFOCommon +{ + + using value_type = T; + + using node_type = SimpleSinglyLinkedListNode<>; + + static constexpr uintptr_t LockTag = ~uintptr_t(0); + static constexpr uintptr_t EndTag = ~uintptr_t(1); + + OwningRawPtr m_head = (node_type*)EndTag; + + KOKKOS_INLINE_FUNCTION + bool _try_push_node(node_type& node) { + + KOKKOS_EXPECTS(!node.is_enqueued()); + + auto* volatile & next = LinkedListNodeAccess::next_ptr(node); + + // store the head of the queue in a local variable + auto* old_head = m_head; + + // retry until someone locks the queue or we successfully compare exchange + while (old_head != (node_type*)LockTag) { + + // TODO @tasking @memory_order DSH this should have a memory order and not a memory fence + + // set task->next to the head of the queue + next = old_head; + + // fence to emulate acquire semantics on next and release semantics on + // the store of m_head + // Do not proceed until 'next' has been stored. + Kokkos::memory_fence(); + + // store the old head + auto* const old_head_tmp = old_head; + + // attempt to swap task with the old head of the queue + // as if this were done atomically: + // if(m_head == old_head) { + // m_head = &node; + // } + // old_head = m_head; + old_head = ::Kokkos::atomic_compare_exchange(&m_head, old_head, &node); + + if(old_head_tmp == old_head) return true; + } + + // Failed, replace 'task->m_next' value since 'task' remains + // not a member of a queue. + + // TODO @tasking @memory_order DSH this should have a memory order and not a memory fence + LinkedListNodeAccess::mark_as_not_enqueued(node); + + // fence to emulate acquire semantics on next + // Do not proceed until 'next' has been stored. + ::Kokkos::memory_fence(); + + return false; + } + + bool _is_empty() const noexcept { + // TODO @tasking @memory_order DSH make this an atomic load with memory order + return (volatile node_type*)this->m_head == (node_type*)EndTag; + } + +}; + +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ + +template +class LockBasedLIFO + : private LockBasedLIFOCommon +{ + +private: + + using base_t = LockBasedLIFOCommon; + using node_type = typename base_t::node_type; + +public: + + using value_type = typename base_t::value_type; // = T + using intrusive_node_base_type = SimpleSinglyLinkedListNode<>; + +public: + + + LockBasedLIFO() = default; + LockBasedLIFO(LockBasedLIFO const&) = delete; + LockBasedLIFO(LockBasedLIFO&&) = delete; + LockBasedLIFO& operator=(LockBasedLIFO const&) = delete; + LockBasedLIFO& operator=(LockBasedLIFO&&) = delete; + + ~LockBasedLIFO() = default; + + + bool empty() const noexcept { + // TODO @tasking @memory_order DSH memory order + return this->_is_empty(); + } + + KOKKOS_INLINE_FUNCTION + OptionalRef pop(bool abort_on_locked = false) + { + // Put this in here to avoid requiring value_type to be complete until now. + static_assert( + std::is_base_of::value, + "Intrusive linked-list value_type must be derived from intrusive_node_base_type" + ); + + // We can't use the static constexpr LockTag directly because + // atomic_compare_exchange needs to bind a reference to that, and you + // can't do that with static constexpr variables. + auto* const lock_tag = (node_type*)base_t::LockTag; + + // TODO @tasking @memory_order DSH shouldn't this be a relaxed atomic load? + // start with the return value equal to the head + auto* rv = this->m_head; + + // Retry until the lock is acquired or the queue is empty. + while(rv != (node_type*)base_t::EndTag) { + + // The only possible values for the queue are + // (1) lock, (2) end, or (3) a valid task. + // Thus zero will never appear in the queue. + // + // If queue is locked then just read by guaranteeing the CAS will fail. + KOKKOS_ASSERT(rv != nullptr); + + if(rv == lock_tag) { + // TODO @tasking @memory_order DSH this should just be an atomic load followed by a continue + // just set rv to nullptr for now, effectively turning the + // atomic_compare_exchange below into a load + rv = nullptr; + if(abort_on_locked) { + break; + } + } + + auto* const old_rv = rv; + + // TODO @tasking @memory_order DSH this should be a weak compare exchange in a loop + rv = Kokkos::atomic_compare_exchange(&(this->m_head), old_rv, lock_tag); + + if(rv == old_rv) { + // CAS succeeded and queue is locked + // + // This thread has locked the queue and removed 'rv' from the queue. + // Extract the next entry of the queue from 'rv->m_next' + // and mark 'rv' as popped from a queue by setting + // 'rv->m_next = nullptr'. + // + // Place the next entry in the head of the queue, + // which also unlocks the queue. + // + // This thread has exclusive access to + // the queue and the popped task's m_next. + + // TODO @tasking @memory_order DSH check whether the volatile is needed here + auto* volatile& next = LinkedListNodeAccess::next_ptr(*rv); //->m_next; + + // This algorithm is not lockfree because a adversarial scheduler could + // context switch this thread at this point and the rest of the threads + // calling this method would never make forward progress + + // TODO @tasking @memory_order DSH I think this needs to be a atomic store release (and the memory fence needs to be removed) + // TODO @tasking DSH prove that this doesn't need to be a volatile store + // Lock is released here + this->m_head = next; + + // Mark rv as popped by assigning nullptr to the next + LinkedListNodeAccess::mark_as_not_enqueued(*rv); + + Kokkos::memory_fence(); + + return OptionalRef{ *static_cast(rv) }; + } + + // Otherwise, the CAS got a value that didn't match (either because + // another thread locked the queue and we observed the lock tag or because + // another thread replaced the head and now we want to try to lock the + // queue with that as the popped item. Either way, try again. + } + + // Return an empty OptionalRef by calling the default constructor + return { }; + } + + KOKKOS_INLINE_FUNCTION + OptionalRef + steal() + { + // TODO @tasking @optimization DSH do this with fewer retries + return pop(/* abort_on_locked = */ true); + } + + KOKKOS_INLINE_FUNCTION + bool push(node_type& node) + { + while(!this->_try_push_node(node)) { /* retry until success */ } + // for consistency with push interface on other queue types: + return true; + } + + KOKKOS_INLINE_FUNCTION + bool push(node_type&& node) + { + // Just forward to the lvalue version + return push(node); + } + +}; + + +/** @brief A Multiple Producer, Single Consumer Queue with some special semantics + * + * This multi-producer, single consumer queue has the following semantics: + * + * - Any number of threads may call `try_emplace`/`try_push` + * + These operations are lock-free. + * - Exactly one thread calls `consume()`, and the call occurs exactly once + * in the lifetime of the queue. + * + This operation is lock-free (and wait-free w.r.t. producers) + * - Any calls to `try_push` that happen-before the call to + * `consume()` will succeed and return an true, such that the `consume()` + * call will visit that node. + * - Any calls to `try_push` for which the single call to `consume()` + * happens-before those calls will return false and the node given as + * an argument to `try_push` will not be visited by consume() + * + * + * @tparam T The type of items in the queue + * + */ +template +class SingleConsumeOperationLIFO + : private LockBasedLIFOCommon +{ +private: + + using base_t = LockBasedLIFOCommon; + using node_type = typename base_t::node_type; + + // Allows us to reuse the existing infrastructure for + static constexpr auto ConsumedTag = base_t::LockTag; + +public: + + using value_type = typename base_t::value_type; // = T + + KOKKOS_INLINE_FUNCTION + SingleConsumeOperationLIFO() noexcept = default; + + SingleConsumeOperationLIFO(SingleConsumeOperationLIFO const&) = delete; + SingleConsumeOperationLIFO(SingleConsumeOperationLIFO&&) = delete; + SingleConsumeOperationLIFO& operator=(SingleConsumeOperationLIFO const&) = delete; + SingleConsumeOperationLIFO& operator=(SingleConsumeOperationLIFO&&) = delete; + + KOKKOS_INLINE_FUNCTION + ~SingleConsumeOperationLIFO() = default; + + KOKKOS_INLINE_FUNCTION + bool empty() const noexcept { + // TODO @tasking @memory_order DSH memory order + return this->_is_empty(); + } + + KOKKOS_INLINE_FUNCTION + bool is_consumed() const noexcept { + // TODO @tasking @memory_order DSH memory order? + return this->m_head == (node_type*)ConsumedTag; + } + + KOKKOS_INLINE_FUNCTION + bool try_push(node_type& node) + { + return this->_try_push_node(node); + // Ensures: (return value is true) || (node.is_enqueued() == false); + } + + template + KOKKOS_INLINE_FUNCTION + void consume(Function&& f) { + auto* const consumed_tag = (node_type*)ConsumedTag; + + // Swap the Consumed tag into the head of the queue: + + // (local variable used for assertion only) + // TODO @tasking @memory_order DSH this should have memory order release, I think + Kokkos::memory_fence(); + auto old_head = Kokkos::atomic_exchange(&(this->m_head), consumed_tag); + + // Assert that the queue wasn't consumed before this + // This can't be an expects clause because the acquire fence on the read + // would be a side-effect + KOKKOS_ASSERT(old_head != consumed_tag); + + // We now have exclusive access to the queue; loop over it and call + // the user function + while(old_head != (node_type*)base_t::EndTag) { + + // get the Node to make the call with + auto* call_arg = old_head; + + // advance the head + old_head = LinkedListNodeAccess::next_ptr(*old_head); + + // Mark as popped before proceeding + LinkedListNodeAccess::mark_as_not_enqueued(*call_arg); + + // Call the user function + auto& arg = *static_cast(call_arg); + f(std::move(arg)); + + } + + } + +}; + +} // end namespace Impl +} // end namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +struct TaskQueueTraitsLockBased +{ + + // TODO @tasking @documentation DSH document what concepts these match + + template + using ready_queue_type = LockBasedLIFO; + + template + using waiting_queue_type = SingleConsumeOperationLIFO; + + template + using intrusive_task_base_type = + typename ready_queue_type::intrusive_node_base_type; + + static constexpr auto ready_queue_insertion_may_fail = false; + +}; + + +} // end namespace Impl +} // end namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* defined KOKKOS_ENABLE_TASKDAG */ +#endif /* #ifndef KOKKOS_IMPL_LIFO_HPP */ + diff --git a/lib/kokkos/core/src/impl/Kokkos_LinkedListNode.hpp b/lib/kokkos/core/src/impl/Kokkos_LinkedListNode.hpp new file mode 100644 index 0000000000..78a6faca90 --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_LinkedListNode.hpp @@ -0,0 +1,206 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +// Experimental unified task-data parallel manycore LDRD + +#ifndef KOKKOS_IMPL_LINKEDLISTNODE_HPP +#define KOKKOS_IMPL_LINKEDLISTNODE_HPP + +#include +#ifdef KOKKOS_ENABLE_TASKDAG // Note: implies CUDA_VERSION >= 8000 if using CUDA + +#include + +#include +#include +#include // KOKKOS_EXPECTS + +#include // atomic_compare_exchange, atomic_fence + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +struct LinkedListNodeAccess; + +template < + uintptr_t NotEnqueuedValue = 0, + template class PointerTemplate = std::add_pointer +> +struct SimpleSinglyLinkedListNode +{ + +private: + + using pointer_type = typename PointerTemplate::type; + + pointer_type m_next = reinterpret_cast(NotEnqueuedValue); + + // These are private because they are an implementation detail of the queue + // and should not get added to the value type's interface via the intrusive + // wrapper. + + KOKKOS_INLINE_FUNCTION + void mark_as_not_enqueued() noexcept { + // TODO @tasking @memory_order DSH make this an atomic store with memory order + m_next = (pointer_type)NotEnqueuedValue; + } + + KOKKOS_INLINE_FUNCTION + void mark_as_not_enqueued() volatile noexcept { + // TODO @tasking @memory_order DSH make this an atomic store with memory order + m_next = (pointer_type)NotEnqueuedValue; + } + + KOKKOS_INLINE_FUNCTION + pointer_type& _next_ptr() noexcept { + return m_next; + } + + KOKKOS_INLINE_FUNCTION + pointer_type volatile& _next_ptr() volatile noexcept { + return m_next; + } + + KOKKOS_INLINE_FUNCTION + pointer_type const& _next_ptr() const noexcept { + return m_next; + } + + KOKKOS_INLINE_FUNCTION + pointer_type const volatile& _next_ptr() const volatile noexcept { + return m_next; + } + + friend struct LinkedListNodeAccess; + +public: + + // KOKKOS_CONSTEXPR_14 + KOKKOS_INLINE_FUNCTION + bool is_enqueued() const noexcept { + // TODO @tasking @memory_order DSH make this an atomic load with memory order + return m_next != reinterpret_cast(NotEnqueuedValue); + } + + // KOKKOS_CONSTEXPR_14 + KOKKOS_INLINE_FUNCTION + bool is_enqueued() const volatile noexcept { + // TODO @tasking @memory_order DSH make this an atomic load with memory order + return m_next != reinterpret_cast(NotEnqueuedValue); + } + +}; + +/// Attorney for LinkedListNode, since user types inherit from it +struct LinkedListNodeAccess +{ + + template + KOKKOS_INLINE_FUNCTION + static void mark_as_not_enqueued(Node& node) noexcept { + node.mark_as_not_enqueued(); + } + + template + KOKKOS_INLINE_FUNCTION + static void mark_as_not_enqueued(Node volatile& node) noexcept { + node.mark_as_not_enqueued(); + } + + template + KOKKOS_INLINE_FUNCTION + static + typename Node::pointer_type& + next_ptr(Node& node) noexcept { + return node._next_ptr(); + } + + template + KOKKOS_INLINE_FUNCTION + static + typename Node::pointer_type& + next_ptr(Node volatile& node) noexcept { + return node._next_ptr(); + } + + template + KOKKOS_INLINE_FUNCTION + static + typename Node::pointer_type& + next_ptr(Node const& node) noexcept { + return node._next_ptr(); + } + + template + KOKKOS_INLINE_FUNCTION + static + typename Node::pointer_type& + prev_ptr(Node& node) noexcept { + return node._prev_ptr(); + } + + template + KOKKOS_INLINE_FUNCTION + static + typename Node::pointer_type& + prev_ptr(Node const& node) noexcept { + return node._prev_ptr(); + } + +}; + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +} // end namespace Impl +} // end namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* defined KOKKOS_ENABLE_TASKDAG */ +#endif /* #ifndef KOKKOS_IMPL_LINKEDLISTNODE_HPP */ + diff --git a/lib/kokkos/core/src/impl/Kokkos_MemoryPoolAllocator.hpp b/lib/kokkos/core/src/impl/Kokkos_MemoryPoolAllocator.hpp new file mode 100644 index 0000000000..b4629df5b0 --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_MemoryPoolAllocator.hpp @@ -0,0 +1,140 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +// Experimental unified task-data parallel manycore LDRD + +#ifndef KOKKOS_IMPL_MEMORYPOOLALLOCATOR_HPP +#define KOKKOS_IMPL_MEMORYPOOLALLOCATOR_HPP + +#include + +#include + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +namespace Kokkos { +namespace Impl { + +template +class MemoryPoolAllocator { +public: + + using memory_pool = MemoryPool; + +private: + + memory_pool m_pool; + +public: + + KOKKOS_INLINE_FUNCTION + MemoryPoolAllocator() = default; + KOKKOS_INLINE_FUNCTION + MemoryPoolAllocator(MemoryPoolAllocator const&) = default; + KOKKOS_INLINE_FUNCTION + MemoryPoolAllocator(MemoryPoolAllocator&&) = default; + KOKKOS_INLINE_FUNCTION + MemoryPoolAllocator& operator=(MemoryPoolAllocator const&) = default; + KOKKOS_INLINE_FUNCTION + MemoryPoolAllocator& operator=(MemoryPoolAllocator&&) = default; + KOKKOS_INLINE_FUNCTION + ~MemoryPoolAllocator() = default; + + KOKKOS_INLINE_FUNCTION + explicit MemoryPoolAllocator(memory_pool const& arg_pool) : m_pool(arg_pool) { } + KOKKOS_INLINE_FUNCTION + explicit MemoryPoolAllocator(memory_pool&& arg_pool) : m_pool(std::move(arg_pool)) { } + +public: + + using value_type = T; + using pointer = T*; + using size_type = typename MemoryPool::memory_space::size_type; + using difference_type = typename std::make_signed::type; + + template + struct rebind { + using other = MemoryPoolAllocator; + }; + + KOKKOS_INLINE_FUNCTION + pointer allocate(size_t n) { + void* rv = m_pool.allocate(n * sizeof(T)); + if(rv == nullptr) { + Kokkos::abort("Kokkos MemoryPool allocator failed to allocate memory"); + } + return reinterpret_cast(rv); + } + + KOKKOS_INLINE_FUNCTION + void deallocate(T* ptr, size_t n) { + m_pool.deallocate(ptr, n * sizeof(T)); + } + + KOKKOS_INLINE_FUNCTION + size_type max_size() const { + return m_pool.max_block_size(); + } + + KOKKOS_INLINE_FUNCTION + bool operator==(MemoryPoolAllocator const& other) const { + return m_pool == other.m_pool; + } + + KOKKOS_INLINE_FUNCTION + bool operator!=(MemoryPoolAllocator const& other) const { + return !(*this == other); + } + +}; + +} // end namespace Impl +} // end namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + + + +#endif /* #ifndef KOKKOS_IMPL_MEMORYPOOLALLOCATOR_HPP */ + diff --git a/lib/kokkos/core/src/impl/Kokkos_MultipleTaskQueue.hpp b/lib/kokkos/core/src/impl/Kokkos_MultipleTaskQueue.hpp new file mode 100644 index 0000000000..ed8d2be5ae --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_MultipleTaskQueue.hpp @@ -0,0 +1,616 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_IMPL_MULTIPLETASKQUEUE_HPP +#define KOKKOS_IMPL_MULTIPLETASKQUEUE_HPP + +#include +#if defined( KOKKOS_ENABLE_TASKDAG ) + +#include +#include + +#include + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +// A *non*-concurrent linked list of tasks that failed to be enqueued +// (We can't reuse the wait queue for this because of the semantics of that +// queue that require it to be popped exactly once, and if a task has failed +// to be enqueued, it has already been marked ready) +template +struct FailedQueueInsertionLinkedListSchedulingInfo { + using task_base_type = TaskNode; + task_base_type* next = nullptr; +}; + +struct EmptyTaskSchedulingInfo { }; + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +template < + class ExecSpace, + class MemorySpace, + class TaskQueueTraits, + class MemoryPool +> +class MultipleTaskQueue; + +template +struct MultipleTaskQueueTeamEntry { +public: + + using task_base_type = TaskNode; + using runnable_task_base_type = RunnableTaskBase; + using ready_queue_type = typename TaskQueueTraits::template ready_queue_type; + using task_queue_traits = TaskQueueTraits; + using task_scheduling_info_type = typename std::conditional< + TaskQueueTraits::ready_queue_insertion_may_fail, + FailedQueueInsertionLinkedListSchedulingInfo, + EmptyTaskSchedulingInfo + >::type; + +private: + + // Number of allowed priorities + static constexpr int NumPriorities = 3; + + ready_queue_type m_ready_queues[NumPriorities][2]; + + task_base_type* m_failed_heads[NumPriorities][2]; + + KOKKOS_INLINE_FUNCTION + task_base_type*& + failed_head_for(runnable_task_base_type const& task) + { + return m_failed_heads[int(task.get_priority())][int(task.get_task_type())]; + } + + template + KOKKOS_INLINE_FUNCTION + OptionalRef + _pop_failed_insertion( + int priority, TaskType type, + typename std::enable_if< + task_queue_traits::ready_queue_insertion_may_fail + and std::is_void<_always_void>::value, + void* + >::type = nullptr + ) { + auto* rv_ptr = m_failed_heads[priority][(int)type]; + if(rv_ptr) { + m_failed_heads[priority][(int)type] = + rv_ptr->as_runnable_task() + .template scheduling_info_as() + .next; + return OptionalRef{ *rv_ptr }; + } + else { + return OptionalRef{ nullptr }; + } + } + + template + KOKKOS_INLINE_FUNCTION + OptionalRef + _pop_failed_insertion( + int priority, TaskType type, + typename std::enable_if< + not task_queue_traits::ready_queue_insertion_may_fail + and std::is_void<_always_void>::value, + void* + >::type = nullptr + ) { + return OptionalRef{ nullptr }; + } + +public: + + KOKKOS_INLINE_FUNCTION + MultipleTaskQueueTeamEntry() { + for(int iPriority = 0; iPriority < NumPriorities; ++iPriority) { + for(int iType = 0; iType < 2; ++iType) { + m_failed_heads[iPriority][iType] = nullptr; + } + } + } + + + KOKKOS_INLINE_FUNCTION + OptionalRef + try_to_steal_ready_task() + { + auto return_value = OptionalRef{}; + // prefer lower priority tasks when stealing + for(int i_priority = NumPriorities-1; i_priority >= 0; --i_priority) { + // Check for a single task with this priority + return_value = m_ready_queues[i_priority][TaskSingle].steal(); + if(return_value) return return_value; + + // Check for a team task with this priority + return_value = m_ready_queues[i_priority][TaskTeam].steal(); + if(return_value) return return_value; + + } + return return_value; + } + + KOKKOS_INLINE_FUNCTION + OptionalRef + pop_ready_task() + { + auto return_value = OptionalRef{}; + for(int i_priority = 0; i_priority < NumPriorities; ++i_priority) { + return_value = _pop_failed_insertion(i_priority, TaskTeam); + if(not return_value) return_value = m_ready_queues[i_priority][TaskTeam].pop(); + if(return_value) return return_value; + + // Check for a single task with this priority + return_value = _pop_failed_insertion(i_priority, TaskSingle); + if(not return_value) return_value = m_ready_queues[i_priority][TaskSingle].pop(); + if(return_value) return return_value; + } + return return_value; + } + + KOKKOS_INLINE_FUNCTION + ready_queue_type& + team_queue_for(runnable_task_base_type const& task) + { + return m_ready_queues[int(task.get_priority())][int(task.get_task_type())]; + } + + + template + KOKKOS_INLINE_FUNCTION + void do_handle_failed_insertion( + runnable_task_base_type&& task, + typename std::enable_if< + task_queue_traits::ready_queue_insertion_may_fail + and std::is_void<_always_void>::value, + void* + >::type = nullptr + ) + { + // failed insertions, if they happen, must be from the only thread that + // is allowed to push to m_ready_queues, so this linked-list insertion is not + // concurrent + auto& node = task.template scheduling_info_as(); + auto*& head = failed_head_for(task); + node.next = head; + head = &task; + } + + template + KOKKOS_INLINE_FUNCTION + void do_handle_failed_insertion( + runnable_task_base_type&& task, + typename std::enable_if< + not task_queue_traits::ready_queue_insertion_may_fail + and std::is_void<_always_void>::value, + void* + >::type = nullptr + ) + { + Kokkos::abort("should be unreachable!"); + } + + + template + KOKKOS_INLINE_FUNCTION + void + flush_failed_insertions( + int priority, + int task_type, + typename std::enable_if< + task_queue_traits::ready_queue_insertion_may_fail + and std::is_void<_always_void>::value, // just to make this dependent on template parameter + int + >::type = 0 + ) { + // TODO @tasking @minor DSH this somethimes gets some things out of LIFO order, which may be undesirable (but not a bug) + + + auto*& failed_head = m_failed_heads[priority][task_type]; + auto& team_queue = m_ready_queues[priority][task_type]; + + while(failed_head != nullptr) { + bool success = team_queue.push(*failed_head); + if(success) { + // Step to the next linked list element + failed_head = failed_head->as_runnable_task() + .template scheduling_info_as().next; + } + else { + // no more room, stop traversing and leave the head where it is + break; + } + } + } + + + template + KOKKOS_INLINE_FUNCTION + void + flush_failed_insertions( + int, int, + typename std::enable_if< + not task_queue_traits::ready_queue_insertion_may_fail + and std::is_void<_always_void>::value, // just to make this dependent on template parameter + int + >::type = 0 + ) { } + + + KOKKOS_INLINE_FUNCTION + void + flush_all_failed_insertions() { + for(int iPriority = 0; iPriority < NumPriorities; ++iPriority) { + flush_failed_insertions(iPriority, (int)TaskType::TaskTeam); + flush_failed_insertions(iPriority, (int)TaskType::TaskSingle); + } + } + + + template + KOKKOS_INLINE_FUNCTION + void + do_schedule_runnable( + MultipleTaskQueue& queue, + RunnableTaskBase&& task, + TeamSchedulerInfo const& info + + ) { + // Push on any nodes that failed to enqueue + auto& team_queue = team_queue_for(task); + auto priority = task.get_priority(); + auto task_type = task.get_task_type(); + + // First schedule the task + queue.schedule_runnable_to_queue( + std::move(task), + team_queue, + info + ); + + // Task may be enqueued and may be run at any point; don't touch it (hence + // the use of move semantics) + flush_failed_insertions((int)priority, (int)task_type); + } + + + +}; + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +template < + class ExecSpace, + class MemorySpace, + class TaskQueueTraits, + class MemoryPool +> +class MultipleTaskQueue final + : public TaskQueueMemoryManager, + public TaskQueueCommonMixin>, + private ObjectWithVLAEmulation< + MultipleTaskQueue, + MultipleTaskQueueTeamEntry + > +{ +public: + + using task_queue_type = MultipleTaskQueue; // mark as task_queue concept + using task_queue_traits = TaskQueueTraits; + using task_base_type = TaskNode; + using ready_queue_type = typename TaskQueueTraits::template ready_queue_type; + +private: + + using base_t = TaskQueueMemoryManager; + using common_mixin_t = TaskQueueCommonMixin; + using vla_emulation_base_t = ObjectWithVLAEmulation< + MultipleTaskQueue, + MultipleTaskQueueTeamEntry + >; + + // Allow private inheritance from ObjectWithVLAEmulation + friend struct VLAEmulationAccess; + +public: + + struct SchedulerInfo { + using team_queue_id_t = int32_t; + static constexpr team_queue_id_t NoAssociatedTeam = -1; + team_queue_id_t team_association = NoAssociatedTeam; + + using scheduler_info_type = SchedulerInfo; + + KOKKOS_INLINE_FUNCTION + constexpr explicit SchedulerInfo(team_queue_id_t association) noexcept + : team_association(association) + { } + + KOKKOS_INLINE_FUNCTION + SchedulerInfo() = default; + + KOKKOS_INLINE_FUNCTION + SchedulerInfo(SchedulerInfo const&) = default; + + KOKKOS_INLINE_FUNCTION + SchedulerInfo(SchedulerInfo&&) = default; + + KOKKOS_INLINE_FUNCTION + SchedulerInfo& operator=(SchedulerInfo const&) = default; + + KOKKOS_INLINE_FUNCTION + SchedulerInfo& operator=(SchedulerInfo&&) = default; + + KOKKOS_INLINE_FUNCTION + ~SchedulerInfo() = default; + + }; + + using task_scheduling_info_type = typename std::conditional< + TaskQueueTraits::ready_queue_insertion_may_fail, + FailedQueueInsertionLinkedListSchedulingInfo, + EmptyTaskSchedulingInfo + >::type; + using team_scheduler_info_type = SchedulerInfo; + + using runnable_task_base_type = RunnableTaskBase; + + template + // requires TaskScheduler && TaskFunctor + using runnable_task_type = RunnableTask< + task_queue_traits, Scheduler, typename Functor::value_type, Functor + >; + + using aggregate_task_type = AggregateTask; + + // Number of allowed priorities + static constexpr int NumPriorities = 3; + + KOKKOS_INLINE_FUNCTION + constexpr typename vla_emulation_base_t::vla_entry_count_type + n_queues() const noexcept { return this->n_vla_entries(); } + +public: + + //---------------------------------------------------------------------------- + // {{{2 + + MultipleTaskQueue() = delete; + MultipleTaskQueue(MultipleTaskQueue const&) = delete; + MultipleTaskQueue(MultipleTaskQueue&&) = delete; + MultipleTaskQueue& operator=(MultipleTaskQueue const&) = delete; + MultipleTaskQueue& operator=(MultipleTaskQueue&&) = delete; + + MultipleTaskQueue( + typename base_t::execution_space const& arg_execution_space, + typename base_t::memory_space const&, + typename base_t::memory_pool const& arg_memory_pool + ) : base_t(arg_memory_pool), + vla_emulation_base_t( + Impl::TaskQueueSpecialization< + // TODO @tasking @generalization DSH avoid referencing SimpleTaskScheduler directly? + SimpleTaskScheduler + >::get_max_team_count(arg_execution_space) + ) + { } + + // end Constructors, destructors, and assignment }}}2 + //---------------------------------------------------------------------------- + + KOKKOS_FUNCTION + void + schedule_runnable( + runnable_task_base_type&& task, + team_scheduler_info_type const& info + ) { + auto team_association = info.team_association; + // Should only not be assigned if this is a host spawn... + if(team_association == team_scheduler_info_type::NoAssociatedTeam) { + team_association = 0; + } + this->vla_value_at(team_association).do_schedule_runnable(*this, std::move(task), info); + // Task may be enqueued and may be run at any point; don't touch it (hence + // the use of move semantics) + } + + KOKKOS_FUNCTION + OptionalRef + pop_ready_task( + team_scheduler_info_type const& info + ) + { + KOKKOS_EXPECTS(info.team_association != team_scheduler_info_type::NoAssociatedTeam); + + auto return_value = OptionalRef{}; + auto team_association = info.team_association; + + // always loop in order of priority first, then prefer team tasks over single tasks + auto& team_queue_info = this->vla_value_at(team_association); + + if(task_queue_traits::ready_queue_insertion_may_fail) { + team_queue_info.flush_all_failed_insertions(); + } + + return_value = team_queue_info.pop_ready_task(); + + if(not return_value) { + + // loop through the rest of the teams and try to steal + for( + auto isteal = (team_association + 1) % this->n_queues(); + isteal != team_association; + isteal = (isteal + 1) % this->n_queues() + ) { + return_value = this->vla_value_at(isteal).try_to_steal_ready_task(); + if(return_value) { break; } + } + + // Note that this is where we'd update the task's scheduling info + } + // if nothing was found, return a default-constructed (empty) OptionalRef + return return_value; + } + + + // TODO @tasking @generalization DSH make this a property-based customization point + KOKKOS_INLINE_FUNCTION + team_scheduler_info_type + initial_team_scheduler_info(int rank_in_league) const noexcept { + return team_scheduler_info_type{ + typename team_scheduler_info_type::team_queue_id_t(rank_in_league % n_queues()) + }; + } + + // TODO @tasking @generalization DSH make this a property-based customization point + static /* KOKKOS_CONSTEXPR_14 */ size_t + task_queue_allocation_size( + typename base_t::execution_space const& exec_space, + typename base_t::memory_space const&, + typename base_t::memory_pool const& + ) + { + using specialization = + Impl::TaskQueueSpecialization< + // TODO @tasking @generalization DSH avoid referencing SimpleTaskScheduler directly? + SimpleTaskScheduler + >; + + return vla_emulation_base_t::required_allocation_size( + /* num_vla_entries = */ specialization::get_max_team_count(exec_space) + ); + } + + // Provide a sensible default that can be overridden + KOKKOS_INLINE_FUNCTION + void update_scheduling_info_from_completed_predecessor( + runnable_task_base_type& ready_task, + runnable_task_base_type const& predecessor + ) const + { + // Do nothing; we're using the extra storage for the failure linked list + } + + // Provide a sensible default that can be overridden + KOKKOS_INLINE_FUNCTION + void update_scheduling_info_from_completed_predecessor( + aggregate_task_type& aggregate, + runnable_task_base_type const& predecessor + ) const + { + // Do nothing; we're using the extra storage for the failure linked list + } + + // Provide a sensible default that can be overridden + KOKKOS_INLINE_FUNCTION + void update_scheduling_info_from_completed_predecessor( + aggregate_task_type& aggregate, + aggregate_task_type const& predecessor + ) const + { + // Do nothing; we're using the extra storage for the failure linked list + } + + // Provide a sensible default that can be overridden + KOKKOS_INLINE_FUNCTION + void update_scheduling_info_from_completed_predecessor( + runnable_task_base_type& ready_task, + aggregate_task_type const& predecessor + ) const + { + // Do nothing; we're using the extra storage for the failure linked list + } + + KOKKOS_INLINE_FUNCTION + void + handle_failed_ready_queue_insertion( + runnable_task_base_type&& task, + ready_queue_type&, + team_scheduler_info_type const& info + ) { + KOKKOS_EXPECTS(info.team_association != team_scheduler_info_type::NoAssociatedTeam); + + this->vla_value_at(info.team_association).do_handle_failed_insertion( + std::move(task) + ); + } +}; + + +} /* namespace Impl */ +} /* namespace Kokkos */ + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ +#endif /* #ifndef KOKKOS_IMPL_MULTIPLETASKQUEUE_HPP */ + diff --git a/lib/kokkos/core/src/impl/Kokkos_OptionalRef.hpp b/lib/kokkos/core/src/impl/Kokkos_OptionalRef.hpp new file mode 100644 index 0000000000..bf83d1831c --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_OptionalRef.hpp @@ -0,0 +1,242 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +// Experimental unified task-data parallel manycore LDRD + +#ifndef KOKKOS_IMPL_OPTIONALREF_HPP +#define KOKKOS_IMPL_OPTIONALREF_HPP + +#include + +#include + +#include +#include + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +namespace Kokkos { +namespace Impl { + +struct InPlaceTag { }; + +template +struct OptionalRef { +private: + + ObservingRawPtr m_value = nullptr; + +public: + + using value_type = T; + + KOKKOS_INLINE_FUNCTION + OptionalRef() = default; + + KOKKOS_INLINE_FUNCTION + OptionalRef(OptionalRef const&) = default; + + KOKKOS_INLINE_FUNCTION + OptionalRef(OptionalRef&&) = default; + + KOKKOS_INLINE_FUNCTION + OptionalRef& operator=(OptionalRef const&) = default; + + KOKKOS_INLINE_FUNCTION + // Can't return a reference to volatile OptionalRef, since GCC issues a warning about + // reference to volatile not accessing the underlying value + void + operator=(OptionalRef const volatile& other) volatile noexcept + { + m_value = other.m_value; + } + + KOKKOS_INLINE_FUNCTION + OptionalRef& operator=(OptionalRef&&) = default; + + KOKKOS_INLINE_FUNCTION + ~OptionalRef() = default; + + KOKKOS_INLINE_FUNCTION + explicit OptionalRef(T& arg_value) : m_value(&arg_value) { } + + KOKKOS_INLINE_FUNCTION + explicit OptionalRef(std::nullptr_t) : m_value(nullptr) { } + + KOKKOS_INLINE_FUNCTION + OptionalRef& operator=(T& arg_value) { m_value = &arg_value; return *this; } + + KOKKOS_INLINE_FUNCTION + OptionalRef& operator=(std::nullptr_t) { m_value = nullptr; return *this; } + + //---------------------------------------- + + KOKKOS_INLINE_FUNCTION + OptionalRef::type> + as_volatile() volatile noexcept { + return + OptionalRef::type>(*(*this)); + } + + KOKKOS_INLINE_FUNCTION + OptionalRef::type>::type> + as_volatile() const volatile noexcept { + return + OptionalRef::type>::type>(*(*this)); + } + + + //---------------------------------------- + + KOKKOS_INLINE_FUNCTION + T& operator*() & { + KOKKOS_EXPECTS(this->has_value()); + return *m_value; + } + + KOKKOS_INLINE_FUNCTION + T const& operator*() const & { + KOKKOS_EXPECTS(this->has_value()); + return *m_value; + } + + KOKKOS_INLINE_FUNCTION + T volatile& operator*() volatile & { + KOKKOS_EXPECTS(this->has_value()); + return *m_value; + } + + KOKKOS_INLINE_FUNCTION + T const volatile& operator*() const volatile & { + KOKKOS_EXPECTS(this->has_value()); + return *m_value; + } + + KOKKOS_INLINE_FUNCTION + T&& operator*() && { + KOKKOS_EXPECTS(this->has_value()); + return std::move(*m_value); + } + + KOKKOS_INLINE_FUNCTION + T* operator->() { + KOKKOS_EXPECTS(this->has_value()); + return m_value; + } + + KOKKOS_INLINE_FUNCTION + T const* operator->() const { + KOKKOS_EXPECTS(this->has_value()); + return m_value; + } + + KOKKOS_INLINE_FUNCTION + T volatile* operator->() volatile { + KOKKOS_EXPECTS(this->has_value()); + return m_value; + } + + KOKKOS_INLINE_FUNCTION + T const volatile* operator->() const volatile { + KOKKOS_EXPECTS(this->has_value()); + return m_value; + } + + KOKKOS_INLINE_FUNCTION + T* get() { + return m_value; + } + + KOKKOS_INLINE_FUNCTION + T const* get() const { + return m_value; + } + + KOKKOS_INLINE_FUNCTION + T volatile* get() volatile { + return m_value; + } + + KOKKOS_INLINE_FUNCTION + T const volatile* get() const volatile { + return m_value; + } + + //---------------------------------------- + + KOKKOS_INLINE_FUNCTION + operator bool() { return m_value != nullptr; } + + KOKKOS_INLINE_FUNCTION + operator bool() const { return m_value != nullptr; } + + KOKKOS_INLINE_FUNCTION + operator bool() volatile { return m_value != nullptr; } + + KOKKOS_INLINE_FUNCTION + operator bool() const volatile { return m_value != nullptr; } + + KOKKOS_INLINE_FUNCTION + bool has_value() { return m_value != nullptr; } + + KOKKOS_INLINE_FUNCTION + bool has_value() const { return m_value != nullptr; } + + KOKKOS_INLINE_FUNCTION + bool has_value() volatile { return m_value != nullptr; } + + KOKKOS_INLINE_FUNCTION + bool has_value() const volatile { return m_value != nullptr; } + +}; + +} // end namespace Impl +} // end namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + + + +#endif /* #ifndef KOKKOS_IMPL_OPTIONALREF_HPP */ + diff --git a/lib/kokkos/core/src/impl/Kokkos_Serial_Task.cpp b/lib/kokkos/core/src/impl/Kokkos_Serial_Task.cpp index d84a854622..687a0e9c37 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Serial_Task.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_Serial_Task.cpp @@ -55,104 +55,7 @@ namespace Kokkos { namespace Impl { -template class TaskQueue< Kokkos::Serial > ; - -void TaskQueueSpecialization< Kokkos::Serial >::execute - ( TaskQueue< Kokkos::Serial > * const queue ) -{ - using exec_space = Kokkos::Serial ; - using tqs_queue_type = TaskQueue< exec_space > ; - using task_root_type = TaskBase< void , void , void > ; - using Member = Impl::HostThreadTeamMember< exec_space > ; - - task_root_type * const end = (task_root_type *) task_root_type::EndTag ; - - // Set default buffers - serial_resize_thread_team_data( 0 /* global reduce buffer */ - , 512 /* team reduce buffer */ - , 0 /* team shared buffer */ - , 0 /* thread local buffer */ - ); - - Impl::HostThreadTeamData * const data = Impl::serial_get_thread_team_data(); - - Member exec( *data ); - - // Loop until all queues are empty - while ( 0 < queue->m_ready_count ) { - - task_root_type * task = end ; - - for ( int i = 0 ; i < tqs_queue_type::NumQueue && end == task ; ++i ) { - for ( int j = 0 ; j < 2 && end == task ; ++j ) { - task = tqs_queue_type::pop_ready_task( & queue->m_ready[i][j] ); - } - } - - if ( end != task ) { - - // pop_ready_task resulted in lock == task->m_next - // In the executing state - - (*task->m_apply)( task , & exec ); - -#if 0 - printf( "TaskQueue::executed: 0x%lx { 0x%lx 0x%lx %d %d %d }\n" - , uintptr_t(task) - , uintptr_t(task->m_wait) - , uintptr_t(task->m_next) - , task->m_task_type - , task->m_priority - , task->m_ref_count ); -#endif - - // If a respawn then re-enqueue otherwise the task is complete - // and all tasks waiting on this task are updated. - queue->complete( task ); - } - else if ( 0 != queue->m_ready_count ) { - Kokkos::abort("TaskQueue::execute ERROR: ready_count"); - } - } -} - -void TaskQueueSpecialization< Kokkos::Serial > :: - iff_single_thread_recursive_execute( - TaskQueue< Kokkos::Serial > * const queue ) -{ - using exec_space = Kokkos::Serial ; - using tqs_queue_type = TaskQueue< exec_space > ; - using task_root_type = TaskBase< void , void , void > ; - using Member = Impl::HostThreadTeamMember< exec_space > ; - - task_root_type * const end = (task_root_type *) task_root_type::EndTag ; - - Impl::HostThreadTeamData * const data = Impl::serial_get_thread_team_data(); - - Member exec( *data ); - - // Loop until no runnable task - - task_root_type * task = end ; - - do { - - task = end ; - - for ( int i = 0 ; i < tqs_queue_type::NumQueue && end == task ; ++i ) { - for ( int j = 0 ; j < 2 && end == task ; ++j ) { - task = tqs_queue_type::pop_ready_task( & queue->m_ready[i][j] ); - } - } - - if ( end == task ) break ; - - (*task->m_apply)( task , & exec ); - - queue->complete( task ); - - } while(1); -} +template class TaskQueue; }} /* namespace Kokkos::Impl */ diff --git a/lib/kokkos/core/src/impl/Kokkos_Serial_Task.hpp b/lib/kokkos/core/src/impl/Kokkos_Serial_Task.hpp index 2fec5dfb89..c379a12fb1 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Serial_Task.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Serial_Task.hpp @@ -47,7 +47,11 @@ #include #if defined( KOKKOS_ENABLE_TASKDAG ) +#include + #include +#include +#include //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- @@ -55,32 +59,217 @@ namespace Kokkos { namespace Impl { +template +class TaskQueueSpecialization< + SimpleTaskScheduler +> +{ +public: + + // Note: Scheduler may be an incomplete type at class scope (but not inside + // of the methods, obviously) + + using execution_space = Kokkos::Serial; + using memory_space = Kokkos::HostSpace; + using scheduler_type = SimpleTaskScheduler; + using member_type = TaskTeamMemberAdapter< + HostThreadTeamMember, scheduler_type + >; + + static + void execute(scheduler_type const& scheduler) + { + using task_base_type = typename scheduler_type::task_base_type; + + // Set default buffers + serial_resize_thread_team_data( + 0, /* global reduce buffer */ + 512, /* team reduce buffer */ + 0, /* team shared buffer */ + 0 /* thread local buffer */ + ); + + Impl::HostThreadTeamData& self = *Impl::serial_get_thread_team_data(); + + auto& queue = scheduler.queue(); + auto team_scheduler = scheduler.get_team_scheduler(0); + + member_type member(scheduler, self); + + auto current_task = OptionalRef(nullptr); + + while(not queue.is_done()) { + + // Each team lead attempts to acquire either a thread team task + // or a single thread task for the team. + + // pop a task off + current_task = queue.pop_ready_task(team_scheduler.team_scheduler_info()); + + // run the task + if(current_task) { + current_task->as_runnable_task().run(member); + // Respawns are handled in the complete function + queue.complete( + (*std::move(current_task)).as_runnable_task(), + team_scheduler.team_scheduler_info() + ); + } + + } + + } + + static constexpr uint32_t + get_max_team_count(execution_space const&) noexcept + { + return 1; + } + + template + static void + get_function_pointer( + typename TaskType::function_type& ptr, + typename TaskType::destroy_type& dtor + ) + { + ptr = TaskType::apply; + dtor = TaskType::destroy; + } +}; + //---------------------------------------------------------------------------- -template<> -class TaskQueueSpecialization< Kokkos::Serial > +template +class TaskQueueSpecializationConstrained< + Scheduler, + typename std::enable_if< + std::is_same::value + >::type +> { public: - using execution_space = Kokkos::Serial ; - using memory_space = Kokkos::HostSpace ; - using queue_type = Kokkos::Impl::TaskQueue< execution_space > ; - using task_base_type = Kokkos::Impl::TaskBase< void , void , void > ; - using member_type = Kokkos::Impl::HostThreadTeamMember< execution_space > ; + // Note: Scheduler may be an incomplete type at class scope (but not inside + // of the methods, obviously) - static - void iff_single_thread_recursive_execute( queue_type * const ); + using execution_space = Kokkos::Serial; + using memory_space = Kokkos::HostSpace; + using scheduler_type = Scheduler; + using member_type = TaskTeamMemberAdapter< + HostThreadTeamMember, scheduler_type + >; static - void execute( queue_type * const ); + void iff_single_thread_recursive_execute(scheduler_type const& scheduler) { + using task_base_type = TaskBase; + using queue_type = typename scheduler_type::queue_type; + + task_base_type * const end = (task_base_type *) task_base_type::EndTag ; + + Impl::HostThreadTeamData * const data = Impl::serial_get_thread_team_data(); + + member_type exec( scheduler, *data ); + + // Loop until no runnable task + + task_base_type * task = end ; + + auto* const queue = scheduler.m_queue; + + do { + + task = end ; + + for ( int i = 0 ; i < queue_type::NumQueue && end == task ; ++i ) { + for ( int j = 0 ; j < 2 && end == task ; ++j ) { + task = queue_type::pop_ready_task( & queue->m_ready[i][j] ); + } + } + + if ( end == task ) break ; + + (*task->m_apply)( task , & exec ); + + queue->complete( task ); + + } while(1); + + } - template< typename TaskType > static - typename TaskType::function_type - get_function_pointer() { return TaskType::apply ; } + void execute(scheduler_type const& scheduler) + { + using task_base_type = TaskBase; + using queue_type = typename scheduler_type::queue_type; + + task_base_type * const end = (task_base_type *) task_base_type::EndTag ; + + // Set default buffers + serial_resize_thread_team_data( + 0, /* global reduce buffer */ + 512, /* team reduce buffer */ + 0, /* team shared buffer */ + 0 /* thread local buffer */ + ); + + auto* const queue = scheduler.m_queue; + + Impl::HostThreadTeamData * const data = Impl::serial_get_thread_team_data(); + + member_type exec( scheduler, *data ); + + // Loop until all queues are empty + while ( 0 < queue->m_ready_count ) { + + task_base_type * task = end ; + + for ( int i = 0 ; i < queue_type::NumQueue && end == task ; ++i ) { + for ( int j = 0 ; j < 2 && end == task ; ++j ) { + task = queue_type::pop_ready_task( & queue->m_ready[i][j] ); + } + } + + if ( end != task ) { + + // pop_ready_task resulted in lock == task->m_next + // In the executing state + + (*task->m_apply)( task , & exec ); + +#if 0 + printf( "TaskQueue::executed: 0x%lx { 0x%lx 0x%lx %d %d %d }\n" + , uintptr_t(task) + , uintptr_t(task->m_wait) + , uintptr_t(task->m_next) + , task->m_task_type + , task->m_priority + , task->m_ref_count ); +#endif + + // If a respawn then re-enqueue otherwise the task is complete + // and all tasks waiting on this task are updated. + queue->complete( task ); + } + else if ( 0 != queue->m_ready_count ) { + Kokkos::abort("TaskQueue::execute ERROR: ready_count"); + } + } + } + + template + static void + get_function_pointer( + typename TaskType::function_type& ptr, + typename TaskType::destroy_type& dtor + ) + { + ptr = TaskType::apply; + dtor = TaskType::destroy; + } }; -extern template class TaskQueue< Kokkos::Serial > ; +extern template class TaskQueue< Kokkos::Serial, typename Kokkos::Serial::memory_space > ; }} /* namespace Kokkos::Impl */ diff --git a/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.cpp b/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.cpp index 658f1db06b..77eb69d081 100644 --- a/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_SharedAlloc.cpp @@ -48,11 +48,11 @@ namespace Impl { __thread int SharedAllocationRecord::t_tracking_enabled = 1; +#ifdef KOKKOS_DEBUG bool SharedAllocationRecord< void , void >:: is_sane( SharedAllocationRecord< void , void > * arg_record ) { -#ifdef KOKKOS_DEBUG SharedAllocationRecord * const root = arg_record ? arg_record->m_root : 0 ; bool ok = root != 0 && root->use_count() == 0 ; @@ -102,16 +102,23 @@ is_sane( SharedAllocationRecord< void , void > * arg_record ) } } return ok ; +} + #else + +bool +SharedAllocationRecord< void , void >:: +is_sane( SharedAllocationRecord< void , void > * ) +{ Kokkos::Impl::throw_runtime_exception("Kokkos::Impl::SharedAllocationRecord::is_sane only works with KOKKOS_DEBUG enabled"); return false ; -#endif } +#endif //#ifdef KOKKOS_DEBUG +#ifdef KOKKOS_DEBUG SharedAllocationRecord * SharedAllocationRecord::find( SharedAllocationRecord * const arg_root , void * const arg_data_ptr ) { -#ifdef KOKKOS_DEBUG SharedAllocationRecord * root_next = 0 ; static constexpr SharedAllocationRecord * zero = nullptr; @@ -130,11 +137,15 @@ SharedAllocationRecord::find( SharedAllocationRecord * con Kokkos::Impl::throw_runtime_exception("Kokkos::Impl::SharedAllocationRecord failed locking/unlocking"); } return r ; +} #else +SharedAllocationRecord * +SharedAllocationRecord::find( SharedAllocationRecord * const , void * const ) +{ Kokkos::Impl::throw_runtime_exception("Kokkos::Impl::SharedAllocationRecord::find only works with KOKKOS_DEBUG enabled"); return nullptr; -#endif } +#endif /**\brief Construct and insert into 'arg_root' tracking set. @@ -271,6 +282,7 @@ decrement( SharedAllocationRecord< void , void > * arg_record ) return arg_record ; } +#ifdef KOKKOS_DEBUG void SharedAllocationRecord< void , void >:: print_host_accessible_records( std::ostream & s @@ -278,7 +290,6 @@ print_host_accessible_records( std::ostream & s , const SharedAllocationRecord * const root , const bool detail ) { -#ifdef KOKKOS_DEBUG const SharedAllocationRecord< void , void > * r = root ; char buffer[256] ; @@ -339,12 +350,20 @@ print_host_accessible_records( std::ostream & s r = r->m_next ; } while ( r != root ); } +} #else +void +SharedAllocationRecord< void , void >:: +print_host_accessible_records( std::ostream & + , const char * const + , const SharedAllocationRecord * const + , const bool ) +{ Kokkos::Impl::throw_runtime_exception( "Kokkos::Impl::SharedAllocationRecord::print_host_accessible_records" " only works with KOKKOS_DEBUG enabled"); -#endif } +#endif } /* namespace Impl */ } /* namespace Kokkos */ diff --git a/lib/kokkos/core/src/impl/Kokkos_SimpleTaskScheduler.hpp b/lib/kokkos/core/src/impl/Kokkos_SimpleTaskScheduler.hpp new file mode 100644 index 0000000000..c2dbc96814 --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_SimpleTaskScheduler.hpp @@ -0,0 +1,646 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_SIMPLETASKSCHEDULER_HPP +#define KOKKOS_SIMPLETASKSCHEDULER_HPP + +//---------------------------------------------------------------------------- + +#include +#if defined( KOKKOS_ENABLE_TASKDAG ) + +#include +#include +//---------------------------------------------------------------------------- + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { + +namespace Impl { + +// TODO @tasking @cleanup move this +template +struct DefaultDestroy { + T* managed_object; + KOKKOS_FUNCTION + void destroy_shared_allocation() { + managed_object->~T(); + } +}; + + +template +class ExecutionSpaceInstanceStorage + : private NoUniqueAddressMemberEmulation +{ +private: + + using base_t = NoUniqueAddressMemberEmulation; + +protected: + + constexpr explicit + ExecutionSpaceInstanceStorage() + : base_t() + { } + + KOKKOS_INLINE_FUNCTION + constexpr explicit + ExecutionSpaceInstanceStorage(ExecutionSpace const& arg_execution_space) + : base_t(arg_execution_space) + { } + + KOKKOS_INLINE_FUNCTION + constexpr explicit + ExecutionSpaceInstanceStorage(ExecutionSpace&& arg_execution_space) + : base_t(std::move(arg_execution_space)) + { } + + KOKKOS_INLINE_FUNCTION + ExecutionSpace& execution_space_instance() & + { + return this->no_unique_address_data_member(); + } + + KOKKOS_INLINE_FUNCTION + ExecutionSpace const& execution_space_instance() const & + { + return this->no_unique_address_data_member(); + } + + KOKKOS_INLINE_FUNCTION + ExecutionSpace&& execution_space_instance() && + { + return std::move(*this).no_unique_address_data_member(); + } +}; + + +template +class MemorySpaceInstanceStorage + : private NoUniqueAddressMemberEmulation +{ +private: + + using base_t = NoUniqueAddressMemberEmulation; + +protected: + + MemorySpaceInstanceStorage() + : base_t() + { } + + KOKKOS_INLINE_FUNCTION + MemorySpaceInstanceStorage(MemorySpace const& arg_memory_space) + : base_t(arg_memory_space) + { } + + KOKKOS_INLINE_FUNCTION + constexpr explicit + MemorySpaceInstanceStorage(MemorySpace&& arg_memory_space) + : base_t(arg_memory_space) + { } + + KOKKOS_INLINE_FUNCTION + MemorySpace& memory_space_instance() & + { + return this->no_unique_address_data_member(); + } + + KOKKOS_INLINE_FUNCTION + MemorySpace const& memory_space_instance() const & + { + return this->no_unique_address_data_member(); + } + + KOKKOS_INLINE_FUNCTION + MemorySpace&& memory_space_instance() && + { + return std::move(*this).no_unique_address_data_member(); + } +}; + +} // end namespace Impl + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +template + // requires ExecutionSpace && TaskQueue +class SimpleTaskScheduler + : public Impl::TaskSchedulerBase, + private Impl::ExecutionSpaceInstanceStorage, + private Impl::MemorySpaceInstanceStorage, + private Impl::NoUniqueAddressMemberEmulation +{ +public: + // TODO @tasking @generalization (maybe?) don't force QueueType to be complete here + + using scheduler_type = SimpleTaskScheduler; // tag as scheduler concept + using execution_space = ExecSpace; + using task_queue_type = QueueType; + using memory_space = typename task_queue_type::memory_space; + using memory_pool = typename task_queue_type::memory_pool; + + using team_scheduler_info_type = typename task_queue_type::team_scheduler_info_type; + using task_scheduling_info_type = typename task_queue_type::task_scheduling_info_type; + using specialization = Impl::TaskQueueSpecialization; + using member_type = typename specialization::member_type; + + template + using runnable_task_type = typename QueueType::template runnable_task_type; + + using task_base_type = typename task_queue_type::task_base_type; + using runnable_task_base_type = typename task_queue_type::runnable_task_base_type; + + using task_queue_traits = typename QueueType::task_queue_traits; + + template + using future_type = Kokkos::BasicFuture; + template + using future_type_for_functor = future_type; + +private: + + template + friend class BasicFuture; + + using track_type = Kokkos::Impl::SharedAllocationTracker; + using execution_space_storage = Impl::ExecutionSpaceInstanceStorage; + using memory_space_storage = Impl::MemorySpaceInstanceStorage; + using team_scheduler_info_storage = Impl::NoUniqueAddressMemberEmulation; + + track_type m_track; + task_queue_type* m_queue = nullptr; + + KOKKOS_INLINE_FUNCTION + static constexpr task_base_type* _get_task_ptr(std::nullptr_t) { return nullptr; } + + template + KOKKOS_INLINE_FUNCTION + static constexpr task_base_type* _get_task_ptr(future_type&& f) + { + return f.m_task; + } + + template < + int TaskEnum, + class DepTaskType, + class FunctorType + > + KOKKOS_FUNCTION + future_type_for_functor::type> + _spawn_impl( + DepTaskType arg_predecessor_task, + TaskPriority arg_priority, + typename runnable_task_base_type::function_type apply_function_ptr, + typename runnable_task_base_type::destroy_type destroy_function_ptr, + FunctorType&& functor + ) + { + KOKKOS_EXPECTS(m_queue != nullptr); + + using functor_future_type = future_type_for_functor::type>; + using task_type = typename task_queue_type::template runnable_task_type< + FunctorType, scheduler_type + >; + + // Reference count starts at two: + // +1 for the matching decrement when task is complete + // +1 for the future + auto& runnable_task = *m_queue->template allocate_and_construct( + /* functor = */ std::forward(functor), + /* apply_function_ptr = */ apply_function_ptr, + /* task_type = */ static_cast(TaskEnum), + /* priority = */ arg_priority, + /* queue_base = */ m_queue, + /* initial_reference_count = */ 2 + ); + + if(arg_predecessor_task != nullptr) { + m_queue->initialize_scheduling_info_from_predecessor( + runnable_task, *arg_predecessor_task + ); + runnable_task.set_predecessor(*arg_predecessor_task); + arg_predecessor_task->decrement_and_check_reference_count(); + } + else { + m_queue->initialize_scheduling_info_from_team_scheduler_info( + runnable_task, team_scheduler_info() + ); + } + + auto rv = functor_future_type(&runnable_task); + + Kokkos::memory_fence(); // fence to ensure dependent stores are visible + + m_queue->schedule_runnable( + std::move(runnable_task), + team_scheduler_info() + ); + // note that task may be already completed even here, so don't touch it again + + return rv; + } + + +public: + + //---------------------------------------------------------------------------- + // {{{2 + + SimpleTaskScheduler() = default; + + explicit + SimpleTaskScheduler( + execution_space const& arg_execution_space, + memory_space const& arg_memory_space, + memory_pool const& arg_memory_pool + ) : execution_space_storage(arg_execution_space), + memory_space_storage(arg_memory_space) + { + // Ask the task queue how much space it needs (usually will just be + // sizeof(task_queue_type), but some queues may need additional storage + // dependent on runtime conditions or properties of the execution space) + auto const allocation_size = task_queue_type::task_queue_allocation_size( + arg_execution_space, + arg_memory_space, + arg_memory_pool + ); + + // TODO @tasking @generalization DSH better encapsulation of the SharedAllocationRecord pattern + using record_type = Impl::SharedAllocationRecord< + memory_space, Impl::DefaultDestroy + >; + + // Allocate space for the task queue + auto* record = record_type::allocate( + memory_space(), "TaskQueue", allocation_size + ); + m_queue = new (record->data()) task_queue_type( + arg_execution_space, + arg_memory_space, + arg_memory_pool + ); + record->m_destroy.managed_object = m_queue; + m_track.assign_allocated_record_to_uninitialized(record); + } + + explicit + SimpleTaskScheduler( + execution_space const& arg_execution_space, + memory_pool const& pool + ) : SimpleTaskScheduler(arg_execution_space, memory_space{}, pool) + { /* forwarding ctor, must be empty */ } + + explicit + SimpleTaskScheduler(memory_pool const& pool) + : SimpleTaskScheduler(execution_space{}, memory_space{}, pool) + { /* forwarding ctor, must be empty */ } + + SimpleTaskScheduler( + memory_space const & arg_memory_space, + size_t const mempool_capacity, + unsigned const mempool_min_block_size, // = 1u << 6 + unsigned const mempool_max_block_size, // = 1u << 10 + unsigned const mempool_superblock_size // = 1u << 12 + ) : SimpleTaskScheduler( + execution_space{}, + arg_memory_space, + memory_pool( + arg_memory_space, mempool_capacity, mempool_min_block_size, + mempool_max_block_size, mempool_superblock_size + ) + ) + { /* forwarding ctor, must be empty */ } + + // end Constructors, destructor, and assignment }}}2 + //---------------------------------------------------------------------------- + + // Note that this is an expression of shallow constness + KOKKOS_INLINE_FUNCTION + task_queue_type& queue() const + { + KOKKOS_EXPECTS(m_queue != nullptr); + return *m_queue; + } + + KOKKOS_INLINE_FUNCTION + SimpleTaskScheduler + get_team_scheduler(int rank_in_league) const noexcept + { + KOKKOS_EXPECTS(m_queue != nullptr); + auto rv = SimpleTaskScheduler{ *this }; + rv.team_scheduler_info() = m_queue->initial_team_scheduler_info(rank_in_league); + return rv; + } + + KOKKOS_INLINE_FUNCTION + execution_space const& get_execution_space() const { return this->execution_space_instance(); } + + KOKKOS_INLINE_FUNCTION + team_scheduler_info_type& team_scheduler_info() & + { + return this->team_scheduler_info_storage::no_unique_address_data_member(); + } + + KOKKOS_INLINE_FUNCTION + team_scheduler_info_type const& team_scheduler_info() const & + { + return this->team_scheduler_info_storage::no_unique_address_data_member(); + } + + //---------------------------------------------------------------------------- + + #ifdef KOKKOS_ENABLE_DEPRECATED_CODE + // For backwards compatibility purposes only + KOKKOS_DEPRECATED + KOKKOS_INLINE_FUNCTION + memory_pool* + memory() const noexcept KOKKOS_DEPRECATED_TRAILING_ATTRIBUTE + { + if(m_queue != nullptr) return &(m_queue->get_memory_pool()); + else return nullptr; + } + #endif + + //---------------------------------------------------------------------------- + + template + KOKKOS_FUNCTION + static + Kokkos::BasicFuture + spawn( + Impl::TaskPolicyWithScheduler&& arg_policy, + typename runnable_task_base_type::function_type arg_function, + typename runnable_task_base_type::destroy_type arg_destroy, + FunctorType&& arg_functor + ) + { + return std::move(arg_policy.scheduler()).template _spawn_impl( + _get_task_ptr(std::move(arg_policy.predecessor())), + arg_policy.priority(), + arg_function, + arg_destroy, + std::forward(arg_functor) + ); + } + + template + KOKKOS_FUNCTION + Kokkos::BasicFuture + spawn( + Impl::TaskPolicyWithPredecessor&& arg_policy, + FunctorType&& arg_functor + ) + { + static_assert( + std::is_same::value, + "Can't create a task policy from a scheduler and a future from a different scheduler" + ); + + using task_type = runnable_task_type; + typename task_type::function_type const ptr = task_type::apply; + typename task_type::destroy_type const dtor = task_type::destroy; + + return _spawn_impl( + std::move(arg_policy).predecessor().m_task, + arg_policy.priority(), + ptr, dtor, + std::forward(arg_functor) + ); + } + + template + KOKKOS_FUNCTION + static void + respawn( + FunctorType* functor, + BasicFuture const& predecessor, + TaskPriority priority = TaskPriority::Regular + ) { + using task_type = typename task_queue_type::template runnable_task_type< + FunctorType, scheduler_type + >; + + auto& task = *static_cast(functor); + + KOKKOS_EXPECTS(!task.get_respawn_flag()); + + task.set_priority(priority); + task.set_predecessor(*predecessor.m_task); + task.set_respawn_flag(true); + } + + template + KOKKOS_FUNCTION + static void + respawn( + FunctorType* functor, + scheduler_type const&, + TaskPriority priority = TaskPriority::Regular + ) { + using task_type = typename task_queue_type::template runnable_task_type< + FunctorType, scheduler_type + >; + + auto& task = *static_cast(functor); + + KOKKOS_EXPECTS(!task.get_respawn_flag()); + + task.set_priority(priority); + KOKKOS_ASSERT(not task.has_predecessor()); + task.set_respawn_flag(true); + } + + + template + KOKKOS_FUNCTION + future_type + when_all(BasicFuture const predecessors[], int n_predecessors) { + + // TODO @tasking @generalization DSH propagate scheduling info + + using task_type = typename task_queue_type::aggregate_task_type; + + future_type rv; + + if(n_predecessors > 0) { + task_queue_type* queue_ptr = nullptr; + + // Loop over the predecessors to find the queue and increment the reference + // counts + for(int i_pred = 0; i_pred < n_predecessors; ++i_pred) { + + auto* predecessor_task_ptr = predecessors[i_pred].m_task; + + if(predecessor_task_ptr != nullptr) { + // TODO @tasking @cleanup DSH figure out when this is allowed to be nullptr (if at all anymore) + + // Increment reference count to track subsequent assignment. + // TODO @tasking @optimization DSH figure out if this reference count increment is necessary + predecessor_task_ptr->increment_reference_count(); + + // TODO @tasking @cleanup DSH we should just set a boolean here instead to make this more readable + queue_ptr = m_queue; + } + + } // end loop over predecessors + + // This only represents a non-ready future if at least one of the predecessors + // has a task (and thus, a queue) + if(queue_ptr != nullptr) { + auto& q = *queue_ptr; + + auto* aggregate_task_ptr = q.template allocate_and_construct_with_vla_emulation< + task_type, task_base_type* + >( + /* n_vla_entries = */ n_predecessors, + /* aggregate_predecessor_count = */ n_predecessors, + /* queue_base = */ &q, + /* initial_reference_count = */ 2 + ); + + rv = future_type(aggregate_task_ptr); + + for(int i_pred = 0; i_pred < n_predecessors; ++i_pred) { + aggregate_task_ptr->vla_value_at(i_pred) = predecessors[i_pred].m_task; + } + + Kokkos::memory_fence(); // we're touching very questionable memory, so be sure to fence + + q.schedule_aggregate(std::move(*aggregate_task_ptr), team_scheduler_info()); + // the aggregate may be processed at any time, so don't touch it after this + } + } + + return rv; + } + + template + KOKKOS_FUNCTION + future_type + when_all(int n_calls, F&& func) + { + // TODO @tasking @generalization DSH propagate scheduling info? + + // later this should be std::invoke_result_t + using generated_type = decltype(func(0)); + using task_type = typename task_queue_type::aggregate_task_type; + + static_assert( + is_future::value, + "when_all function must return a Kokkos future (an instance of Kokkos::BasicFuture)" + ); + static_assert( + std::is_base_of::value, + "when_all function must return a Kokkos::BasicFuture of a compatible scheduler type" + ); + + auto* aggregate_task = m_queue->template allocate_and_construct_with_vla_emulation< + task_type, task_base_type* + >( + /* n_vla_entries = */ n_calls, + /* aggregate_predecessor_count = */ n_calls, + /* queue_base = */ m_queue, + /* initial_reference_count = */ 2 + ); + + auto rv = future_type(aggregate_task); + + for(int i_call = 0; i_call < n_calls; ++i_call) { + + auto generated_future = func(i_call); + + if(generated_future.m_task != nullptr) { + generated_future.m_task->increment_reference_count(); + aggregate_task->vla_value_at(i_call) = generated_future.m_task; + + KOKKOS_ASSERT(m_queue == generated_future.m_task->ready_queue_base_ptr() + && "Queue mismatch in when_all" + ); + } + + } + + Kokkos::memory_fence(); + + m_queue->schedule_aggregate(std::move(*aggregate_task), team_scheduler_info()); + // This could complete at any moment, so don't touch anything after this + + return rv; + } + +}; + + +template +inline +void wait(SimpleTaskScheduler const& scheduler) +{ + using scheduler_type = SimpleTaskScheduler; + scheduler_type::specialization::execute(scheduler); +} + +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------#endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ + +#endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ +#endif /* #ifndef KOKKOS_SIMPLETASKSCHEDULER_HPP */ + diff --git a/lib/kokkos/core/src/impl/Kokkos_SingleTaskQueue.hpp b/lib/kokkos/core/src/impl/Kokkos_SingleTaskQueue.hpp new file mode 100644 index 0000000000..d73028eb5b --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_SingleTaskQueue.hpp @@ -0,0 +1,207 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_IMPL_SINGLETASKQUEUE_HPP +#define KOKKOS_IMPL_SINGLETASKQUEUE_HPP + +#include +#if defined( KOKKOS_ENABLE_TASKDAG ) + + +#include +#include + +#include + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +template < + class ExecSpace, + class MemorySpace, + class TaskQueueTraits, + class MemoryPool +> +class SingleTaskQueue + : public TaskQueueMemoryManager, + public TaskQueueCommonMixin> +{ +private: + + using base_t = TaskQueueMemoryManager; + using common_mixin_t = TaskQueueCommonMixin; + + struct EmptyTeamSchedulerInfo { }; + struct EmptyTaskSchedulingInfo { }; + +public: + + using task_queue_type = SingleTaskQueue; // mark as task_queue concept + using task_queue_traits = TaskQueueTraits; + using task_base_type = TaskNode; + using ready_queue_type = typename TaskQueueTraits::template ready_queue_type; + + using team_scheduler_info_type = EmptyTeamSchedulerInfo; + using task_scheduling_info_type = EmptyTaskSchedulingInfo; + + using runnable_task_base_type = RunnableTaskBase; + + template + // requires TaskScheduler && TaskFunctor + using runnable_task_type = RunnableTask< + task_queue_traits, Scheduler, typename Functor::value_type, Functor + >; + + using aggregate_task_type = AggregateTask; + + // Number of allowed priorities + static constexpr int NumQueue = 3; + +private: + + ready_queue_type m_ready_queues[NumQueue][2]; + +public: + + //---------------------------------------------------------------------------- + // {{{2 + + SingleTaskQueue() = delete; + SingleTaskQueue(SingleTaskQueue const&) = delete; + SingleTaskQueue(SingleTaskQueue&&) = delete; + SingleTaskQueue& operator=(SingleTaskQueue const&) = delete; + SingleTaskQueue& operator=(SingleTaskQueue&&) = delete; + + explicit + SingleTaskQueue( + typename base_t::execution_space const&, + typename base_t::memory_space const&, + typename base_t::memory_pool const& arg_memory_pool + ) + : base_t(arg_memory_pool) + { } + + ~SingleTaskQueue() { + for(int i_priority = 0; i_priority < NumQueue; ++i_priority) { + KOKKOS_EXPECTS(m_ready_queues[i_priority][TaskTeam].empty()); + KOKKOS_EXPECTS(m_ready_queues[i_priority][TaskSingle].empty()); + } + } + + // end Constructors, destructors, and assignment }}}2 + //---------------------------------------------------------------------------- + + KOKKOS_FUNCTION + void + schedule_runnable( + runnable_task_base_type&& task, + team_scheduler_info_type const& info + ) { + this->schedule_runnable_to_queue( + std::move(task), + m_ready_queues[int(task.get_priority())][int(task.get_task_type())], + info + ); + // Task may be enqueued and may be run at any point; don't touch it (hence + // the use of move semantics) + } + + KOKKOS_FUNCTION + OptionalRef + pop_ready_task( + team_scheduler_info_type const& info + ) + { + OptionalRef return_value; + // always loop in order of priority first, then prefer team tasks over single tasks + for(int i_priority = 0; i_priority < NumQueue; ++i_priority) { + + // Check for a team task with this priority + return_value = m_ready_queues[i_priority][TaskTeam].pop(); + if(return_value) return return_value; + + // Check for a single task with this priority + return_value = m_ready_queues[i_priority][TaskSingle].pop(); + if(return_value) return return_value; + + } + // if nothing was found, return a default-constructed (empty) OptionalRef + return return_value; + } + + KOKKOS_INLINE_FUNCTION + constexpr team_scheduler_info_type + initial_team_scheduler_info(int) const noexcept { return { }; } + +}; + +} /* namespace Impl */ +} /* namespace Kokkos */ + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ +#endif /* #ifndef KOKKOS_IMPL_SINGLETASKQUEUE_HPP */ + diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskBase.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskBase.hpp new file mode 100644 index 0000000000..b0c06fb26e --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_TaskBase.hpp @@ -0,0 +1,329 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +// Experimental unified task-data parallel manycore LDRD + +#ifndef KOKKOS_IMPL_TASKBASE_HPP +#define KOKKOS_IMPL_TASKBASE_HPP + +#include +#if defined( KOKKOS_ENABLE_TASKDAG ) + +#include +#include + +#include + +#include +#include +#include + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +/** \brief Base class for task management, access, and execution. + * + * Inheritance structure to allow static_cast from the task root type + * and a task's FunctorType. + * + * // Enable a functor to access the base class + * // and provide memory for result value. + * TaskBase< Space , ResultType , FunctorType > + * : TaskBase< void , void , void > + * , FunctorType + * { ... }; + * Followed by memory allocated for result value. + * + * + * States of a task: + * + * Constructing State, NOT IN a linked list + * m_wait == 0 + * m_next == 0 + * + * Scheduling transition : Constructing -> Waiting + * before: + * m_wait == 0 + * m_next == this task's initial dependence, 0 if none + * after: + * m_wait == EndTag + * m_next == EndTag + * + * Waiting State, IN a linked list + * m_apply != 0 + * m_queue != 0 + * m_ref_count > 0 + * m_wait == head of linked list of tasks waiting on this task + * m_next == next of linked list of tasks + * + * transition : Waiting -> Executing + * before: + * m_next == EndTag + * after:: + * m_next == LockTag + * + * Executing State, NOT IN a linked list + * m_apply != 0 + * m_queue != 0 + * m_ref_count > 0 + * m_wait == head of linked list of tasks waiting on this task + * m_next == LockTag + * + * Respawn transition : Executing -> Executing-Respawn + * before: + * m_next == LockTag + * after: + * m_next == this task's updated dependence, 0 if none + * + * Executing-Respawn State, NOT IN a linked list + * m_apply != 0 + * m_queue != 0 + * m_ref_count > 0 + * m_wait == head of linked list of tasks waiting on this task + * m_next == this task's updated dependence, 0 if none + * + * transition : Executing -> Complete + * before: + * m_wait == head of linked list + * after: + * m_wait == LockTag + * + * Complete State, NOT IN a linked list + * m_wait == LockTag: cannot add dependence (<=> complete) + * m_next == LockTag: not a member of a wait queue + * + */ +class TaskBase +{ +public: + + enum : int16_t { TaskTeam = 0 , TaskSingle = 1 , Aggregate = 2 }; + enum : uintptr_t { LockTag = ~uintptr_t(0) , EndTag = ~uintptr_t(1) }; + + template friend class Kokkos::BasicTaskScheduler ; + + using queue_type = TaskQueueBase; + + using function_type = void(*)( TaskBase * , void * ); + typedef void (* destroy_type) ( TaskBase * ); + + // sizeof(TaskBase) == 48 + + function_type m_apply = nullptr; ///< Apply function pointer + queue_type* m_queue = nullptr; ///< Pointer to the scheduler + TaskBase* m_next = nullptr; ///< next in linked list of ready tasks + TaskBase* m_wait = nullptr; ///< Queue of tasks waiting on this + int32_t m_ref_count = 0; + int32_t m_alloc_size = 0; + int32_t m_dep_count ; ///< Aggregate's number of dependences + int16_t m_task_type ; ///< Type of task + int16_t m_priority ; ///< Priority of runnable task + + TaskBase( TaskBase && ) = delete ; + TaskBase( const TaskBase & ) = delete ; + TaskBase & operator = ( TaskBase && ) = delete ; + TaskBase & operator = ( const TaskBase & ) = delete ; + +#ifdef KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND + KOKKOS_INLINE_FUNCTION ~TaskBase() {}; +#else + KOKKOS_INLINE_FUNCTION ~TaskBase() = default; +#endif + + KOKKOS_INLINE_FUNCTION constexpr + TaskBase() + : m_apply( nullptr ) + , m_queue( nullptr ) + , m_next( nullptr ) + , m_wait( nullptr ) + , m_ref_count( 0 ) + , m_alloc_size( 0 ) + , m_dep_count( 0 ) + , m_task_type( 0 ) + , m_priority( 0 ) + {} + + //---------------------------------------- + + KOKKOS_INLINE_FUNCTION + TaskBase * volatile * aggregate_dependences() volatile + { return reinterpret_cast( this + 1 ); } + + KOKKOS_INLINE_FUNCTION + bool requested_respawn() + { + // This should only be called when a task has finished executing and is + // in the transition to either the complete or executing-respawn state. + TaskBase * const lock = reinterpret_cast< TaskBase * >( LockTag ); + return lock != m_next; + } + + KOKKOS_INLINE_FUNCTION + void add_dependence( TaskBase* dep ) + { + // Precondition: lock == m_next + + TaskBase * const lock = (TaskBase *) LockTag ; + + // Assign dependence to m_next. It will be processed in the subsequent + // call to schedule. Error if the dependence is reset. + if ( lock != Kokkos::atomic_exchange( & m_next, dep ) ) { + Kokkos::abort("TaskScheduler ERROR: resetting task dependence"); + } + + if ( 0 != dep ) { + // The future may be destroyed upon returning from this call + // so increment reference count to track this assignment. + Kokkos::atomic_increment( &(dep->m_ref_count) ); + } + } + + //---------------------------------------- + + KOKKOS_INLINE_FUNCTION + int32_t reference_count() const + { return *((int32_t volatile *)( & m_ref_count )); } + +}; + +static_assert( sizeof(TaskBase) == 48 + , "Verifying expected sizeof(TaskBase)" ); + +} /* namespace Impl */ +} /* namespace Kokkos */ + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template< class Scheduler, typename ResultType , class FunctorType > +class Task + : public TaskBase, + public FunctorType +{ +public: + + Task() = delete ; + Task( Task && ) = delete ; + Task( const Task & ) = delete ; + Task & operator = ( Task && ) = delete ; + Task & operator = ( const Task & ) = delete ; + + + using root_type = TaskBase; + using functor_type = FunctorType ; + using result_type = ResultType ; + + using specialization = TaskQueueSpecialization ; + using member_type = typename specialization::member_type ; + + KOKKOS_INLINE_FUNCTION + void apply_functor( member_type * const member , void * ) + { this->functor_type::operator()( *member ); } + + template< typename T > + KOKKOS_INLINE_FUNCTION + void apply_functor( member_type * const member + , T * const result ) + { this->functor_type::operator()( *member , *result ); } + + KOKKOS_FUNCTION static + void destroy( root_type * root ) + { + TaskResult::destroy(root); + } + + KOKKOS_FUNCTION static + void apply( root_type * root , void * exec ) + { + Task* const task = static_cast< Task * >( root ); + member_type * const member = reinterpret_cast< member_type * >( exec ); + result_type * const result = TaskResult< result_type >::ptr( task ); + + // Task may be serial or team. + // If team then must synchronize before querying if respawn was requested. + // If team then only one thread calls destructor. + + const bool only_one_thread = +#if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA) + 0 == threadIdx.x && 0 == threadIdx.y ; +#else + 0 == member->team_rank(); +#endif + + task->apply_functor( member , result ); + + member->team_barrier(); + + if ( only_one_thread && !(task->requested_respawn()) ) { + // Did not respawn, destroy the functor to free memory. + task->functor_type::~functor_type(); + // Cannot destroy and deallocate the task until its dependences + // have been processed. + } + } + + // Constructor for runnable task + KOKKOS_INLINE_FUNCTION constexpr + Task( FunctorType && arg_functor ) + : root_type() , functor_type( std::move(arg_functor) ) + { } + + KOKKOS_INLINE_FUNCTION + ~Task() = delete; +}; + +} /* namespace Impl */ +} /* namespace Kokkos */ + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ +#endif /* #ifndef KOKKOS_IMPL_TASKBASE_HPP */ + diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskNode.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskNode.hpp new file mode 100644 index 0000000000..35f8853f1f --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_TaskNode.hpp @@ -0,0 +1,758 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +// Experimental unified task-data parallel manycore LDRD + +#ifndef KOKKOS_IMPL_TASKNODE_HPP +#define KOKKOS_IMPL_TASKNODE_HPP + +#include +#if defined( KOKKOS_ENABLE_TASKDAG ) + +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +enum TaskType : int16_t { TaskTeam = 0 , TaskSingle = 1 , Aggregate = 2, TaskSpecial = -1 }; + +//============================================================================== + +/** Intrusive base class for things allocated with a Kokkos::MemoryPool + * + * @warning Memory pools assume that the address of this class is the same + * as the address of the most derived type that was allocated to + * have the given size. As a consequence, when interacting with + * multiple inheritance, this must always be the first base class + * of any derived class that uses it! + * @todo Consider inverting inheritance structure to avoid this problem? + * + * @tparam CountType type of integer used to store the allocation size + */ +template +class alignas(void*) PoolAllocatedObjectBase { +public: + + using pool_allocation_size_type = CountType; + +private: + + pool_allocation_size_type m_alloc_size; + +public: + + + KOKKOS_INLINE_FUNCTION + constexpr explicit PoolAllocatedObjectBase(pool_allocation_size_type allocation_size) + : m_alloc_size(allocation_size) + { } + + KOKKOS_INLINE_FUNCTION + CountType get_allocation_size() const noexcept { return m_alloc_size; } + +}; + +//============================================================================== + + +// TODO @tasking @cleanup DSH move this? +template +class ReferenceCountedBase { +public: + + using reference_count_size_type = CountType; + +private: + + reference_count_size_type m_ref_count = 0; + +public: + + KOKKOS_INLINE_FUNCTION + constexpr explicit + ReferenceCountedBase(reference_count_size_type initial_reference_count) + : m_ref_count(initial_reference_count) + { + // This can't be here because it breaks constexpr + // KOKKOS_EXPECTS(initial_reference_count > 0); + } + + /** Decrement the reference count, + * and return true iff this decrement caused + * the reference count to become zero + */ + KOKKOS_INLINE_FUNCTION + bool decrement_and_check_reference_count() + { + // TODO @tasking @memory_order DSH memory order + auto old_count = Kokkos::atomic_fetch_add(&m_ref_count, -1); + + KOKKOS_ASSERT(old_count > 0 && "reference count greater less than zero!"); + + return (old_count == 1); + } + + KOKKOS_INLINE_FUNCTION + void increment_reference_count() + { + Kokkos::atomic_increment(&m_ref_count); + } + +}; + +template +class AggregateTask; + +template +class RunnableTaskBase; + +//============================================================================== + +template +class TaskNode + : public PoolAllocatedObjectBase, // size 4, must be first! + public ReferenceCountedBase, // size 4 + public TaskQueueTraits::template intrusive_task_base_type> // size 8+ +{ +public: + + using priority_type = int16_t; + +private: + + using task_base_type = TaskNode; + using pool_allocated_base_type = PoolAllocatedObjectBase; + using reference_counted_base_type = ReferenceCountedBase; + using task_queue_traits = TaskQueueTraits; + using waiting_queue_type = + typename task_queue_traits::template waiting_queue_type; + + waiting_queue_type m_wait_queue; // size 8+ + + // TODO @tasking @cleanup DSH eliminate this, or make its purpose a bit more clear. It's only used in BasicFuture, and only for deallocation purposes + TaskQueueBase* m_ready_queue_base; + + TaskType m_task_type; // size 2 + priority_type m_priority; // size 2 + bool m_is_respawning = false; + +public: + + KOKKOS_INLINE_FUNCTION + constexpr + TaskNode( + TaskType task_type, + TaskPriority priority, + TaskQueueBase* queue_base, + reference_count_size_type initial_reference_count, + pool_allocation_size_type allocation_size + ) : pool_allocated_base_type( + /* allocation_size = */ allocation_size + ), + reference_counted_base_type( + /* initial_reference_count = */ initial_reference_count + ), + m_wait_queue(), + m_ready_queue_base(queue_base), + m_task_type(task_type), + m_priority(static_cast(priority)), + m_is_respawning(false) + { } + + TaskNode() = delete; + TaskNode(TaskNode const&) = delete; + TaskNode(TaskNode&&) = delete; + TaskNode& operator=(TaskNode const&) = delete; + TaskNode& operator=(TaskNode&&) = delete; + + KOKKOS_INLINE_FUNCTION + bool is_aggregate() const noexcept { return m_task_type == TaskType::Aggregate; } + + KOKKOS_INLINE_FUNCTION + bool is_runnable() const noexcept { return m_task_type != TaskType::Aggregate; } + + KOKKOS_INLINE_FUNCTION + bool is_runnable() const volatile noexcept { return m_task_type != TaskType::Aggregate; } + + KOKKOS_INLINE_FUNCTION + bool is_single_runnable() const noexcept { return m_task_type == TaskType::TaskSingle; } + + KOKKOS_INLINE_FUNCTION + bool is_team_runnable() const noexcept { return m_task_type == TaskType::TaskTeam; } + + KOKKOS_INLINE_FUNCTION + TaskType get_task_type() const noexcept { return m_task_type; } + + KOKKOS_INLINE_FUNCTION + RunnableTaskBase& + as_runnable_task() & { + KOKKOS_EXPECTS(this->is_runnable()); + return static_cast&>(*this); + } + + KOKKOS_INLINE_FUNCTION + RunnableTaskBase const& + as_runnable_task() const & { + KOKKOS_EXPECTS(this->is_runnable()); + return static_cast const&>(*this); + } + + KOKKOS_INLINE_FUNCTION + RunnableTaskBase volatile& + as_runnable_task() volatile & { + KOKKOS_EXPECTS(this->is_runnable()); + return static_cast volatile&>(*this); + } + + KOKKOS_INLINE_FUNCTION + RunnableTaskBase const volatile& + as_runnable_task() const volatile & { + KOKKOS_EXPECTS(this->is_runnable()); + return static_cast const volatile&>(*this); + } + + KOKKOS_INLINE_FUNCTION + RunnableTaskBase&& + as_runnable_task() && { + KOKKOS_EXPECTS(this->is_runnable()); + return static_cast&&>(*this); + } + + template + KOKKOS_INLINE_FUNCTION + AggregateTask& + as_aggregate() & { + KOKKOS_EXPECTS(this->is_aggregate()); + return static_cast&>(*this); + } + + template + KOKKOS_INLINE_FUNCTION + AggregateTask const& + as_aggregate() const & { + KOKKOS_EXPECTS(this->is_aggregate()); + return static_cast const&>(*this); + } + + template + KOKKOS_INLINE_FUNCTION + AggregateTask&& + as_aggregate() && { + KOKKOS_EXPECTS(this->is_aggregate()); + return static_cast&&>(*this); + } + + KOKKOS_INLINE_FUNCTION + bool try_add_waiting(task_base_type& depends_on_this) { + return m_wait_queue.try_push(depends_on_this); + } + + template + KOKKOS_INLINE_FUNCTION + void consume_wait_queue(Function&& f) { + KOKKOS_EXPECTS(not m_wait_queue.is_consumed()); + m_wait_queue.consume(std::forward(f)); + } + + KOKKOS_INLINE_FUNCTION + bool wait_queue_is_consumed() const noexcept { + // TODO @tasking @memory_order DSH memory order + return m_wait_queue.is_consumed(); + } + + KOKKOS_INLINE_FUNCTION + TaskQueueBase* + ready_queue_base_ptr() const noexcept { + return m_ready_queue_base; + } + + KOKKOS_INLINE_FUNCTION + void set_priority(TaskPriority priority) noexcept { + KOKKOS_EXPECTS(!this->is_enqueued()); + m_priority = (priority_type)priority; + } + + KOKKOS_INLINE_FUNCTION + void set_priority(TaskPriority priority) volatile noexcept { + KOKKOS_EXPECTS(!this->is_enqueued()); + m_priority = (priority_type)priority; + } + + KOKKOS_INLINE_FUNCTION + TaskPriority get_priority() const noexcept { + return (TaskPriority)m_priority; + } + + KOKKOS_INLINE_FUNCTION + bool get_respawn_flag() const { return m_is_respawning; } + + KOKKOS_INLINE_FUNCTION + void set_respawn_flag(bool value = true) { + m_is_respawning = value; + } + + KOKKOS_INLINE_FUNCTION + void set_respawn_flag(bool value = true) volatile { + m_is_respawning = value; + } + +}; + +//============================================================================== + +template +class SchedulingInfoStorage; + +//============================================================================== + +template +class SchedulingInfoStorage + : public BaseType, // must be first base class for allocation reasons!!! + private NoUniqueAddressMemberEmulation +{ + +private: + + using base_t = BaseType; + using task_scheduling_info_type = SchedulingInfo; + +public: + + using base_t::base_t; + + KOKKOS_INLINE_FUNCTION + task_scheduling_info_type& scheduling_info() & + { + return this->no_unique_address_data_member(); + } + + KOKKOS_INLINE_FUNCTION + task_scheduling_info_type const& scheduling_info() const & + { + return this->no_unique_address_data_member(); + } + + KOKKOS_INLINE_FUNCTION + task_scheduling_info_type&& scheduling_info() && + { + return std::move(*this).no_unique_address_data_member(); + } + +}; + + +//============================================================================== + +template +class alignas(16) AggregateTask final + : public SchedulingInfoStorage< + TaskNode, + SchedulingInfo + >, // must be first base class for allocation reasons!!! + public ObjectWithVLAEmulation< + AggregateTask, + OwningRawPtr> + > +{ +private: + + using base_t = SchedulingInfoStorage< + TaskNode, + SchedulingInfo + >; + using vla_base_t = ObjectWithVLAEmulation< + AggregateTask, + OwningRawPtr> + >; + + using task_base_type = TaskNode; + +public: + + using aggregate_task_type = AggregateTask; // concept marker + + template + // requires std::is_constructible_v + KOKKOS_INLINE_FUNCTION + constexpr explicit + AggregateTask( + int32_t aggregate_predecessor_count, + Args&&... args + ) : base_t( + TaskType::Aggregate, + TaskPriority::Regular, // all aggregates are regular priority + std::forward(args)... + ), + vla_base_t(aggregate_predecessor_count) + { } + + KOKKOS_INLINE_FUNCTION + int32_t dependence_count() const { return this->n_vla_entries(); } + +}; + +//KOKKOS_IMPL_IS_CONCEPT(aggregate_task); + +//============================================================================== + + +template +class RunnableTaskBase + : public TaskNode // must be first base class for allocation reasons!!! +{ +private: + + using base_t = TaskNode; + +public: + + using task_base_type = TaskNode; + using function_type = void(*)( task_base_type * , void * ); + using destroy_type = void(*)( task_base_type * ); + using runnable_task_type = RunnableTaskBase; + +private: + + function_type m_apply; + task_base_type* m_predecessor = nullptr; + +public: + + template + // requires std::is_constructible_v + KOKKOS_INLINE_FUNCTION + constexpr explicit + RunnableTaskBase( + function_type apply_function_ptr, + Args&&... args + ) : base_t(std::forward(args)...), + m_apply(apply_function_ptr) + { } + + KOKKOS_INLINE_FUNCTION + bool has_predecessor() const { return m_predecessor != nullptr; } + + KOKKOS_INLINE_FUNCTION + void clear_predecessor() { m_predecessor = nullptr; } + + KOKKOS_INLINE_FUNCTION + void clear_predecessor() volatile { m_predecessor = nullptr; } + + template + KOKKOS_INLINE_FUNCTION + SchedulingInfo& + scheduling_info_as() + { + using info_storage_type = SchedulingInfoStorage; + + return static_cast(this)->scheduling_info(); + } + + template + KOKKOS_INLINE_FUNCTION + SchedulingInfo const& + scheduling_info_as() const + { + using info_storage_type = SchedulingInfoStorage; + + return static_cast(this)->scheduling_info(); + } + + + KOKKOS_INLINE_FUNCTION + task_base_type& get_predecessor() const { + KOKKOS_EXPECTS(m_predecessor != nullptr); + return *m_predecessor; + } + + KOKKOS_INLINE_FUNCTION + void set_predecessor(task_base_type& predecessor) + { + KOKKOS_EXPECTS(m_predecessor == nullptr); + // Increment the reference count so that predecessor doesn't go away + // before this task is enqueued. + // (should be memory order acquire) + predecessor.increment_reference_count(); + m_predecessor = &predecessor; + } + + KOKKOS_INLINE_FUNCTION + void acquire_predecessor_from(runnable_task_type& other) + { + KOKKOS_EXPECTS(m_predecessor == nullptr || other.m_predecessor == m_predecessor); + // since we're transfering, no need to modify the reference count + m_predecessor = other.m_predecessor; + other.m_predecessor = nullptr; + } + + KOKKOS_INLINE_FUNCTION + void acquire_predecessor_from(runnable_task_type& other) volatile + { + KOKKOS_EXPECTS(m_predecessor == nullptr || other.m_predecessor == m_predecessor); + // since we're transfering, no need to modify the reference count + m_predecessor = other.m_predecessor; + other.m_predecessor = nullptr; + } + + template + KOKKOS_INLINE_FUNCTION + void run(TeamMember& member) { + (*m_apply)(this, &member); + } +}; + +//KOKKOS_IMPL_IS_CONCEPT(runnable_task); + +//============================================================================== + +template +class TaskResultStorage : public Base +{ +private: + + using base_t = Base; + + alignas(Base) ResultType m_value = ResultType{}; + + +public: + + using base_t::base_t; + + KOKKOS_INLINE_FUNCTION + ResultType* value_pointer() { + // Over-alignment makes this a non-standard-layout class, + // so alignas() doesn't work + //static_assert( + // offsetof(TaskResultStorage, m_value) == sizeof(Base), + // "TaskResultStorage must be POD for layout purposes" + //); + return &m_value; + } + + KOKKOS_INLINE_FUNCTION + ResultType& value_reference() { return m_value; } + +}; + + +// TODO @tasking @optimization DSH optimization for empty types (in addition to void) +template +class TaskResultStorage : public Base +{ +private: + + using base_t = Base; + +public: + + using base_t::base_t; + + KOKKOS_INLINE_FUNCTION + void* value_pointer() noexcept { return nullptr; } + + KOKKOS_INLINE_FUNCTION + void value_reference() noexcept { } + +}; + +//============================================================================== + +template < + class TaskQueueTraits, + class Scheduler, + class ResultType, + class FunctorType +> +class alignas(16) RunnableTask + : // using nesting of base classes to control layout; multiple empty base classes + // may not be ABI compatible with CUDA on Windows + public TaskResultStorage< + ResultType, + SchedulingInfoStorage< + RunnableTaskBase, + typename Scheduler::task_queue_type::task_scheduling_info_type + > + >, // must be first base class + public FunctorType +{ +private: + using base_t = TaskResultStorage< + ResultType, + SchedulingInfoStorage< + RunnableTaskBase, + typename Scheduler::task_queue_type::task_scheduling_info_type + > + >; + + using runnable_task_base_type = RunnableTaskBase; + using scheduler_type = Scheduler; + using scheduling_info_type = + typename scheduler_type::task_scheduling_info_type; + using scheduling_info_storage_base = base_t; + + using task_base_type = TaskNode; + using specialization = TaskQueueSpecialization; + using member_type = typename specialization::member_type; + using result_type = ResultType; + using functor_type = FunctorType; + +public: + + template + // requires std::is_constructible_v + KOKKOS_INLINE_FUNCTION + constexpr explicit + RunnableTask( + FunctorType&& functor, + Args&&... args + ) : base_t( + std::forward(args)... + ), + functor_type(std::move(functor)) + { } + + KOKKOS_INLINE_FUNCTION + ~RunnableTask() = delete; + + KOKKOS_INLINE_FUNCTION + void update_scheduling_info( + member_type& member + ) { + // TODO @tasking @generalization DSH call a queue-specific hook here; for now, this info is already updated elsewhere + // this->scheduling_info() = member.scheduler().scheduling_info(); + } + + KOKKOS_INLINE_FUNCTION + void apply_functor(member_type* member, void*) + { + update_scheduling_info(*member); + this->functor_type::operator()(*member); + } + + template + KOKKOS_INLINE_FUNCTION + void apply_functor(member_type* member, T* val) + { + update_scheduling_info(*member); + //this->functor_type::operator()(*member, *val); + this->functor_type::operator()(*member, *val); + } + + KOKKOS_FUNCTION static + void destroy( task_base_type * root ) + { + //TaskResult::destroy(root); + } + + KOKKOS_FUNCTION static + void apply(task_base_type* self, void* member_as_void) + { + using task_type = Impl::RunnableTask*; + auto* const task = static_cast(self); + auto* const member = reinterpret_cast(member_as_void); + + // Now that we're over-aligning the result storage, this isn't a problem any more + //static_assert(std::is_standard_layout::value, + // "Tasks must be standard layout" + //); + //static_assert(std::is_pod::value, + // "Tasks must be PODs" + //); + + // Task may be serial or team. + // If team then must synchronize before querying if respawn was requested. + // If team then only one thread calls destructor. + + const bool only_one_thread = +#if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA) + 0 == threadIdx.x && 0 == threadIdx.y ; +#else + 0 == member->team_rank(); +#endif + + // Ensure that the respawn flag is set to zero + self->set_respawn_flag(false); + + //task->apply_functor(member, TaskResult::ptr(task)); + task->apply_functor(member, task->value_pointer()); + + member->team_barrier(); + + if ( only_one_thread && !(task->get_respawn_flag()) ) { + // Did not respawn, destroy the functor to free memory. + task->functor_type::~functor_type(); + // Cannot destroy and deallocate the task until its dependences + // have been processed. + } + } + +}; + +} /* namespace Impl */ + + +} /* namespace Kokkos */ + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ +#endif /* #ifndef KOKKOS_IMPL_TASKNODE_HPP */ + diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskPolicyData.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskPolicyData.hpp new file mode 100644 index 0000000000..85e665fffc --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_TaskPolicyData.hpp @@ -0,0 +1,195 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_IMPL_TASKPOLICYDATA_HPP +#define KOKKOS_IMPL_TASKPOLICYDATA_HPP + +//---------------------------------------------------------------------------- + +#include +#if defined( KOKKOS_ENABLE_TASKDAG ) + +#include +#include + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +//---------------------------------------------------------------------------- + +template +struct TaskPolicyWithPredecessor +{ +private: + + DepFutureType m_predecessor; + Kokkos::TaskPriority m_priority; + +public: + + KOKKOS_INLINE_FUNCTION + TaskPolicyWithPredecessor( + DepFutureType arg_predecessor, + Kokkos::TaskPriority arg_priority + ) : m_predecessor(std::move(arg_predecessor)), + m_priority(arg_priority) + { } + + TaskPolicyWithPredecessor() = delete; + + KOKKOS_INLINE_FUNCTION + TaskPolicyWithPredecessor(TaskPolicyWithPredecessor const&) = default; + + KOKKOS_INLINE_FUNCTION + TaskPolicyWithPredecessor(TaskPolicyWithPredecessor&&) = default; + + KOKKOS_INLINE_FUNCTION + TaskPolicyWithPredecessor& operator=(TaskPolicyWithPredecessor const&) = default; + + KOKKOS_INLINE_FUNCTION + TaskPolicyWithPredecessor& operator=(TaskPolicyWithPredecessor&&) = default; + + KOKKOS_INLINE_FUNCTION + ~TaskPolicyWithPredecessor() = default; + + KOKKOS_INLINE_FUNCTION + DepFutureType&& predecessor() && { + return std::move(m_predecessor); + } + + KOKKOS_INLINE_FUNCTION + constexpr TaskPriority priority() const { return m_priority; } + + KOKKOS_INLINE_FUNCTION + static constexpr int task_type() noexcept { return TaskEnum; } + +}; + +// TODO @tasking @cleanup DSH clean this up. Using nullptr_t here is too clever +template +struct TaskPolicyWithScheduler +{ +public: + + using predecessor_future_type = PredecessorFuture; + +private: + + Scheduler m_scheduler; + Kokkos::TaskPriority m_priority; + predecessor_future_type m_predecessor; + +public: + + + KOKKOS_INLINE_FUNCTION + TaskPolicyWithScheduler( + Scheduler arg_scheduler, + Kokkos::TaskPriority arg_priority + ) : m_scheduler(std::move(arg_scheduler)), + m_priority(arg_priority) + { } + + KOKKOS_INLINE_FUNCTION + TaskPolicyWithScheduler( + Scheduler arg_scheduler, + predecessor_future_type arg_predecessor, + Kokkos::TaskPriority arg_priority + ) : m_scheduler(std::move(arg_scheduler)), + m_priority(arg_priority), + m_predecessor(std::move(arg_predecessor)) + { } + + TaskPolicyWithScheduler() = delete; + + KOKKOS_INLINE_FUNCTION + TaskPolicyWithScheduler(TaskPolicyWithScheduler const&) = default; + + KOKKOS_INLINE_FUNCTION + TaskPolicyWithScheduler(TaskPolicyWithScheduler&&) = default; + + KOKKOS_INLINE_FUNCTION + TaskPolicyWithScheduler& operator=(TaskPolicyWithScheduler const&) = default; + + KOKKOS_INLINE_FUNCTION + TaskPolicyWithScheduler& operator=(TaskPolicyWithScheduler&&) = default; + + KOKKOS_INLINE_FUNCTION + ~TaskPolicyWithScheduler() = default; + + KOKKOS_INLINE_FUNCTION + Scheduler& scheduler() & { + return m_scheduler; + } + + KOKKOS_INLINE_FUNCTION + constexpr TaskPriority priority() const { return m_priority; } + + KOKKOS_INLINE_FUNCTION + predecessor_future_type& predecessor() & { + return m_predecessor; + } + + KOKKOS_INLINE_FUNCTION + static constexpr bool has_predecessor() noexcept + { + return not std::is_same::value; + } + + KOKKOS_INLINE_FUNCTION + static constexpr int task_type() noexcept { return TaskEnum; } + +}; + +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ +#endif /* #ifndef KOKKOS_IMPL_TASKPOLICYDATA_HPP */ + diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskQueue.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskQueue.hpp index eacf0837fa..1adcfe4cc4 100644 --- a/lib/kokkos/core/src/impl/Kokkos_TaskQueue.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_TaskQueue.hpp @@ -49,240 +49,24 @@ #include #if defined( KOKKOS_ENABLE_TASKDAG ) -#include -#include -#include - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Impl { - -template< class Space , typename ResultType , class FunctorType > -class TaskBase ; - -template< typename Space > -class TaskQueue ; - -template< typename Space > -class TaskQueueSpecialization ; - -} /* namespace Impl */ -} /* namespace Kokkos */ - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -namespace Kokkos { -namespace Impl { - -/** \brief Base class for task management, access, and execution. - * - * Inheritance structure to allow static_cast from the task root type - * and a task's FunctorType. - * - * // Enable a functor to access the base class - * // and provide memory for result value. - * TaskBase< Space , ResultType , FunctorType > - * : TaskBase< void , void , void > - * , FunctorType - * { ... }; - * Followed by memory allocated for result value. - * - * - * States of a task: - * - * Constructing State, NOT IN a linked list - * m_wait == 0 - * m_next == 0 - * - * Scheduling transition : Constructing -> Waiting - * before: - * m_wait == 0 - * m_next == this task's initial dependence, 0 if none - * after: - * m_wait == EndTag - * m_next == EndTag - * - * Waiting State, IN a linked list - * m_apply != 0 - * m_queue != 0 - * m_ref_count > 0 - * m_wait == head of linked list of tasks waiting on this task - * m_next == next of linked list of tasks - * - * transition : Waiting -> Executing - * before: - * m_next == EndTag - * after:: - * m_next == LockTag - * - * Executing State, NOT IN a linked list - * m_apply != 0 - * m_queue != 0 - * m_ref_count > 0 - * m_wait == head of linked list of tasks waiting on this task - * m_next == LockTag - * - * Respawn transition : Executing -> Executing-Respawn - * before: - * m_next == LockTag - * after: - * m_next == this task's updated dependence, 0 if none - * - * Executing-Respawn State, NOT IN a linked list - * m_apply != 0 - * m_queue != 0 - * m_ref_count > 0 - * m_wait == head of linked list of tasks waiting on this task - * m_next == this task's updated dependence, 0 if none - * - * transition : Executing -> Complete - * before: - * m_wait == head of linked list - * after: - * m_wait == LockTag - * - * Complete State, NOT IN a linked list - * m_wait == LockTag: cannot add dependence (<=> complete) - * m_next == LockTag: not a member of a wait queue - * - */ -template<> -class TaskBase< void , void , void > -{ -public: - - enum : int16_t { TaskTeam = 0 , TaskSingle = 1 , Aggregate = 2 }; - enum : uintptr_t { LockTag = ~uintptr_t(0) , EndTag = ~uintptr_t(1) }; - - template< typename > friend class Kokkos::TaskScheduler ; - - typedef TaskQueue< void > queue_type ; - - typedef void (* function_type) ( TaskBase * , void * ); - // sizeof(TaskBase) == 48 +#include +#include - function_type m_apply ; ///< Apply function pointer - queue_type * m_queue ; ///< Pointer to queue - TaskBase * m_wait ; ///< Linked list of tasks waiting on this - TaskBase * m_next ; ///< Waiting linked-list next - int32_t m_ref_count ; ///< Reference count - int32_t m_alloc_size ; ///< Allocation size - int32_t m_dep_count ; ///< Aggregate's number of dependences - int16_t m_task_type ; ///< Type of task - int16_t m_priority ; ///< Priority of runnable task - - TaskBase( TaskBase && ) = delete ; - TaskBase( const TaskBase & ) = delete ; - TaskBase & operator = ( TaskBase && ) = delete ; - TaskBase & operator = ( const TaskBase & ) = delete ; - -#ifdef KOKKOS_CUDA_9_DEFAULTED_BUG_WORKAROUND - KOKKOS_INLINE_FUNCTION ~TaskBase() {}; -#else - KOKKOS_INLINE_FUNCTION ~TaskBase() = default; -#endif - - KOKKOS_INLINE_FUNCTION constexpr - TaskBase() - : m_apply( 0 ) - , m_queue( 0 ) - , m_wait( 0 ) - , m_next( 0 ) - , m_ref_count( 0 ) - , m_alloc_size( 0 ) - , m_dep_count( 0 ) - , m_task_type( 0 ) - , m_priority( 0 ) - {} - - //---------------------------------------- - - KOKKOS_INLINE_FUNCTION - TaskBase * volatile * aggregate_dependences() volatile - { return reinterpret_cast( this + 1 ); } +#include - KOKKOS_INLINE_FUNCTION - bool requested_respawn() - { - // This should only be called when a task has finished executing and is - // in the transition to either the complete or executing-respawn state. - TaskBase * const lock = reinterpret_cast< TaskBase * >( LockTag ); - return lock != m_next; - } - - KOKKOS_INLINE_FUNCTION - void add_dependence( TaskBase* dep ) - { - // Precondition: lock == m_next - - TaskBase * const lock = (TaskBase *) LockTag ; - - // Assign dependence to m_next. It will be processed in the subsequent - // call to schedule. Error if the dependence is reset. - if ( lock != Kokkos::atomic_exchange( & m_next, dep ) ) { - Kokkos::abort("TaskScheduler ERROR: resetting task dependence"); - } - - if ( 0 != dep ) { - // The future may be destroyed upon returning from this call - // so increment reference count to track this assignment. - Kokkos::atomic_increment( &(dep->m_ref_count) ); - } - } - - //---------------------------------------- - - KOKKOS_INLINE_FUNCTION - int32_t reference_count() const - { return *((int32_t volatile *)( & m_ref_count )); } - -}; +#include +#include -static_assert( sizeof(TaskBase) == 48 - , "Verifying expected sizeof(TaskBase)" ); +#include +#include +#include +#include -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - -template< typename ResultType > -struct TaskResult { - - enum : int32_t { size = sizeof(ResultType) }; - - using reference_type = ResultType & ; - - KOKKOS_INLINE_FUNCTION static - ResultType * ptr( TaskBase * task ) - { - return reinterpret_cast< ResultType * > - ( reinterpret_cast< char * >(task) + task->m_alloc_size - sizeof(ResultType) ); - } - - KOKKOS_INLINE_FUNCTION static - reference_type get( TaskBase * task ) - { return *ptr( task ); } -}; - -template<> -struct TaskResult< void > { - - enum : int32_t { size = 0 }; - - using reference_type = void ; - - KOKKOS_INLINE_FUNCTION static - void * ptr( TaskBase * ) { return (void*) 0 ; } - - KOKKOS_INLINE_FUNCTION static - reference_type get( TaskBase * ) {} -}; +#include +#include +#include -} /* namespace Impl */ -} /* namespace Kokkos */ //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- @@ -290,27 +74,29 @@ struct TaskResult< void > { namespace Kokkos { namespace Impl { -template<> -class TaskQueue< void > {}; /** \brief Manage task allocation, deallocation, and scheduling. * * Task execution is deferred to the TaskQueueSpecialization. * All other aspects of task management have shared implementation. */ -template< typename ExecSpace > -class TaskQueue : public TaskQueue { -private: - - friend class TaskQueueSpecialization< ExecSpace > ; - friend class Kokkos::TaskScheduler< ExecSpace > ; - - using execution_space = ExecSpace ; - using specialization = TaskQueueSpecialization< execution_space > ; - using memory_space = typename specialization::memory_space ; - using device_type = Kokkos::Device< execution_space , memory_space > ; - using memory_pool = Kokkos::MemoryPool< device_type > ; - using task_root_type = Kokkos::Impl::TaskBase ; +template< typename ExecSpace, typename MemorySpace > +class TaskQueue : public TaskQueueBase { +protected: + + template + friend struct TaskQueueSpecialization; + template + friend class TaskQueueSpecializationConstrained; + template + friend class Kokkos::BasicTaskScheduler; + + using execution_space = ExecSpace; + using memory_space = MemorySpace; + using device_type = Kokkos::Device< execution_space , memory_space > ; + using memory_pool = Kokkos::MemoryPool< device_type > ; + using task_root_type = Kokkos::Impl::TaskBase; + using team_queue_type = TaskQueue; struct Destroy { TaskQueue * m_queue ; @@ -325,8 +111,8 @@ private: memory_pool m_memory ; task_root_type * volatile m_ready[ NumQueue ][ 2 ]; - long m_accum_alloc ; // Accumulated number of allocations - int m_count_alloc ; // Current number of allocations + //long m_accum_alloc ; // Accumulated number of allocations + int m_count_alloc = 0 ; // Current number of allocations int m_max_alloc ; // Maximum number of allocations int m_ready_count ; // Number of ready or executing @@ -347,8 +133,8 @@ private: // task->m_next is the dependence or zero // Postcondition: // task->m_next is linked list membership - KOKKOS_FUNCTION void schedule_runnable( task_root_type * const ); - KOKKOS_FUNCTION void schedule_aggregate( task_root_type * const ); + KOKKOS_FUNCTION void schedule_runnable(task_root_type*); + KOKKOS_FUNCTION void schedule_aggregate(task_root_type*); // Reschedule a task // Precondition: @@ -381,23 +167,29 @@ private: KOKKOS_FUNCTION static void decrement( task_root_type * task ); + public: - // If and only if the execution space is a single thread - // then execute ready tasks. KOKKOS_INLINE_FUNCTION - void iff_single_thread_recursive_execute() - { -#if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) - specialization::iff_single_thread_recursive_execute( this ); -#endif - } + int allocation_count() const noexcept { return m_count_alloc; } + + + KOKKOS_INLINE_FUNCTION + void initialize_team_queues(int pool_size) const noexcept { } + + KOKKOS_INLINE_FUNCTION + task_root_type* attempt_to_steal_task() const noexcept { return nullptr; } - void execute() { specialization::execute( this ); } + KOKKOS_INLINE_FUNCTION + team_queue_type& get_team_queue(int team_rank) { return *this; } + + //void execute() { specialization::execute( this ); } template< typename FunctorType > void proc_set_apply( typename task_root_type::function_type * ptr ) { + using specialization = + TaskQueueSpecialization>; specialization::template proc_set_apply< FunctorType >( ptr ); } @@ -451,9 +243,7 @@ public: { using value_type = typename FunctorType::value_type ; - using task_type = Impl::TaskBase< execution_space - , value_type - , FunctorType > ; + using task_type = Impl::Task ; enum : size_t { align = ( 1 << 4 ) , align_mask = align - 1 }; enum : size_t { task_size = sizeof(task_type) }; @@ -480,86 +270,6 @@ public: //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- -namespace Kokkos { -namespace Impl { - -template< class ExecSpace , typename ResultType , class FunctorType > -class TaskBase - : public TaskBase< void , void , void > - , public FunctorType -{ -private: - - TaskBase() = delete ; - TaskBase( TaskBase && ) = delete ; - TaskBase( const TaskBase & ) = delete ; - TaskBase & operator = ( TaskBase && ) = delete ; - TaskBase & operator = ( const TaskBase & ) = delete ; - -public: - - using root_type = TaskBase< void , void , void > ; - using functor_type = FunctorType ; - using result_type = ResultType ; - - using specialization = TaskQueueSpecialization< ExecSpace > ; - using member_type = typename specialization::member_type ; - - KOKKOS_INLINE_FUNCTION - void apply_functor( member_type * const member , void * ) - { functor_type::operator()( *member ); } - - template< typename T > - KOKKOS_INLINE_FUNCTION - void apply_functor( member_type * const member - , T * const result ) - { functor_type::operator()( *member , *result ); } - - KOKKOS_FUNCTION static - void apply( root_type * root , void * exec ) - { - TaskBase * const task = static_cast< TaskBase * >( root ); - member_type * const member = reinterpret_cast< member_type * >( exec ); - result_type * const result = TaskResult< result_type >::ptr( task ); - - // Task may be serial or team. - // If team then must synchronize before querying if respawn was requested. - // If team then only one thread calls destructor. - - const bool only_one_thread = -#if defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA) - 0 == threadIdx.x && 0 == threadIdx.y ; -#else - 0 == member->team_rank(); -#endif - - task->apply_functor( member , result ); - - member->team_barrier(); - - if ( only_one_thread && !(task->requested_respawn()) ) { - // Did not respawn, destroy the functor to free memory. - static_cast(task)->~functor_type(); - // Cannot destroy and deallocate the task until its dependences - // have been processed. - } - } - - // Constructor for runnable task - KOKKOS_INLINE_FUNCTION constexpr - TaskBase( FunctorType && arg_functor ) - : root_type() , functor_type( arg_functor ) {} - - KOKKOS_INLINE_FUNCTION - ~TaskBase() {} -}; - -} /* namespace Impl */ -} /* namespace Kokkos */ - -//---------------------------------------------------------------------------- -//---------------------------------------------------------------------------- - #endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ #endif /* #ifndef KOKKOS_IMPL_TASKQUEUE_HPP */ diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskQueueCommon.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskQueueCommon.hpp new file mode 100644 index 0000000000..b0685506d4 --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_TaskQueueCommon.hpp @@ -0,0 +1,569 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_IMPL_TASKQUEUECOMMON_HPP +#define KOKKOS_IMPL_TASKQUEUECOMMON_HPP + +#include +#if defined( KOKKOS_ENABLE_TASKDAG ) + + +#include +#include + +#include + +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +/// @brief CRTP Base class implementing the ready count parts common to most task queues +template +class TaskQueueCommonMixin +{ +private: + + int32_t m_ready_count = 0; + + // CRTP boilerplate + KOKKOS_INLINE_FUNCTION + Derived& _self() { return *static_cast(this); } + +public: + + //---------------------------------------------------------------------------- + // {{{2 + + TaskQueueCommonMixin() + : m_ready_count(0) + { + // TODO @tasking @memory_order DSH figure out if I need this store to be atomic + } + + ~TaskQueueCommonMixin() { + KOKKOS_EXPECTS((Kokkos::memory_fence(), m_ready_count < 1)); + KOKKOS_EXPECTS(m_ready_count == 0); + } + + // end Constructors, destructor, and assignment }}}2 + //---------------------------------------------------------------------------- + + + //---------------------------------------------------------------------------- + // {{{2 + +private: + + // This would be more readable with a lambda, but that comes with + // all the baggage associated with a lambda (compilation times, bugs with + // nvcc, etc.), so we'll use a simple little helper functor here. + template + struct _schedule_waiting_tasks_operation { + TaskNode const& m_predecessor; + Derived& m_queue; + TeamSchedulerInfo const& m_info; + KOKKOS_INLINE_FUNCTION + void operator()(TaskNode&& task) const noexcept + // requires Same + { + using task_scheduling_info_type = typename Derived::task_scheduling_info_type; + if(task.is_runnable()) // KOKKOS_LIKELY + { + // TODO @tasking @optimiazation DSH check this outside of the loop ? + if(m_predecessor.is_runnable()) { + m_queue.update_scheduling_info_from_completed_predecessor( + /* ready_task = */ task.as_runnable_task(), + /* predecessor = */ m_predecessor.as_runnable_task() + ); + } + else { + KOKKOS_ASSERT(m_predecessor.is_aggregate()); + m_queue.update_scheduling_info_from_completed_predecessor( + /* ready_task = */ task.as_runnable_task(), + /* predecessor = */ m_predecessor.template as_aggregate() + ); + } + m_queue.schedule_runnable( + std::move(task).as_runnable_task(), + m_info + ); + } + else { + // The scheduling info update happens inside of schedule_aggregate + m_queue.schedule_aggregate( + std::move(task).template as_aggregate(), + m_info + ); + } + } + }; + +protected: + + template + KOKKOS_FUNCTION + void _complete_finished_task( + TaskNode&& task, + TeamSchedulerInfo const& info + ) { + task.consume_wait_queue( + _schedule_waiting_tasks_operation{ + task, + _self(), + info + } + ); + bool should_delete = task.decrement_and_check_reference_count(); + if(should_delete) { + _self().deallocate(std::move(task)); + } + } + + KOKKOS_INLINE_FUNCTION + void _increment_ready_count() { + // TODO @tasking @memory_order DSH memory order + Kokkos::atomic_increment(&this->m_ready_count); + } + + KOKKOS_INLINE_FUNCTION + void _decrement_ready_count() { + // TODO @tasking @memory_order DSH memory order + Kokkos::atomic_decrement(&this->m_ready_count); + Kokkos::memory_fence(); + } + +public: + + KOKKOS_INLINE_FUNCTION + bool is_done() const noexcept { + // TODO @tasking @memory_order DSH Memory order, instead of volatile + return (*(volatile int*)(&m_ready_count)) == 0; + } + + KOKKOS_INLINE_FUNCTION + int32_t ready_count() const noexcept { + // TODO @tasking @memory_order DSH Memory order, instead of volatile + return (*(volatile int*)(&m_ready_count)); + } + + template + KOKKOS_FUNCTION + void + complete( + RunnableTaskBase&& task, + TeamSchedulerInfo const& info + ) + { + if(task.get_respawn_flag()) { + _self().schedule_runnable(std::move(task), info); + } + else { + _complete_finished_task(std::move(task), info); + } + // A runnable task was popped from a ready queue finished executing. + // If respawned into a ready queue then the ready count was incremented + // so decrement whether respawned or not. If finished, all of the + // tasks waiting on this have been enqueued (either in the ready queue + // or the next waiting queue, in the case of an aggregate), and the + // ready count has been incremented for each of those, preventing + // quiescence. Thus, it's safe to decrement the ready count here. + // TODO @tasking @memory_order DSH memory order? (probably release) + _decrement_ready_count(); + } + + template + KOKKOS_FUNCTION + void + complete( + AggregateTask&& task, + TeamSchedulerInfo const& info + ) { + // TODO @tasking DSH old code has a ifndef __HCC_ACCELERATOR__ here; figure out why + _complete_finished_task(std::move(task), info); + } + + // end Task and queue completion }}}2 + //---------------------------------------------------------------------------- + + + //---------------------------------------------------------------------------- + // {{{2 + +public: + + // This isn't actually generic; the template parameters are just to keep + // Derived from having to be complete + template + KOKKOS_INLINE_FUNCTION + void + schedule_runnable_to_queue( + RunnableTaskBase&& task, + ReadyQueueType& ready_queue, + TeamSchedulerInfo const& info + ) + { + bool task_is_ready = true; + bool scheduling_info_updated = false; + + // do this before enqueueing and potentially losing exclusive access to task + bool task_is_respawning = task.get_respawn_flag(); + + // clear the respawn flag, since we're handling the respawn (if any) here. + // We must make sure this is written through the cache, since the next + // thread to access it might be a Cuda thread from a different thread block. + ((RunnableTaskBase volatile&)task).set_respawn_flag(false); + + if(task.has_predecessor()) { + // save the predecessor into a local variable, then clear it from the + // task before adding it to the wait queue of the predecessor + // (We have exclusive access to the task's predecessor, so we don't need + // to do this atomically) + // TODO @tasking @internal_documentation DSH document that we expect exclusive access to `task` in this function + auto& predecessor = task.get_predecessor(); + // This needs a load/store fence here, technically + // making this a release store would also do this + ((RunnableTaskBase volatile&)task).clear_predecessor(); + + // TODO @tasking @memory_order DSH remove this fence in favor of memory orders + Kokkos::memory_fence(); // for now + + // Try to add the task to the predecessor's waiting queue. If it fails, + // the predecessor is already done + bool predecessor_not_ready = predecessor.try_add_waiting(task); + + // NOTE: if the predecessor was not ready and the task was enqueued, + // we've lost exclusive access and should nt touch task again + + // If the predecessor is not done, then task is not ready + task_is_ready = not predecessor_not_ready; + + if(task_is_ready and predecessor.is_runnable()) { + // this is our last chance to update the scheduling info before + // predecessor is potentially deleted + _self().update_scheduling_info_from_completed_predecessor( + /* ready_task = */ task, + /* predecessor = */ predecessor.as_runnable_task() + ); + scheduling_info_updated = true; + } + + if(task_is_respawning) { + // Reference count for predecessor was incremented when + // respawn called set_dependency() + // so that if predecessor completed prior to the + // above try_add_waiting(), predecessor would not be destroyed. + // predecessor reference count can now be decremented, + // which may deallocate it. + bool should_delete = predecessor.decrement_and_check_reference_count(); + if(should_delete) { + // TODO @tasking @cleanup DSH better encapsulation of this! + _self().deallocate(std::move(predecessor)); + } + } + // Note! predecessor may be destroyed at this point, so don't add anything + // here + } + + if(scheduling_info_updated) { + // We need to go back to the queue itself and see if it wants to schedule + // somewhere else + _self().schedule_runnable(std::move(task), info); + } + // Put it in the appropriate ready queue if it's ready + else if(task_is_ready) { + // Increment the ready count + _self()._increment_ready_count(); + // and enqueue the task + // (can't move because the task isn't expired unless the push succeeds + bool push_success = ready_queue.push(task); + if(not push_success) { + _self().handle_failed_ready_queue_insertion( + std::move(task), ready_queue, info + ); + } + } + + // Task may be enqueued and may be run at any point; don't touch it (hence + // the use of move semantics) + } + + template + KOKKOS_INLINE_FUNCTION + void + handle_failed_ready_queue_insertion( + RunnableTaskBase&& task, + ReadyQueueType& ready_queue, + TeamSchedulerInfo const& info + ) { + Kokkos::abort("Unhandled failure of ready task queue insertion!\n"); + } + + // This isn't actually generic; the template parameters are just to keep + // Derived from having to be complete + template + KOKKOS_FUNCTION + void + schedule_aggregate( + AggregateTask&& aggregate, + TeamSchedulerInfo const& info + ) + { + // Because the aggregate is being scheduled, should not be in any queue + KOKKOS_EXPECTS(not aggregate.is_enqueued()); + + using task_scheduling_info_type = typename Derived::task_scheduling_info_type; + using team_scheduler_info_type = typename Derived::team_scheduler_info_type; + static_assert( + std::is_same::value, + "SchedulingInfo type mismatch!" + ); + + bool incomplete_dependence_found = false; + + for(auto*& predecessor_ptr_ref : aggregate) { + + // if a previous scheduling operation hasn't already set the predecessor + // to nullptr, try to enqueue the aggregate into the predecessorendence's waiting + // queue + if(predecessor_ptr_ref != nullptr) { + + // Swap the pointer onto the stack and set the one in the aggregate VLA + // to nullptr before we try to add it to the waiting queue so that some + // other thread doesn't also get to here and find the pointer to be + // not null (since as soon as we try and schedule the aggregate, we + // potentially lose exclusive access to it if that enqueueing operation + // succeeds. The swap doesn't need to happen atomically since we have + // exclusive access to aggregate until an insertion succeeds + auto* predecessor_ptr = std::move(predecessor_ptr_ref); + + // TODO @tasking @memory_order DSH I think this needs to be a store release so that it doesn't get reordered after the queue insertion + predecessor_ptr_ref = nullptr; + + // TODO @tasking @memory_order DSH remove this fence in favor of memory orders + Kokkos::memory_fence(); + + // If adding the aggregate to the waiting queue succeeds, the predecessor is not + // complete + bool pred_not_ready = predecessor_ptr->try_add_waiting(aggregate); + + // NOTE! At this point it is unsafe to access aggregate (unless the + // enqueueing failed, so we can't use move semantics to expire it) + + // we found an incomplete dependence, so we can't make task's successors + // ready yet + incomplete_dependence_found = pred_not_ready; + + if(not pred_not_ready) { + // A predecessor was done, and we didn't enqueue the aggregate + // Update the aggregate's scheduling info (we still have exclusive + // access to it here) + if(predecessor_ptr->is_runnable()) { + _self().update_scheduling_info_from_completed_predecessor( + aggregate, predecessor_ptr->as_runnable_task() + ); + } + else { + KOKKOS_ASSERT(predecessor_ptr->is_aggregate()); + _self().update_scheduling_info_from_completed_predecessor( + aggregate, (*predecessor_ptr).template as_aggregate() + ); + } + } + + // the reference count for the predecessor was incremented when we put + // it into the predecessor list, so decrement it here + bool should_delete = predecessor_ptr->decrement_and_check_reference_count(); + if(should_delete) { + // TODO @tasking @cleanup DSH better encapsulation of this! + _self().deallocate(std::move(*predecessor_ptr)); + } + + // Stop the loop if we found an incomplete dependence + if(incomplete_dependence_found) break; + } + } + + // NOTE: it's not safe to access aggregate any more if an incomplete dependence + // was found, because some other thread could have already popped it off + // of another waiting queue + + if(not incomplete_dependence_found) { + // all of the predecessors were completed, so we can complete `task` + _self().complete(std::move(aggregate), info); + } + // Note!! task may have been deleted at this point, so don't add anything here! + } + + // Provide a sensible default that can be overridden + template + KOKKOS_INLINE_FUNCTION + void update_scheduling_info_from_completed_predecessor( + RunnableTaskBase& ready_task, + RunnableTaskBase const& predecessor + ) const + { + // by default, tell a ready task to use the scheduling info of its most + // recent predecessor + using task_scheduling_info_type = typename Derived::task_scheduling_info_type; + ready_task.template scheduling_info_as() = + predecessor.template scheduling_info_as(); + } + + // Provide a sensible default that can be overridden + template + KOKKOS_INLINE_FUNCTION + void update_scheduling_info_from_completed_predecessor( + AggregateTask& aggregate, + RunnableTaskBase const& predecessor + ) const + { + // by default, tell a ready task to use the scheduling info of its most + // recent predecessor + using task_scheduling_info_type = typename Derived::task_scheduling_info_type; + aggregate.scheduling_info() = + predecessor.template scheduling_info_as(); + } + + // Provide a sensible default that can be overridden + template + KOKKOS_INLINE_FUNCTION + void update_scheduling_info_from_completed_predecessor( + AggregateTask& aggregate, + AggregateTask const& predecessor + ) const + { + // by default, tell a ready task to use the scheduling info of its most + // recent predecessor + aggregate.scheduling_info() = predecessor.scheduling_info(); + } + + // Provide a sensible default that can be overridden + template + KOKKOS_INLINE_FUNCTION + void update_scheduling_info_from_completed_predecessor( + RunnableTaskBase& ready_task, + AggregateTask const& predecessor + ) const + { + // by default, tell a ready task to use the scheduling info of its most + // recent predecessor + using task_scheduling_info_type = typename Derived::task_scheduling_info_type; + ready_task.template scheduling_info_as() = + predecessor.scheduling_info(); + } + + template + KOKKOS_INLINE_FUNCTION + void initialize_scheduling_info_from_predecessor( + TaskNode& task, + TaskNode& predecessor + ) const + { + /* do nothing by default */ + } + + template + KOKKOS_INLINE_FUNCTION + void initialize_scheduling_info_from_team_scheduler_info( + TaskNode& task, + TeamSchedulerInfo const& info + ) const + { + /* do nothing by default */ + } + + template < + class ExecutionSpace, + class MemorySpace, + class MemoryPool + > + static /* KOKKOS_CONSTEXPR_14 */ size_t + task_queue_allocation_size( + ExecutionSpace const&, + MemorySpace const&, + MemoryPool const& + ) + // requires Same + // && Same + // && Same + { + static_assert( + std::is_same::value + && std::is_same::value + && std::is_same::value, + "Type mismatch in task_queue_allocation_size customization point" + ); + + return sizeof(Derived); + } + + // end Scheduling }}}2 + //---------------------------------------------------------------------------- + +}; + +} /* namespace Impl */ +} /* namespace Kokkos */ + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ +#endif /* #ifndef KOKKOS_IMPL_TASKQUEUECOMMON_HPP */ + diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskQueueMemoryManager.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskQueueMemoryManager.hpp new file mode 100644 index 0000000000..c3ed1d6c71 --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_TaskQueueMemoryManager.hpp @@ -0,0 +1,251 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_IMPL_TASKQUEUEMEMORYMANAGER_HPP +#define KOKKOS_IMPL_TASKQUEUEMEMORYMANAGER_HPP + +#include +#if defined( KOKKOS_ENABLE_TASKDAG ) + + +#include +#include + +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template < + class ExecSpace, + class MemorySpace, + class MemoryPool = Kokkos::MemoryPool> +> +class TaskQueueMemoryManager + : public TaskQueueBase +{ +public: + + using execution_space = ExecSpace; + using memory_space = MemorySpace; + using device_type = Kokkos::Device; + using memory_pool = MemoryPool; + using allocation_size_type = size_t; + +private: + + memory_pool m_pool; + // TODO @tasking @generalization DSH re-enable this with a flag in the type + //long m_accum_alloc = 0; + int m_count_alloc = 0; + int m_max_alloc = 0; + + struct _allocation_result { + bool success; + void* pointer; + }; + + KOKKOS_INLINE_FUNCTION + _allocation_result + _do_pool_allocate(allocation_size_type requested_size) { + // KOKKOS_EXPECTS(requested_size >= 0); generates a warning when allocation_size_type is unsigned + if(requested_size == 0 ) { + return { true, nullptr }; + } + else { + void* data = m_pool.allocate(static_cast(requested_size)); + + //Kokkos::atomic_increment(&m_accum_alloc); // memory_order_relaxed + Kokkos::atomic_increment(&m_count_alloc); // memory_order_relaxed + // TODO @tasking @minor DSH make this thread safe? (otherwise, it's just an approximation, which is probably fine...) + if(m_max_alloc < m_count_alloc) m_max_alloc = m_count_alloc; + + return { data != nullptr, data }; + } + } + + template + KOKKOS_INLINE_FUNCTION + T* + _do_contruct(void* allocated, allocation_size_type allocated_size, Args&&... args) { + + static_assert( + std::is_base_of, T>::value, + "TaskQueueMemoryManager can only allocate objects with PoolAllocatedObjectBase base class" + ); + + // TODO @tasking DSH figure out why this isn't working + //static_assert( + // std::is_constructible::value, + // "TaskQueueMemoryManager can't construct object of the requested type from the " + // " allocation size and the given arguments" + //); + + + auto rv = new (allocated) T( + std::forward(args)..., + allocated_size + ); + + // It feels like there should be a way to check this at compile-time + KOKKOS_ASSERT( + (intptr_t)(rv) == (intptr_t)(static_cast*>(rv)) + && "PoolAllocatedObjectBase must be the first base class of the allocated type" + ); + + return rv; + + } + + +public: + + explicit + TaskQueueMemoryManager(memory_pool const& pool) + : m_pool(pool) + { } + + + template + KOKKOS_FUNCTION + T* + allocate_and_construct(Args&&... args) + // requires + // std::is_base_of_v, T> + // && std::is_constructible_v + { + constexpr auto allocation_size = sizeof(T); + + + auto result = _do_pool_allocate(allocation_size); + + KOKKOS_ASSERT(result.success && "Memory allocation failure"); + + auto rv = _do_contruct(result.pointer, allocation_size, std::forward(args)...); + + KOKKOS_ENSURES(intptr_t(rv) % alignof(T) == 0 && "alignment not preserved!"); + + return rv; + } + + template + KOKKOS_INLINE_FUNCTION + T* + allocate_and_construct_with_vla_emulation( + allocation_size_type n_vla_entries, + Args&&... args + ) + // requires + // std::is_base_of_v, T> + // && std::is_base_of, T>::value + // && std::is_constructible_v + { + + + static_assert( + std::is_base_of, T>::value, + "Can't append emulated variable length array of type with greater alignment than" + " the type to which the VLA is being appended" + ); + + using vla_emulation_base = ObjectWithVLAEmulation; + + auto const allocation_size = vla_emulation_base::required_allocation_size(n_vla_entries); + auto result = _do_pool_allocate(allocation_size); + + KOKKOS_ASSERT(result.success && "Memory allocation failure"); + + auto rv = _do_contruct(result.pointer, allocation_size, std::forward(args)...); + + KOKKOS_ENSURES(intptr_t(rv) % alignof(T) == 0); + + return rv; + } + + template + KOKKOS_INLINE_FUNCTION + void deallocate(PoolAllocatedObjectBase&& obj) + { + m_pool.deallocate((void*)&obj, 1); + Kokkos::atomic_decrement(&m_count_alloc); // memory_order_relaxed + } + + KOKKOS_INLINE_FUNCTION + memory_pool& get_memory_pool() { return m_pool; } + KOKKOS_INLINE_FUNCTION + memory_pool const& get_memory_pool() const { return m_pool; } + + KOKKOS_INLINE_FUNCTION + int allocation_count() const noexcept { return m_count_alloc; } +}; + +} /* namespace Impl */ +} /* namespace Kokkos */ + +//////////////////////////////////////////////////////////////////////////////// +// END OLD CODE +//////////////////////////////////////////////////////////////////////////////// + + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ +#endif /* #ifndef KOKKOS_IMPL_TASKQUEUEMEMORYMANAGER_HPP */ + diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskQueueMultiple.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskQueueMultiple.hpp new file mode 100644 index 0000000000..17c357ff31 --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_TaskQueueMultiple.hpp @@ -0,0 +1,286 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +// Experimental unified task-data parallel manycore LDRD + +#ifndef KOKKOS_IMPL_TASKQUEUEMULTIPLE_HPP +#define KOKKOS_IMPL_TASKQUEUEMULTIPLE_HPP + +#include +#if defined( KOKKOS_ENABLE_TASKDAG ) + + +#include +#include + +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template< typename ExecSpace, typename MemorySpace = typename ExecSpace::memory_space > +class LeagueQueueCollection; + +template +class TaskQueueMultiple : public TaskQueue { +private: + + using base_t = TaskQueue; + using queue_collection_t = LeagueQueueCollection; + + int m_league_rank = static_cast(KOKKOS_INVALID_INDEX); + + // This pointer is owning only if m_league_rank == 0 + queue_collection_t* m_other_queues = nullptr; + + +public: + + struct Destroy { + TaskQueueMultiple* m_queue ; + void destroy_shared_allocation(); + }; + + + using team_queue_type = TaskQueueMultiple; + + TaskQueueMultiple( + int arg_league_rank, + queue_collection_t* arg_other_queues, + typename base_t::memory_pool const& arg_memory_pool + ) + : base_t(arg_memory_pool), + m_league_rank(arg_league_rank), + m_other_queues(arg_other_queues) + { } + + explicit TaskQueueMultiple( + typename base_t::memory_pool const& arg_memory_pool + ) + : base_t(arg_memory_pool), + m_league_rank(0) + { + void* other_queues_buffer = typename base_t::memory_space{}.allocate(sizeof(queue_collection_t)); + m_other_queues = new(other_queues_buffer) queue_collection_t(this); + } + + ~TaskQueueMultiple() { + if(m_league_rank == 0 && m_other_queues != nullptr) { + m_other_queues->~queue_collection_t(); + typename base_t::memory_space{}.deallocate(m_other_queues, sizeof(queue_collection_t)); + } + // rest of destruction is handled in the base class + } + + //---------------------------------------- + + void initialize_team_queues(int arg_league_size) const noexcept { + m_other_queues->initialize_team_queues(arg_league_size, this->m_memory); + } + + KOKKOS_INLINE_FUNCTION + team_queue_type& get_team_queue(int arg_league_rank) noexcept { + if(arg_league_rank == m_league_rank) return *this; + else return m_other_queues->get_team_queue(arg_league_rank); + } + + KOKKOS_INLINE_FUNCTION + typename base_t::task_root_type* + attempt_to_steal_task() noexcept { + TaskBase* rv = nullptr; + auto* const end_tag = reinterpret_cast(TaskBase::EndTag); + + if (m_other_queues == nullptr) { + Kokkos::abort("attempted to steal task before queues were initialized!"); + } + + // Loop by priority and then type, and then team + for ( int i = 0 ; i < base_t::NumQueue; ++i ) { + for ( int j = 0 ; j < 2; ++j ) { + // for now, always start by trying to steal from team zero + for(int iteam = 0; iteam < m_other_queues->size(); ++iteam) { + if(iteam == m_league_rank) continue; + auto& steal_from = get_team_queue(iteam); + if( *((volatile int *) & steal_from.m_ready_count) > 0 ) { + // we've found at least one queue that's not done, so even if we can't + // pop something off of it we shouldn't return a nullptr indicating + // completion. rv will be end_tag when the pop fails + rv = base_t::pop_ready_task(&steal_from.m_ready[i][j]); + if(rv != end_tag) { + // task stolen. + // first increment our ready count, then decrement the ready count + // on the other queue: + Kokkos::atomic_increment(&this->m_ready_count); + Kokkos::atomic_decrement(&steal_from.m_ready_count); + return rv; + } + } + } + } + } + + // at this point, rv will only be nullptr if *all* of the queues had an + // m_ready_count of 0. This indicates quiescence. If at least some of them + // had non-zero, there would have been at least one pop_ready_task that + // was called and returned end_tag if it couldn't pop a task + return rv; + } + + +}; + +template +class LeagueQueueCollection { +private: + + using execution_space = ExecSpace; + using memory_space = MemorySpace; + using device_type = Kokkos::Device; + using memory_pool = Kokkos::MemoryPool; + using team_queue_type = TaskQueueMultiple; + using team_scheduler_type = BasicTaskScheduler; + using specialization = TaskQueueSpecialization; + + enum : long { max_num_queues = 6 }; //specialization::max_league_size }; + + // this is a non-owning pointer + team_queue_type* m_rank_zero_queue = nullptr; + // This really needs to be an optional> + union optional_queue { + KOKKOS_INLINE_FUNCTION + optional_queue() : uninitialized(0) { } + KOKKOS_INLINE_FUNCTION + ~optional_queue() { uninitialized = 0; } + char uninitialized; + team_queue_type initialized; + } m_queues[max_num_queues]; + int m_size = static_cast(KOKKOS_INVALID_INDEX); + +public: + + LeagueQueueCollection() = delete; + LeagueQueueCollection(LeagueQueueCollection const&) = delete; + LeagueQueueCollection(LeagueQueueCollection&&) = delete; + LeagueQueueCollection& operator=(LeagueQueueCollection const&) = delete; + LeagueQueueCollection& operator=(LeagueQueueCollection&&) = delete; + + ~LeagueQueueCollection() { + // destroy only the initialized queues that we own + for(int iteam = 0; iteam < m_size - 1; ++iteam) { + m_queues[iteam].initialized.~team_queue_type(); + m_queues[iteam].uninitialized = 0; + } + } + + KOKKOS_INLINE_FUNCTION + explicit LeagueQueueCollection( + team_queue_type* arg_rank_zero_queue + ) : m_rank_zero_queue(arg_rank_zero_queue), + m_size(1) + { } + + void initialize_team_queues( + int arg_count, memory_pool const& arg_memory_pool + ) noexcept + { + arg_count = std::min((int)max_num_queues, arg_count); + //assert(arg_count <= max_num_queues); + if(arg_count > m_size) { + for(int i = m_size; i < arg_count; ++i) { + new(&m_queues[i-1].initialized) team_queue_type(i, this, arg_memory_pool); + } + m_size = arg_count; + } + } + + KOKKOS_INLINE_FUNCTION + constexpr int size() const noexcept { return m_size; } + + KOKKOS_INLINE_FUNCTION + constexpr bool initialized() const noexcept { return m_size != int(KOKKOS_INVALID_INDEX); } + + KOKKOS_INLINE_FUNCTION + team_queue_type& get_team_queue(int iteam) { + iteam %= max_num_queues; + #if !defined(__HCC_ACCELERATOR__) && !defined(__CUDA_ARCH__) + assert(initialized()); + assert(iteam < m_size); + assert(iteam >= 0); + #endif + if(iteam == 0) return *m_rank_zero_queue; + else return m_queues[iteam-1].initialized; + } + +}; + + +} /* namespace Impl */ +} /* namespace Kokkos */ + + + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#include + +#endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ +#endif /* #ifndef KOKKOS_IMPL_TASKQUEUEMULTIPLE_HPP */ + diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskQueueMultiple_impl.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskQueueMultiple_impl.hpp new file mode 100644 index 0000000000..81bcc96831 --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_TaskQueueMultiple_impl.hpp @@ -0,0 +1,72 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_IMPL_TASKQUEUEMULTIPLE_IMPL_HPP +#define KOKKOS_IMPL_TASKQUEUEMULTIPLE_IMPL_HPP + +#include +#if defined( KOKKOS_ENABLE_TASKDAG ) + +#include + +#define KOKKOS_IMPL_DEBUG_TASKDAG_SCHEDULING_MULTIPLE 0 + +namespace Kokkos { +namespace Impl { + +template +void TaskQueueMultiple::Destroy::destroy_shared_allocation() { +// KOKKOS WORKAROUND for CUDA 10.1 with GCC 7.3.0 +#if(KOKKOS_COMPILER_CUDA_VERSION==101) && defined(KOKKOS_COMPILER_NVCC) && (KOKKOS_COMPILER_GNU>=730) + (*m_queue).get_team_queue(0).~TaskQueueMultiple(); +#else + m_queue->get_team_queue(0).~TaskQueueMultiple(); +#endif +} + +} /* namespace Impl */ +} /* namespace Kokkos */ + +#endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ +#endif /* #ifndef KOKKOS_IMPL_TASKQUEUEMULTIPLE_IMPL_HPP */ + diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskQueue_impl.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskQueue_impl.hpp index 5bcf672ff6..b5f8db0085 100644 --- a/lib/kokkos/core/src/impl/Kokkos_TaskQueue_impl.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_TaskQueue_impl.hpp @@ -41,6 +41,8 @@ //@HEADER */ +#ifndef KOKKOS_IMPL_TASKQUEUE_IMPL_HPP +#define KOKKOS_IMPL_TASKQUEUE_IMPL_HPP #include #if defined( KOKKOS_ENABLE_TASKDAG ) @@ -51,22 +53,22 @@ namespace Impl { //---------------------------------------------------------------------------- -template< typename ExecSpace > -void TaskQueue< ExecSpace >::Destroy::destroy_shared_allocation() +template< typename ExecSpace, typename MemorySpace > +void TaskQueue< ExecSpace, MemorySpace >::Destroy::destroy_shared_allocation() { m_queue->~TaskQueue(); } //---------------------------------------------------------------------------- -template< typename ExecSpace > -TaskQueue< ExecSpace >::TaskQueue - ( typename TaskQueue< ExecSpace >::memory_pool const & arg_memory_pool ) +template< typename ExecSpace, typename MemorySpace> +TaskQueue< ExecSpace, MemorySpace>::TaskQueue + ( typename TaskQueue< ExecSpace, MemorySpace>::memory_pool const & arg_memory_pool ) : m_memory( arg_memory_pool ) , m_ready() - , m_accum_alloc(0) - , m_count_alloc(0) - , m_max_alloc(0) + //, m_accum_alloc(0) + //, m_count_alloc(0) + //, m_max_alloc(0) , m_ready_count(0) { for ( int i = 0 ; i < NumQueue ; ++i ) { @@ -77,8 +79,8 @@ TaskQueue< ExecSpace >::TaskQueue //---------------------------------------------------------------------------- -template< typename ExecSpace > -TaskQueue< ExecSpace >::~TaskQueue() +template< typename ExecSpace, typename MemorySpace> +TaskQueue< ExecSpace, MemorySpace>::~TaskQueue() { // Verify that queues are empty and ready count is zero @@ -97,10 +99,10 @@ TaskQueue< ExecSpace >::~TaskQueue() //---------------------------------------------------------------------------- -template< typename ExecSpace > +template< typename ExecSpace, typename MemorySpace> KOKKOS_FUNCTION -void TaskQueue< ExecSpace >::decrement - ( TaskQueue< ExecSpace >::task_root_type * task ) +void TaskQueue< ExecSpace, MemorySpace>::decrement + ( TaskQueue< ExecSpace, MemorySpace>::task_root_type * task ) { task_root_type volatile & t = *task ; @@ -121,8 +123,13 @@ void TaskQueue< ExecSpace >::decrement ( t.m_next == (task_root_type *) task_root_type::LockTag ) ) { // Reference count is zero and task is complete, deallocate. - TaskQueue< ExecSpace > * const queue = - static_cast< TaskQueue< ExecSpace > * >( t.m_queue ); + //TaskQueue< ExecSpace, MemorySpace> * const queue = + // static_cast( t.m_scheduler )->m_queue; + auto* const volatile queue = static_cast(t.m_queue); + + // TODO @tasking @minor DSH this should call the destructor for a non-trivially destructible type (possibly just ignore this in the old version, though?) + // (Can't just do this; it needs to be queued since it's device code + // if(task->m_destroy) task->m_destroy(task); queue->deallocate( task , t.m_alloc_size ); } @@ -133,32 +140,32 @@ void TaskQueue< ExecSpace >::decrement //---------------------------------------------------------------------------- -template< typename ExecSpace > +template< typename ExecSpace, typename MemorySpace> KOKKOS_FUNCTION -size_t TaskQueue< ExecSpace >::allocate_block_size( size_t n ) +size_t TaskQueue< ExecSpace, MemorySpace>::allocate_block_size( size_t n ) { return m_memory.allocate_block_size( n ); } -template< typename ExecSpace > +template< typename ExecSpace, typename MemorySpace> KOKKOS_FUNCTION -void * TaskQueue< ExecSpace >::allocate( size_t n ) +void * TaskQueue< ExecSpace, MemorySpace>::allocate( size_t n ) { void * const p = m_memory.allocate(n); if ( p ) { - Kokkos::atomic_increment( & m_accum_alloc ); + //Kokkos::atomic_increment( & m_accum_alloc ); Kokkos::atomic_increment( & m_count_alloc ); - if ( m_max_alloc < m_count_alloc ) m_max_alloc = m_count_alloc ; + //if ( m_max_alloc < m_count_alloc ) m_max_alloc = m_count_alloc ; } return p ; } -template< typename ExecSpace > +template< typename ExecSpace, typename MemorySpace> KOKKOS_FUNCTION -void TaskQueue< ExecSpace >::deallocate( void * p , size_t n ) +void TaskQueue< ExecSpace, MemorySpace>::deallocate( void * p , size_t n ) { m_memory.deallocate( p , n ); Kokkos::atomic_decrement( & m_count_alloc ); @@ -166,11 +173,11 @@ void TaskQueue< ExecSpace >::deallocate( void * p , size_t n ) //---------------------------------------------------------------------------- -template< typename ExecSpace > +template< typename ExecSpace, typename MemorySpace> KOKKOS_FUNCTION -bool TaskQueue< ExecSpace >::push_task - ( TaskQueue< ExecSpace >::task_root_type * volatile * const queue - , TaskQueue< ExecSpace >::task_root_type * const task +bool TaskQueue< ExecSpace, MemorySpace>::push_task + ( TaskQueue< ExecSpace, MemorySpace>::task_root_type * volatile * const queue + , TaskQueue< ExecSpace, MemorySpace>::task_root_type * const task ) { // Push task into a concurrently pushed and popped queue. @@ -200,20 +207,29 @@ bool TaskQueue< ExecSpace >::push_task Kokkos::abort("TaskQueue::push_task ERROR: already a member of another queue" ); } - task_root_type * y = *queue ; + // store the head of the queue + task_root_type * old_head = *queue ; - while ( lock != y ) { + while ( old_head != lock ) { - next = y ; + // set task->next to the head of the queue + next = old_head; // Do not proceed until 'next' has been stored. Kokkos::memory_fence(); - task_root_type * const x = y ; + // store the old head + task_root_type * const old_head_tmp = old_head; - y = Kokkos::atomic_compare_exchange(queue,y,task); + // attempt to swap task with the old head of the queue + // as if this were done atomically: + // if(*queue == old_head) { + // *queue = task; + // } + // old_head = *queue; + old_head = Kokkos::atomic_compare_exchange(queue, old_head, task); - if ( x == y ) return true ; + if(old_head_tmp == old_head) return true; } // Failed, replace 'task->m_next' value since 'task' remains @@ -229,11 +245,11 @@ bool TaskQueue< ExecSpace >::push_task //---------------------------------------------------------------------------- -template< typename ExecSpace > +template< typename ExecSpace, typename MemorySpace> KOKKOS_FUNCTION -typename TaskQueue< ExecSpace >::task_root_type * -TaskQueue< ExecSpace >::pop_ready_task - ( TaskQueue< ExecSpace >::task_root_type * volatile * const queue ) +typename TaskQueue< ExecSpace, MemorySpace>::task_root_type * +TaskQueue< ExecSpace, MemorySpace>::pop_ready_task + ( TaskQueue< ExecSpace, MemorySpace>::task_root_type * volatile * const queue ) { // Pop task from a concurrently pushed and popped ready task queue. // The queue is a linked list where 'task->m_next' form the links. @@ -280,6 +296,10 @@ TaskQueue< ExecSpace >::pop_ready_task task_root_type * volatile & next = task->m_next ; + // This algorithm is not lockfree because a adversarial scheduler could + // context switch this thread at this point and the rest of the threads + // calling this method would never make forward progress + *queue = next ; next = lock ; Kokkos::memory_fence(); @@ -304,10 +324,10 @@ TaskQueue< ExecSpace >::pop_ready_task //---------------------------------------------------------------------------- -template< typename ExecSpace > +template< typename ExecSpace, typename MemorySpace> KOKKOS_FUNCTION -void TaskQueue< ExecSpace >::schedule_runnable - ( TaskQueue< ExecSpace >::task_root_type * const task ) +void TaskQueue< ExecSpace, MemorySpace>::schedule_runnable + ( TaskQueue< ExecSpace, MemorySpace>::task_root_type * const task ) { // Schedule a runnable task upon construction / spawn // and upon completion of other tasks that 'task' is waiting on. @@ -389,6 +409,8 @@ void TaskQueue< ExecSpace >::schedule_runnable Kokkos::memory_fence(); + // If we don't have a dependency, or if pushing onto the wait queue of that dependency + // failed (since the only time that queue should be locked is when the task is transitioning to complete??!?) const bool is_ready = ( 0 == dep ) || ( ! push_task( & dep->m_wait , task ) ); @@ -431,10 +453,10 @@ void TaskQueue< ExecSpace >::schedule_runnable // from a queue and processed it as appropriate. } -template< typename ExecSpace > +template< typename ExecSpace, typename MemorySpace> KOKKOS_FUNCTION -void TaskQueue< ExecSpace >::schedule_aggregate - ( TaskQueue< ExecSpace >::task_root_type * const task ) +void TaskQueue< ExecSpace, MemorySpace>::schedule_aggregate + ( TaskQueue< ExecSpace, MemorySpace>::task_root_type * const task ) { // Schedule an aggregate task upon construction // and upon completion of other tasks that 'task' is waiting on. @@ -556,9 +578,9 @@ void TaskQueue< ExecSpace >::schedule_aggregate //---------------------------------------------------------------------------- -template< typename ExecSpace > +template< typename ExecSpace, typename MemorySpace> KOKKOS_FUNCTION -void TaskQueue< ExecSpace >::reschedule( task_root_type * task ) +void TaskQueue< ExecSpace, MemorySpace>::reschedule( task_root_type * task ) { // Precondition: // task is in Executing state @@ -578,10 +600,10 @@ void TaskQueue< ExecSpace >::reschedule( task_root_type * task ) //---------------------------------------------------------------------------- -template< typename ExecSpace > +template< typename ExecSpace, typename MemorySpace> KOKKOS_FUNCTION -void TaskQueue< ExecSpace >::complete - ( TaskQueue< ExecSpace >::task_root_type * task ) +void TaskQueue< ExecSpace, MemorySpace>::complete + ( TaskQueue< ExecSpace, MemorySpace>::task_root_type * task ) { // Complete a runnable task that has finished executing // or a when_all task when all of its dependeneces are complete. @@ -679,4 +701,5 @@ void TaskQueue< ExecSpace >::complete } /* namespace Kokkos */ #endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ +#endif /* #ifndef KOKKOS_IMPL_TASKQUEUE_IMPL_HPP */ diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskResult.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskResult.hpp new file mode 100644 index 0000000000..d45ebff00b --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_TaskResult.hpp @@ -0,0 +1,151 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +// Experimental unified task-data parallel manycore LDRD + +#ifndef KOKKOS_IMPL_TASKRESULT_HPP +#define KOKKOS_IMPL_TASKRESULT_HPP + +#include +#if defined( KOKKOS_ENABLE_TASKDAG ) + +#include +#include + +#include +#include + +#include +#include +#include + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template< typename ResultType > +struct TaskResult { + + enum : int32_t { size = sizeof(ResultType) }; + + using reference_type = ResultType & ; + + template + KOKKOS_INLINE_FUNCTION static + ResultType * ptr( PoolAllocatedObjectBase* task ) + { + return reinterpret_cast< ResultType * > + ( reinterpret_cast< char * >(task) + task->get_allocation_size() - sizeof(ResultType) ); + } + + KOKKOS_INLINE_FUNCTION static + ResultType * ptr( TaskBase* task ) + { + return reinterpret_cast< ResultType * > + ( reinterpret_cast< char * >(task) + task->m_alloc_size - sizeof(ResultType) ); + } + + KOKKOS_INLINE_FUNCTION static + reference_type get( TaskBase* task ) + { return *ptr( task ); } + + template + KOKKOS_INLINE_FUNCTION static + reference_type get( TaskNode* task ) + { return *ptr( task ); } + + KOKKOS_INLINE_FUNCTION static + void destroy( TaskBase* task ) + { get(task).~ResultType(); } + + + //template + //KOKKOS_INLINE_FUNCTION static + //void destroy( TaskNode* task ) + //{ get(task).~ResultType(); } +}; + +template<> +struct TaskResult< void > { + + enum : int32_t { size = 0 }; + + using reference_type = void ; + + template + KOKKOS_INLINE_FUNCTION static + void* ptr( TaskNode* task ) + { return nullptr; } + + KOKKOS_INLINE_FUNCTION static + void * ptr( TaskBase* ) { return (void*) nullptr ; } + + template + KOKKOS_INLINE_FUNCTION static + reference_type get( TaskNode* task ) + { /* Should never be called */ } + + KOKKOS_INLINE_FUNCTION static + reference_type get( TaskBase* ) {} + + KOKKOS_INLINE_FUNCTION static + void destroy( TaskBase* task ) + { } + + //template + //KOKKOS_INLINE_FUNCTION static + //void destroy( TaskNode* task ) + //{ } +}; + +} /* namespace Impl */ +} /* namespace Kokkos */ + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ +#endif /* #ifndef KOKKOS_IMPL_TASKRESULT_HPP */ + diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskTeamMember.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskTeamMember.hpp new file mode 100644 index 0000000000..4bf3f4fa94 --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_TaskTeamMember.hpp @@ -0,0 +1,135 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_TASKTEAMMEMBER_HPP +#define KOKKOS_TASKTEAMMEMBER_HPP + +//---------------------------------------------------------------------------- + +#include +#if defined( KOKKOS_ENABLE_TASKDAG ) + +#include +#include +//---------------------------------------------------------------------------- + +#include +#include + +#include +#include +#include +#include +#include + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template +class TaskTeamMemberAdapter : public TeamMember { +private: + + Scheduler m_scheduler; + +public: + + //---------------------------------------- + + // Forward everything but the Scheduler to the constructor of the TeamMember + // type that we're adapting + template + KOKKOS_INLINE_FUNCTION + explicit TaskTeamMemberAdapter( + typename std::enable_if< + std::is_constructible::value, + Scheduler + >::type arg_scheduler, + Args&&... args + ) // TODO @tasking @minor DSH noexcept specification + : TeamMember(std::forward(args)...), + m_scheduler(std::move(arg_scheduler).get_team_scheduler(this->league_rank())) + { } + + // (rule of 6 constructors) + + KOKKOS_INLINE_FUNCTION + TaskTeamMemberAdapter() = default; + + KOKKOS_INLINE_FUNCTION + TaskTeamMemberAdapter(TaskTeamMemberAdapter const&) = default; + + KOKKOS_INLINE_FUNCTION + TaskTeamMemberAdapter(TaskTeamMemberAdapter&&) = default; + + KOKKOS_INLINE_FUNCTION + TaskTeamMemberAdapter& operator=(TaskTeamMemberAdapter const&) = default; + + KOKKOS_INLINE_FUNCTION + TaskTeamMemberAdapter& operator=(TaskTeamMemberAdapter&&) = default; + + KOKKOS_INLINE_FUNCTION ~TaskTeamMemberAdapter() = default; + + //---------------------------------------- + + KOKKOS_INLINE_FUNCTION + Scheduler const& scheduler() const noexcept { return m_scheduler; } + + KOKKOS_INLINE_FUNCTION + Scheduler& scheduler() noexcept { return m_scheduler; } + + //---------------------------------------- + +}; + +} // end namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ +#endif /* #ifndef KOKKOS_TASKTEAMMEMBER_HPP */ + diff --git a/lib/kokkos/core/src/impl/Kokkos_Traits.hpp b/lib/kokkos/core/src/impl/Kokkos_Traits.hpp index 475a696719..a5af82838f 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Traits.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Traits.hpp @@ -483,6 +483,54 @@ struct is_integral_constant< integral_constant > : public true_ enum { integral_value = v }; }; +//---------------------------------------------------------------------------- + +template +class TypeList; + +//---------------------------------------------------------------------------- + +template +struct ReverseTypeList; + +template +struct ReverseTypeList> { + template + struct impl { + using type = typename ReverseTypeList>::template impl::type; + }; + using type = typename impl<>::type; +}; + +template <> +struct ReverseTypeList> { + template + struct impl { + using type = TypeList; + }; + using type = TypeList<>; +}; + +//---------------------------------------------------------------------------- + +template +struct make_all_extents_into_pointers +{ + using type = T; +}; + +template +struct make_all_extents_into_pointers +{ + using type = typename make_all_extents_into_pointers::type*; +}; + +template +struct make_all_extents_into_pointers +{ + using type = typename make_all_extents_into_pointers::type*; +}; + } // namespace Impl } // namespace Kokkos diff --git a/lib/kokkos/core/src/impl/Kokkos_VLAEmulation.hpp b/lib/kokkos/core/src/impl/Kokkos_VLAEmulation.hpp new file mode 100644 index 0000000000..48e1851e60 --- /dev/null +++ b/lib/kokkos/core/src/impl/Kokkos_VLAEmulation.hpp @@ -0,0 +1,295 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_IMPL_VLAEMULATION_HPP +#define KOKKOS_IMPL_VLAEMULATION_HPP + +#include +#if defined( KOKKOS_ENABLE_TASKDAG ) + + +#include + +#include // KOKKOS_EXPECTS + +#include // std::is_abstract<>, ... + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template < + class Derived, + class VLAValueType, + class EntryCountType = int32_t +> +struct ObjectWithVLAEmulation; + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +/** @brief Attorney to enable private CRTP inheritance from ObjectWithVLAEmulation + */ +struct VLAEmulationAccess { +private: + + template + friend struct ObjectWithVLAEmulation; + + template + KOKKOS_FORCEINLINE_FUNCTION + static constexpr Derived* + _cast_to_derived(ObjectWithVLAEmulation* base) noexcept + { + return static_cast(base); + } + + template + KOKKOS_FORCEINLINE_FUNCTION + static constexpr Derived const* + _cast_to_derived(ObjectWithVLAEmulation const* base) noexcept + { + return static_cast(base); + } + +}; + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +/** \brief A CRTP base class for a type that includes a variable-length array by allocation + * + * The storage for the derived type must be allocated manually and the objects + * (both derived type and VLA objects) must be constructed with placement new. + * Obviously, this can't be done for objects on the stack. + * + * Note: Though most uses of this currently delete the copy and move constructor + * in the `Derived` type, this type is intended to have value semantics. + * + * \todo @documentation elaborate on implications of value semantics for this class template + * + */ +template < + class Derived, + class VLAValueType, + class EntryCountType /* = int32_t */ +> +struct ObjectWithVLAEmulation { +public: + + using object_type = Derived; + using vla_value_type = VLAValueType; + using vla_entry_count_type = EntryCountType; + + using iterator = VLAValueType*; + using const_iterator = typename std::add_const::type*; + + + // TODO @tasking @minor DSH require that Derived be marked final? (note that std::is_final is C++14) + // TODO @tasking @minor DSH delete non-placement operator new for Derived type? + +private: + + vla_entry_count_type m_num_entries; + + // CRTP boilerplate + + KOKKOS_FORCEINLINE_FUNCTION + /* KOKKOS_CONSTEXPR_14 */ + Derived* _this() noexcept { return VLAEmulationAccess::_cast_to_derived(this); } + + KOKKOS_FORCEINLINE_FUNCTION + /* KOKKOS_CONSTEXPR_14 */ + Derived const* _this() const noexcept { return VLAEmulationAccess::_cast_to_derived(this); } + + // Note: can't be constexpr because of reinterpret_cast + KOKKOS_FORCEINLINE_FUNCTION + /* KOKKOS_CONSTEXPR_14 */ + vla_value_type* _vla_pointer() noexcept { + // The data starts right after the aligned storage of Derived + return reinterpret_cast(_this() + 1); + } + + // Note: can't be constexpr because of reinterpret_cast + KOKKOS_FORCEINLINE_FUNCTION + /* KOKKOS_CONSTEXPR_14 */ + vla_value_type const* _vla_pointer() const noexcept { + // The data starts right after the aligned storage of Derived + return reinterpret_cast(_this() + 1); + } + +public: + + KOKKOS_INLINE_FUNCTION + static /* KOKKOS_CONSTEXPR_14 */ size_t + required_allocation_size(vla_entry_count_type num_vla_entries) { + KOKKOS_EXPECTS(num_vla_entries >= 0); + return sizeof(Derived) + num_vla_entries * sizeof(VLAValueType); + } + + //---------------------------------------------------------------------------- + // {{{2 + + // TODO @tasking @optimization DSH specialization for trivially constructible VLAValueType? + // TODO @tasking @minor DSH SFINAE-out this constructor for non-default contructible vla_value_types + KOKKOS_INLINE_FUNCTION + explicit + ObjectWithVLAEmulation(vla_entry_count_type num_entries) + noexcept(noexcept(vla_value_type())) + : m_num_entries(num_entries) + { + // Note: We can't do this at class scope because it unnecessarily requires + // object_type to be a complete type + static_assert( + alignof(object_type) >= alignof(vla_value_type), + "Can't append emulated variable length array of type with greater alignment than" + " the type to which the VLA is being appended" + ); + + // Note: We can't do this at class scope because it unnecessarily requires + // vla_value_type to be a complete type + static_assert( + not std::is_abstract::value, + "Can't use abstract type with VLA emulation" + ); + + KOKKOS_EXPECTS(num_entries >= 0); + for(vla_entry_count_type i = 0; i < m_num_entries; ++i) { + new (_vla_pointer() + i) vla_value_type(); + } + } + + KOKKOS_INLINE_FUNCTION + ~ObjectWithVLAEmulation() + noexcept(noexcept(std::declval().~vla_value_type())) + { + for(auto&& value : *this) { value.~vla_value_type(); } + } + + // TODO @tasking @new_feature DSH constrained analogs for move and copy ctors and assignment ops + // TODO @tasking @new_feature DSH forwarding in_place constructor + // TODO @tasking @new_feature DSH initializer_list constructor? + + // end Constructors, destructor, and assignment }}}2 + //---------------------------------------------------------------------------- + + + KOKKOS_INLINE_FUNCTION + constexpr EntryCountType n_vla_entries() const noexcept { return m_num_entries; } + + + //---------------------------------------------------------------------------- + // {{{2 + + KOKKOS_INLINE_FUNCTION + object_type& object() & { return static_cast(*this); } + + KOKKOS_INLINE_FUNCTION + object_type const& object() const & { return static_cast(*this); } + + KOKKOS_INLINE_FUNCTION + object_type&& object() && { return static_cast(*this); } + + + KOKKOS_INLINE_FUNCTION + vla_value_type& vla_value_at(vla_entry_count_type n) & + { + KOKKOS_EXPECTS(n < n_vla_entries()); + return _vla_pointer()[n]; + } + + KOKKOS_INLINE_FUNCTION + vla_value_type const& vla_value_at(vla_entry_count_type n) const & + { + KOKKOS_EXPECTS(n < n_vla_entries()); + return _vla_pointer()[n]; + } + + KOKKOS_INLINE_FUNCTION + vla_value_type& vla_value_at(vla_entry_count_type n) && + { + KOKKOS_EXPECTS(n < n_vla_entries()); + return _vla_pointer()[n]; + } + + // end Accessing the object and the VLA values }}}2 + //---------------------------------------------------------------------------- + + + //---------------------------------------------------------------------------- + // {{{2 + + KOKKOS_INLINE_FUNCTION + iterator begin() noexcept { return _vla_pointer(); } + + KOKKOS_INLINE_FUNCTION + const_iterator begin() const noexcept { return _vla_pointer(); } + + KOKKOS_INLINE_FUNCTION + const_iterator cbegin() noexcept { return _vla_pointer(); } + + KOKKOS_INLINE_FUNCTION + iterator end() noexcept { return _vla_pointer() + m_num_entries; } + + KOKKOS_INLINE_FUNCTION + const_iterator end() const noexcept { return _vla_pointer() + m_num_entries; } + + KOKKOS_INLINE_FUNCTION + const_iterator cend() noexcept { return _vla_pointer() + m_num_entries; } + + // end Iterators }}}2 + //---------------------------------------------------------------------------- + +}; + +} /* namespace Impl */ +} /* namespace Kokkos */ + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ +#endif /* #ifndef KOKKOS_IMPL_VLAEMULATION_HPP */ + diff --git a/lib/kokkos/core/src/impl/Kokkos_ViewArray.hpp b/lib/kokkos/core/src/impl/Kokkos_ViewArray.hpp index e1539d10b0..07774da279 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ViewArray.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ViewArray.hpp @@ -367,6 +367,8 @@ public: // Can only convert to View::array_type + enum { is_assignable_data_type = std::is_same< typename DstTraits::data_type , typename SrcTraits::scalar_array_type >::value && + (DstTraits::rank==SrcTraits::rank+1)}; enum { is_assignable = std::is_same< typename DstTraits::data_type , typename SrcTraits::scalar_array_type >::value && std::is_same< typename DstTraits::array_layout , typename SrcTraits::array_layout >::value }; diff --git a/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp b/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp index 773f336281..b2d8dea20a 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp @@ -50,6 +50,7 @@ #include #include #include +#include #include #include #include @@ -275,7 +276,7 @@ struct ALL_t { constexpr const ALL_t & operator()() const { return *this ; } KOKKOS_INLINE_FUNCTION - constexpr bool operator == ( const ALL_t & right) const { return true;} + constexpr bool operator == ( const ALL_t & ) const { return true;} }; }} // namespace Kokkos::Impl @@ -1548,7 +1549,7 @@ struct ViewOffset< Dimension , Kokkos::LayoutRight template< class DimRHS > KOKKOS_INLINE_FUNCTION constexpr ViewOffset - ( const ViewOffset< DimRHS , Kokkos::LayoutRight , void > & rhs + ( const ViewOffset< DimRHS , Kokkos::LayoutRight , void > & , const SubviewExtents< DimRHS::rank , dimension_type::rank > & sub ) : m_dim( sub.range_extent(0) , 0, 0, 0, 0, 0, 0, 0 ) @@ -2319,7 +2320,7 @@ struct ViewDataHandle< Traits , && std::is_same< typename Traits::specialize , void >::value && - Traits::memory_traits::Atomic + Traits::memory_traits::is_atomic )>::type > { typedef typename Traits::value_type value_type ; @@ -2348,16 +2349,16 @@ struct ViewDataHandle< Traits , typename std::enable_if<( std::is_same< typename Traits::specialize , void >::value && - (!Traits::memory_traits::Aligned) + (!Traits::memory_traits::is_aligned) && - Traits::memory_traits::Restrict + Traits::memory_traits::is_restrict #ifdef KOKKOS_ENABLE_CUDA && (!( std::is_same< typename Traits::memory_space,Kokkos::CudaSpace>::value || std::is_same< typename Traits::memory_space,Kokkos::CudaUVMSpace>::value )) #endif && - (!Traits::memory_traits::Atomic) + (!Traits::memory_traits::is_atomic) )>::type > { typedef typename Traits::value_type value_type ; @@ -2366,17 +2367,17 @@ struct ViewDataHandle< Traits , typedef Kokkos::Impl::SharedAllocationTracker track_type ; KOKKOS_INLINE_FUNCTION - static handle_type assign( value_type * arg_data_ptr + static value_type* assign( value_type * arg_data_ptr , track_type const & /*arg_tracker*/ ) { - return handle_type( arg_data_ptr ); + return (value_type*)( arg_data_ptr ); } KOKKOS_INLINE_FUNCTION - static handle_type assign( handle_type const arg_data_ptr + static value_type* assign( handle_type const arg_data_ptr , size_t offset ) { - return handle_type( arg_data_ptr + offset ); + return (value_type*)( arg_data_ptr + offset ); } }; @@ -2385,16 +2386,16 @@ struct ViewDataHandle< Traits , typename std::enable_if<( std::is_same< typename Traits::specialize , void >::value && - Traits::memory_traits::Aligned + Traits::memory_traits::is_aligned && - (!Traits::memory_traits::Restrict) + (!Traits::memory_traits::is_restrict) #ifdef KOKKOS_ENABLE_CUDA && (!( std::is_same< typename Traits::memory_space,Kokkos::CudaSpace>::value || std::is_same< typename Traits::memory_space,Kokkos::CudaUVMSpace>::value )) #endif && - (!Traits::memory_traits::Atomic) + (!Traits::memory_traits::is_atomic) )>::type > { typedef typename Traits::value_type value_type ; @@ -2428,16 +2429,16 @@ struct ViewDataHandle< Traits , typename std::enable_if<( std::is_same< typename Traits::specialize , void >::value && - Traits::memory_traits::Aligned + Traits::memory_traits::is_aligned && - Traits::memory_traits::Restrict + Traits::memory_traits::is_restrict #ifdef KOKKOS_ENABLE_CUDA && (!( std::is_same< typename Traits::memory_space,Kokkos::CudaSpace>::value || std::is_same< typename Traits::memory_space,Kokkos::CudaUVMSpace>::value )) #endif && - (!Traits::memory_traits::Atomic) + (!Traits::memory_traits::is_atomic) )>::type > { typedef typename Traits::value_type value_type ; @@ -2446,23 +2447,23 @@ struct ViewDataHandle< Traits , typedef Kokkos::Impl::SharedAllocationTracker track_type ; KOKKOS_INLINE_FUNCTION - static handle_type assign( value_type * arg_data_ptr + static value_type* assign( value_type * arg_data_ptr , track_type const & /*arg_tracker*/ ) { if ( reinterpret_cast(arg_data_ptr) % Impl::MEMORY_ALIGNMENT ) { Kokkos::abort("Assigning NonAligned View or Pointer to Kokkos::View with Aligned attribute"); } - return handle_type( arg_data_ptr ); + return (value_type*)( arg_data_ptr ); } KOKKOS_INLINE_FUNCTION - static handle_type assign( handle_type const arg_data_ptr + static value_type* assign( handle_type const arg_data_ptr , size_t offset ) { if ( reinterpret_cast(arg_data_ptr+offset) % Impl::MEMORY_ALIGNMENT ) { Kokkos::abort("Assigning NonAligned View or Pointer to Kokkos::View with Aligned attribute"); } - return handle_type( arg_data_ptr + offset ); + return (value_type*)( arg_data_ptr + offset ); } }; }} // namespace Kokkos::Impl @@ -2955,7 +2956,8 @@ private: }; public: - + enum { is_assignable_data_type = is_assignable_value_type && + is_assignable_dimension }; enum { is_assignable = is_assignable_space && is_assignable_value_type && is_assignable_dimension && @@ -3052,7 +3054,8 @@ private: , typename SrcTraits::dimension >::value }; public: - + enum { is_assignable_data_type = is_assignable_value_type && + is_assignable_dimension }; enum { is_assignable = is_assignable_space && is_assignable_value_type && is_assignable_dimension }; @@ -3062,7 +3065,7 @@ public: typedef ViewMapping< SrcTraits , void > SrcType ; KOKKOS_INLINE_FUNCTION - static bool assignable_layout_check(DstType & dst, const SrcType & src) //Runtime check + static bool assignable_layout_check(DstType &, const SrcType & src) //Runtime check { size_t strides[9]; bool assignable = true; @@ -3134,6 +3137,73 @@ public: // Subview mapping. // Deduce destination view type from source view traits and subview arguments +template +struct SubViewDataTypeImpl; + +/* base case */ +template +struct SubViewDataTypeImpl< + void, + ValueType, + Experimental::Extents<> +> +{ using type = ValueType; }; + +/* for integral args, subview doesn't have that dimension */ +template +struct SubViewDataTypeImpl< + typename std::enable_if::type>::value>::type, + ValueType, + Experimental::Extents, + Integral, Args... +> : SubViewDataTypeImpl< + void, ValueType, + Experimental::Extents, + Args... + > +{ }; + + +/* for ALL slice, subview has the same dimension */ +template +struct SubViewDataTypeImpl< + void, + ValueType, + Experimental::Extents, + ALL_t, Args... +> : SubViewDataTypeImpl< + void, typename ApplyExtent::type, + Experimental::Extents, + Args... + > +{ }; + + +/* for pair-style slice, subview has dynamic dimension, since pair doesn't give static sizes */ +/* Since we don't allow interleaving of dynamic and static extents, make all of the dimensions to the left dynamic */ +template +struct SubViewDataTypeImpl< + typename std::enable_if::value>::type, + ValueType, + Experimental::Extents, + PairLike, Args... +> : SubViewDataTypeImpl< + void, typename make_all_extents_into_pointers::type*, + Experimental::Extents, + Args... + > +{ }; + + +template +struct SubViewDataType + : SubViewDataTypeImpl< + void, ValueType, Exts, Args... + > +{ }; + +//---------------------------------------------------------------------------- + template< class SrcTraits , class ... Args > struct ViewMapping < typename std::enable_if<( @@ -3201,17 +3271,25 @@ private: typedef typename SrcTraits::value_type value_type ; - typedef typename std::conditional< rank == 0 , value_type , - typename std::conditional< rank == 1 , value_type * , - typename std::conditional< rank == 2 , value_type ** , - typename std::conditional< rank == 3 , value_type *** , - typename std::conditional< rank == 4 , value_type **** , - typename std::conditional< rank == 5 , value_type ***** , - typename std::conditional< rank == 6 , value_type ****** , - typename std::conditional< rank == 7 , value_type ******* , - value_type ******** - >::type >::type >::type >::type >::type >::type >::type >::type - data_type ; + using data_type = + typename SubViewDataType< + value_type, + typename Kokkos::Impl::ParseViewExtents< + typename SrcTraits::data_type + >::type, + Args... + >::type; + //typedef typename std::conditional< rank == 0 , value_type , + // typename std::conditional< rank == 1 , value_type * , + // typename std::conditional< rank == 2 , value_type ** , + // typename std::conditional< rank == 3 , value_type *** , + // typename std::conditional< rank == 4 , value_type **** , + // typename std::conditional< rank == 5 , value_type ***** , + // typename std::conditional< rank == 6 , value_type ****** , + // typename std::conditional< rank == 7 , value_type ******* , + // value_type ******** + // >::type >::type >::type >::type >::type >::type >::type >::type + // data_type ; public: diff --git a/lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp b/lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp index 716b9ceca5..a8645db451 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp @@ -50,6 +50,9 @@ namespace Kokkos { namespace Impl { +// =========================================================================== +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE + // View mapping for rank two tiled array template< class L > @@ -208,11 +211,17 @@ struct ViewMapping } }; +#endif // KOKKOS_ENABLE_DEPRECATED_CODE +// =============================================================================== + } /* namespace Impl */ } /* namespace Kokkos */ namespace Kokkos { +// ============================================================================== +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE + template< typename T , unsigned N0 , unsigned N1 , class ... P > KOKKOS_INLINE_FUNCTION Kokkos::View< T[N0][N1] , LayoutLeft , P... > @@ -229,6 +238,9 @@ tile_subview( const Kokkos::View,P...> & ( src , SrcLayout() , i_tile0 , i_tile1 ); } +#endif // KOKKOS_ENABLE_DEPRECATED_CODE +// =============================================================================== + } /* namespace Kokkos */ //---------------------------------------------------------------------------- diff --git a/lib/kokkos/core/unit_test/CMakeLists.txt b/lib/kokkos/core/unit_test/CMakeLists.txt index fad4e1d45e..6a480daa8d 100644 --- a/lib/kokkos/core/unit_test/CMakeLists.txt +++ b/lib/kokkos/core/unit_test/CMakeLists.txt @@ -11,6 +11,7 @@ IF(NOT KOKKOS_HAS_TRILINOS) ENDIF() SET(GTEST_SOURCE_DIR ${${PARENT_PACKAGE_NAME}_SOURCE_DIR}/tpls/gtest) +# TODO get the C++ standard flag from KOKKOS_CXX_STANDARD SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGTEST_HAS_PTHREAD=0") INCLUDE_DIRECTORIES(${GTEST_SOURCE_DIR}) @@ -21,6 +22,17 @@ TRIBITS_ADD_LIBRARY( TESTONLY ) +IF(NOT KOKKOS_HAS_TRILINOS) +target_compile_options( + kokkos_gtest + PUBLIC $<$:${KOKKOS_CXX_FLAGS}> +) +target_link_libraries( + kokkos_gtest + PUBLIC ${KOKKOS_LD_FLAGS} +) +ENDIF() + # # Define the tests # @@ -29,69 +41,212 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) INCLUDE_DIRECTORIES(REQUIRED_DURING_INSTALLATION_TESTING ${CMAKE_CURRENT_SOURCE_DIR}) IF(Kokkos_ENABLE_Serial) - TRIBITS_ADD_EXECUTABLE_AND_TEST( - UnitTest_Serial - SOURCES - UnitTestMainInit.cpp - serial/TestSerial_AtomicOperations_int.cpp - serial/TestSerial_AtomicOperations_unsignedint.cpp - serial/TestSerial_AtomicOperations_longint.cpp - serial/TestSerial_AtomicOperations_unsignedlongint.cpp - serial/TestSerial_AtomicOperations_longlongint.cpp - serial/TestSerial_AtomicOperations_double.cpp - serial/TestSerial_AtomicOperations_float.cpp - serial/TestSerial_AtomicViews.cpp - serial/TestSerial_Atomics.cpp - serial/TestSerial_Complex.cpp - serial/TestSerial_Init.cpp - serial/TestSerial_MDRange_a.cpp - serial/TestSerial_MDRange_b.cpp - serial/TestSerial_MDRange_c.cpp - serial/TestSerial_MDRange_d.cpp - serial/TestSerial_MDRange_e.cpp - serial/TestSerial_Other.cpp - serial/TestSerial_RangePolicy.cpp - serial/TestSerial_Reductions.cpp - serial/TestSerial_Reducers_a.cpp - serial/TestSerial_Reducers_b.cpp - serial/TestSerial_Reducers_c.cpp - serial/TestSerial_Reducers_d.cpp - serial/TestSerial_Scan.cpp - serial/TestSerial_SharedAlloc.cpp - serial/TestSerial_SubView_a.cpp - serial/TestSerial_SubView_b.cpp - serial/TestSerial_SubView_c01.cpp - serial/TestSerial_SubView_c02.cpp - serial/TestSerial_SubView_c03.cpp - serial/TestSerial_SubView_c04.cpp - serial/TestSerial_SubView_c05.cpp - serial/TestSerial_SubView_c06.cpp - serial/TestSerial_SubView_c07.cpp - serial/TestSerial_SubView_c08.cpp - serial/TestSerial_SubView_c09.cpp - serial/TestSerial_SubView_c10.cpp - serial/TestSerial_SubView_c11.cpp - serial/TestSerial_SubView_c12.cpp - serial/TestSerial_SubView_c13.cpp - serial/TestSerial_Team.cpp - serial/TestSerial_TeamReductionScan.cpp - serial/TestSerial_TeamScratch.cpp - serial/TestSerial_ViewAPI_a.cpp - serial/TestSerial_ViewAPI_b.cpp - serial/TestSerial_ViewAPI_c.cpp - serial/TestSerial_ViewAPI_d.cpp - serial/TestSerial_ViewAPI_e.cpp - serial/TestSerial_ViewMapping_a.cpp - serial/TestSerial_ViewMapping_b.cpp - serial/TestSerial_ViewMapping_subview.cpp - serial/TestSerial_ViewOfClass.cpp - serial/TestSerial_Crs.cpp - serial/TestSerial_WorkGraph.cpp - COMM serial mpi - NUM_MPI_PROCS 1 - FAIL_REGULAR_EXPRESSION " FAILED " - TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} - ) + IF(KOKKOS_SEPARATE_TESTS) + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_Serial_Atomics + SOURCES + UnitTestMainInit.cpp + serial/TestSerial_AtomicOperations_int.cpp + serial/TestSerial_AtomicOperations_unsignedint.cpp + serial/TestSerial_AtomicOperations_longint.cpp + serial/TestSerial_AtomicOperations_unsignedlongint.cpp + serial/TestSerial_AtomicOperations_longlongint.cpp + serial/TestSerial_AtomicOperations_double.cpp + serial/TestSerial_AtomicOperations_float.cpp + serial/TestSerial_AtomicOperations_complexdouble.cpp + serial/TestSerial_AtomicOperations_complexfloat.cpp + serial/TestSerial_AtomicViews.cpp + serial/TestSerial_Atomics.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_Serial_SubView + SOURCES + UnitTestMainInit.cpp + serial/TestSerial_SubView_a.cpp + serial/TestSerial_SubView_b.cpp + serial/TestSerial_SubView_c01.cpp + serial/TestSerial_SubView_c02.cpp + serial/TestSerial_SubView_c03.cpp + serial/TestSerial_SubView_c04.cpp + serial/TestSerial_SubView_c05.cpp + serial/TestSerial_SubView_c06.cpp + serial/TestSerial_SubView_c07.cpp + serial/TestSerial_SubView_c08.cpp + serial/TestSerial_SubView_c09.cpp + serial/TestSerial_SubView_c10.cpp + serial/TestSerial_SubView_c11.cpp + serial/TestSerial_SubView_c12.cpp + serial/TestSerial_SubView_c13.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_Serial_ViewAPI + SOURCES + UnitTestMainInit.cpp + serial/TestSerial_ViewAPI_a.cpp + serial/TestSerial_ViewAPI_b.cpp + serial/TestSerial_ViewAPI_c.cpp + serial/TestSerial_ViewAPI_d.cpp + serial/TestSerial_ViewAPI_e.cpp + serial/TestSerial_ViewOfClass.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_Serial_ViewMapping + SOURCES + UnitTestMainInit.cpp + serial/TestSerial_ViewMapping_a.cpp + serial/TestSerial_ViewMapping_b.cpp + serial/TestSerial_ViewMapping_subview.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_Serial_Reducers + SOURCES + UnitTestMainInit.cpp + serial/TestSerial_Reductions.cpp + serial/TestSerial_Reducers_a.cpp + serial/TestSerial_Reducers_b.cpp + serial/TestSerial_Reducers_c.cpp + serial/TestSerial_Reducers_d.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_Serial_MDRange + SOURCES + UnitTestMainInit.cpp + serial/TestSerial_MDRange_a.cpp + serial/TestSerial_MDRange_b.cpp + serial/TestSerial_MDRange_c.cpp + serial/TestSerial_MDRange_d.cpp + serial/TestSerial_MDRange_e.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_Serial_Team + SOURCES + UnitTestMainInit.cpp + serial/TestSerial_Team.cpp + serial/TestSerial_TeamReductionScan.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_Serial_Tasking + SOURCES + UnitTestMainInit.cpp + serial/TestSerial_Task.cpp + serial/TestSerial_WorkGraph.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_Serial_Misc + SOURCES + UnitTestMainInit.cpp + serial/TestSerial_Complex.cpp + serial/TestSerial_Init.cpp + serial/TestSerial_Other.cpp + serial/TestSerial_RangePolicy.cpp + serial/TestSerial_Scan.cpp + serial/TestSerial_SharedAlloc.cpp + serial/TestSerial_Crs.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + ELSE() + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_Serial + SOURCES + UnitTestMainInit.cpp + serial/TestSerial_AtomicOperations_int.cpp + serial/TestSerial_AtomicOperations_unsignedint.cpp + serial/TestSerial_AtomicOperations_longint.cpp + serial/TestSerial_AtomicOperations_unsignedlongint.cpp + serial/TestSerial_AtomicOperations_longlongint.cpp + serial/TestSerial_AtomicOperations_double.cpp + serial/TestSerial_AtomicOperations_float.cpp + serial/TestSerial_AtomicOperations_complexdouble.cpp + serial/TestSerial_AtomicOperations_complexfloat.cpp + serial/TestSerial_AtomicViews.cpp + serial/TestSerial_Atomics.cpp + serial/TestSerial_Complex.cpp + serial/TestSerial_Init.cpp + serial/TestSerial_MDRange_a.cpp + serial/TestSerial_MDRange_b.cpp + serial/TestSerial_MDRange_c.cpp + serial/TestSerial_MDRange_d.cpp + serial/TestSerial_MDRange_e.cpp + serial/TestSerial_Other.cpp + serial/TestSerial_RangePolicy.cpp + serial/TestSerial_Reductions.cpp + serial/TestSerial_Reducers_a.cpp + serial/TestSerial_Reducers_b.cpp + serial/TestSerial_Reducers_c.cpp + serial/TestSerial_Reducers_d.cpp + serial/TestSerial_Scan.cpp + serial/TestSerial_SharedAlloc.cpp + serial/TestSerial_SubView_a.cpp + serial/TestSerial_SubView_b.cpp + serial/TestSerial_SubView_c01.cpp + serial/TestSerial_SubView_c02.cpp + serial/TestSerial_SubView_c03.cpp + serial/TestSerial_SubView_c04.cpp + serial/TestSerial_SubView_c05.cpp + serial/TestSerial_SubView_c06.cpp + serial/TestSerial_SubView_c07.cpp + serial/TestSerial_SubView_c08.cpp + serial/TestSerial_SubView_c09.cpp + serial/TestSerial_SubView_c10.cpp + serial/TestSerial_SubView_c11.cpp + serial/TestSerial_SubView_c12.cpp + serial/TestSerial_SubView_c13.cpp + serial/TestSerial_Task.cpp + serial/TestSerial_Team.cpp + serial/TestSerial_TeamReductionScan.cpp + serial/TestSerial_TeamScratch.cpp + serial/TestSerial_ViewAPI_a.cpp + serial/TestSerial_ViewAPI_b.cpp + serial/TestSerial_ViewAPI_c.cpp + serial/TestSerial_ViewAPI_d.cpp + serial/TestSerial_ViewAPI_e.cpp + serial/TestSerial_ViewMapping_a.cpp + serial/TestSerial_ViewMapping_b.cpp + serial/TestSerial_ViewMapping_subview.cpp + serial/TestSerial_ViewOfClass.cpp + serial/TestSerial_Crs.cpp + serial/TestSerial_WorkGraph.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + ENDIF() ENDIF() IF(Kokkos_ENABLE_Pthread) @@ -106,6 +261,8 @@ IF(Kokkos_ENABLE_Pthread) threads/TestThreads_AtomicOperations_longlongint.cpp threads/TestThreads_AtomicOperations_double.cpp threads/TestThreads_AtomicOperations_float.cpp + threads/TestThreads_AtomicOperations_complexdouble.cpp + threads/TestThreads_AtomicOperations_complexfloat.cpp threads/TestThreads_AtomicViews.cpp threads/TestThreads_Atomics.cpp threads/TestThreads_Complex.cpp @@ -161,75 +318,305 @@ IF(Kokkos_ENABLE_Pthread) ENDIF() IF(Kokkos_ENABLE_OpenMP) + IF(KOKKOS_SEPARATE_TESTS) + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_OpenMP_Atomics + SOURCES + UnitTestMainInit.cpp + openmp/TestOpenMP_AtomicOperations_int.cpp + openmp/TestOpenMP_AtomicOperations_unsignedint.cpp + openmp/TestOpenMP_AtomicOperations_longint.cpp + openmp/TestOpenMP_AtomicOperations_unsignedlongint.cpp + openmp/TestOpenMP_AtomicOperations_longlongint.cpp + openmp/TestOpenMP_AtomicOperations_double.cpp + openmp/TestOpenMP_AtomicOperations_float.cpp + openmp/TestOpenMP_AtomicOperations_complexdouble.cpp + openmp/TestOpenMP_AtomicOperations_complexfloat.cpp + openmp/TestOpenMP_AtomicViews.cpp + openmp/TestOpenMP_Atomics.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_OpenMP_SubView + SOURCES + UnitTestMainInit.cpp + openmp/TestOpenMP_SubView_a.cpp + openmp/TestOpenMP_SubView_b.cpp + openmp/TestOpenMP_SubView_c01.cpp + openmp/TestOpenMP_SubView_c02.cpp + openmp/TestOpenMP_SubView_c03.cpp + openmp/TestOpenMP_SubView_c04.cpp + openmp/TestOpenMP_SubView_c05.cpp + openmp/TestOpenMP_SubView_c06.cpp + openmp/TestOpenMP_SubView_c07.cpp + openmp/TestOpenMP_SubView_c08.cpp + openmp/TestOpenMP_SubView_c09.cpp + openmp/TestOpenMP_SubView_c10.cpp + openmp/TestOpenMP_SubView_c11.cpp + openmp/TestOpenMP_SubView_c12.cpp + openmp/TestOpenMP_SubView_c13.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_OpenMP_ViewAPI + SOURCES + UnitTestMainInit.cpp + openmp/TestOpenMP_ViewAPI_a.cpp + openmp/TestOpenMP_ViewAPI_b.cpp + openmp/TestOpenMP_ViewAPI_c.cpp + openmp/TestOpenMP_ViewAPI_d.cpp + openmp/TestOpenMP_ViewAPI_e.cpp + openmp/TestOpenMP_ViewOfClass.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_OpenMP_ViewMapping + SOURCES + UnitTestMainInit.cpp + openmp/TestOpenMP_ViewMapping_a.cpp + openmp/TestOpenMP_ViewMapping_b.cpp + openmp/TestOpenMP_ViewMapping_subview.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_OpenMP_Reducers + SOURCES + UnitTestMainInit.cpp + openmp/TestOpenMP_Reductions.cpp + openmp/TestOpenMP_Reducers_a.cpp + openmp/TestOpenMP_Reducers_b.cpp + openmp/TestOpenMP_Reducers_c.cpp + openmp/TestOpenMP_Reducers_d.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_OpenMP_MDRange + SOURCES + UnitTestMainInit.cpp + openmp/TestOpenMP_MDRange_a.cpp + openmp/TestOpenMP_MDRange_b.cpp + openmp/TestOpenMP_MDRange_c.cpp + openmp/TestOpenMP_MDRange_d.cpp + openmp/TestOpenMP_MDRange_e.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_OpenMP_Team + SOURCES + UnitTestMainInit.cpp + openmp/TestOpenMP_Team.cpp + openmp/TestOpenMP_TeamReductionScan.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_OpenMP_Tasking + SOURCES + UnitTestMainInit.cpp + openmp/TestOpenMP_Task.cpp + openmp/TestOpenMP_WorkGraph.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_OpenMP_Misc + SOURCES + UnitTestMainInit.cpp + openmp/TestOpenMP_Complex.cpp + openmp/TestOpenMP_Init.cpp + openmp/TestOpenMP_Other.cpp + openmp/TestOpenMP_RangePolicy.cpp + openmp/TestOpenMP_Scan.cpp + openmp/TestOpenMP_SharedAlloc.cpp + openmp/TestOpenMP_Crs.cpp + openmp/TestOpenMP_UniqueToken.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_OpenMPInterOp + SOURCES + UnitTestMain.cpp + openmp/TestOpenMP_InterOp.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + ELSE() + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_OpenMP + SOURCES + UnitTestMainInit.cpp + openmp/TestOpenMP_AtomicOperations_int.cpp + openmp/TestOpenMP_AtomicOperations_unsignedint.cpp + openmp/TestOpenMP_AtomicOperations_longint.cpp + openmp/TestOpenMP_AtomicOperations_unsignedlongint.cpp + openmp/TestOpenMP_AtomicOperations_longlongint.cpp + openmp/TestOpenMP_AtomicOperations_double.cpp + openmp/TestOpenMP_AtomicOperations_float.cpp + openmp/TestOpenMP_AtomicOperations_complexdouble.cpp + openmp/TestOpenMP_AtomicOperations_complexfloat.cpp + openmp/TestOpenMP_AtomicViews.cpp + openmp/TestOpenMP_Atomics.cpp + openmp/TestOpenMP_Complex.cpp + openmp/TestOpenMP_Init.cpp + openmp/TestOpenMP_MDRange_a.cpp + openmp/TestOpenMP_MDRange_b.cpp + openmp/TestOpenMP_MDRange_c.cpp + openmp/TestOpenMP_MDRange_d.cpp + openmp/TestOpenMP_MDRange_e.cpp + openmp/TestOpenMP_Other.cpp + openmp/TestOpenMP_RangePolicy.cpp + openmp/TestOpenMP_Reductions.cpp + openmp/TestOpenMP_Reducers_a.cpp + openmp/TestOpenMP_Reducers_b.cpp + openmp/TestOpenMP_Reducers_c.cpp + openmp/TestOpenMP_Reducers_d.cpp + openmp/TestOpenMP_Scan.cpp + openmp/TestOpenMP_SharedAlloc.cpp + openmp/TestOpenMP_SubView_a.cpp + openmp/TestOpenMP_SubView_b.cpp + openmp/TestOpenMP_SubView_c01.cpp + openmp/TestOpenMP_SubView_c02.cpp + openmp/TestOpenMP_SubView_c03.cpp + openmp/TestOpenMP_SubView_c04.cpp + openmp/TestOpenMP_SubView_c05.cpp + openmp/TestOpenMP_SubView_c06.cpp + openmp/TestOpenMP_SubView_c07.cpp + openmp/TestOpenMP_SubView_c08.cpp + openmp/TestOpenMP_SubView_c09.cpp + openmp/TestOpenMP_SubView_c10.cpp + openmp/TestOpenMP_SubView_c11.cpp + openmp/TestOpenMP_SubView_c12.cpp + openmp/TestOpenMP_SubView_c13.cpp + openmp/TestOpenMP_Task.cpp + openmp/TestOpenMP_Team.cpp + openmp/TestOpenMP_TeamReductionScan.cpp + openmp/TestOpenMP_ViewAPI_a.cpp + openmp/TestOpenMP_ViewAPI_b.cpp + openmp/TestOpenMP_ViewAPI_c.cpp + openmp/TestOpenMP_ViewAPI_d.cpp + openmp/TestOpenMP_ViewAPI_e.cpp + openmp/TestOpenMP_ViewMapping_a.cpp + openmp/TestOpenMP_ViewMapping_b.cpp + openmp/TestOpenMP_ViewMapping_subview.cpp + openmp/TestOpenMP_ViewOfClass.cpp + openmp/TestOpenMP_Crs.cpp + openmp/TestOpenMP_WorkGraph.cpp + openmp/TestOpenMP_UniqueToken.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_OpenMPInterOp + SOURCES + UnitTestMain.cpp + openmp/TestOpenMP_InterOp.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + ENDIF() +ENDIF() + +IF(Kokkos_ENABLE_HPX) TRIBITS_ADD_EXECUTABLE_AND_TEST( - UnitTest_OpenMP + UnitTest_HPX SOURCES UnitTestMainInit.cpp - openmp/TestOpenMP_AtomicOperations_int.cpp - openmp/TestOpenMP_AtomicOperations_unsignedint.cpp - openmp/TestOpenMP_AtomicOperations_longint.cpp - openmp/TestOpenMP_AtomicOperations_unsignedlongint.cpp - openmp/TestOpenMP_AtomicOperations_longlongint.cpp - openmp/TestOpenMP_AtomicOperations_double.cpp - openmp/TestOpenMP_AtomicOperations_float.cpp - openmp/TestOpenMP_AtomicViews.cpp - openmp/TestOpenMP_Atomics.cpp - openmp/TestOpenMP_Complex.cpp - openmp/TestOpenMP_Init.cpp - openmp/TestOpenMP_MDRange_a.cpp - openmp/TestOpenMP_MDRange_b.cpp - openmp/TestOpenMP_MDRange_c.cpp - openmp/TestOpenMP_MDRange_d.cpp - openmp/TestOpenMP_MDRange_e.cpp - openmp/TestOpenMP_Other.cpp - openmp/TestOpenMP_RangePolicy.cpp - openmp/TestOpenMP_Reductions.cpp - openmp/TestOpenMP_Reducers_a.cpp - openmp/TestOpenMP_Reducers_b.cpp - openmp/TestOpenMP_Reducers_c.cpp - openmp/TestOpenMP_Reducers_d.cpp - openmp/TestOpenMP_Scan.cpp - openmp/TestOpenMP_SharedAlloc.cpp - openmp/TestOpenMP_SubView_a.cpp - openmp/TestOpenMP_SubView_b.cpp - openmp/TestOpenMP_SubView_c01.cpp - openmp/TestOpenMP_SubView_c02.cpp - openmp/TestOpenMP_SubView_c03.cpp - openmp/TestOpenMP_SubView_c04.cpp - openmp/TestOpenMP_SubView_c05.cpp - openmp/TestOpenMP_SubView_c06.cpp - openmp/TestOpenMP_SubView_c07.cpp - openmp/TestOpenMP_SubView_c08.cpp - openmp/TestOpenMP_SubView_c09.cpp - openmp/TestOpenMP_SubView_c10.cpp - openmp/TestOpenMP_SubView_c11.cpp - openmp/TestOpenMP_SubView_c12.cpp - openmp/TestOpenMP_SubView_c13.cpp - openmp/TestOpenMP_Task.cpp - openmp/TestOpenMP_Team.cpp - openmp/TestOpenMP_TeamReductionScan.cpp - openmp/TestOpenMP_ViewAPI_a.cpp - openmp/TestOpenMP_ViewAPI_b.cpp - openmp/TestOpenMP_ViewAPI_c.cpp - openmp/TestOpenMP_ViewAPI_d.cpp - openmp/TestOpenMP_ViewAPI_e.cpp - openmp/TestOpenMP_ViewMapping_a.cpp - openmp/TestOpenMP_ViewMapping_b.cpp - openmp/TestOpenMP_ViewMapping_subview.cpp - openmp/TestOpenMP_ViewOfClass.cpp - openmp/TestOpenMP_Crs.cpp - openmp/TestOpenMP_WorkGraph.cpp - openmp/TestOpenMP_UniqueToken.cpp + hpx/TestHPX_AtomicOperations_int.cpp + hpx/TestHPX_AtomicOperations_unsignedint.cpp + hpx/TestHPX_AtomicOperations_longint.cpp + hpx/TestHPX_AtomicOperations_unsignedlongint.cpp + hpx/TestHPX_AtomicOperations_longlongint.cpp + hpx/TestHPX_AtomicOperations_double.cpp + hpx/TestHPX_AtomicOperations_float.cpp + hpx/TestHPX_AtomicViews.cpp + hpx/TestHPX_Atomics.cpp + hpx/TestHPX_Complex.cpp + hpx/TestHPX_Init.cpp + hpx/TestHPX_MDRange_a.cpp + hpx/TestHPX_MDRange_b.cpp + hpx/TestHPX_MDRange_c.cpp + hpx/TestHPX_MDRange_d.cpp + hpx/TestHPX_MDRange_e.cpp + hpx/TestHPX_Other.cpp + hpx/TestHPX_RangePolicy.cpp + hpx/TestHPX_Reductions.cpp + hpx/TestHPX_Reducers_a.cpp + hpx/TestHPX_Reducers_b.cpp + hpx/TestHPX_Reducers_c.cpp + hpx/TestHPX_Reducers_d.cpp + hpx/TestHPX_Scan.cpp + hpx/TestHPX_SharedAlloc.cpp + hpx/TestHPX_SubView_a.cpp + hpx/TestHPX_SubView_b.cpp + hpx/TestHPX_SubView_c01.cpp + hpx/TestHPX_SubView_c02.cpp + hpx/TestHPX_SubView_c03.cpp + hpx/TestHPX_SubView_c04.cpp + hpx/TestHPX_SubView_c05.cpp + hpx/TestHPX_SubView_c06.cpp + hpx/TestHPX_SubView_c07.cpp + hpx/TestHPX_SubView_c08.cpp + hpx/TestHPX_SubView_c09.cpp + hpx/TestHPX_SubView_c10.cpp + hpx/TestHPX_SubView_c11.cpp + hpx/TestHPX_SubView_c12.cpp + hpx/TestHPX_SubView_c13.cpp + hpx/TestHPX_Task.cpp + hpx/TestHPX_Team.cpp + hpx/TestHPX_TeamReductionScan.cpp + hpx/TestHPX_ViewAPI_a.cpp + hpx/TestHPX_ViewAPI_b.cpp + hpx/TestHPX_ViewAPI_c.cpp + hpx/TestHPX_ViewAPI_d.cpp + hpx/TestHPX_ViewAPI_e.cpp + hpx/TestHPX_ViewMapping_a.cpp + hpx/TestHPX_ViewMapping_b.cpp + hpx/TestHPX_ViewMapping_subview.cpp + hpx/TestHPX_ViewOfClass.cpp + hpx/TestHPX_Crs.cpp + hpx/TestHPX_WorkGraph.cpp + hpx/TestHPX_UniqueToken.cpp COMM serial mpi NUM_MPI_PROCS 1 FAIL_REGULAR_EXPRESSION " FAILED " TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} ) TRIBITS_ADD_EXECUTABLE_AND_TEST( - UnitTest_OpenMPInterOp + UnitTest_HPXInterOp SOURCES UnitTestMain.cpp - openmp/TestOpenMP_InterOp.cpp + hpx/TestHPX_InterOp.cpp COMM serial mpi NUM_MPI_PROCS 1 FAIL_REGULAR_EXPRESSION " FAILED " @@ -310,6 +697,8 @@ IF(Kokkos_ENABLE_Cuda) cuda/TestCuda_AtomicOperations_longlongint.cpp cuda/TestCuda_AtomicOperations_double.cpp cuda/TestCuda_AtomicOperations_float.cpp + cuda/TestCuda_AtomicOperations_complexdouble.cpp + cuda/TestCuda_AtomicOperations_complexfloat.cpp cuda/TestCuda_AtomicViews.cpp cuda/TestCuda_Atomics.cpp cuda/TestCuda_Complex.cpp @@ -366,10 +755,20 @@ IF(Kokkos_ENABLE_Cuda) TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} ) TRIBITS_ADD_EXECUTABLE_AND_TEST( - UnitTest_CudaInterOp + UnitTest_CudaInterOpInit + SOURCES + UnitTestMain.cpp + cuda/TestCuda_InterOp_Init.cpp + COMM serial mpi + NUM_MPI_PROCS 1 + FAIL_REGULAR_EXPRESSION " FAILED " + TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} + ) + TRIBITS_ADD_EXECUTABLE_AND_TEST( + UnitTest_CudaInterOpStreams SOURCES UnitTestMain.cpp - cuda/TestCuda_InterOp.cpp + cuda/TestCuda_InterOp_Streams.cpp COMM serial mpi NUM_MPI_PROCS 1 FAIL_REGULAR_EXPRESSION " FAILED " @@ -456,3 +855,40 @@ TRIBITS_ADD_EXECUTABLE_AND_TEST( FAIL_REGULAR_EXPRESSION " FAILED " TESTONLYLIBS kokkos_gtest ${TEST_LINK_TARGETS} ) + +# +# Compile-only tests +# +FUNCTION(KOKKOS_ADD_COMPILE_TEST TEST_NAME) + + SET(options LINK_KOKKOS) + SET(oneValueArgs) + SET(multiValueArgs) + + CMAKE_PARSE_ARGUMENTS(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + + IF(PARSE_LINK_KOKKOS) + SET(libs ${TEST_LINK_TARGETS}) + ELSE() + SET(libs) + ENDIF() + + TRIBITS_ADD_EXECUTABLE( + ${TEST_NAME} + TESTONLY + COMM serial + TESTONLYLIBS ${libs} + ${PARSE_UNPARSED_ARGUMENTS} + ) + + target_compile_options( + ${PACKAGE_NAME}_${TEST_NAME} + PUBLIC $<$:${KOKKOS_CXX_FLAGS}> + ) + target_link_libraries( + ${PACKAGE_NAME}_${TEST_NAME} + PUBLIC ${KOKKOS_LD_FLAGS} + ) + +ENDFUNCTION() + diff --git a/lib/kokkos/core/unit_test/Makefile b/lib/kokkos/core/unit_test/Makefile index 72832271c8..5a69213108 100644 --- a/lib/kokkos/core/unit_test/Makefile +++ b/lib/kokkos/core/unit_test/Makefile @@ -9,6 +9,7 @@ vpath %.cpp ${KOKKOS_PATH}/core/unit_test/threads vpath %.cpp ${KOKKOS_PATH}/core/unit_test/openmp vpath %.cpp ${KOKKOS_PATH}/core/unit_test/openmptarget vpath %.cpp ${KOKKOS_PATH}/core/unit_test/qthreads +vpath %.cpp ${KOKKOS_PATH}/core/unit_test/hpx vpath %.cpp ${KOKKOS_PATH}/core/unit_test/cuda vpath %.cpp ${KOKKOS_PATH}/core/unit_test/rocm @@ -38,253 +39,310 @@ TEST_TARGETS = TARGETS = ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) - OBJ_CUDA = UnitTestMainInit.o gtest-all.o - OBJ_CUDA += TestCuda_Init.o - OBJ_CUDA += TestCuda_SharedAlloc.o TestCudaUVM_SharedAlloc.o TestCudaHostPinned_SharedAlloc.o - OBJ_CUDA += TestCuda_RangePolicy.o - OBJ_CUDA += TestCuda_ViewAPI_a.o TestCuda_ViewAPI_b.o TestCuda_ViewAPI_c.o TestCuda_ViewAPI_d.o TestCuda_ViewAPI_e.o - OBJ_CUDA += TestCuda_ViewMapping_a.o TestCuda_ViewMapping_b.o TestCuda_ViewMapping_subview.o TestCuda_ViewLayoutStrideAssignment.o - OBJ_CUDA += TestCudaUVM_ViewCopy.o TestCudaUVM_ViewAPI_a.o TestCudaUVM_ViewAPI_b.o TestCudaUVM_ViewAPI_c.o TestCudaUVM_ViewAPI_d.o TestCudaUVM_ViewAPI_e.o - OBJ_CUDA += TestCudaUVM_ViewMapping_a.o TestCudaUVM_ViewMapping_b.o TestCudaUVM_ViewMapping_subview.o - OBJ_CUDA += TestCudaHostPinned_ViewCopy.o TestCudaHostPinned_ViewAPI_a.o TestCudaHostPinned_ViewAPI_b.o TestCudaHostPinned_ViewAPI_c.o TestCudaHostPinned_ViewAPI_d.o TestCudaHostPinned_ViewAPI_e.o - OBJ_CUDA += TestCudaHostPinned_ViewMapping_a.o TestCudaHostPinned_ViewMapping_b.o TestCudaHostPinned_ViewMapping_subview.o - OBJ_CUDA += TestCuda_View_64bit.o - OBJ_CUDA += TestCuda_ViewOfClass.o - OBJ_CUDA += TestCuda_SubView_a.o TestCuda_SubView_b.o - OBJ_CUDA += TestCuda_SubView_c01.o TestCuda_SubView_c02.o TestCuda_SubView_c03.o - OBJ_CUDA += TestCuda_SubView_c04.o TestCuda_SubView_c05.o TestCuda_SubView_c06.o - OBJ_CUDA += TestCuda_SubView_c07.o TestCuda_SubView_c08.o TestCuda_SubView_c09.o - OBJ_CUDA += TestCuda_SubView_c10.o TestCuda_SubView_c11.o TestCuda_SubView_c12.o - OBJ_CUDA += TestCuda_SubView_c13.o - OBJ_CUDA += TestCuda_Reductions.o TestCuda_Scan.o - OBJ_CUDA += TestCuda_Reductions_DeviceView.o - OBJ_CUDA += TestCuda_Reducers_a.o TestCuda_Reducers_b.o TestCuda_Reducers_c.o TestCuda_Reducers_d.o - OBJ_CUDA += TestCuda_Complex.o - OBJ_CUDA += TestCuda_AtomicOperations_int.o TestCuda_AtomicOperations_unsignedint.o TestCuda_AtomicOperations_longint.o - OBJ_CUDA += TestCuda_AtomicOperations_unsignedlongint.o TestCuda_AtomicOperations_longlongint.o TestCuda_AtomicOperations_double.o TestCuda_AtomicOperations_float.o - OBJ_CUDA += TestCuda_AtomicViews.o TestCuda_Atomics.o - OBJ_CUDA += TestCuda_Team.o TestCuda_TeamScratch.o - OBJ_CUDA += TestCuda_TeamReductionScan.o TestCuda_TeamTeamSize.o - OBJ_CUDA += TestCuda_Other.o - OBJ_CUDA += TestCuda_MDRange_a.o TestCuda_MDRange_b.o TestCuda_MDRange_c.o TestCuda_MDRange_d.o TestCuda_MDRange_e.o - OBJ_CUDA += TestCuda_Crs.o - OBJ_CUDA += TestCuda_Task.o TestCuda_WorkGraph.o - OBJ_CUDA += TestCuda_Spaces.o - OBJ_CUDA += TestCuda_UniqueToken.o - - TARGETS += KokkosCore_UnitTest_Cuda - TARGETS += KokkosCore_UnitTest_CudaInterOp - TEST_TARGETS += test-cuda + OBJ_CUDA = UnitTestMainInit.o gtest-all.o + OBJ_CUDA += TestCuda_Init.o + OBJ_CUDA += TestCuda_SharedAlloc.o TestCudaUVM_SharedAlloc.o TestCudaHostPinned_SharedAlloc.o + OBJ_CUDA += TestCuda_RangePolicy.o + OBJ_CUDA += TestCuda_ViewAPI_a.o TestCuda_ViewAPI_b.o TestCuda_ViewAPI_c.o TestCuda_ViewAPI_d.o TestCuda_ViewAPI_e.o + OBJ_CUDA += TestCuda_DeepCopyAlignment.o + OBJ_CUDA += TestCuda_ViewMapping_a.o TestCuda_ViewMapping_b.o TestCuda_ViewMapping_subview.o TestCuda_ViewLayoutStrideAssignment.o + OBJ_CUDA += TestCudaUVM_ViewCopy.o TestCudaUVM_ViewAPI_a.o TestCudaUVM_ViewAPI_b.o TestCudaUVM_ViewAPI_c.o TestCudaUVM_ViewAPI_d.o TestCudaUVM_ViewAPI_e.o + OBJ_CUDA += TestCudaUVM_ViewMapping_a.o TestCudaUVM_ViewMapping_b.o TestCudaUVM_ViewMapping_subview.o + OBJ_CUDA += TestCudaHostPinned_ViewCopy.o TestCudaHostPinned_ViewAPI_a.o TestCudaHostPinned_ViewAPI_b.o TestCudaHostPinned_ViewAPI_c.o TestCudaHostPinned_ViewAPI_d.o TestCudaHostPinned_ViewAPI_e.o + OBJ_CUDA += TestCudaHostPinned_ViewMapping_a.o TestCudaHostPinned_ViewMapping_b.o TestCudaHostPinned_ViewMapping_subview.o + OBJ_CUDA += TestCuda_View_64bit.o + OBJ_CUDA += TestCuda_ViewOfClass.o + OBJ_CUDA += TestCuda_SubView_a.o TestCuda_SubView_b.o + OBJ_CUDA += TestCuda_SubView_c01.o TestCuda_SubView_c02.o TestCuda_SubView_c03.o + OBJ_CUDA += TestCuda_SubView_c04.o TestCuda_SubView_c05.o TestCuda_SubView_c06.o + OBJ_CUDA += TestCuda_SubView_c07.o TestCuda_SubView_c08.o TestCuda_SubView_c09.o + OBJ_CUDA += TestCuda_SubView_c10.o TestCuda_SubView_c11.o TestCuda_SubView_c12.o + OBJ_CUDA += TestCuda_SubView_c13.o + OBJ_CUDA += TestCuda_Reductions.o TestCuda_Scan.o + OBJ_CUDA += TestCuda_Reductions_DeviceView.o + OBJ_CUDA += TestCuda_Reducers_a.o TestCuda_Reducers_b.o TestCuda_Reducers_c.o TestCuda_Reducers_d.o + OBJ_CUDA += TestCuda_Complex.o + OBJ_CUDA += TestCuda_AtomicOperations_int.o TestCuda_AtomicOperations_unsignedint.o TestCuda_AtomicOperations_longint.o + OBJ_CUDA += TestCuda_AtomicOperations_unsignedlongint.o TestCuda_AtomicOperations_longlongint.o TestCuda_AtomicOperations_double.o TestCuda_AtomicOperations_float.o + OBJ_CUDA += TestCuda_AtomicOperations_complexfloat.o TestCuda_AtomicOperations_complexdouble.o + OBJ_CUDA += TestCuda_AtomicViews.o TestCuda_Atomics.o + OBJ_CUDA += TestCuda_Team.o TestCuda_TeamScratch.o + OBJ_CUDA += TestCuda_TeamReductionScan.o TestCuda_TeamTeamSize.o + OBJ_CUDA += TestCuda_TeamVectorRange.o + OBJ_CUDA += TestCuda_Other.o + OBJ_CUDA += TestCuda_MDRange_a.o TestCuda_MDRange_b.o TestCuda_MDRange_c.o TestCuda_MDRange_d.o TestCuda_MDRange_e.o + OBJ_CUDA += TestCuda_Crs.o + OBJ_CUDA += TestCuda_Task.o TestCuda_WorkGraph.o + OBJ_CUDA += TestCuda_Spaces.o + OBJ_CUDA += TestCuda_UniqueToken.o + OBJ_CUDA += TestCuda_LocalDeepCopy.o + + TARGETS += KokkosCore_UnitTest_Cuda + TARGETS += KokkosCore_UnitTest_CudaInterOpInit + TARGETS += KokkosCore_UnitTest_CudaInterOpStreams + TEST_TARGETS += test-cuda endif ifeq ($(KOKKOS_INTERNAL_USE_ROCM), 1) - OBJ_ROCM = UnitTestMainInit.o gtest-all.o - OBJ_ROCM += TestROCm_Init.o - OBJ_ROCM += TestROCm_Complex.o - OBJ_ROCM += TestROCm_RangePolicy.o - OBJ_ROCM += TestROCm_AtomicOperations_int.o TestROCm_AtomicOperations_unsignedint.o TestROCm_AtomicOperations_longint.o - OBJ_ROCM += TestROCm_AtomicOperations_unsignedlongint.o TestROCm_AtomicOperations_longlongint.o TestROCm_AtomicOperations_double.o TestROCm_AtomicOperations_float.o - OBJ_ROCM += TestROCm_Atomics.o - OBJ_ROCM += TestROCm_AtomicViews.o - OBJ_ROCM += TestROCm_Other.o - OBJ_ROCM += TestROCm_MDRange_a.o TestROCm_MDRange_b.o TestROCm_MDRange_c.o TestROCm_MDRange_d.o TestROCm_MDRange_e.o - OBJ_ROCM += TestROCm_MDRangeReduce_a.o TestROCm_MDRangeReduce_b.o TestROCm_MDRangeReduce_c.o TestROCm_MDRangeReduce_d.o TestROCm_MDRangeReduce_e.o - OBJ_ROCM += TestROCm_Reductions.o - OBJ_ROCM += TestROCm_Reducers_a.o TestROCm_Reducers_b.o TestROCm_Reducers_c.o TestROCm_Reducers_d.o - OBJ_ROCM += TestROCm_Scan.o - OBJ_ROCM += TestROCm_SharedAlloc.o - OBJ_ROCM += TestROCm_SubView_a.o - OBJ_ROCM += TestROCm_SubView_b.o - OBJ_ROCM += TestROCm_SubView_c01.o - OBJ_ROCM += TestROCm_SubView_c02.o - OBJ_ROCM += TestROCm_SubView_c03.o - OBJ_ROCM += TestROCm_SubView_c04.o - OBJ_ROCM += TestROCm_SubView_c05.o - OBJ_ROCM += TestROCm_SubView_c06.o - OBJ_ROCM += TestROCm_SubView_c07.o - OBJ_ROCM += TestROCm_SubView_c08.o - OBJ_ROCM += TestROCm_SubView_c09.o - OBJ_ROCM += TestROCm_SubView_c10.o - OBJ_ROCM += TestROCm_SubView_c11.o - OBJ_ROCM += TestROCm_SubView_c12.o - OBJ_ROCM += TestROCm_SubView_c13.o - OBJ_ROCM += TestROCm_Team.o - OBJ_ROCM += TestROCm_TeamReductionScan.o - OBJ_ROCM += TestROCm_TeamScratch.o TestROCm_TeamTeamSize.o - OBJ_ROCM += TestROCm_ViewAPI_a.o TestROCm_ViewAPI_b.o TestROCm_ViewAPI_c.o TestROCm_ViewAPI_d.o TestROCm_ViewAPI_e.o - OBJ_ROCM += TestROCm_ViewMapping_a.o - OBJ_ROCM += TestROCm_ViewMapping_b.o - OBJ_ROCM += TestROCm_ViewMapping_subview.o - OBJ_ROCM += TestROCmHostPinned_ViewCopy.o TestROCmHostPinned_ViewAPI_a.o TestROCmHostPinned_ViewAPI_b.o TestROCmHostPinned_ViewAPI_c.o TestROCmHostPinned_ViewAPI_d.o TestROCmHostPinned_ViewAPI_e.o - OBJ_ROCM += TestROCmHostPinned_View_64bit.o - OBJ_ROCM += TestROCmHostPinned_ViewMapping_a.o - OBJ_ROCM += TestROCmHostPinned_ViewMapping_b.o - OBJ_ROCM += TestROCmHostPinned_ViewMapping_subview.o - OBJ_ROCM += TestROCm_ViewOfClass.o - OBJ_ROCM += TestROCm_Spaces.o - OBJ_ROCM += TestROCm_Crs.o - - TARGETS += KokkosCore_UnitTest_ROCm - TEST_TARGETS += test-rocm + OBJ_ROCM = UnitTestMainInit.o gtest-all.o + OBJ_ROCM += TestROCm_Init.o + OBJ_ROCM += TestROCm_Complex.o + OBJ_ROCM += TestROCm_RangePolicy.o + OBJ_ROCM += TestROCm_AtomicOperations_int.o TestROCm_AtomicOperations_unsignedint.o TestROCm_AtomicOperations_longint.o + OBJ_ROCM += TestROCm_AtomicOperations_unsignedlongint.o TestROCm_AtomicOperations_longlongint.o TestROCm_AtomicOperations_double.o TestROCm_AtomicOperations_float.o + OBJ_ROCM += TestROCm_Atomics.o + OBJ_ROCM += TestROCm_AtomicViews.o + OBJ_ROCM += TestROCm_Other.o + OBJ_ROCM += TestROCm_MDRange_a.o TestROCm_MDRange_b.o TestROCm_MDRange_c.o TestROCm_MDRange_d.o TestROCm_MDRange_e.o + OBJ_ROCM += TestROCm_MDRangeReduce_a.o TestROCm_MDRangeReduce_b.o TestROCm_MDRangeReduce_c.o TestROCm_MDRangeReduce_d.o TestROCm_MDRangeReduce_e.o + OBJ_ROCM += TestROCm_Reductions.o + OBJ_ROCM += TestROCm_Reducers_a.o TestROCm_Reducers_b.o TestROCm_Reducers_c.o TestROCm_Reducers_d.o + OBJ_ROCM += TestROCm_Scan.o + OBJ_ROCM += TestROCm_SharedAlloc.o + OBJ_ROCM += TestROCm_SubView_a.o + OBJ_ROCM += TestROCm_SubView_b.o + OBJ_ROCM += TestROCm_SubView_c01.o + OBJ_ROCM += TestROCm_SubView_c02.o + OBJ_ROCM += TestROCm_SubView_c03.o + OBJ_ROCM += TestROCm_SubView_c04.o + OBJ_ROCM += TestROCm_SubView_c05.o + OBJ_ROCM += TestROCm_SubView_c06.o + OBJ_ROCM += TestROCm_SubView_c07.o + OBJ_ROCM += TestROCm_SubView_c08.o + OBJ_ROCM += TestROCm_SubView_c09.o + OBJ_ROCM += TestROCm_SubView_c10.o + OBJ_ROCM += TestROCm_SubView_c11.o + OBJ_ROCM += TestROCm_SubView_c12.o + OBJ_ROCM += TestROCm_SubView_c13.o + OBJ_ROCM += TestROCm_Team.o + OBJ_ROCM += TestROCm_TeamReductionScan.o + OBJ_ROCM += TestROCm_TeamScratch.o TestROCm_TeamTeamSize.o + OBJ_ROCM += TestROCm_ViewAPI_a.o TestROCm_ViewAPI_b.o TestROCm_ViewAPI_c.o TestROCm_ViewAPI_d.o TestROCm_ViewAPI_e.o + OBJ_ROCM += TestROCm_DeepCopyAlignment.o + OBJ_ROCM += TestROCm_ViewMapping_a.o + OBJ_ROCM += TestROCm_ViewMapping_b.o + OBJ_ROCM += TestROCm_ViewMapping_subview.o + OBJ_ROCM += TestROCmHostPinned_ViewCopy.o TestROCmHostPinned_ViewAPI_a.o TestROCmHostPinned_ViewAPI_b.o TestROCmHostPinned_ViewAPI_c.o TestROCmHostPinned_ViewAPI_d.o TestROCmHostPinned_ViewAPI_e.o + OBJ_ROCM += TestROCmHostPinned_View_64bit.o + OBJ_ROCM += TestROCmHostPinned_ViewMapping_a.o + OBJ_ROCM += TestROCmHostPinned_ViewMapping_b.o + OBJ_ROCM += TestROCmHostPinned_ViewMapping_subview.o + OBJ_ROCM += TestROCm_ViewOfClass.o + OBJ_ROCM += TestROCm_Spaces.o + OBJ_ROCM += TestROCm_Crs.o + + TARGETS += KokkosCore_UnitTest_ROCm + TEST_TARGETS += test-rocm endif ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 1) - - OBJ_THREADS = UnitTestMainInit.o gtest-all.o - OBJ_THREADS += TestThreads_Init.o - OBJ_THREADS += TestThreads_SharedAlloc.o - OBJ_THREADS += TestThreads_RangePolicy.o + OBJ_THREADS = UnitTestMainInit.o gtest-all.o + OBJ_THREADS += TestThreads_Init.o + OBJ_THREADS += TestThreads_SharedAlloc.o + OBJ_THREADS += TestThreads_RangePolicy.o OBJ_THREADS += TestThreads_View_64bit.o - OBJ_THREADS += TestThreads_ViewAPI_a.o TestThreads_ViewAPI_b.o TestThreads_ViewAPI_c.o TestThreads_ViewAPI_d.o TestThreads_ViewAPI_e.o - OBJ_THREADS += TestThreads_ViewMapping_a.o TestThreads_ViewMapping_b.o TestThreads_ViewMapping_subview.o TestThreads_ViewLayoutStrideAssignment.o - OBJ_THREADS += TestThreads_ViewOfClass.o - OBJ_THREADS += TestThreads_SubView_a.o TestThreads_SubView_b.o - OBJ_THREADS += TestThreads_SubView_c01.o TestThreads_SubView_c02.o TestThreads_SubView_c03.o - OBJ_THREADS += TestThreads_SubView_c04.o TestThreads_SubView_c05.o TestThreads_SubView_c06.o - OBJ_THREADS += TestThreads_SubView_c07.o TestThreads_SubView_c08.o TestThreads_SubView_c09.o - OBJ_THREADS += TestThreads_SubView_c10.o TestThreads_SubView_c11.o TestThreads_SubView_c12.o - OBJ_THREADS += TestThreads_Reductions.o TestThreads_Scan.o - OBJ_THREADS += TestThreads_Reductions_DeviceView.o - OBJ_THREADS += TestThreads_Reducers_a.o TestThreads_Reducers_b.o TestThreads_Reducers_c.o TestThreads_Reducers_d.o - OBJ_THREADS += TestThreads_Complex.o - OBJ_THREADS += TestThreads_AtomicOperations_int.o TestThreads_AtomicOperations_unsignedint.o TestThreads_AtomicOperations_longint.o - OBJ_THREADS += TestThreads_AtomicOperations_unsignedlongint.o TestThreads_AtomicOperations_longlongint.o TestThreads_AtomicOperations_double.o TestThreads_AtomicOperations_float.o - OBJ_THREADS += TestThreads_AtomicViews.o TestThreads_Atomics.o - OBJ_THREADS += TestThreads_Team.o TestThreads_TeamScratch.o TestThreads_TeamTeamSize.o - OBJ_THREADS += TestThreads_TeamReductionScan.o - OBJ_THREADS += TestThreads_Other.o - OBJ_THREADS += TestThreads_MDRange_a.o TestThreads_MDRange_b.o TestThreads_MDRange_c.o TestThreads_MDRange_d.o TestThreads_MDRange_e.o - - TARGETS += KokkosCore_UnitTest_Threads - - TEST_TARGETS += test-threads + OBJ_THREADS += TestThreads_ViewAPI_a.o TestThreads_ViewAPI_b.o TestThreads_ViewAPI_c.o TestThreads_ViewAPI_d.o TestThreads_ViewAPI_e.o + OBJ_THREADS += TestThreads_DeepCopyAlignment.o + OBJ_THREADS += TestThreads_ViewMapping_a.o TestThreads_ViewMapping_b.o TestThreads_ViewMapping_subview.o TestThreads_ViewLayoutStrideAssignment.o + OBJ_THREADS += TestThreads_ViewOfClass.o + OBJ_THREADS += TestThreads_SubView_a.o TestThreads_SubView_b.o + OBJ_THREADS += TestThreads_SubView_c01.o TestThreads_SubView_c02.o TestThreads_SubView_c03.o + OBJ_THREADS += TestThreads_SubView_c04.o TestThreads_SubView_c05.o TestThreads_SubView_c06.o + OBJ_THREADS += TestThreads_SubView_c07.o TestThreads_SubView_c08.o TestThreads_SubView_c09.o + OBJ_THREADS += TestThreads_SubView_c10.o TestThreads_SubView_c11.o TestThreads_SubView_c12.o + OBJ_THREADS += TestThreads_Reductions.o TestThreads_Scan.o + OBJ_THREADS += TestThreads_Reductions_DeviceView.o + OBJ_THREADS += TestThreads_Reducers_a.o TestThreads_Reducers_b.o TestThreads_Reducers_c.o TestThreads_Reducers_d.o + OBJ_THREADS += TestThreads_Complex.o + OBJ_THREADS += TestThreads_AtomicOperations_int.o TestThreads_AtomicOperations_unsignedint.o TestThreads_AtomicOperations_longint.o + OBJ_THREADS += TestThreads_AtomicOperations_unsignedlongint.o TestThreads_AtomicOperations_longlongint.o TestThreads_AtomicOperations_double.o TestThreads_AtomicOperations_float.o + OBJ_THREADS += TestThreads_AtomicOperations_complexfloat.o TestThreads_AtomicOperations_complexdouble.o + OBJ_THREADS += TestThreads_AtomicViews.o TestThreads_Atomics.o + OBJ_THREADS += TestThreads_Team.o TestThreads_TeamScratch.o TestThreads_TeamTeamSize.o + OBJ_THREADS += TestThreads_TeamReductionScan.o + OBJ_THREADS += TestThreads_TeamVectorRange.o + OBJ_THREADS += TestThreads_Other.o + OBJ_THREADS += TestThreads_MDRange_a.o TestThreads_MDRange_b.o TestThreads_MDRange_c.o TestThreads_MDRange_d.o TestThreads_MDRange_e.o + OBJ_THREADS += TestThreads_LocalDeepCopy.o + + TARGETS += KokkosCore_UnitTest_Threads + + TEST_TARGETS += test-threads endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) - OBJ_OPENMP = UnitTestMainInit.o gtest-all.o - OBJ_OPENMP += TestOpenMP_Init.o - OBJ_OPENMP += TestOpenMP_SharedAlloc.o - OBJ_OPENMP += TestOpenMP_RangePolicy.o + OBJ_OPENMP = UnitTestMainInit.o gtest-all.o + OBJ_OPENMP += TestOpenMP_Init.o + OBJ_OPENMP += TestOpenMP_SharedAlloc.o + OBJ_OPENMP += TestOpenMP_RangePolicy.o OBJ_OPENMP += TestOpenMP_View_64bit.o - OBJ_OPENMP += TestOpenMP_ViewAPI_a.o TestOpenMP_ViewAPI_b.o TestOpenMP_ViewAPI_c.o TestOpenMP_ViewAPI_d.o TestOpenMP_ViewAPI_e.o - OBJ_OPENMP += TestOpenMP_ViewMapping_a.o TestOpenMP_ViewMapping_b.o TestOpenMP_ViewMapping_subview.o TestOpenMP_ViewLayoutStrideAssignment.o - OBJ_OPENMP += TestOpenMP_ViewOfClass.o - OBJ_OPENMP += TestOpenMP_SubView_a.o TestOpenMP_SubView_b.o - OBJ_OPENMP += TestOpenMP_SubView_c01.o TestOpenMP_SubView_c02.o TestOpenMP_SubView_c03.o - OBJ_OPENMP += TestOpenMP_SubView_c04.o TestOpenMP_SubView_c05.o TestOpenMP_SubView_c06.o - OBJ_OPENMP += TestOpenMP_SubView_c07.o TestOpenMP_SubView_c08.o TestOpenMP_SubView_c09.o - OBJ_OPENMP += TestOpenMP_SubView_c10.o TestOpenMP_SubView_c11.o TestOpenMP_SubView_c12.o - OBJ_OPENMP += TestOpenMP_SubView_c13.o - OBJ_OPENMP += TestOpenMP_Reductions.o TestOpenMP_Scan.o - OBJ_OPENMP += TestOpenMP_Reductions_DeviceView.o - OBJ_OPENMP += TestOpenMP_Reducers_a.o TestOpenMP_Reducers_b.o TestOpenMP_Reducers_c.o TestOpenMP_Reducers_d.o - OBJ_OPENMP += TestOpenMP_Complex.o - OBJ_OPENMP += TestOpenMP_AtomicOperations_int.o TestOpenMP_AtomicOperations_unsignedint.o TestOpenMP_AtomicOperations_longint.o - OBJ_OPENMP += TestOpenMP_AtomicOperations_unsignedlongint.o TestOpenMP_AtomicOperations_longlongint.o TestOpenMP_AtomicOperations_double.o TestOpenMP_AtomicOperations_float.o - OBJ_OPENMP += TestOpenMP_AtomicViews.o TestOpenMP_Atomics.o - OBJ_OPENMP += TestOpenMP_Team.o TestOpenMP_TeamScratch.o - OBJ_OPENMP += TestOpenMP_TeamReductionScan.o TestOpenMP_TeamTeamSize.o - OBJ_OPENMP += TestOpenMP_Other.o - OBJ_OPENMP += TestOpenMP_MDRange_a.o TestOpenMP_MDRange_b.o TestOpenMP_MDRange_c.o TestOpenMP_MDRange_d.o TestOpenMP_MDRange_e.o - OBJ_OPENMP += TestOpenMP_Crs.o - OBJ_OPENMP += TestOpenMP_Task.o TestOpenMP_WorkGraph.o - OBJ_OPENMP += TestOpenMP_UniqueToken.o - - TARGETS += KokkosCore_UnitTest_OpenMP + OBJ_OPENMP += TestOpenMP_ViewAPI_a.o TestOpenMP_ViewAPI_b.o TestOpenMP_ViewAPI_c.o TestOpenMP_ViewAPI_d.o TestOpenMP_ViewAPI_e.o + OBJ_OPENMP += TestOpenMP_DeepCopyAlignment.o + OBJ_OPENMP += TestOpenMP_ViewMapping_a.o TestOpenMP_ViewMapping_b.o TestOpenMP_ViewMapping_subview.o TestOpenMP_ViewLayoutStrideAssignment.o + OBJ_OPENMP += TestOpenMP_ViewOfClass.o + OBJ_OPENMP += TestOpenMP_SubView_a.o TestOpenMP_SubView_b.o + OBJ_OPENMP += TestOpenMP_SubView_c01.o TestOpenMP_SubView_c02.o TestOpenMP_SubView_c03.o + OBJ_OPENMP += TestOpenMP_SubView_c04.o TestOpenMP_SubView_c05.o TestOpenMP_SubView_c06.o + OBJ_OPENMP += TestOpenMP_SubView_c07.o TestOpenMP_SubView_c08.o TestOpenMP_SubView_c09.o + OBJ_OPENMP += TestOpenMP_SubView_c10.o TestOpenMP_SubView_c11.o TestOpenMP_SubView_c12.o + OBJ_OPENMP += TestOpenMP_SubView_c13.o + OBJ_OPENMP += TestOpenMP_Reductions.o TestOpenMP_Scan.o + OBJ_OPENMP += TestOpenMP_Reductions_DeviceView.o + OBJ_OPENMP += TestOpenMP_Reducers_a.o TestOpenMP_Reducers_b.o TestOpenMP_Reducers_c.o TestOpenMP_Reducers_d.o + OBJ_OPENMP += TestOpenMP_Complex.o + OBJ_OPENMP += TestOpenMP_AtomicOperations_int.o TestOpenMP_AtomicOperations_unsignedint.o TestOpenMP_AtomicOperations_longint.o + OBJ_OPENMP += TestOpenMP_AtomicOperations_unsignedlongint.o TestOpenMP_AtomicOperations_longlongint.o TestOpenMP_AtomicOperations_double.o TestOpenMP_AtomicOperations_float.o + OBJ_OPENMP += TestOpenMP_AtomicOperations_complexfloat.o TestOpenMP_AtomicOperations_complexdouble.o + OBJ_OPENMP += TestOpenMP_AtomicViews.o TestOpenMP_Atomics.o + OBJ_OPENMP += TestOpenMP_Team.o TestOpenMP_TeamScratch.o + OBJ_OPENMP += TestOpenMP_TeamReductionScan.o TestOpenMP_TeamTeamSize.o + OBJ_OPENMP += TestOpenMP_TeamVectorRange.o + OBJ_OPENMP += TestOpenMP_Other.o + OBJ_OPENMP += TestOpenMP_MDRange_a.o TestOpenMP_MDRange_b.o TestOpenMP_MDRange_c.o TestOpenMP_MDRange_d.o TestOpenMP_MDRange_e.o + OBJ_OPENMP += TestOpenMP_Crs.o + OBJ_OPENMP += TestOpenMP_Task.o TestOpenMP_WorkGraph.o + OBJ_OPENMP += TestOpenMP_UniqueToken.o + OBJ_OPENMP += TestOpenMP_LocalDeepCopy.o + + TARGETS += KokkosCore_UnitTest_OpenMP TARGETS += KokkosCore_UnitTest_OpenMPInterOp - TEST_TARGETS += test-openmp + TEST_TARGETS += test-openmp endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) - OBJ_OPENMPTARGET = UnitTestMainInit.o gtest-all.o - OBJ_OPENMPTARGET += TestOpenMPTarget_Init.o - #OBJ_OPENMPTARGET += TestOpenMPTarget_SharedAlloc.o - OBJ_OPENMPTARGET += TestOpenMPTarget_RangePolicy.o - OBJ_OPENMPTARGET += TestOpenMPTarget_ViewAPI_a.o TestOpenMPTarget_ViewAPI_b.o TestOpenMPTarget_ViewAPI_c.o TestOpenMPTarget_ViewAPI_d.o TestOpenMPTarget_ViewAPI_e.o #Some commented out code - OBJ_OPENMPTARGET += TestOpenMPTarget_ViewMapping_a.o - OBJ_OPENMPTARGET += TestOpenMPTarget_ViewMapping_b.o + OBJ_OPENMPTARGET = UnitTestMainInit.o gtest-all.o + OBJ_OPENMPTARGET += TestOpenMPTarget_Init.o + #OBJ_OPENMPTARGET += TestOpenMPTarget_SharedAlloc.o + OBJ_OPENMPTARGET += TestOpenMPTarget_RangePolicy.o + OBJ_OPENMPTARGET += TestOpenMPTarget_ViewAPI_a.o TestOpenMPTarget_ViewAPI_b.o TestOpenMPTarget_ViewAPI_c.o TestOpenMPTarget_ViewAPI_d.o TestOpenMPTarget_ViewAPI_e.o #Some commented out code + OBJ_OPENMPTARGET += TestOpenMPTarget_DeepCopyAlignment.o + OBJ_OPENMPTARGET += TestOpenMPTarget_ViewMapping_a.o + OBJ_OPENMPTARGET += TestOpenMPTarget_ViewMapping_b.o OBJ_OPENMPTARGET += TestOpenMPTarget_ViewMapping_subview.o - #OBJ_OPENMPTARGET += TestOpenMPTarget_ViewOfClass.o - OBJ_OPENMPTARGET += TestOpenMPTarget_SubView_a.o TestOpenMPTarget_SubView_b.o - #The following subview tests need something like UVM: - #OBJ_OPENMPTARGET += TestOpenMPTarget_SubView_c01.o TestOpenMPTarget_SubView_c02.o TestOpenMPTarget_SubView_c03.o - #OBJ_OPENMPTARGET += TestOpenMPTarget_SubView_c04.o TestOpenMPTarget_SubView_c05.o TestOpenMPTarget_SubView_c06.o - #OBJ_OPENMPTARGET += TestOpenMPTarget_SubView_c07.o TestOpenMPTarget_SubView_c08.o TestOpenMPTarget_SubView_c09.o - #OBJ_OPENMPTARGET += TestOpenMPTarget_SubView_c10.o TestOpenMPTarget_SubView_c11.o TestOpenMPTarget_SubView_c12.o - #OBJ_OPENMPTARGET += TestOpenMPTarget_Reductions.o # Need custom reductions - #OBJ_OPENMPTARGET += TestOpenMPTarget_Reducers_a.o TestOpenMPTarget_Reducers_b.o TestOpenMPTarget_Reducers_c.o TestOpenMPTarget_Reducers_d.o - #OBJ_OPENMPTARGET += TestOpenMPTarget_Scan.o - OBJ_OPENMPTARGET += TestOpenMPTarget_Complex.o - OBJ_OPENMPTARGET += TestOpenMPTarget_AtomicOperations_int.o TestOpenMPTarget_AtomicOperations_unsignedint.o TestOpenMPTarget_AtomicOperations_longint.o - OBJ_OPENMPTARGET += TestOpenMPTarget_AtomicOperations_unsignedlongint.o TestOpenMPTarget_AtomicOperations_longlongint.o TestOpenMPTarget_AtomicOperations_double.o TestOpenMPTarget_AtomicOperations_float.o - OBJ_OPENMPTARGET += TestOpenMPTarget_AtomicViews.o - OBJ_OPENMPTARGET += TestOpenMPTarget_Atomics.o # Commented Out Arbitrary Type Atomics - #OBJ_OPENMPTARGET += TestOpenMPTarget_Team.o # There is still a static function in this - #OBJ_OPENMPTARGET += TestOpenMPTarget_TeamScratch.o - #OBJ_OPENMPTARGET += TestOpenMPTarget_TeamReductionScan.o - #OBJ_OPENMPTARGET += TestOpenMPTarget_Other.o - #OBJ_OPENMPTARGET += TestOpenMPTarget_MDRange_a.o TestOpenMPTarget_MDRange_b.o TestOpenMPTarget_MDRange_c.o TestOpenMPTarget_MDRange_d.o TestOpenMPTarget_MDRange_d.e - #OBJ_OPENMPTARGET += TestOpenMPTarget_Task.o - - TARGETS += KokkosCore_UnitTest_OpenMPTarget - - TEST_TARGETS += test-openmptarget - + #OBJ_OPENMPTARGET += TestOpenMPTarget_ViewOfClass.o + OBJ_OPENMPTARGET += TestOpenMPTarget_SubView_a.o TestOpenMPTarget_SubView_b.o + #The following subview tests need something like UVM: + #OBJ_OPENMPTARGET += TestOpenMPTarget_SubView_c01.o TestOpenMPTarget_SubView_c02.o TestOpenMPTarget_SubView_c03.o + #OBJ_OPENMPTARGET += TestOpenMPTarget_SubView_c04.o TestOpenMPTarget_SubView_c05.o TestOpenMPTarget_SubView_c06.o + #OBJ_OPENMPTARGET += TestOpenMPTarget_SubView_c07.o TestOpenMPTarget_SubView_c08.o TestOpenMPTarget_SubView_c09.o + #OBJ_OPENMPTARGET += TestOpenMPTarget_SubView_c10.o TestOpenMPTarget_SubView_c11.o TestOpenMPTarget_SubView_c12.o + #OBJ_OPENMPTARGET += TestOpenMPTarget_Reductions.o # Need custom reductions + #OBJ_OPENMPTARGET += TestOpenMPTarget_Reducers_a.o TestOpenMPTarget_Reducers_b.o TestOpenMPTarget_Reducers_c.o TestOpenMPTarget_Reducers_d.o + #OBJ_OPENMPTARGET += TestOpenMPTarget_Scan.o + OBJ_OPENMPTARGET += TestOpenMPTarget_Complex.o + OBJ_OPENMPTARGET += TestOpenMPTarget_AtomicOperations_int.o TestOpenMPTarget_AtomicOperations_unsignedint.o TestOpenMPTarget_AtomicOperations_longint.o + OBJ_OPENMPTARGET += TestOpenMPTarget_AtomicOperations_unsignedlongint.o TestOpenMPTarget_AtomicOperations_longlongint.o TestOpenMPTarget_AtomicOperations_double.o TestOpenMPTarget_AtomicOperations_float.o + OBJ_OPENMPTARGET += TestOpenMPTarget_AtomicOperations_complexfloat.o TestOpenMPTarget_AtomicOperations_complexdouble.o + OBJ_OPENMPTARGET += TestOpenMPTarget_AtomicViews.o + OBJ_OPENMPTARGET += TestOpenMPTarget_Atomics.o # Commented Out Arbitrary Type Atomics + #OBJ_OPENMPTARGET += TestOpenMPTarget_Team.o # There is still a static function in this + #OBJ_OPENMPTARGET += TestOpenMPTarget_TeamScratch.o + #OBJ_OPENMPTARGET += TestOpenMPTarget_TeamReductionScan.o + #OBJ_OPENMPTARGET += TestOpenMPTarget_Other.o + #OBJ_OPENMPTARGET += TestOpenMPTarget_MDRange_a.o TestOpenMPTarget_MDRange_b.o TestOpenMPTarget_MDRange_c.o TestOpenMPTarget_MDRange_d.o TestOpenMPTarget_MDRange_d.e + #OBJ_OPENMPTARGET += TestOpenMPTarget_Task.o + + TARGETS += KokkosCore_UnitTest_OpenMPTarget + + TEST_TARGETS += test-openmptarget endif ifeq ($(KOKKOS_INTERNAL_USE_QTHREADS), 1) - OBJ_QTHREADS = TestQthreads_Other.o TestQthreads_Reductions.o TestQthreads_Atomics.o TestQthreads_Team.o - OBJ_QTHREADS += TestQthreads_SubView_a.o TestQthreads_SubView_b.o - OBJ_QTHREADS += TestQthreads_SubView_c01.o TestQthreads_SubView_c02.o TestQthreads_SubView_c03.o - OBJ_QTHREADS += TestQthreads_SubView_c04.o TestQthreads_SubView_c05.o TestQthreads_SubView_c06.o - OBJ_QTHREADS += TestQthreads_SubView_c07.o TestQthreads_SubView_c08.o TestQthreads_SubView_c09.o - OBJ_QTHREADS += TestQthreads_SubView_c10.o TestQthreads_SubView_c11.o TestQthreads_SubView_c12.o - OBJ_QTHREADS += TestQthreads_ViewAPI_a.o TestQthreads_ViewAPI_b.o TestQthreads_ViewAPI_c.o TestQthreads_ViewAPI_d.o TestQthreads_ViewAPI_e.o UnitTestMain.o gtest-all.o - TARGETS += KokkosCore_UnitTest_Qthreads - - OBJ_QTHREADS2 = UnitTestMainInit.o gtest-all.o - OBJ_QTHREADS2 += TestQthreads_Complex.o - TARGETS += KokkosCore_UnitTest_Qthreads2 - - TEST_TARGETS += test-qthreads + OBJ_QTHREADS = TestQthreads_Other.o TestQthreads_Reductions.o TestQthreads_Atomics.o TestQthreads_Team.o + OBJ_QTHREADS += TestQthreads_SubView_a.o TestQthreads_SubView_b.o + OBJ_QTHREADS += TestQthreads_SubView_c01.o TestQthreads_SubView_c02.o TestQthreads_SubView_c03.o + OBJ_QTHREADS += TestQthreads_SubView_c04.o TestQthreads_SubView_c05.o TestQthreads_SubView_c06.o + OBJ_QTHREADS += TestQthreads_SubView_c07.o TestQthreads_SubView_c08.o TestQthreads_SubView_c09.o + OBJ_QTHREADS += TestQthreads_SubView_c10.o TestQthreads_SubView_c11.o TestQthreads_SubView_c12.o + OBJ_QTHREADS += TestQthreads_ViewAPI_a.o TestQthreads_ViewAPI_b.o TestQthreads_ViewAPI_c.o TestQthreads_ViewAPI_d.o TestQthreads_ViewAPI_e.o UnitTestMain.o gtest-all.o + TARGETS += KokkosCore_UnitTest_Qthreads + + OBJ_QTHREADS2 = UnitTestMainInit.o gtest-all.o + OBJ_QTHREADS2 += TestQthreads_Complex.o + TARGETS += KokkosCore_UnitTest_Qthreads2 + + TEST_TARGETS += test-qthreads +endif + +ifeq ($(KOKKOS_INTERNAL_USE_HPX), 1) + OBJ_HPX = UnitTestMainInit.o gtest-all.o + OBJ_HPX += TestHPX_Init.o + OBJ_HPX += TestHPX_SharedAlloc.o + OBJ_HPX += TestHPX_RangePolicy.o + OBJ_HPX += TestHPX_View_64bit.o + OBJ_HPX += TestHPX_ViewAPI_a.o TestHPX_ViewAPI_b.o TestHPX_ViewAPI_c.o TestHPX_ViewAPI_d.o TestHPX_ViewAPI_e.o + OBJ_HPX += TestHPX_ViewMapping_a.o TestHPX_ViewMapping_b.o TestHPX_ViewMapping_subview.o + OBJ_HPX += TestHPX_ViewOfClass.o + OBJ_HPX += TestHPX_SubView_a.o TestHPX_SubView_b.o + OBJ_HPX += TestHPX_SubView_c01.o TestHPX_SubView_c02.o TestHPX_SubView_c03.o + OBJ_HPX += TestHPX_SubView_c04.o TestHPX_SubView_c05.o TestHPX_SubView_c06.o + OBJ_HPX += TestHPX_SubView_c07.o TestHPX_SubView_c08.o TestHPX_SubView_c09.o + OBJ_HPX += TestHPX_SubView_c10.o TestHPX_SubView_c11.o TestHPX_SubView_c12.o + OBJ_HPX += TestHPX_SubView_c13.o + OBJ_HPX += TestHPX_Reductions.o + OBJ_HPX += TestHPX_Scan.o + OBJ_HPX += TestHPX_Reducers_a.o TestHPX_Reducers_b.o TestHPX_Reducers_c.o TestHPX_Reducers_d.o + OBJ_HPX += TestHPX_Complex.o + OBJ_HPX += TestHPX_AtomicOperations_int.o TestHPX_AtomicOperations_unsignedint.o TestHPX_AtomicOperations_longint.o + OBJ_HPX += TestHPX_AtomicOperations_unsignedlongint.o TestHPX_AtomicOperations_longlongint.o TestHPX_AtomicOperations_double.o TestHPX_AtomicOperations_float.o + OBJ_HPX += TestHPX_AtomicViews.o TestHPX_Atomics.o + OBJ_HPX += TestHPX_Team.o + OBJ_HPX += TestHPX_TeamVectorRange.o + OBJ_HPX += TestHPX_TeamScratch.o + OBJ_HPX += TestHPX_TeamReductionScan.o + OBJ_HPX += TestHPX_Other.o + OBJ_HPX += TestHPX_MDRange_a.o TestHPX_MDRange_b.o TestHPX_MDRange_c.o TestHPX_MDRange_d.o TestHPX_MDRange_e.o + OBJ_HPX += TestHPX_Crs.o + OBJ_HPX += TestHPX_Task.o + OBJ_HPX += TestHPX_WorkGraph.o + OBJ_HPX += TestHPX_UniqueToken.o + + TARGETS += KokkosCore_UnitTest_HPX + TARGETS += KokkosCore_UnitTest_HPXInterOp + + TEST_TARGETS += test-hpx endif ifeq ($(KOKKOS_INTERNAL_USE_SERIAL), 1) - OBJ_SERIAL = UnitTestMainInit.o gtest-all.o - OBJ_SERIAL += TestSerial_Init.o - OBJ_SERIAL += TestSerial_SharedAlloc.o - OBJ_SERIAL += TestSerial_RangePolicy.o - OBJ_SERIAL += TestSerial_View_64bit.o - OBJ_SERIAL += TestSerial_ViewAPI_a.o TestSerial_ViewAPI_b.o TestSerial_ViewAPI_c.o TestSerial_ViewAPI_d.o TestSerial_ViewAPI_e.o - OBJ_SERIAL += TestSerial_ViewMapping_a.o TestSerial_ViewMapping_b.o TestSerial_ViewMapping_subview.o TestSerial_ViewLayoutStrideAssignment.o - OBJ_SERIAL += TestSerial_ViewOfClass.o - OBJ_SERIAL += TestSerial_SubView_a.o TestSerial_SubView_b.o - OBJ_SERIAL += TestSerial_SubView_c01.o TestSerial_SubView_c02.o TestSerial_SubView_c03.o - OBJ_SERIAL += TestSerial_SubView_c04.o TestSerial_SubView_c05.o TestSerial_SubView_c06.o - OBJ_SERIAL += TestSerial_SubView_c07.o TestSerial_SubView_c08.o TestSerial_SubView_c09.o - OBJ_SERIAL += TestSerial_SubView_c10.o TestSerial_SubView_c11.o TestSerial_SubView_c12.o - OBJ_SERIAL += TestSerial_SubView_c13.o - OBJ_SERIAL += TestSerial_Reductions.o TestSerial_Scan.o - OBJ_SERIAL += TestSerial_Reductions_DeviceView.o - OBJ_SERIAL += TestSerial_Reducers_a.o TestSerial_Reducers_b.o TestSerial_Reducers_c.o TestSerial_Reducers_d.o - OBJ_SERIAL += TestSerial_Complex.o - OBJ_SERIAL += TestSerial_AtomicOperations_int.o TestSerial_AtomicOperations_unsignedint.o TestSerial_AtomicOperations_longint.o - OBJ_SERIAL += TestSerial_AtomicOperations_unsignedlongint.o TestSerial_AtomicOperations_longlongint.o TestSerial_AtomicOperations_double.o TestSerial_AtomicOperations_float.o - OBJ_SERIAL += TestSerial_AtomicViews.o TestSerial_Atomics.o - OBJ_SERIAL += TestSerial_Team.o TestSerial_TeamScratch.o - OBJ_SERIAL += TestSerial_TeamReductionScan.o TestSerial_TeamTeamSize.o - OBJ_SERIAL += TestSerial_Other.o - #HCC_WORKAROUND - ifneq ($(KOKKOS_INTERNAL_COMPILER_HCC), 1) + OBJ_SERIAL = UnitTestMainInit.o gtest-all.o + OBJ_SERIAL += TestSerial_Init.o + OBJ_SERIAL += TestSerial_SharedAlloc.o + OBJ_SERIAL += TestSerial_RangePolicy.o + OBJ_SERIAL += TestSerial_View_64bit.o + OBJ_SERIAL += TestSerial_ViewAPI_a.o TestSerial_ViewAPI_b.o TestSerial_ViewAPI_c.o TestSerial_ViewAPI_d.o TestSerial_ViewAPI_e.o + OBJ_SERIAL += TestSerial_DeepCopyAlignment.o + OBJ_SERIAL += TestSerial_ViewMapping_a.o TestSerial_ViewMapping_b.o TestSerial_ViewMapping_subview.o TestSerial_ViewLayoutStrideAssignment.o + OBJ_SERIAL += TestSerial_ViewOfClass.o + OBJ_SERIAL += TestSerial_SubView_a.o TestSerial_SubView_b.o + OBJ_SERIAL += TestSerial_SubView_c01.o TestSerial_SubView_c02.o TestSerial_SubView_c03.o + OBJ_SERIAL += TestSerial_SubView_c04.o TestSerial_SubView_c05.o TestSerial_SubView_c06.o + OBJ_SERIAL += TestSerial_SubView_c07.o TestSerial_SubView_c08.o TestSerial_SubView_c09.o + OBJ_SERIAL += TestSerial_SubView_c10.o TestSerial_SubView_c11.o TestSerial_SubView_c12.o + OBJ_SERIAL += TestSerial_SubView_c13.o + OBJ_SERIAL += TestSerial_Reductions.o TestSerial_Scan.o + OBJ_SERIAL += TestSerial_Reductions_DeviceView.o + OBJ_SERIAL += TestSerial_Reducers_a.o TestSerial_Reducers_b.o TestSerial_Reducers_c.o TestSerial_Reducers_d.o + OBJ_SERIAL += TestSerial_Complex.o + OBJ_SERIAL += TestSerial_AtomicOperations_int.o TestSerial_AtomicOperations_unsignedint.o TestSerial_AtomicOperations_longint.o + OBJ_SERIAL += TestSerial_AtomicOperations_unsignedlongint.o TestSerial_AtomicOperations_longlongint.o TestSerial_AtomicOperations_double.o TestSerial_AtomicOperations_float.o + OBJ_SERIAL += TestSerial_AtomicOperations_complexfloat.o TestSerial_AtomicOperations_complexdouble.o + OBJ_SERIAL += TestSerial_AtomicViews.o TestSerial_Atomics.o + OBJ_SERIAL += TestSerial_Team.o TestSerial_TeamScratch.o + OBJ_SERIAL += TestSerial_TeamVectorRange.o + OBJ_SERIAL += TestSerial_TeamReductionScan.o TestSerial_TeamTeamSize.o + OBJ_SERIAL += TestSerial_Other.o + #HCC_WORKAROUND + ifneq ($(KOKKOS_INTERNAL_COMPILER_HCC), 1) OBJ_SERIAL += TestSerial_MDRange_a.o TestSerial_MDRange_b.o TestSerial_MDRange_c.o TestSerial_MDRange_d.o TestSerial_MDRange_e.o - endif - OBJ_SERIAL += TestSerial_Crs.o - OBJ_SERIAL += TestSerial_Task.o TestSerial_WorkGraph.o - - TARGETS += KokkosCore_UnitTest_Serial + endif + OBJ_SERIAL += TestSerial_Crs.o + OBJ_SERIAL += TestSerial_Task.o TestSerial_WorkGraph.o + OBJ_SERIAL += TestSerial_LocalDeepCopy.o + + TARGETS += KokkosCore_UnitTest_Serial - TEST_TARGETS += test-serial + TEST_TARGETS += test-serial endif OBJ_HWLOC = TestHWLOC.o UnitTestMain.o gtest-all.o @@ -298,10 +356,10 @@ TEST_TARGETS += test-host-barrier OBJ_DEFAULT = UnitTestMainInit.o gtest-all.o ifneq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) ifneq ($(KOKKOS_INTERNAL_COMPILER_HCC), 1) - OBJ_DEFAULT += TestDefaultDeviceType.o - OBJ_DEFAULT += TestDefaultDeviceType_a1.o TestDefaultDeviceType_b1.o TestDefaultDeviceType_c1.o - OBJ_DEFAULT += TestDefaultDeviceType_a2.o TestDefaultDeviceType_b2.o TestDefaultDeviceType_c2.o - OBJ_DEFAULT += TestDefaultDeviceType_a3.o TestDefaultDeviceType_b3.o TestDefaultDeviceType_c3.o + OBJ_DEFAULT += TestDefaultDeviceType.o + OBJ_DEFAULT += TestDefaultDeviceType_a1.o TestDefaultDeviceType_b1.o TestDefaultDeviceType_c1.o + OBJ_DEFAULT += TestDefaultDeviceType_a2.o TestDefaultDeviceType_b2.o TestDefaultDeviceType_c2.o + OBJ_DEFAULT += TestDefaultDeviceType_a3.o TestDefaultDeviceType_b3.o TestDefaultDeviceType_c3.o OBJ_DEFAULT += TestDefaultDeviceType_d.o endif endif @@ -325,9 +383,11 @@ TEST_TARGETS += ${INITTESTS_TEST_TARGETS} KokkosCore_UnitTest_Cuda: $(OBJ_CUDA) $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) $(OBJ_CUDA) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_Cuda -KokkosCore_UnitTest_CudaInterOp: UnitTestMain.o gtest-all.o TestCuda_InterOp.o - $(LINK) $(EXTRA_PATH) UnitTestMain.o gtest-all.o TestCuda_InterOp.o $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_CudaInterOp - +KokkosCore_UnitTest_CudaInterOpInit: UnitTestMain.o gtest-all.o TestCuda_InterOp_Init.o $(KOKKOS_LINK_DEPENDS) + $(LINK) $(EXTRA_PATH) UnitTestMain.o gtest-all.o TestCuda_InterOp_Init.o $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_CudaInterOpInit +KokkosCore_UnitTest_CudaInterOpStreams: UnitTestMain.o gtest-all.o TestCuda_InterOp_Streams.o $(KOKKOS_LINK_DEPENDS) + $(LINK) $(EXTRA_PATH) UnitTestMain.o gtest-all.o TestCuda_InterOp_Streams.o $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_CudaInterOpStreams + KokkosCore_UnitTest_ROCm: $(OBJ_ROCM) $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) $(OBJ_ROCM) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_ROCm @@ -337,7 +397,7 @@ KokkosCore_UnitTest_Threads: $(OBJ_THREADS) $(KOKKOS_LINK_DEPENDS) KokkosCore_UnitTest_OpenMP: $(OBJ_OPENMP) $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) $(OBJ_OPENMP) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_OpenMP -KokkosCore_UnitTest_OpenMPInterOp: UnitTestMain.o gtest-all.o TestOpenMP_InterOp.o +KokkosCore_UnitTest_OpenMPInterOp: UnitTestMain.o gtest-all.o TestOpenMP_InterOp.o $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) UnitTestMain.o gtest-all.o TestOpenMP_InterOp.o $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_OpenMPInterOp KokkosCore_UnitTest_OpenMPTarget: $(OBJ_OPENMPTARGET) $(KOKKOS_LINK_DEPENDS) @@ -352,6 +412,12 @@ KokkosCore_UnitTest_Qthreads: $(OBJ_QTHREADS) $(KOKKOS_LINK_DEPENDS) KokkosCore_UnitTest_Qthreads2: $(OBJ_QTHREADS2) $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) $(OBJ_QTHREADS2) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_Qthreads2 +KokkosCore_UnitTest_HPX: $(OBJ_HPX) $(KOKKOS_LINK_DEPENDS) + $(LINK) $(EXTRA_PATH) $(OBJ_HPX) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_HPX + +KokkosCore_UnitTest_HPXInterOp: UnitTestMain.o gtest-all.o TestHPX_InterOp.o $(KOKKOS_LINK_DEPENDS) + $(LINK) $(EXTRA_PATH) UnitTestMain.o gtest-all.o TestHPX_InterOp.o $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_HPXInterOp + KokkosCore_UnitTest_HWLOC: $(OBJ_HWLOC) $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) $(OBJ_HWLOC) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_HWLOC @@ -376,7 +442,8 @@ ${INITTESTS_TARGETS}: KokkosCore_UnitTest_DefaultDeviceTypeInit_%: TestDefaultDe test-cuda: KokkosCore_UnitTest_Cuda ./KokkosCore_UnitTest_Cuda - ./KokkosCore_UnitTest_CudaInterOp + ./KokkosCore_UnitTest_CudaInterOpInit + ./KokkosCore_UnitTest_CudaInterOpStreams test-rocm: KokkosCore_UnitTest_ROCm ./KokkosCore_UnitTest_ROCm @@ -398,6 +465,10 @@ test-qthreads: KokkosCore_UnitTest_Qthreads KokkosCore_UnitTest_Qthreads2 ./KokkosCore_UnitTest_Qthreads ./KokkosCore_UnitTest_Qthreads2 +test-hpx: KokkosCore_UnitTest_HPX + ./KokkosCore_UnitTest_HPX + ./KokkosCore_UnitTest_HPXInterOp + test-hwloc: KokkosCore_UnitTest_HWLOC ./KokkosCore_UnitTest_HWLOC diff --git a/lib/kokkos/core/unit_test/TestAtomic.hpp b/lib/kokkos/core/unit_test/TestAtomic.hpp index 58b6325115..ee93d53470 100644 --- a/lib/kokkos/core/unit_test/TestAtomic.hpp +++ b/lib/kokkos/core/unit_test/TestAtomic.hpp @@ -211,13 +211,13 @@ T AddLoop( int loop ) { f_zero.data = data; Kokkos::parallel_for( 1, f_zero ); - execution_space::fence(); + execution_space().fence(); struct AddFunctor< T, execution_space > f_add; f_add.data = data; Kokkos::parallel_for( loop, f_add ); - execution_space::fence(); + execution_space().fence(); Kokkos::deep_copy( h_data, data ); T val = h_data(); @@ -226,7 +226,7 @@ T AddLoop( int loop ) { f_add_red.data = data; int dummy_result; Kokkos::parallel_reduce( loop, f_add_red , dummy_result ); - execution_space::fence(); + execution_space().fence(); return val; } @@ -298,12 +298,12 @@ T CASLoop( int loop ) { f_zero.data = data; Kokkos::parallel_for( 1, f_zero ); - execution_space::fence(); + execution_space().fence(); struct CASFunctor< T, execution_space > f_cas; f_cas.data = data; Kokkos::parallel_for( loop, f_cas ); - execution_space::fence(); + execution_space().fence(); Kokkos::deep_copy( h_data, data ); T val = h_data(); @@ -312,7 +312,7 @@ T CASLoop( int loop ) { f_cas_red.data = data; int dummy_result; Kokkos::parallel_reduce( loop, f_cas_red , dummy_result ); - execution_space::fence(); + execution_space().fence(); return val; } @@ -381,20 +381,20 @@ T ExchLoop( int loop ) { f_zero.data = data; Kokkos::parallel_for( 1, f_zero ); - execution_space::fence(); + execution_space().fence(); typename ZeroFunctor< T, execution_space >::type data2( "Data" ); typename ZeroFunctor< T, execution_space >::h_type h_data2( "HData" ); f_zero.data = data2; Kokkos::parallel_for( 1, f_zero ); - execution_space::fence(); + execution_space().fence(); struct ExchFunctor< T, execution_space > f_exch; f_exch.data = data; f_exch.data2 = data2; Kokkos::parallel_for( loop, f_exch ); - execution_space::fence(); + execution_space().fence(); Kokkos::deep_copy( h_data, data ); Kokkos::deep_copy( h_data2, data2 ); @@ -405,7 +405,7 @@ T ExchLoop( int loop ) { f_exch_red.data2 = data2; int dummy_result; Kokkos::parallel_reduce( loop, f_exch_red , dummy_result ); - execution_space::fence(); + execution_space().fence(); return val; } diff --git a/lib/kokkos/core/unit_test/TestAtomicOperations.hpp b/lib/kokkos/core/unit_test/TestAtomicOperations.hpp index d068c18d87..e043737e42 100644 --- a/lib/kokkos/core/unit_test/TestAtomicOperations.hpp +++ b/lib/kokkos/core/unit_test/TestAtomicOperations.hpp @@ -113,13 +113,13 @@ T MaxAtomic( T i0, T i1 ) { f_init.data = data; Kokkos::parallel_for( 1, f_init ); - execution_space::fence(); + execution_space().fence(); struct MaxFunctor< T, execution_space > f( i0, i1 ); f.data = data; Kokkos::parallel_for( 1, f ); - execution_space::fence(); + execution_space().fence(); Kokkos::deep_copy( h_data, data ); T val = h_data(); @@ -191,13 +191,13 @@ T MinAtomic( T i0, T i1 ) { f_init.data = data; Kokkos::parallel_for( 1, f_init ); - execution_space::fence(); + execution_space().fence(); struct MinFunctor< T, execution_space > f( i0, i1 ); f.data = data; Kokkos::parallel_for( 1, f ); - execution_space::fence(); + execution_space().fence(); Kokkos::deep_copy( h_data, data ); T val = h_data(); @@ -268,13 +268,13 @@ T IncAtomic( T i0 ) { f_init.data = data; Kokkos::parallel_for( 1, f_init ); - execution_space::fence(); + execution_space().fence(); struct IncFunctor< T, execution_space > f( i0 ); f.data = data; Kokkos::parallel_for( 1, f ); - execution_space::fence(); + execution_space().fence(); Kokkos::deep_copy( h_data, data ); T val = h_data(); @@ -345,13 +345,13 @@ T DecAtomic( T i0 ) { f_init.data = data; Kokkos::parallel_for( 1, f_init ); - execution_space::fence(); + execution_space().fence(); struct DecFunctor< T, execution_space > f( i0 ); f.data = data; Kokkos::parallel_for( 1, f ); - execution_space::fence(); + execution_space().fence(); Kokkos::deep_copy( h_data, data ); T val = h_data(); @@ -423,13 +423,13 @@ T MulAtomic( T i0, T i1 ) { f_init.data = data; Kokkos::parallel_for( 1, f_init ); - execution_space::fence(); + execution_space().fence(); struct MulFunctor< T, execution_space > f( i0, i1 ); f.data = data; Kokkos::parallel_for( 1, f ); - execution_space::fence(); + execution_space().fence(); Kokkos::deep_copy( h_data, data ); T val = h_data(); @@ -501,13 +501,13 @@ T DivAtomic( T i0, T i1 ) { f_init.data = data; Kokkos::parallel_for( 1, f_init ); - execution_space::fence(); + execution_space().fence(); struct DivFunctor< T, execution_space > f( i0, i1 ); f.data = data; Kokkos::parallel_for( 1, f ); - execution_space::fence(); + execution_space().fence(); Kokkos::deep_copy( h_data, data ); T val = h_data(); @@ -536,7 +536,9 @@ bool DivAtomicTest( T i0, T i1 ) bool passed = true; - if ( (resSerial-res)*(resSerial-res) > 1e-10 ) { + using std::abs; + using Kokkos::abs; + if ( abs( (resSerial-res) * 1.) > 1e-5 ) { passed = false; std::cout << "Loop<" @@ -579,13 +581,13 @@ T ModAtomic( T i0, T i1 ) { f_init.data = data; Kokkos::parallel_for( 1, f_init ); - execution_space::fence(); + execution_space().fence(); struct ModFunctor< T, execution_space > f( i0, i1 ); f.data = data; Kokkos::parallel_for( 1, f ); - execution_space::fence(); + execution_space().fence(); Kokkos::deep_copy( h_data, data ); T val = h_data(); @@ -657,13 +659,13 @@ T AndAtomic( T i0, T i1 ) { f_init.data = data; Kokkos::parallel_for( 1, f_init ); - execution_space::fence(); + execution_space().fence(); struct AndFunctor< T, execution_space > f( i0, i1 ); f.data = data; Kokkos::parallel_for( 1, f ); - execution_space::fence(); + execution_space().fence(); Kokkos::deep_copy( h_data, data ); T val = h_data(); @@ -735,13 +737,13 @@ T OrAtomic( T i0, T i1 ) { f_init.data = data; Kokkos::parallel_for( 1, f_init ); - execution_space::fence(); + execution_space().fence(); struct OrFunctor< T, execution_space > f( i0, i1 ); f.data = data; Kokkos::parallel_for( 1, f ); - execution_space::fence(); + execution_space().fence(); Kokkos::deep_copy( h_data, data ); T val = h_data(); @@ -813,13 +815,13 @@ T XorAtomic( T i0, T i1 ) { f_init.data = data; Kokkos::parallel_for( 1, f_init ); - execution_space::fence(); + execution_space().fence(); struct XorFunctor< T, execution_space > f( i0, i1 ); f.data = data; Kokkos::parallel_for( 1, f ); - execution_space::fence(); + execution_space().fence(); Kokkos::deep_copy( h_data, data ); T val = h_data(); @@ -891,13 +893,13 @@ T LShiftAtomic( T i0, T i1 ) { f_init.data = data; Kokkos::parallel_for( 1, f_init ); - execution_space::fence(); + execution_space().fence(); struct LShiftFunctor< T, execution_space > f( i0, i1 ); f.data = data; Kokkos::parallel_for( 1, f ); - execution_space::fence(); + execution_space().fence(); Kokkos::deep_copy( h_data, data ); T val = h_data(); @@ -969,13 +971,13 @@ T RShiftAtomic( T i0, T i1 ) { f_init.data = data; Kokkos::parallel_for( 1, f_init ); - execution_space::fence(); + execution_space().fence(); struct RShiftFunctor< T, execution_space > f( i0, i1 ); f.data = data; Kokkos::parallel_for( 1, f ); - execution_space::fence(); + execution_space().fence(); Kokkos::deep_copy( h_data, data ); T val = h_data(); diff --git a/lib/kokkos/core/unit_test/TestAtomicOperations_complexdouble.hpp b/lib/kokkos/core/unit_test/TestAtomicOperations_complexdouble.hpp new file mode 100644 index 0000000000..a8474d8952 --- /dev/null +++ b/lib/kokkos/core/unit_test/TestAtomicOperations_complexdouble.hpp @@ -0,0 +1,57 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include + +namespace Test { +TEST_F( TEST_CATEGORY , atomic_operations_complexdouble ) +{ + const int start = 1; // Avoid zero for division. + const int end = 11; + for ( int i = start; i < end; ++i ) + { + ASSERT_TRUE( ( TestAtomicOperations::MulAtomicTest< Kokkos::complex, TEST_EXECSPACE >( start , end - i) ) ); + ASSERT_TRUE( ( TestAtomicOperations::DivAtomicTest< Kokkos::complex, TEST_EXECSPACE >( start , end - i) ) ); + } +} +} diff --git a/lib/kokkos/core/unit_test/TestAtomicOperations_complexfloat.hpp b/lib/kokkos/core/unit_test/TestAtomicOperations_complexfloat.hpp new file mode 100644 index 0000000000..961418e675 --- /dev/null +++ b/lib/kokkos/core/unit_test/TestAtomicOperations_complexfloat.hpp @@ -0,0 +1,57 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include + +namespace Test { +TEST_F( TEST_CATEGORY , atomic_operations_complexfloat ) +{ + const int start = 1; // Avoid zero for division. + const int end = 11; + for ( int i = start; i < end; ++i ) + { + ASSERT_TRUE( ( TestAtomicOperations::MulAtomicTest< Kokkos::complex, TEST_EXECSPACE >( start , end - i) ) ); + ASSERT_TRUE( ( TestAtomicOperations::DivAtomicTest< Kokkos::complex, TEST_EXECSPACE >( start , end - i) ) ); + } +} +} diff --git a/lib/kokkos/core/unit_test/TestCXX11.hpp b/lib/kokkos/core/unit_test/TestCXX11.hpp index 8a158e2667..542b4a1912 100644 --- a/lib/kokkos/core/unit_test/TestCXX11.hpp +++ b/lib/kokkos/core/unit_test/TestCXX11.hpp @@ -235,6 +235,7 @@ double ReduceTestFunctor() { else { Kokkos::parallel_reduce( policy_type( 25, Kokkos::AUTO ), FunctorReduceTest< DeviceType >( a ), unmanaged_result( & result ) ); } + Kokkos::fence(); return result; } @@ -281,6 +282,7 @@ double ReduceTestLambda() { } }, unmanaged_result( & result ) ); } + Kokkos::fence(); return result; } diff --git a/lib/kokkos/core/unit_test/TestCompilerMacros.hpp b/lib/kokkos/core/unit_test/TestCompilerMacros.hpp index e6b5c48d3d..07c332a9ae 100644 --- a/lib/kokkos/core/unit_test/TestCompilerMacros.hpp +++ b/lib/kokkos/core/unit_test/TestCompilerMacros.hpp @@ -102,7 +102,7 @@ bool Test() { AddFunctor< DeviceType > f( a, b ); Kokkos::parallel_for( 1024, f ); - DeviceType::fence(); + DeviceType().fence(); return true; } diff --git a/lib/kokkos/core/unit_test/TestDeepCopy.hpp b/lib/kokkos/core/unit_test/TestDeepCopy.hpp new file mode 100644 index 0000000000..aebf263290 --- /dev/null +++ b/lib/kokkos/core/unit_test/TestDeepCopy.hpp @@ -0,0 +1,167 @@ +#include + +namespace Test { + +namespace Impl { +template +struct TestDeepCopy { + + typedef Kokkos::View a_base_t; + typedef Kokkos::View b_base_t; + typedef Kokkos::View a_char_t; + typedef Kokkos::View b_char_t; + + typedef Kokkos::RangePolicy policyA_t; + typedef Kokkos::RangePolicy policyB_t; + + static void reset_a_copy_and_b(Kokkos::View a_char_copy, Kokkos::View b_char) { + const int N = b_char.extent(0); + Kokkos::parallel_for("TestDeepCopy: FillA_copy",policyA_t(0,N), KOKKOS_LAMBDA (const int& i) { + a_char_copy(i) = char(0); + }); + Kokkos::parallel_for("TestDeepCopy: FillB",policyB_t(0,N), KOKKOS_LAMBDA (const int& i) { + b_char(i) = char(0); + }); + } + + static int compare_equal(Kokkos::View a_char_copy, Kokkos::View a_char) { + const int N = a_char.extent(0); + int errors; + Kokkos::parallel_reduce("TestDeepCopy: FillA_copy",policyA_t(0,N), KOKKOS_LAMBDA (const int& i, int& lsum) { + if(a_char_copy(i) != a_char(i)) lsum++; + },errors); + return errors; + } + + static void run_test(int num_bytes) { + a_base_t a_base("test_space_to_space",(num_bytes+128)/8); + a_base_t a_base_copy("test_space_to_space",(num_bytes+128)/8); + Kokkos::View b_base("test_space_to_space",(num_bytes+128)/8); + + Kokkos::View a_char((char*) a_base.data(),a_base.extent(0)*8); + Kokkos::View a_char_copy((char*) a_base_copy.data(),a_base.extent(0)*8); + Kokkos::View b_char((char*) b_base.data(),b_base.extent(0)*8); + + Kokkos::parallel_for("TestDeepCopy: FillA",policyA_t(0,a_char.extent(0)), KOKKOS_LAMBDA (const int& i) { + a_char(i) = static_cast(i%97)+1; + }); + + reset_a_copy_and_b(a_char_copy, b_char); + + { + int check = compare_equal(a_char_copy,a_char); + ASSERT_EQ( check, a_char.extent(0) ); + } + + // (a.data()%8, (a.data()+a.extent(0))%8, b.data()%8, (b.data()+b.extent(0))%8 + // (0,0,0,0) + { + int a_begin = 0; + int a_end = 0; + int b_begin = 0; + int b_end = 0; + auto a = Kokkos::subview(a_char,std::pair(a_begin,a_char.extent(0)-a_end)); + auto b = Kokkos::subview(b_char,std::pair(b_begin,b_char.extent(0)-b_end)); + auto a_copy = Kokkos::subview(a_char_copy,std::pair(a_begin,a_char_copy.extent(0)-a_end)); + Kokkos::deep_copy(b,a); + Kokkos::deep_copy(a_copy,b); + int check = compare_equal(a_copy,a); + ASSERT_EQ( check, 0 ); + } + + { + int a_begin = 0; + int a_end = 5; + int b_begin = 0; + int b_end = 5; + auto a = Kokkos::subview(a_char,std::pair(a_begin,a_char.extent(0)-a_end)); + auto b = Kokkos::subview(b_char,std::pair(b_begin,b_char.extent(0)-b_end)); + auto a_copy = Kokkos::subview(a_char_copy,std::pair(a_begin,a_char_copy.extent(0)-a_end)); + Kokkos::deep_copy(b,a); + Kokkos::deep_copy(a_copy,b); + int check = compare_equal(a_copy,a); + ASSERT_EQ( check, 0 ); + } + + { + int a_begin = 3; + int a_end = 0; + int b_begin = 3; + int b_end = 0; + auto a = Kokkos::subview(a_char,std::pair(a_begin,a_char.extent(0)-a_end)); + auto b = Kokkos::subview(b_char,std::pair(b_begin,b_char.extent(0)-b_end)); + auto a_copy = Kokkos::subview(a_char_copy,std::pair(a_begin,a_char_copy.extent(0)-a_end)); + Kokkos::deep_copy(b,a); + Kokkos::deep_copy(a_copy,b); + int check = compare_equal(a_copy,a); + ASSERT_EQ( check, 0 ); + } + + { + int a_begin = 3; + int a_end = 6; + int b_begin = 3; + int b_end = 6; + auto a = Kokkos::subview(a_char,std::pair(a_begin,a_char.extent(0)-a_end)); + auto b = Kokkos::subview(b_char,std::pair(b_begin,b_char.extent(0)-b_end)); + auto a_copy = Kokkos::subview(a_char_copy,std::pair(a_begin,a_char_copy.extent(0)-a_end)); + Kokkos::deep_copy(b,a); + Kokkos::deep_copy(a_copy,b); + int check = compare_equal(a_copy,a); + ASSERT_EQ( check, 0 ); + } + + { + int a_begin = 5; + int a_end = 4; + int b_begin = 3; + int b_end = 6; + auto a = Kokkos::subview(a_char,std::pair(a_begin,a_char.extent(0)-a_end)); + auto b = Kokkos::subview(b_char,std::pair(b_begin,b_char.extent(0)-b_end)); + auto a_copy = Kokkos::subview(a_char_copy,std::pair(a_begin,a_char_copy.extent(0)-a_end)); + Kokkos::deep_copy(b,a); + Kokkos::deep_copy(a_copy,b); + int check = compare_equal(a_copy,a); + ASSERT_EQ( check, 0 ); + } + + { + int a_begin = 0; + int a_end = 8; + int b_begin = 2; + int b_end = 6; + auto a = Kokkos::subview(a_char,std::pair(a_begin,a_char.extent(0)-a_end)); + auto b = Kokkos::subview(b_char,std::pair(b_begin,b_char.extent(0)-b_end)); + auto a_copy = Kokkos::subview(a_char_copy,std::pair(a_begin,a_char_copy.extent(0)-a_end)); + Kokkos::deep_copy(b,a); + Kokkos::deep_copy(a_copy,b); + int check = compare_equal(a_copy,a); + ASSERT_EQ( check, 0 ); + } + + { + int a_begin = 2; + int a_end = 6; + int b_begin = 0; + int b_end = 8; + auto a = Kokkos::subview(a_char,std::pair(a_begin,a_char.extent(0)-a_end)); + auto b = Kokkos::subview(b_char,std::pair(b_begin,b_char.extent(0)-b_end)); + auto a_copy = Kokkos::subview(a_char_copy,std::pair(a_begin,a_char_copy.extent(0)-a_end)); + Kokkos::deep_copy(b,a); + Kokkos::deep_copy(a_copy,b); + int check = compare_equal(a_copy,a); + ASSERT_EQ( check, 0 ); + } + + } +}; +} + +TEST_F( TEST_CATEGORY, deep_copy_alignment ) +{ + { Impl::TestDeepCopy< TEST_EXECSPACE::memory_space , TEST_EXECSPACE::memory_space >::run_test( 100000 ); } + { Impl::TestDeepCopy< Kokkos::HostSpace , TEST_EXECSPACE::memory_space >::run_test( 100000 ); } + { Impl::TestDeepCopy< TEST_EXECSPACE::memory_space , Kokkos::HostSpace >::run_test( 100000 ); } +} + +} diff --git a/lib/kokkos/core/unit_test/TestDefaultDeviceTypeInit.hpp b/lib/kokkos/core/unit_test/TestDefaultDeviceTypeInit.hpp index 1e1418fcbf..1261948f87 100644 --- a/lib/kokkos/core/unit_test/TestDefaultDeviceTypeInit.hpp +++ b/lib/kokkos/core/unit_test/TestDefaultDeviceTypeInit.hpp @@ -222,6 +222,14 @@ void check_correct_initialization( const Kokkos::InitArguments & argstruct ) { expected_nthreads = 1; } #endif + +#ifdef KOKKOS_ENABLE_HPX + // HPX uses all cores on machine by default. Skip this test. + if ( std::is_same< Kokkos::DefaultExecutionSpace, Kokkos::Experimental::HPX >::value || + std::is_same< Kokkos::DefaultHostExecutionSpace, Kokkos::Experimental::HPX >::value ) { + return; + } +#endif } int expected_numa = argstruct.num_numa; diff --git a/lib/kokkos/core/unit_test/TestLocalDeepCopy.hpp b/lib/kokkos/core/unit_test/TestLocalDeepCopy.hpp new file mode 100644 index 0000000000..31bda530a5 --- /dev/null +++ b/lib/kokkos/core/unit_test/TestLocalDeepCopy.hpp @@ -0,0 +1,904 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include + +#include +#include +#include +#include + +#include + +namespace Test { + + template + void impl_test_local_deepcopy_teampolicy_rank_1 (const int N) { + + // Allocate matrices on device. + ViewType A( "A", N, N, N, N, N, N, N, N ); + ViewType B( "B", N, N, N, N, N, N, N, N ); + + // Create host mirrors of device views. + typename ViewType::HostMirror h_A = Kokkos::create_mirror_view( A ); + typename ViewType::HostMirror h_B = Kokkos::create_mirror_view( B ); + + // Initialize A matrix. + auto subA = Kokkos::subview(A, 1, 1, 1, 1, 1, 1, Kokkos::ALL(), Kokkos::ALL()); + Kokkos::deep_copy( subA, 10.0 ); + + typedef Kokkos::TeamPolicy team_policy; + typedef typename Kokkos::TeamPolicy::member_type member_type; + + //Deep Copy + Kokkos::parallel_for( team_policy( N, Kokkos::AUTO ), KOKKOS_LAMBDA ( const member_type &teamMember ) { + int lid = teamMember.league_rank();// returns a number between 0 and N + auto subSrc = Kokkos::subview(A, 1, 1, 1, 1, 1, 1, lid, Kokkos::ALL()); + auto subDst = Kokkos::subview(B, 1, 1, 1, 1, 1, 1, lid, Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(teamMember,subDst,subSrc); + }); + + Kokkos::deep_copy( h_A, A ); + Kokkos::deep_copy( h_B, B ); + + bool test = true; + for(size_t i=0; i + void impl_test_local_deepcopy_teampolicy_rank_2 (const int N) { + + // Allocate matrices on device. + ViewType A( "A", N, N, N, N, N, N, N, N ); + ViewType B( "B", N, N, N, N, N, N, N, N ); + + // Create host mirrors of device views. + typename ViewType::HostMirror h_A = Kokkos::create_mirror_view( A ); + typename ViewType::HostMirror h_B = Kokkos::create_mirror_view( B ); + + // Initialize A matrix. + auto subA = Kokkos::subview(A, 1, 1, 1, 1, 1, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::deep_copy( subA, 10.0 ); + + typedef Kokkos::TeamPolicy team_policy; + typedef typename Kokkos::TeamPolicy::member_type member_type; + + //Deep Copy + Kokkos::parallel_for( team_policy( N, Kokkos::AUTO ), KOKKOS_LAMBDA ( const member_type &teamMember ) { + int lid = teamMember.league_rank();// returns a number between 0 and N + auto subSrc = Kokkos::subview(A, 1, 1, 1, 1, 1, lid, Kokkos::ALL(), Kokkos::ALL()); + auto subDst = Kokkos::subview(B, 1, 1, 1, 1, 1, lid, Kokkos::ALL(), Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(teamMember,subDst,subSrc); + }); + + Kokkos::deep_copy( h_A, A ); + Kokkos::deep_copy( h_B, B ); + + bool test = true; + for(size_t i=0; i + void impl_test_local_deepcopy_teampolicy_rank_3 (const int N) { + + // Allocate matrices on device. + ViewType A( "A", N, N, N, N, N, N, N, N ); + ViewType B( "B", N, N, N, N, N, N, N, N ); + + // Create host mirrors of device views. + typename ViewType::HostMirror h_A = Kokkos::create_mirror_view( A ); + typename ViewType::HostMirror h_B = Kokkos::create_mirror_view( B ); + + // Initialize A matrix. + auto subA = Kokkos::subview(A, 1, 1, 1, 1, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::deep_copy( subA, 10.0 ); + + typedef Kokkos::TeamPolicy team_policy; + typedef typename Kokkos::TeamPolicy::member_type member_type; + + //Deep Copy + Kokkos::parallel_for( team_policy( N, Kokkos::AUTO ), KOKKOS_LAMBDA ( const member_type &teamMember ) { + int lid = teamMember.league_rank();// returns a number between 0 and N + auto subSrc = Kokkos::subview(A, 1, 1, 1, 1, lid, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + auto subDst = Kokkos::subview(B, 1, 1, 1, 1, lid, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(teamMember,subDst,subSrc); + }); + + Kokkos::deep_copy( h_A, A ); + Kokkos::deep_copy( h_B, B ); + + bool test = true; + for(size_t i=0; i + void impl_test_local_deepcopy_teampolicy_rank_4 (const int N) { + + // Allocate matrices on device. + ViewType A( "A", N, N, N, N, N, N, N, N ); + ViewType B( "B", N, N, N, N, N, N, N, N ); + + // Create host mirrors of device views. + typename ViewType::HostMirror h_A = Kokkos::create_mirror_view( A ); + typename ViewType::HostMirror h_B = Kokkos::create_mirror_view( B ); + + // Initialize A matrix. + auto subA = Kokkos::subview(A, 1, 1, 1, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::deep_copy( subA, 10.0 ); + + typedef Kokkos::TeamPolicy team_policy; + typedef typename Kokkos::TeamPolicy::member_type member_type; + + //Deep Copy + Kokkos::parallel_for( team_policy( N, Kokkos::AUTO ), KOKKOS_LAMBDA ( const member_type &teamMember ) { + int lid = teamMember.league_rank();// returns a number between 0 and N + auto subSrc = Kokkos::subview(A, 1, 1, 1, lid, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + auto subDst = Kokkos::subview(B, 1, 1, 1, lid, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(teamMember,subDst,subSrc); + }); + + Kokkos::deep_copy( h_A, A ); + Kokkos::deep_copy( h_B, B ); + + bool test = true; + for(size_t i=0; i + void impl_test_local_deepcopy_teampolicy_rank_5 (const int N) { + + // Allocate matrices on device. + ViewType A( "A", N, N, N, N, N, N, N, N ); + ViewType B( "B", N, N, N, N, N, N, N, N ); + + // Create host mirrors of device views. + typename ViewType::HostMirror h_A = Kokkos::create_mirror_view( A ); + typename ViewType::HostMirror h_B = Kokkos::create_mirror_view( B ); + + // Initialize A matrix. + auto subA = Kokkos::subview(A, 1, 1, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::deep_copy( subA, 10.0 ); + + typedef Kokkos::TeamPolicy team_policy; + typedef typename Kokkos::TeamPolicy::member_type member_type; + + //Deep Copy + Kokkos::parallel_for( team_policy( N, Kokkos::AUTO ), KOKKOS_LAMBDA ( const member_type &teamMember ) { + int lid = teamMember.league_rank();// returns a number between 0 and N + auto subSrc = Kokkos::subview(A, 1, 1, lid, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + auto subDst = Kokkos::subview(B, 1, 1, lid, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(teamMember,subDst,subSrc); + }); + + Kokkos::deep_copy( h_A, A ); + Kokkos::deep_copy( h_B, B ); + + bool test = true; + for(size_t i=0; i + void impl_test_local_deepcopy_teampolicy_rank_6 (const int N) { + + // Allocate matrices on device. + ViewType A( "A", N, N, N, N, N, N, N, N ); + ViewType B( "B", N, N, N, N, N, N, N, N ); + + // Create host mirrors of device views. + typename ViewType::HostMirror h_A = Kokkos::create_mirror_view( A ); + typename ViewType::HostMirror h_B = Kokkos::create_mirror_view( B ); + + // Initialize A matrix. + auto subA = Kokkos::subview(A, 1, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::deep_copy( subA, 10.0 ); + + typedef Kokkos::TeamPolicy team_policy; + typedef typename Kokkos::TeamPolicy::member_type member_type; + + //Deep Copy + Kokkos::parallel_for( team_policy( N, Kokkos::AUTO ), KOKKOS_LAMBDA ( const member_type &teamMember ) { + int lid = teamMember.league_rank();// returns a number between 0 and N + auto subSrc = Kokkos::subview(A, 1, lid, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + auto subDst = Kokkos::subview(B, 1, lid, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(teamMember,subDst,subSrc); + }); + + Kokkos::deep_copy( h_A, A ); + Kokkos::deep_copy( h_B, B ); + + bool test = true; + for(size_t i=0; i + void impl_test_local_deepcopy_teampolicy_rank_7 (const int N) { + + // Allocate matrices on device. + ViewType A( "A", N, N, N, N, N, N, N, N ); + ViewType B( "B", N, N, N, N, N, N, N, N ); + + // Create host mirrors of device views. + typename ViewType::HostMirror h_A = Kokkos::create_mirror_view( A ); + typename ViewType::HostMirror h_B = Kokkos::create_mirror_view( B ); + + // Initialize A matrix. + Kokkos::deep_copy( A, 10.0 ); + + typedef Kokkos::TeamPolicy team_policy; + typedef typename Kokkos::TeamPolicy::member_type member_type; + + //Deep Copy + Kokkos::parallel_for( team_policy( N, Kokkos::AUTO ), KOKKOS_LAMBDA ( const member_type &teamMember ) { + int lid = teamMember.league_rank();// returns a number between 0 and N + auto subSrc = Kokkos::subview(A, lid, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + auto subDst = Kokkos::subview(B, lid, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(teamMember,subDst,subSrc); + }); + + Kokkos::deep_copy( h_A, A ); + Kokkos::deep_copy( h_B, B ); + + bool test = true; + for(size_t i=0; i + void impl_test_local_deepcopy_rangepolicy_rank_1 (const int N) { + + // Allocate matrices on device. + ViewType A( "A", N, N, N, N, N, N, N, N ); + ViewType B( "B", N, N, N, N, N, N, N, N ); + + // Create host mirrors of device views. + typename ViewType::HostMirror h_A = Kokkos::create_mirror_view( A ); + typename ViewType::HostMirror h_B = Kokkos::create_mirror_view( B ); + + // Initialize A matrix. + auto subA = Kokkos::subview(A, 1, 1, 1, 1, 1, 1, Kokkos::ALL(), Kokkos::ALL()); + Kokkos::deep_copy( subA, 10.0 ); + + //Deep Copy + Kokkos::parallel_for( Kokkos::RangePolicy(0,N), KOKKOS_LAMBDA ( const int& i ) { + auto subSrc = Kokkos::subview(A, 1, 1, 1, 1, 1, 1, i, Kokkos::ALL()); + auto subDst = Kokkos::subview(B, 1, 1, 1, 1, 1, 1, i, Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(subDst,subSrc); + }); + + Kokkos::deep_copy( h_A, A ); + Kokkos::deep_copy( h_B, B ); + + bool test = true; + for(size_t i=0; i(0,N), KOKKOS_LAMBDA ( const int& i ) { + auto subDst = Kokkos::subview(B, 1, 1, 1, 1, 1, 1, i, Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(subDst,20.0); + }); + + Kokkos::deep_copy( h_B, B ); + + double sum_all = 0.0; + for(size_t i=0; i + void impl_test_local_deepcopy_rangepolicy_rank_2 (const int N) { + + // Allocate matrices on device. + ViewType A( "A", N, N, N, N, N, N, N, N ); + ViewType B( "B", N, N, N, N, N, N, N, N ); + + // Create host mirrors of device views. + typename ViewType::HostMirror h_A = Kokkos::create_mirror_view( A ); + typename ViewType::HostMirror h_B = Kokkos::create_mirror_view( B ); + + // Initialize A matrix. + auto subA = Kokkos::subview(A, 1, 1, 1, 1, 1, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::deep_copy( subA, 10.0 ); + + //Deep Copy + Kokkos::parallel_for( Kokkos::RangePolicy(0,N), KOKKOS_LAMBDA ( const int& i ) { + auto subSrc = Kokkos::subview(A, 1, 1, 1, 1, 1, i, Kokkos::ALL(), Kokkos::ALL()); + auto subDst = Kokkos::subview(B, 1, 1, 1, 1, 1, i, Kokkos::ALL(), Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(subDst,subSrc); + }); + + Kokkos::deep_copy( h_A, A ); + Kokkos::deep_copy( h_B, B ); + + bool test = true; + for(size_t i=0; i(0,N), KOKKOS_LAMBDA ( const int& i ) { + auto subDst = Kokkos::subview(B, 1, 1, 1, 1, 1, i, Kokkos::ALL(), Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(subDst,20.0); + }); + + Kokkos::deep_copy( h_B, B ); + + double sum_all = 0.0; + for(size_t i=0; i + void impl_test_local_deepcopy_rangepolicy_rank_3 (const int N) { + + // Allocate matrices on device. + ViewType A( "A", N, N, N, N, N, N, N, N ); + ViewType B( "B", N, N, N, N, N, N, N, N ); + + // Create host mirrors of device views. + typename ViewType::HostMirror h_A = Kokkos::create_mirror_view( A ); + typename ViewType::HostMirror h_B = Kokkos::create_mirror_view( B ); + + // Initialize A matrix. + auto subA = Kokkos::subview(A, 1, 1, 1, 1, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::deep_copy( subA, 10.0 ); + + //Deep Copy + Kokkos::parallel_for( Kokkos::RangePolicy(0,N), KOKKOS_LAMBDA ( const int& i ) { + auto subSrc = Kokkos::subview(A, 1, 1, 1, 1, i, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + auto subDst = Kokkos::subview(B, 1, 1, 1, 1, i, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(subDst,subSrc); + }); + + Kokkos::deep_copy( h_A, A ); + Kokkos::deep_copy( h_B, B ); + + bool test = true; + for(size_t i=0; i(0,N), KOKKOS_LAMBDA ( const int& i ) { + auto subDst = Kokkos::subview(B, 1, 1, 1, 1, i, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(subDst,20.0); + }); + + Kokkos::deep_copy( h_B, B ); + + double sum_all = 0.0; + for(size_t i=0; i + void impl_test_local_deepcopy_rangepolicy_rank_4 (const int N) { + + // Allocate matrices on device. + ViewType A( "A", N, N, N, N, N, N, N, N ); + ViewType B( "B", N, N, N, N, N, N, N, N ); + + // Create host mirrors of device views. + typename ViewType::HostMirror h_A = Kokkos::create_mirror_view( A ); + typename ViewType::HostMirror h_B = Kokkos::create_mirror_view( B ); + + // Initialize A matrix. + auto subA = Kokkos::subview(A, 1, 1, 1, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::deep_copy( subA, 10.0 ); + + //Deep Copy + Kokkos::parallel_for( Kokkos::RangePolicy(0,N), KOKKOS_LAMBDA ( const int& i ) { + auto subSrc = Kokkos::subview(A, 1, 1, 1, i, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + auto subDst = Kokkos::subview(B, 1, 1, 1, i, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(subDst,subSrc); + }); + + Kokkos::deep_copy( h_A, A ); + Kokkos::deep_copy( h_B, B ); + + bool test = true; + for(size_t i=0; i(0,N), KOKKOS_LAMBDA ( const int& i ) { + auto subDst = Kokkos::subview(B, 1, 1, 1, i, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(subDst,20.0); + }); + + Kokkos::deep_copy( h_B, B ); + + double sum_all = 0.0; + for(size_t i=0; i + void impl_test_local_deepcopy_rangepolicy_rank_5 (const int N) { + + // Allocate matrices on device. + ViewType A( "A", N, N, N, N, N, N, N, N ); + ViewType B( "B", N, N, N, N, N, N, N, N ); + + // Create host mirrors of device views. + typename ViewType::HostMirror h_A = Kokkos::create_mirror_view( A ); + typename ViewType::HostMirror h_B = Kokkos::create_mirror_view( B ); + + // Initialize A matrix. + auto subA = Kokkos::subview(A, 1, 1, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::deep_copy( subA, 10.0 ); + + //Deep Copy + Kokkos::parallel_for( Kokkos::RangePolicy(0,N), KOKKOS_LAMBDA ( const int& i ) { + auto subSrc = Kokkos::subview(A, 1, 1, i, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + auto subDst = Kokkos::subview(B, 1, 1, i, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(subDst,subSrc); + }); + + Kokkos::deep_copy( h_A, A ); + Kokkos::deep_copy( h_B, B ); + + bool test = true; + for(size_t i=0; i(0,N), KOKKOS_LAMBDA ( const int& i ) { + auto subDst = Kokkos::subview(B, 1, 1, i, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(subDst,20.0); + }); + + Kokkos::deep_copy( h_B, B ); + + double sum_all = 0.0; + for(size_t i=0; i + void impl_test_local_deepcopy_rangepolicy_rank_6 (const int N) { + + // Allocate matrices on device. + ViewType A( "A", N, N, N, N, N, N, N, N ); + ViewType B( "B", N, N, N, N, N, N, N, N ); + + // Create host mirrors of device views. + typename ViewType::HostMirror h_A = Kokkos::create_mirror_view( A ); + typename ViewType::HostMirror h_B = Kokkos::create_mirror_view( B ); + + // Initialize A matrix. + auto subA = Kokkos::subview(A, 1, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::deep_copy( subA, 10.0 ); + + //Deep Copy + Kokkos::parallel_for( Kokkos::RangePolicy(0,N), KOKKOS_LAMBDA ( const int& i ) { + auto subSrc = Kokkos::subview(A, 1, i, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + auto subDst = Kokkos::subview(B, 1, i, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(subDst,subSrc); + }); + + Kokkos::deep_copy( h_A, A ); + Kokkos::deep_copy( h_B, B ); + + bool test = true; + for(size_t i=0; i(0,N), KOKKOS_LAMBDA ( const int& i ) { + auto subDst = Kokkos::subview(B, 1, i, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(subDst,20.0); + }); + + Kokkos::deep_copy( h_B, B ); + + double sum_all = 0.0; + for(size_t i=0; i + void impl_test_local_deepcopy_rangepolicy_rank_7 (const int N) { + + // Allocate matrices on device. + ViewType A( "A", N, N, N, N, N, N, N, N ); + ViewType B( "B", N, N, N, N, N, N, N, N ); + + // Create host mirrors of device views. + typename ViewType::HostMirror h_A = Kokkos::create_mirror_view( A ); + typename ViewType::HostMirror h_B = Kokkos::create_mirror_view( B ); + + // Initialize A matrix. + Kokkos::deep_copy( A, 10.0 ); + + //Deep Copy + Kokkos::parallel_for( Kokkos::RangePolicy(0,N), KOKKOS_LAMBDA ( const int& i ) { + auto subSrc = Kokkos::subview(A, i, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + auto subDst = Kokkos::subview(B, i, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(subDst,subSrc); + }); + + Kokkos::deep_copy( h_A, A ); + Kokkos::deep_copy( h_B, B ); + + bool test = true; + for(size_t i=0; i(0,N), KOKKOS_LAMBDA ( const int& i ) { + auto subDst = Kokkos::subview(B, i, Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL(), Kokkos::ALL()); + Kokkos::Experimental::local_deep_copy(subDst,20.0); + }); + + Kokkos::deep_copy( h_B, B ); + + double sum_all = 0.0; + for(size_t i=0; i ViewType; + + { //Rank-1 + impl_test_local_deepcopy_teampolicy_rank_1(8); + } + { //Rank-2 + impl_test_local_deepcopy_teampolicy_rank_2(8); + } + { //Rank-3 + impl_test_local_deepcopy_teampolicy_rank_3(8); + } + { //Rank-4 + impl_test_local_deepcopy_teampolicy_rank_4(8); + } + { //Rank-5 + impl_test_local_deepcopy_teampolicy_rank_5(8); + } + { //Rank-6 + impl_test_local_deepcopy_teampolicy_rank_6(8); + } + { //Rank-7 + impl_test_local_deepcopy_teampolicy_rank_7(8); + } +} +//------------------------------------------------------------------------------------------------------------- +TEST_F( TEST_CATEGORY , local_deepcopy_rangepolicy_layoutleft ) +{ + typedef TEST_EXECSPACE ExecSpace; + typedef Kokkos::View ViewType; + + { //Rank-1 + impl_test_local_deepcopy_rangepolicy_rank_1(8); + } + { //Rank-2 + impl_test_local_deepcopy_rangepolicy_rank_2(8); + } + { //Rank-3 + impl_test_local_deepcopy_rangepolicy_rank_3(8); + } + { //Rank-4 + impl_test_local_deepcopy_rangepolicy_rank_4(8); + } + { //Rank-5 + impl_test_local_deepcopy_rangepolicy_rank_5(8); + } + { //Rank-6 + impl_test_local_deepcopy_rangepolicy_rank_6(8); + } + { //Rank-7 + impl_test_local_deepcopy_rangepolicy_rank_7(8); + } +} +//------------------------------------------------------------------------------------------------------------- +TEST_F( TEST_CATEGORY , local_deepcopy_teampolicy_layoutright ) +{ + typedef TEST_EXECSPACE ExecSpace; + typedef Kokkos::View ViewType; + + { //Rank-1 + impl_test_local_deepcopy_teampolicy_rank_1(8); + } + { //Rank-2 + impl_test_local_deepcopy_teampolicy_rank_2(8); + } + { //Rank-3 + impl_test_local_deepcopy_teampolicy_rank_3(8); + } + { //Rank-4 + impl_test_local_deepcopy_teampolicy_rank_4(8); + } + { //Rank-5 + impl_test_local_deepcopy_teampolicy_rank_5(8); + } + { //Rank-6 + impl_test_local_deepcopy_teampolicy_rank_6(8); + } + { //Rank-7 + impl_test_local_deepcopy_teampolicy_rank_7(8); + } +} +//------------------------------------------------------------------------------------------------------------- +TEST_F( TEST_CATEGORY , local_deepcopy_rangepolicy_layoutright ) +{ + typedef TEST_EXECSPACE ExecSpace; + typedef Kokkos::View ViewType; + + { //Rank-1 + impl_test_local_deepcopy_rangepolicy_rank_1(8); + } + { //Rank-2 + impl_test_local_deepcopy_rangepolicy_rank_2(8); + } + { //Rank-3 + impl_test_local_deepcopy_rangepolicy_rank_3(8); + } + { //Rank-4 + impl_test_local_deepcopy_rangepolicy_rank_4(8); + } + { //Rank-5 + impl_test_local_deepcopy_rangepolicy_rank_5(8); + } + { //Rank-6 + impl_test_local_deepcopy_rangepolicy_rank_6(8); + } + { //Rank-7 + impl_test_local_deepcopy_rangepolicy_rank_7(8); + } +} +#endif +#endif +} diff --git a/lib/kokkos/core/unit_test/TestMDRange.hpp b/lib/kokkos/core/unit_test/TestMDRange.hpp index a382a20700..cea89a4872 100644 --- a/lib/kokkos/core/unit_test/TestMDRange.hpp +++ b/lib/kokkos/core/unit_test/TestMDRange.hpp @@ -351,6 +351,7 @@ struct TestMDRange_2D { Kokkos::Sum< value_type > reducer_view( sum_view ); parallel_reduce( range, functor, reducer_view); + Kokkos::fence(); sum = sum_view(); ASSERT_EQ( sum, 2 * N0 * N1 ); @@ -931,6 +932,7 @@ struct TestMDRange_3D { Kokkos::Sum< value_type > reducer_view( sum_view ); parallel_reduce( range, functor, reducer_view); + Kokkos::fence(); sum = sum_view(); ASSERT_EQ( sum, 2 * N0 * N1 * N2 ); @@ -1502,6 +1504,7 @@ struct TestMDRange_4D { Kokkos::Sum< value_type > reducer_view( sum_view ); parallel_reduce( range, functor, reducer_view); + Kokkos::fence(); sum = sum_view(); ASSERT_EQ( sum, 2 * N0 * N1 * N2 * N3 ); @@ -2089,6 +2092,7 @@ struct TestMDRange_5D { Kokkos::Sum< value_type > reducer_view( sum_view ); parallel_reduce( range, functor, reducer_view); + Kokkos::fence(); sum = sum_view(); ASSERT_EQ( sum, 2 * N0 * N1 * N2 * N3 * N4 ); @@ -2607,6 +2611,7 @@ struct TestMDRange_6D { Kokkos::Sum< value_type > reducer_view( sum_view ); parallel_reduce( range, functor, reducer_view); + Kokkos::fence(); sum = sum_view(); ASSERT_EQ( sum, 2 * N0 * N1 * N2 * N3 * N4 * N5 ); diff --git a/lib/kokkos/core/unit_test/TestPolicyConstruction.hpp b/lib/kokkos/core/unit_test/TestPolicyConstruction.hpp index efbb32e387..be744a7712 100644 --- a/lib/kokkos/core/unit_test/TestPolicyConstruction.hpp +++ b/lib/kokkos/core/unit_test/TestPolicyConstruction.hpp @@ -476,6 +476,9 @@ private: void test_run_time_parameters_type() { int league_size = 131; int team_size = 4 < policy_t::execution_space::concurrency() ? 4 : policy_t::execution_space::concurrency(); +#ifdef KOKKOS_ENABLE_HPX + team_size = 1; +#endif int chunk_size = 4; int per_team_scratch = 1024; int per_thread_scratch = 16; diff --git a/lib/kokkos/core/unit_test/TestReduceCombinatorical.hpp b/lib/kokkos/core/unit_test/TestReduceCombinatorical.hpp index fe947fe14e..293cc0ca59 100644 --- a/lib/kokkos/core/unit_test/TestReduceCombinatorical.hpp +++ b/lib/kokkos/core/unit_test/TestReduceCombinatorical.hpp @@ -453,15 +453,18 @@ struct TestReduceCombinatoricalInstantiation { result_view() = 0; CallParallelReduce( args..., result_view ); + Kokkos::fence(); ASSERT_EQ( expected_result, result_view() ); value = 0; CallParallelReduce( args..., Kokkos::View< double, Kokkos::HostSpace, Kokkos::MemoryTraits >( &value ) ); + Kokkos::fence(); ASSERT_EQ( expected_result, value ); result_view() = 0; const Kokkos::View< double, Kokkos::HostSpace, Kokkos::MemoryTraits > result_view_const_um = result_view; CallParallelReduce( args..., result_view_const_um ); + Kokkos::fence(); ASSERT_EQ( expected_result, result_view_const_um() ); value = 0; @@ -526,18 +529,21 @@ struct TestReduceCombinatoricalInstantiation { h_r() = 0; Kokkos::deep_copy( result_view, h_r ); CallParallelReduce( args..., Test::ReduceCombinatorical::FunctorScalarFinal< ISTEAM >( result_view ) ); + Kokkos::fence(); Kokkos::deep_copy( h_r, result_view ); ASSERT_EQ( expected_result, h_r() ); h_r() = 0; Kokkos::deep_copy( result_view, h_r ); CallParallelReduce( args..., Test::ReduceCombinatorical::FunctorScalarJoinFinal< ISTEAM >( result_view ) ); + Kokkos::fence(); Kokkos::deep_copy( h_r, result_view ); ASSERT_EQ( expected_result, h_r() ); h_r() = 0; Kokkos::deep_copy( result_view, h_r ); CallParallelReduce( args..., Test::ReduceCombinatorical::FunctorScalarJoinFinalInit< ISTEAM >( result_view ) ); + Kokkos::fence(); Kokkos::deep_copy( h_r, result_view ); ASSERT_EQ( expected_result, h_r() ); } diff --git a/lib/kokkos/core/unit_test/TestReduceDeviceView.hpp b/lib/kokkos/core/unit_test/TestReduceDeviceView.hpp index 4f65166e37..d55c5449bc 100644 --- a/lib/kokkos/core/unit_test/TestReduceDeviceView.hpp +++ b/lib/kokkos/core/unit_test/TestReduceDeviceView.hpp @@ -30,7 +30,7 @@ void test_reduce_device_view(int64_t N, PolicyType policy, ReduceFunctor functor TestIsAsynchFunctor(atomic_test)); double time0 = timer.seconds(); timer.reset(); - ExecSpace::execution_space::fence(); + typename ExecSpace::execution_space().fence(); double time_fence0 = timer.seconds(); Kokkos::deep_copy(result,0); timer.reset(); @@ -42,7 +42,7 @@ void test_reduce_device_view(int64_t N, PolicyType policy, ReduceFunctor functor double time1 = timer.seconds(); // Check whether it was asyncronous timer.reset(); - ExecSpace::execution_space::fence(); + typename ExecSpace::execution_space().fence(); double time_fence1 = timer.seconds(); Kokkos::deep_copy(reducer_result,result); Kokkos::deep_copy(result,0); @@ -55,7 +55,7 @@ void test_reduce_device_view(int64_t N, PolicyType policy, ReduceFunctor functor double time2 = timer.seconds(); // Check whether it was asyncronous timer.reset(); - ExecSpace::execution_space::fence(); + typename ExecSpace::execution_space().fence(); double time_fence2 = timer.seconds(); Kokkos::deep_copy(view_result,result); Kokkos::deep_copy(result,0); @@ -69,7 +69,7 @@ void test_reduce_device_view(int64_t N, PolicyType policy, ReduceFunctor functor // Check whether it was asyncronous timer.reset(); - ExecSpace::execution_space::fence(); + typename ExecSpace::execution_space().fence(); double time_fence3 = timer.seconds(); ASSERT_EQ(N,scalar_result); diff --git a/lib/kokkos/core/unit_test/TestReducers.hpp b/lib/kokkos/core/unit_test/TestReducers.hpp index 7270ea3375..1d77574412 100644 --- a/lib/kokkos/core/unit_test/TestReducers.hpp +++ b/lib/kokkos/core/unit_test/TestReducers.hpp @@ -319,6 +319,7 @@ struct TestReducers { sum_view() = init; Kokkos::Sum< Scalar > reducer_view( sum_view ); Kokkos::parallel_reduce( Kokkos::RangePolicy< ExecSpace >( 0, N ), f, reducer_view ); + Kokkos::fence(); Scalar sum_view_scalar = sum_view(); ASSERT_EQ( sum_view_scalar, reference_sum ); @@ -365,6 +366,7 @@ struct TestReducers { prod_view() = init; Kokkos::Prod< Scalar > reducer_view( prod_view ); Kokkos::parallel_reduce( Kokkos::RangePolicy< ExecSpace >( 0, N ), f, reducer_view ); + Kokkos::fence(); Scalar prod_view_scalar = prod_view(); ASSERT_EQ( prod_view_scalar, reference_prod ); @@ -412,6 +414,7 @@ struct TestReducers { min_view() = init; Kokkos::Min< Scalar > reducer_view( min_view ); Kokkos::parallel_reduce( Kokkos::RangePolicy< ExecSpace >( 0, N ), f, reducer_view ); + Kokkos::fence(); Scalar min_view_scalar = min_view(); ASSERT_EQ( min_view_scalar, reference_min ); @@ -459,6 +462,7 @@ struct TestReducers { max_view() = init; Kokkos::Max< Scalar > reducer_view( max_view ); Kokkos::parallel_reduce( Kokkos::RangePolicy< ExecSpace >( 0, N ), f, reducer_view ); + Kokkos::fence(); Scalar max_view_scalar = max_view(); ASSERT_EQ( max_view_scalar, reference_max ); @@ -517,6 +521,7 @@ struct TestReducers { Kokkos::View< value_type, Kokkos::HostSpace > min_view( "View" ); Kokkos::MinLoc< Scalar, int > reducer_view( min_view ); Kokkos::parallel_reduce( Kokkos::RangePolicy< ExecSpace >( 0, N ), f, reducer_view ); + Kokkos::fence(); value_type min_view_scalar = min_view(); ASSERT_EQ( min_view_scalar.val, reference_min ); @@ -577,6 +582,7 @@ struct TestReducers { Kokkos::View< value_type, Kokkos::HostSpace > max_view( "View" ); Kokkos::MaxLoc< Scalar, int > reducer_view( max_view ); Kokkos::parallel_reduce( Kokkos::RangePolicy< ExecSpace >( 0, N ), f, reducer_view ); + Kokkos::fence(); value_type max_view_scalar = max_view(); ASSERT_EQ( max_view_scalar.val, reference_max ); @@ -687,6 +693,7 @@ struct TestReducers { Kokkos::View< value_type, Kokkos::HostSpace > minmax_view( "View" ); Kokkos::MinMaxLoc< Scalar, int > reducer_view( minmax_view ); Kokkos::parallel_reduce( Kokkos::RangePolicy< ExecSpace >( 0, N ), f, reducer_view ); + Kokkos::fence(); value_type minmax_view_scalar = minmax_view(); ASSERT_EQ( minmax_view_scalar.min_val, reference_min ); @@ -740,6 +747,7 @@ struct TestReducers { band_view() = init; Kokkos::BAnd< Scalar > reducer_view( band_view ); Kokkos::parallel_reduce( Kokkos::RangePolicy< ExecSpace >( 0, N ), f, reducer_view ); + Kokkos::fence(); Scalar band_view_scalar = band_view(); ASSERT_EQ( band_view_scalar, reference_band ); @@ -786,6 +794,7 @@ struct TestReducers { bor_view() = init; Kokkos::BOr< Scalar > reducer_view( bor_view ); Kokkos::parallel_reduce( Kokkos::RangePolicy< ExecSpace >( 0, N ), f, reducer_view ); + Kokkos::fence(); Scalar bor_view_scalar = bor_view(); ASSERT_EQ( bor_view_scalar, reference_bor ); @@ -832,6 +841,7 @@ struct TestReducers { land_view() = init; Kokkos::LAnd< Scalar > reducer_view( land_view ); Kokkos::parallel_reduce( Kokkos::RangePolicy< ExecSpace >( 0, N ), f, reducer_view ); + Kokkos::fence(); Scalar land_view_scalar = land_view(); ASSERT_EQ( land_view_scalar, reference_land ); @@ -878,6 +888,7 @@ struct TestReducers { lor_view() = init; Kokkos::LOr< Scalar > reducer_view( lor_view ); Kokkos::parallel_reduce( Kokkos::RangePolicy< ExecSpace >( 0, N ), f, reducer_view ); + Kokkos::fence(); Scalar lor_view_scalar = lor_view(); ASSERT_EQ( lor_view_scalar, reference_lor ); diff --git a/lib/kokkos/core/unit_test/TestScan.hpp b/lib/kokkos/core/unit_test/TestScan.hpp index e021ed09f5..eaebb254a7 100644 --- a/lib/kokkos/core/unit_test/TestScan.hpp +++ b/lib/kokkos/core/unit_test/TestScan.hpp @@ -96,6 +96,7 @@ struct TestScan { long long int total = 0; Kokkos::parallel_scan( N, *this, total ); + run_check( size_t( ( N+1 )*N/2 ), size_t( total ) ); check_error(); } @@ -109,6 +110,8 @@ struct TestScan { errors = errors_a; Kokkos::parallel_scan( exec_policy( Start , N ) , *this ); + Kokkos::fence(); + check_error(); } @@ -138,7 +141,7 @@ TEST_F( TEST_CATEGORY, scan ) TestScan< TEST_EXECSPACE >( 0 ); TestScan< TEST_EXECSPACE >( 100000 ); TestScan< TEST_EXECSPACE >( 10000000 ); - TEST_EXECSPACE::fence(); + TEST_EXECSPACE().fence(); } @@ -153,7 +156,7 @@ TEST_F( TEST_CATEGORY, scan ) TestScanFunctor( 1000000 ); TestScanFunctor( 10000000 ); - TEST_EXECSPACE::fence(); + TEST_EXECSPACE().fence(); }*/ diff --git a/lib/kokkos/core/unit_test/TestSharedAlloc.hpp b/lib/kokkos/core/unit_test/TestSharedAlloc.hpp index 1a942b89c8..c475fe55dc 100644 --- a/lib/kokkos/core/unit_test/TestSharedAlloc.hpp +++ b/lib/kokkos/core/unit_test/TestSharedAlloc.hpp @@ -107,6 +107,8 @@ void test_shared_alloc() ASSERT_EQ( r[i], RecordMemS::get_record( r[i]->data() ) ); }); + Kokkos::fence(); + #ifdef KOKKOS_DEBUG // Sanity check for the whole set of allocation records to which this record belongs. RecordBase::is_sane( r[0] ); @@ -120,6 +122,8 @@ void test_shared_alloc() #endif } }); + + Kokkos::fence(); } { @@ -145,6 +149,8 @@ void test_shared_alloc() ASSERT_EQ( r[i], RecordMemS::get_record( r[i]->data() ) ); }); + Kokkos::fence(); + #ifdef KOKKOS_DEBUG RecordBase::is_sane( r[0] ); #endif @@ -157,6 +163,8 @@ void test_shared_alloc() } }); + Kokkos::fence(); + ASSERT_EQ( destroy_count, int( N ) ); } @@ -196,12 +204,14 @@ void test_shared_alloc() ASSERT_EQ( track.use_count(), 1 ); } - Kokkos::parallel_for( range, [=] ( size_t i ) { + Kokkos::parallel_for( range, [=] ( size_t ) { Tracker local_tracker; local_tracker.assign_allocated_record_to_uninitialized( rec ); ASSERT_GT( rec->use_count(), 1 ); }); + Kokkos::fence(); + ASSERT_EQ( rec->use_count(), 1 ); ASSERT_EQ( track.use_count(), 1 ); diff --git a/lib/kokkos/core/unit_test/TestTaskScheduler.hpp b/lib/kokkos/core/unit_test/TestTaskScheduler.hpp index ac32a01fb8..361e8da9e1 100644 --- a/lib/kokkos/core/unit_test/TestTaskScheduler.hpp +++ b/lib/kokkos/core/unit_test/TestTaskScheduler.hpp @@ -47,11 +47,15 @@ #include #if defined( KOKKOS_ENABLE_TASKDAG ) #include +#include #include #include #include +//============================================================================== +// {{{1 + namespace TestTaskScheduler { namespace { @@ -72,29 +76,30 @@ long eval_fib( long n ) } -template< typename Space > +template< typename Scheduler > struct TestFib { - typedef Kokkos::TaskScheduler< Space > sched_type; - typedef Kokkos::Future< long, Space > future_type; - typedef long value_type; + using sched_type = Scheduler; + using future_type = Kokkos::BasicFuture< long, Scheduler >; + using value_type = long; - sched_type sched; future_type fib_m1; future_type fib_m2; const value_type n; KOKKOS_INLINE_FUNCTION - TestFib( const sched_type & arg_sched, const value_type arg_n ) - : sched( arg_sched ), fib_m1(), fib_m2(), n( arg_n ) {} + TestFib( const value_type arg_n ) + : fib_m1(), fib_m2(), n( arg_n ) {} KOKKOS_INLINE_FUNCTION - void operator()( typename sched_type::member_type &, value_type & result ) + void operator()( typename sched_type::member_type & member, value_type & result ) { #if 0 printf( "\nTestFib(%ld) %d %d\n", n, int( !fib_m1.is_null() ), int( !fib_m2.is_null() ) ); #endif + auto& sched = member.scheduler(); + if ( n < 2 ) { result = n; } @@ -107,13 +112,13 @@ struct TestFib // path to completion. fib_m2 = Kokkos::task_spawn( Kokkos::TaskSingle( sched, Kokkos::TaskPriority::High ) - , TestFib( sched, n - 2 ) ); + , TestFib( n - 2 ) ); fib_m1 = Kokkos::task_spawn( Kokkos::TaskSingle( sched ) - , TestFib( sched, n - 1 ) ); + , TestFib( n - 1 ) ); - Kokkos::Future< Space > dep[] = { fib_m1, fib_m2 }; - Kokkos::Future< Space > fib_all = Kokkos::when_all( dep, 2 ); + Kokkos::BasicFuture dep[] = { fib_m1, fib_m2 }; + Kokkos::BasicFuture fib_all = sched.when_all( dep, 2 ); if ( !fib_m2.is_null() && !fib_m1.is_null() && !fib_all.is_null() ) { // High priority to retire this branch. @@ -123,9 +128,9 @@ struct TestFib #if 1 printf( "TestFib(%ld) insufficient memory alloc_capacity(%d) task_max(%d) task_accum(%ld)\n" , n - , sched.allocation_capacity() - , sched.allocated_task_count_max() - , sched.allocated_task_count_accum() + , 0 //sched.allocation_capacity() + , 0 //sched.allocated_task_count_max() + , 0l //sched.allocated_task_count_accum() ); #endif @@ -149,12 +154,18 @@ struct TestFib , std::min(size_t(MaxBlockSize),MemoryCapacity) , std::min(size_t(SuperBlockSize),MemoryCapacity) ); - future_type f = Kokkos::host_spawn( Kokkos::TaskSingle( root_sched ) - , TestFib( root_sched, i ) ); + { + future_type f = Kokkos::host_spawn( Kokkos::TaskSingle( root_sched ) + , TestFib( i ) ); + + Kokkos::wait( root_sched ); + + ASSERT_EQ( eval_fib( i ), f.get() ); + } + + ASSERT_EQ(root_sched.queue().allocation_count(), 0); - Kokkos::wait( root_sched ); - ASSERT_EQ( eval_fib( i ), f.get() ); #if 0 fprintf( stdout, "\nTestFib::run(%d) spawn_size(%d) when_all_size(%d) alloc_capacity(%d) task_max(%d) task_accum(%ld)\n" @@ -172,32 +183,36 @@ struct TestFib } // namespace TestTaskScheduler +// end TestFib }}}1 +//============================================================================== + //---------------------------------------------------------------------------- +//============================================================================== +// {{{1 + namespace TestTaskScheduler { -template< class Space > +template< class Scheduler > struct TestTaskDependence { - typedef Kokkos::TaskScheduler< Space > sched_type; - typedef Kokkos::Future< Space > future_type; - typedef Kokkos::View< long, Space > accum_type; + typedef Scheduler sched_type; + typedef Kokkos::BasicFuture< void, Scheduler > future_type; + typedef Kokkos::View< long, typename sched_type::execution_space > accum_type; typedef void value_type; - sched_type m_sched; accum_type m_accum; long m_count; KOKKOS_INLINE_FUNCTION TestTaskDependence( long n - , const sched_type & arg_sched , const accum_type & arg_accum ) - : m_sched( arg_sched ) - , m_accum( arg_accum ) + : m_accum( arg_accum ) , m_count( n ) {} KOKKOS_INLINE_FUNCTION - void operator()( typename sched_type::member_type & ) + void operator()( typename sched_type::member_type & member ) { + auto& sched = member.scheduler(); enum { CHUNK = 8 }; const int n = CHUNK < m_count ? CHUNK : m_count; @@ -206,14 +221,14 @@ struct TestTaskDependence { const int increment = ( m_count + n - 1 ) / n; future_type f = - m_sched.when_all( n , [this,increment]( int i ) { + sched.when_all( n , [this,&member,increment]( int i ) { const long inc = increment ; const long begin = i * inc ; const long count = begin + inc < m_count ? inc : m_count - begin ; return Kokkos::task_spawn - ( Kokkos::TaskSingle( m_sched ) - , TestTaskDependence( count, m_sched, m_accum ) ); + ( Kokkos::TaskSingle( member.scheduler() ) + , TestTaskDependence( count, m_accum ) ); }); m_count = 0; @@ -244,7 +259,7 @@ struct TestTaskDependence { typename accum_type::HostMirror host_accum = Kokkos::create_mirror_view( accum ); - Kokkos::host_spawn( Kokkos::TaskSingle( sched ), TestTaskDependence( n, sched, accum ) ); + Kokkos::host_spawn( Kokkos::TaskSingle( sched ), TestTaskDependence( n, accum ) ); Kokkos::wait( sched ); @@ -256,22 +271,25 @@ struct TestTaskDependence { } // namespace TestTaskScheduler +// end TestTaskDependence }}}1 +//============================================================================== + //---------------------------------------------------------------------------- namespace TestTaskScheduler { -template< class ExecSpace > +template< class Scheduler > struct TestTaskTeam { //enum { SPAN = 8 }; enum { SPAN = 33 }; //enum { SPAN = 1 }; typedef void value_type; - typedef Kokkos::TaskScheduler< ExecSpace > sched_type; - typedef Kokkos::Future< ExecSpace > future_type; + using sched_type = Scheduler; + using future_type = Kokkos::BasicFuture; + using ExecSpace = typename sched_type::execution_space; typedef Kokkos::View< long*, ExecSpace > view_type; - sched_type sched; future_type future; view_type parfor_result; @@ -281,14 +299,12 @@ struct TestTaskTeam { const long nvalue; KOKKOS_INLINE_FUNCTION - TestTaskTeam( const sched_type & arg_sched - , const view_type & arg_parfor_result + TestTaskTeam( const view_type & arg_parfor_result , const view_type & arg_parreduce_check , const view_type & arg_parscan_result , const view_type & arg_parscan_check , const long arg_nvalue ) - : sched( arg_sched ) - , future() + : future() , parfor_result( arg_parfor_result ) , parreduce_check( arg_parreduce_check ) , parscan_result( arg_parscan_result ) @@ -298,21 +314,22 @@ struct TestTaskTeam { KOKKOS_INLINE_FUNCTION void operator()( typename sched_type::member_type & member ) { + auto& sched = member.scheduler(); const long end = nvalue + 1; + // begin = max(end - SPAN, 0); const long begin = 0 < end - SPAN ? end - SPAN : 0; if ( 0 < begin && future.is_null() ) { if ( member.team_rank() == 0 ) { future = Kokkos::task_spawn( Kokkos::TaskTeam( sched ) - , TestTaskTeam( sched - , parfor_result + , TestTaskTeam( parfor_result , parreduce_check , parscan_result , parscan_check , begin - 1 ) ); - #ifndef __HCC_ACCELERATOR__ + #if !defined(__HCC_ACCELERATOR__) && !defined(__CUDA_ARCH__) assert( !future.is_null() ); #endif @@ -449,8 +466,7 @@ struct TestTaskTeam { host_parscan_check = Kokkos::create_mirror_view( root_parscan_check ); future_type f = Kokkos::host_spawn( Kokkos::TaskTeam( root_sched ) - , TestTaskTeam( root_sched - , root_parfor_result + , TestTaskTeam( root_parfor_result , root_parreduce_check , root_parscan_result , root_parscan_check @@ -492,27 +508,25 @@ struct TestTaskTeam { } }; -template< class ExecSpace > +template< class Scheduler > struct TestTaskTeamValue { enum { SPAN = 8 }; typedef long value_type; - typedef Kokkos::TaskScheduler< ExecSpace > sched_type; - typedef Kokkos::Future< value_type, ExecSpace > future_type; + using sched_type = Scheduler; + using future_type = Kokkos::BasicFuture< value_type, sched_type >; + using ExecSpace = typename sched_type::execution_space; typedef Kokkos::View< long*, ExecSpace > view_type; - sched_type sched; future_type future; view_type result; const long nvalue; KOKKOS_INLINE_FUNCTION - TestTaskTeamValue( const sched_type & arg_sched - , const view_type & arg_result + TestTaskTeamValue( const view_type & arg_result , const long arg_nvalue ) - : sched( arg_sched ) - , future() + : future() , result( arg_result ) , nvalue( arg_nvalue ) {} @@ -523,12 +537,16 @@ struct TestTaskTeamValue { const long end = nvalue + 1; const long begin = 0 < end - SPAN ? end - SPAN : 0; + auto& sched = member.scheduler(); + if ( 0 < begin && future.is_null() ) { if ( member.team_rank() == 0 ) { - future = sched.task_spawn( TestTaskTeamValue( sched, result, begin - 1 ) + future = sched.task_spawn( TestTaskTeamValue( result, begin - 1 ) , Kokkos::TaskTeam ); + #if !defined(__HCC_ACCELERATOR__) && !defined(__CUDA_ARCH__) assert( !future.is_null() ); + #endif sched.respawn( this , future ); } @@ -565,7 +583,7 @@ struct TestTaskTeamValue { typename view_type::HostMirror host_result = Kokkos::create_mirror_view( root_result ); - future_type fv = root_sched.host_spawn( TestTaskTeamValue( root_sched, root_result, n ) + future_type fv = root_sched.host_spawn( TestTaskTeamValue( root_result, n ) , Kokkos::TaskTeam ); Kokkos::wait( root_sched ); @@ -594,31 +612,30 @@ struct TestTaskTeamValue { namespace TestTaskScheduler { -template< class Space > +template< class Scheduler > struct TestTaskSpawnWithPool { - typedef Kokkos::TaskScheduler< Space > sched_type; - typedef Kokkos::Future< Space > future_type; + using sched_type = Scheduler; + using future_type = Kokkos::BasicFuture; typedef void value_type; + using Space = typename sched_type::execution_space; - sched_type m_sched ; int m_count ; Kokkos::MemoryPool m_pool ; KOKKOS_INLINE_FUNCTION - TestTaskSpawnWithPool( const sched_type & arg_sched - , const int & arg_count - , const Kokkos::MemoryPool & arg_pool - ) - : m_sched( arg_sched ) - , m_count( arg_count ) + TestTaskSpawnWithPool( + const int & arg_count, + const Kokkos::MemoryPool & arg_pool + ) + : m_count( arg_count ) , m_pool( arg_pool ) {} KOKKOS_INLINE_FUNCTION - void operator()( typename sched_type::member_type & ) + void operator()( typename sched_type::member_type & member ) { if ( m_count ) { - Kokkos::task_spawn( Kokkos::TaskSingle( m_sched ) , TestTaskSpawnWithPool( m_sched , m_count - 1, m_pool ) ); + Kokkos::task_spawn( Kokkos::TaskSingle( member.scheduler() ) , TestTaskSpawnWithPool( m_count - 1, m_pool ) ); } } @@ -639,7 +656,7 @@ struct TestTaskSpawnWithPool { using other_memory_space = typename Space::memory_space; Kokkos::MemoryPool pool(other_memory_space(), 10000, 100, 200, 1000); - auto f = Kokkos::host_spawn( Kokkos::TaskSingle( sched ), TestTaskSpawnWithPool( sched, 3, pool ) ); + auto f = Kokkos::host_spawn( Kokkos::TaskSingle( sched ), TestTaskSpawnWithPool( 3, pool ) ); Kokkos::wait( sched ); } @@ -647,36 +664,307 @@ struct TestTaskSpawnWithPool { } -namespace Test { +//---------------------------------------------------------------------------- -TEST_F( TEST_CATEGORY, task_fib ) -{ - const int N = 27 ; - for ( int i = 0; i < N; ++i ) { - TestTaskScheduler::TestFib< TEST_EXECSPACE >::run( i , ( i + 1 ) * ( i + 1 ) * 2000 ); +namespace TestTaskScheduler { + +template< class Scheduler > +struct TestTaskCtorsDevice { + using sched_type = Scheduler; + using future_type = Kokkos::BasicFuture; + using value_type = void; + using Space = typename sched_type::execution_space; + + int m_count; + + KOKKOS_INLINE_FUNCTION + TestTaskCtorsDevice(const int & arg_count) : m_count(arg_count) { } + + KOKKOS_INLINE_FUNCTION + void operator()(typename sched_type::member_type& member ) + { + // Note: Default construction on the device is not allowed + if(m_count == 4) { + Kokkos::task_spawn( + Kokkos::TaskSingle(member.scheduler()), + TestTaskCtorsDevice(m_count - 1) + ); + } + else if(m_count == 3) { + sched_type s = member.scheduler(); // move construct + s = member.scheduler(); // move assignment + Kokkos::task_spawn( + Kokkos::TaskSingle(s), + TestTaskCtorsDevice(m_count - 1) + ); + } + else if(m_count == 2) { + sched_type s3 = member.scheduler(); // move construct from member.scheduler(); + Kokkos::task_spawn( + Kokkos::TaskSingle(s3), + TestTaskCtorsDevice(m_count - 1) + ); + } + else if(m_count == 1) { + sched_type s = member.scheduler(); // move construct from member.scheduler(); + sched_type s2 = s; // copy construct from s + Kokkos::task_spawn( + Kokkos::TaskSingle(s2), + TestTaskCtorsDevice(m_count - 1) + ); + } } -} -TEST_F( TEST_CATEGORY, task_depend ) -{ - for ( int i = 0; i < 25; ++i ) { - TestTaskScheduler::TestTaskDependence< TEST_EXECSPACE >::run( i ); + static void run() + { + using memory_space = typename sched_type::memory_space; + + enum { MemoryCapacity = 16000 }; + enum { MinBlockSize = 64 }; + enum { MaxBlockSize = 1024 }; + enum { SuperBlockSize = 4096 }; + + sched_type sched( + memory_space(), MemoryCapacity, MinBlockSize, MaxBlockSize, SuperBlockSize + ); + + auto f = Kokkos::host_spawn( + Kokkos::TaskSingle(sched), + TestTaskCtorsDevice(4) + ); + + Kokkos::wait(sched); + + // TODO assertions and sanity checks + } -} +}; -TEST_F( TEST_CATEGORY, task_team ) -{ - TestTaskScheduler::TestTaskTeam< TEST_EXECSPACE >::run( 1000 ); - //TestTaskScheduler::TestTaskTeamValue< TEST_EXECSPACE >::run( 1000 ); // Put back after testing. } -TEST_F( TEST_CATEGORY, task_with_mempool ) -{ - TestTaskScheduler::TestTaskSpawnWithPool< TEST_EXECSPACE >::run(); -} +//---------------------------------------------------------------------------- + + +namespace TestTaskScheduler { + +template +struct TestMultipleDependence { + + using sched_type = Scheduler; + using future_bool = Kokkos::BasicFuture; + using future_int = Kokkos::BasicFuture; + using value_type = bool; + using execution_space = typename sched_type::execution_space; + + enum : int { NPerDepth = 6 }; + enum : int { NFanout = 3 }; + + // xlC doesn't like incomplete aggregate constructors, so we have do do this manually: + KOKKOS_INLINE_FUNCTION + TestMultipleDependence(int depth, int max_depth) + : m_depth(depth), + m_max_depth(max_depth), + m_dep() + { + // gcc 4.8 has an internal compile error when I give the initializer in the class, so I have do do it here + for(int i = 0; i < NPerDepth; ++i) { + m_result_futures[i] = future_bool(); + } + } + + // xlC doesn't like incomplete aggregate constructors, so we have do do this manually: + KOKKOS_INLINE_FUNCTION + TestMultipleDependence(int depth, int max_depth, future_int dep) + : m_depth(depth), + m_max_depth(max_depth), + m_dep(dep) + { + // gcc 4.8 has an internal compile error when I give the initializer in the class, so I have do do it here + for(int i = 0; i < NPerDepth; ++i) { + m_result_futures[i] = future_bool(); + } + } + + int m_depth; + int m_max_depth; + future_int m_dep; + future_bool m_result_futures[NPerDepth]; + + + struct TestCheckReady { + future_int m_dep; + using value_type = bool; + KOKKOS_INLINE_FUNCTION + void operator()(typename Scheduler::member_type&, bool& value) { + // if it was "transiently" ready, this could be false even if we made it a dependence of this task + value = m_dep.is_ready(); + return; + } + }; + + + struct TestComputeValue { + using value_type = int; + KOKKOS_INLINE_FUNCTION + void operator()(typename Scheduler::member_type&, int& result) { + double value = 0; + // keep this one busy for a while + for(int i = 0; i < 10000; ++i) { + value += i * i / 7.138 / value; + } + // Do something irrelevant + result = int(value) << 2; + return; + } + }; + + + KOKKOS_INLINE_FUNCTION + void operator()(typename sched_type::member_type & member, bool& value) + { + if(m_result_futures[0].is_null()) { + if (m_depth == 0) { + // Spawn one expensive task at the root + m_dep = Kokkos::task_spawn(Kokkos::TaskSingle(member.scheduler()), TestComputeValue{}); + } + + // Then check for it to be ready in a whole bunch of other tasks that race + int n_checkers = NPerDepth; + if(m_depth < m_max_depth) { + n_checkers -= NFanout; + for(int i = n_checkers; i < NPerDepth; ++i) { + m_result_futures[i] = Kokkos::task_spawn(Kokkos::TaskSingle(member.scheduler()), + TestMultipleDependence(m_depth + 1, m_max_depth, m_dep) + ); + } + } + + for(int i = 0; i < n_checkers; ++i) { + m_result_futures[i] = member.scheduler().spawn(Kokkos::TaskSingle(m_dep), TestCheckReady{m_dep}); + } + auto done = member.scheduler().when_all(m_result_futures, NPerDepth); + Kokkos::respawn(this, done); + + return; + } + else { + value = true; + for(int i = 0; i < NPerDepth; ++i) { + value = value && !m_result_futures[i].is_null(); + if(value) { + value = value && m_result_futures[i].get(); + } + } + return; + } + } + + static void run(int depth) + { + typedef typename sched_type::memory_space memory_space; + + enum { MemoryCapacity = 1 << 30 }; + enum { MinBlockSize = 64 }; + enum { MaxBlockSize = 1024 }; + enum { SuperBlockSize = 4096 }; + + sched_type sched( memory_space() + , MemoryCapacity + , MinBlockSize + , MaxBlockSize + , SuperBlockSize ); + + auto f = Kokkos::host_spawn( Kokkos::TaskSingle( sched ), TestMultipleDependence( 0, depth ) ); + + Kokkos::wait( sched ); + + ASSERT_TRUE( f.get() ); + + } +}; } +//---------------------------------------------------------------------------- + +#define KOKKOS_PP_CAT_IMPL(x, y) x ## y +#define KOKKOS_TEST_WITH_SUFFIX(x, y) KOKKOS_PP_CAT_IMPL(x, y) + +#define TEST_SCHEDULER_SUFFIX _deprecated +#define TEST_SCHEDULER Kokkos::DeprecatedTaskScheduler +#include "TestTaskScheduler_single.hpp" +#undef TEST_SCHEDULER +#undef TEST_SCHEDULER_SUFFIX + +#define TEST_SCHEDULER_SUFFIX _deprecated_multiple +#define TEST_SCHEDULER Kokkos::DeprecatedTaskSchedulerMultiple +#include "TestTaskScheduler_single.hpp" +#undef TEST_SCHEDULER +#undef TEST_SCHEDULER_SUFFIX + + +#define TEST_SCHEDULER_SUFFIX _single +#define TEST_SCHEDULER Kokkos::TaskScheduler +#include "TestTaskScheduler_single.hpp" +#undef TEST_SCHEDULER +#undef TEST_SCHEDULER_SUFFIX + +#define TEST_SCHEDULER_SUFFIX _multiple +#define TEST_SCHEDULER Kokkos::TaskSchedulerMultiple +#include "TestTaskScheduler_single.hpp" +#undef TEST_SCHEDULER +#undef TEST_SCHEDULER_SUFFIX + + +#define TEST_SCHEDULER_SUFFIX _chase_lev +#define TEST_SCHEDULER Kokkos::ChaseLevTaskScheduler +#include "TestTaskScheduler_single.hpp" +#undef TEST_SCHEDULER +#undef TEST_SCHEDULER_SUFFIX + +#if 0 +#define TEST_SCHEDULER_SUFFIX _fixed_mempool +#define TEST_SCHEDULER \ + Kokkos::SimpleTaskScheduler< \ + TEST_EXECSPACE, \ + Kokkos::Impl::SingleTaskQueue< \ + TEST_EXECSPACE, \ + Kokkos::Impl::default_tasking_memory_space_for_execution_space_t, \ + Kokkos::Impl::TaskQueueTraitsLockBased, \ + Kokkos::Impl::FixedBlockSizeMemoryPool< \ + Kokkos::Device>, \ + 128, \ + 16 \ + > \ + > \ + > +#include "TestTaskScheduler_single.hpp" +#undef TEST_SCHEDULER +#undef TEST_SCHEDULER_SUFFIX + +#define TEST_SCHEDULER_SUFFIX _fixed_mempool_multiple +#define TEST_SCHEDULER \ + Kokkos::SimpleTaskScheduler< \ + TEST_EXECSPACE, \ + Kokkos::Impl::MultipleTaskQueue< \ + TEST_EXECSPACE, \ + Kokkos::Impl::default_tasking_memory_space_for_execution_space_t, \ + Kokkos::Impl::TaskQueueTraitsLockBased, \ + Kokkos::Impl::FixedBlockSizeMemoryPool< \ + Kokkos::Device>, \ + 128, \ + 16 \ + > \ + > \ + > +#include "TestTaskScheduler_single.hpp" +#undef TEST_SCHEDULER +#undef TEST_SCHEDULER_SUFFIX +#endif + +#undef KOKKOS_TEST_WITH_SUFFIX +#undef KOKKOS_PP_CAT_IMPL + #endif // #if defined( KOKKOS_ENABLE_TASKDAG ) #endif // #ifndef KOKKOS_UNITTEST_TASKSCHEDULER_HPP diff --git a/lib/kokkos/core/unit_test/TestTaskScheduler_single.hpp b/lib/kokkos/core/unit_test/TestTaskScheduler_single.hpp new file mode 100644 index 0000000000..6ac9a6d740 --- /dev/null +++ b/lib/kokkos/core/unit_test/TestTaskScheduler_single.hpp @@ -0,0 +1,92 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +namespace Test { + +TEST_F( TEST_CATEGORY, KOKKOS_TEST_WITH_SUFFIX(task_fib, TEST_SCHEDULER_SUFFIX) ) +{ + const int N = 27 ; + for ( int i = 0; i < N; ++i ) { + TestTaskScheduler::TestFib< TEST_SCHEDULER >::run( i , ( i + 1 ) * ( i + 1 ) * 64000 ); + } +} + +TEST_F( TEST_CATEGORY, KOKKOS_TEST_WITH_SUFFIX(task_depend, TEST_SCHEDULER_SUFFIX) ) +{ + for ( int i = 0; i < 25; ++i ) { + TestTaskScheduler::TestTaskDependence< TEST_SCHEDULER >::run( i ); + } +} + +TEST_F( TEST_CATEGORY, KOKKOS_TEST_WITH_SUFFIX(task_team, TEST_SCHEDULER_SUFFIX) ) +{ + TestTaskScheduler::TestTaskTeam< TEST_SCHEDULER >::run( 1000 ); + //TestTaskScheduler::TestTaskTeamValue< TEST_EXECSPACE >::run( 1000 ); // Put back after testing. +} + +TEST_F( TEST_CATEGORY, KOKKOS_TEST_WITH_SUFFIX(task_with_mempool, TEST_SCHEDULER_SUFFIX) ) +{ + TestTaskScheduler::TestTaskSpawnWithPool::run(); +} + +TEST_F( TEST_CATEGORY, KOKKOS_TEST_WITH_SUFFIX(task_multiple_depend, TEST_SCHEDULER_SUFFIX) ) +{ + for ( int i = 2; i < 6; ++i ) { + TestTaskScheduler::TestMultipleDependence::run( i ); + } +} + +TEST_F( TEST_CATEGORY, KOKKOS_TEST_WITH_SUFFIX(task_scheduler_ctors, TEST_SCHEDULER_SUFFIX) ) +{ + TEST_SCHEDULER sched; + TEST_SCHEDULER sched2 = sched; + sched = sched2; +} + +TEST_F( TEST_CATEGORY, KOKKOS_TEST_WITH_SUFFIX(task_scheduer_ctors_device, TEST_SCHEDULER_SUFFIX) ) +{ + TestTaskScheduler::TestTaskCtorsDevice::run(); +} + + +} // end namespace Test \ No newline at end of file diff --git a/lib/kokkos/core/unit_test/TestTeam.hpp b/lib/kokkos/core/unit_test/TestTeam.hpp index 487a4d581c..5f325eb905 100644 --- a/lib/kokkos/core/unit_test/TestTeam.hpp +++ b/lib/kokkos/core/unit_test/TestTeam.hpp @@ -72,6 +72,7 @@ struct TestTeamPolicy { const int tid = member.team_rank() + member.team_size() * member.league_rank(); m_flags( member.team_rank(), member.league_rank() ) = tid; + static_assert((std::is_same::value),"TeamMember::execution_space is not the same as TeamPolicy<>::execution_space"); } KOKKOS_INLINE_FUNCTION @@ -265,7 +266,7 @@ public: Kokkos::parallel_reduce( team_exec, functor_type( nwork ), tmp ); } - execution_space::fence(); + execution_space().fence(); for ( unsigned i = 0; i < Repeat; ++i ) { for ( unsigned j = 0; j < Count; ++j ) { @@ -391,7 +392,7 @@ public: Kokkos::deep_copy( functor.accum, total ); Kokkos::parallel_reduce( team_exec, functor, result_type( & error ) ); - DeviceType::fence(); + DeviceType().fence(); Kokkos::deep_copy( accum, functor.accum ); Kokkos::deep_copy( total, functor.total ); @@ -400,7 +401,7 @@ public: ASSERT_EQ( total, accum ); } - execution_space::fence(); + execution_space().fence(); } }; @@ -495,6 +496,7 @@ struct TestSharedTeam { typename Functor::value_type error_count = 0; Kokkos::parallel_reduce( team_exec, Functor(), result_type( & error_count ) ); + Kokkos::fence(); ASSERT_EQ( error_count, 0 ); } @@ -569,6 +571,8 @@ struct TestLambdaSharedTeam { } }, result_type( & error_count ) ); + Kokkos::fence(); + ASSERT_EQ( error_count, 0 ); } }; @@ -679,6 +683,7 @@ struct TestScratchTeam { Kokkos::parallel_reduce( team_exec.set_scratch_size( 1, Kokkos::PerTeam( team_scratch_size ), Kokkos::PerThread( thread_scratch_size ) ), Functor(), result_type( & error_count ) ); + Kokkos::fence(); ASSERT_EQ( error_count, 0 ); } }; @@ -822,7 +827,6 @@ struct ClassNoShmemSizeFunction { Kokkos::TeamPolicy< TagReduce, ExecSpace, ScheduleType > policy( 10, team_size, 16 ); Kokkos::parallel_reduce( policy.set_scratch_size( 0, Kokkos::PerTeam( per_team0 ), Kokkos::PerThread( per_thread0 ) ).set_scratch_size( 1, Kokkos::PerTeam( per_team1 ), Kokkos::PerThread( per_thread1 ) ), *this, error ); - Kokkos::fence(); ASSERT_EQ( error, 0 ); } @@ -877,7 +881,6 @@ struct ClassWithShmemSizeFunction { Kokkos::parallel_reduce( policy.set_scratch_size( 1, Kokkos::PerTeam( per_team1 ), Kokkos::PerThread( per_thread1 ) ), *this, error ); - Kokkos::fence(); ASSERT_EQ( error, 0 ); } @@ -929,7 +932,6 @@ void test_team_mulit_level_scratch_test_lambda() { count += test_team_mulit_level_scratch_loop_body< ExecSpace >( team ); }, error ); ASSERT_EQ( error, 0 ); - Kokkos::fence(); #endif #endif } diff --git a/lib/kokkos/core/unit_test/TestTeamVector.hpp b/lib/kokkos/core/unit_test/TestTeamVector.hpp index 498d156db3..45433012f9 100644 --- a/lib/kokkos/core/unit_test/TestTeamVector.hpp +++ b/lib/kokkos/core/unit_test/TestTeamVector.hpp @@ -290,17 +290,23 @@ struct functor_team_reduce { functor_team_reduce( Kokkos::View< int, Kokkos::LayoutLeft, ExecutionSpace > flag_ ) : flag( flag_ ) {} typedef typename ExecutionSpace::scratch_memory_space shmem_space; - typedef Kokkos::View< Scalar*, shmem_space, Kokkos::MemoryUnmanaged > shared_int; - unsigned team_shmem_size( int team_size ) const { return shared_int::shmem_size(team_size*13); } + typedef Kokkos::View< Scalar*, shmem_space, Kokkos::MemoryUnmanaged > shared_scalar_t; + unsigned team_shmem_size( int team_size ) const { return shared_scalar_t::shmem_size(team_size*13); } KOKKOS_INLINE_FUNCTION void operator()( typename policy_type::member_type team ) const { Scalar value = Scalar(); + shared_scalar_t shared_value(team.team_scratch(0),1); Kokkos::parallel_reduce( Kokkos::TeamThreadRange( team, 131 ), [&] ( int i, Scalar & val ) { val += i - team.league_rank() + team.league_size() + team.team_size(); }, value ); + + Kokkos::parallel_reduce( Kokkos::TeamThreadRange( team, 131 ), [&] ( int i, Scalar & val ) + { + val += i - team.league_rank() + team.league_size() + team.team_size(); + }, shared_value(0) ); team.team_barrier(); @@ -314,11 +320,20 @@ struct functor_team_reduce { if ( test != value ) { if ( team.league_rank() == 0 ) { - printf( "FAILED team_parallel_reduce %i %i %f %f %lu\n", + printf( "FAILED team_parallel_reduce %i %i %lf %lf %lu\n", team.league_rank(), team.team_rank(), static_cast( test ), static_cast( value ), sizeof( Scalar ) ); } + flag() = 1; + } + if ( test != shared_value(0) ) { + if ( team.league_rank() == 0 ) { + printf( "FAILED team_parallel_reduce with shared result %i %i %lf %lf %lu\n", + team.league_rank(), team.team_rank(), + static_cast( test ), static_cast( shared_value(0) ), sizeof( Scalar ) ); + } + flag() = 1; } }); @@ -335,12 +350,13 @@ struct functor_team_reduce_reducer { functor_team_reduce_reducer( Kokkos::View< int, Kokkos::LayoutLeft, ExecutionSpace > flag_ ) : flag( flag_ ) {} typedef typename ExecutionSpace::scratch_memory_space shmem_space; - typedef Kokkos::View< Scalar*, shmem_space, Kokkos::MemoryUnmanaged > shared_int; - unsigned team_shmem_size( int team_size ) const { return shared_int::shmem_size(team_size*13); } + typedef Kokkos::View< Scalar*, shmem_space, Kokkos::MemoryUnmanaged > shared_scalar_t; + unsigned team_shmem_size( int team_size ) const { return shared_scalar_t::shmem_size(team_size*13); } KOKKOS_INLINE_FUNCTION void operator()( typename policy_type::member_type team ) const { Scalar value = 0; + shared_scalar_t shared_value(team.team_scratch(0),1); Kokkos::parallel_reduce( Kokkos::TeamThreadRange( team, 131 ), [&] ( int i, Scalar & val ) { @@ -348,6 +364,13 @@ struct functor_team_reduce_reducer { }, Kokkos::Sum(value) ); + + Kokkos::parallel_reduce( Kokkos::TeamThreadRange( team, 131 ), [&] ( int i, Scalar & val ) + { + val += i - team.league_rank() + team.league_size() + team.team_size(); + }, + Kokkos::Sum(shared_value(0)) + ); team.team_barrier(); @@ -360,12 +383,19 @@ struct functor_team_reduce_reducer { } if ( test != value ) { - printf( "FAILED team_vector_parallel_reduce_reducer %i %i %f %f\n", + printf( "FAILED team_vector_parallel_reduce_reducer %i %i %lf %lf\n", team.league_rank(), team.team_rank(), static_cast( test ), static_cast( value ) ); flag() = 1; } + if ( test != shared_value(0) ) { + printf( "FAILED team_vector_parallel_reduce_reducer shared value %i %i %lf %lf\n", + team.league_rank(), team.team_rank(), + static_cast( test ), static_cast( shared_value(0) ) ); + + flag() = 1; + } }); } }; @@ -823,7 +853,6 @@ namespace Test { // ( modified from kokkos-tutorials/GTC2016/Exercises/ThreeLevelPar ) #if ( ! defined( KOKKOS_ENABLE_CUDA ) ) || (defined( KOKKOS_ENABLE_CUDA_LAMBDA ) && (8000 <= CUDA_VERSION)) - template< typename ScalarType, class DeviceType > class TestTripleNestedReduce { @@ -843,6 +872,14 @@ public: if( team_size > size_type(DeviceType::execution_space::concurrency())) team_size = size_type(DeviceType::execution_space::concurrency()); +#ifdef KOKKOS_ENABLE_HPX + team_size = 1; + if (!std::is_same::value) + { + team_size = 1; + } +#endif + //typedef Kokkos::LayoutLeft Layout; typedef Kokkos::LayoutRight Layout; @@ -962,6 +999,8 @@ TEST_F( TEST_CATEGORY, triple_nested_parallelism ) } #endif TestTripleNestedReduce< double, TEST_EXECSPACE >( 8192, 2048, 16, 16 ); + TestTripleNestedReduce< double, TEST_EXECSPACE >( 8192, 2048, 16, 33 ); + TestTripleNestedReduce< double, TEST_EXECSPACE >( 8192, 2048, 16, 19 ); #ifdef KOKKOS_ENABLE_ROCM // ROCm doesn't support team sizes not powers of two if (!std::is_same::value) #endif diff --git a/lib/kokkos/core/unit_test/TestTeamVectorRange.hpp b/lib/kokkos/core/unit_test/TestTeamVectorRange.hpp new file mode 100644 index 0000000000..86c8dab3ff --- /dev/null +++ b/lib/kokkos/core/unit_test/TestTeamVectorRange.hpp @@ -0,0 +1,464 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact Christian R. Trott (crtrott@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include + +#include +#include +#include +#include +#include + +namespace TestTeamVectorRange { + +struct my_complex { + double re, im; + int dummy; + + KOKKOS_INLINE_FUNCTION + my_complex() { + re = 0.0; + im = 0.0; + dummy = 0; + } + + KOKKOS_INLINE_FUNCTION + my_complex( const my_complex & src ) { + re = src.re; + im = src.im; + dummy = src.dummy; + } + + KOKKOS_INLINE_FUNCTION + my_complex & operator=( const my_complex & src ) { + re = src.re; + im = src.im; + dummy = src.dummy; + return *this ; + } + + KOKKOS_INLINE_FUNCTION + my_complex & operator=( const volatile my_complex & src ) { + re = src.re; + im = src.im; + dummy = src.dummy; + return *this ; + } + + KOKKOS_INLINE_FUNCTION + volatile my_complex & operator=( const my_complex & src ) volatile { + re = src.re; + im = src.im; + dummy = src.dummy; + return *this ; + } + + KOKKOS_INLINE_FUNCTION + volatile my_complex & operator=( const volatile my_complex & src ) volatile { + re = src.re; + im = src.im; + dummy = src.dummy; + return *this ; + } + + KOKKOS_INLINE_FUNCTION + my_complex( const volatile my_complex & src ) { + re = src.re; + im = src.im; + dummy = src.dummy; + } + + KOKKOS_INLINE_FUNCTION + my_complex( const double & val ) { + re = val; + im = 0.0; + dummy = 0; + } + + KOKKOS_INLINE_FUNCTION + my_complex & operator+=( const my_complex & src ) { + re += src.re; + im += src.im; + dummy += src.dummy; + return *this; + } + + KOKKOS_INLINE_FUNCTION + void operator+=( const volatile my_complex & src ) volatile { + re += src.re; + im += src.im; + dummy += src.dummy; + } + + KOKKOS_INLINE_FUNCTION + my_complex operator +( const my_complex & src ) { + my_complex tmp = *this; + tmp.re += src.re; + tmp.im += src.im; + tmp.dummy += src.dummy; + return tmp; + } + + KOKKOS_INLINE_FUNCTION + my_complex operator+( const volatile my_complex & src ) volatile { + my_complex tmp = *this; + tmp.re += src.re; + tmp.im += src.im; + tmp.dummy += src.dummy; + return tmp; + } + + KOKKOS_INLINE_FUNCTION + my_complex & operator*=( const my_complex & src ) { + double re_tmp = re * src.re - im * src.im; + double im_tmp = re * src.im + im * src.re; + re = re_tmp; + im = im_tmp; + dummy *= src.dummy; + return *this; + } + + KOKKOS_INLINE_FUNCTION + void operator*=( const volatile my_complex & src ) volatile { + double re_tmp = re * src.re - im * src.im; + double im_tmp = re * src.im + im * src.re; + re = re_tmp; + im = im_tmp; + dummy *= src.dummy; + } + + KOKKOS_INLINE_FUNCTION + bool operator==( const my_complex & src ) { + return ( re == src.re ) && ( im == src.im ) && ( dummy == src.dummy ); + } + + KOKKOS_INLINE_FUNCTION + bool operator!=( const my_complex & src ) { + return ( re != src.re ) || ( im != src.im ) || ( dummy != src.dummy ); + } + + KOKKOS_INLINE_FUNCTION + bool operator!=( const double & val ) { + return ( re != val ) || ( im != 0 ) || ( dummy != 0 ); + } + + KOKKOS_INLINE_FUNCTION + my_complex & operator=( const int & val ) { + re = val; + im = 0.0; + dummy = 0; + return *this; + } + + KOKKOS_INLINE_FUNCTION + my_complex & operator=( const double & val ) { + re = val; + im = 0.0; + dummy = 0; + return *this; + } + + KOKKOS_INLINE_FUNCTION + operator double() { + return re; + } +}; +} + +namespace Kokkos { +template<> +struct reduction_identity { + typedef reduction_identity t_red_ident; + KOKKOS_FORCEINLINE_FUNCTION static TestTeamVectorRange::my_complex sum() + {return TestTeamVectorRange::my_complex(t_red_ident::sum());} + KOKKOS_FORCEINLINE_FUNCTION static TestTeamVectorRange::my_complex prod() + {return TestTeamVectorRange::my_complex(t_red_ident::prod());} +}; +} + +namespace TestTeamVectorRange { + +template< typename Scalar, class ExecutionSpace > +struct functor_teamvector_for { + typedef Kokkos::TeamPolicy< ExecutionSpace > policy_type; + typedef ExecutionSpace execution_space; + + Kokkos::View< int, Kokkos::LayoutLeft, ExecutionSpace > flag; + + functor_teamvector_for( Kokkos::View< int, Kokkos::LayoutLeft, ExecutionSpace > flag_ ) : flag( flag_ ) {} + + typedef typename ExecutionSpace::scratch_memory_space shmem_space; + typedef Kokkos::View< Scalar*, shmem_space, Kokkos::MemoryUnmanaged > shared_int; + unsigned team_shmem_size( int team_size ) const { return shared_int::shmem_size(131); } + + KOKKOS_INLINE_FUNCTION + void operator()( typename policy_type::member_type team ) const { + typedef typename shmem_space::size_type size_type; + const size_type shmemSize = 131; + shared_int values = shared_int( team.team_shmem(), shmemSize ); + + if ( values.data() == nullptr || values.extent(0) < shmemSize ) { + printf( "FAILED to allocate shared memory of size %u\n", + static_cast( shmemSize ) ); + } + else { + // Initialize shared memory. + Kokkos::parallel_for( Kokkos::TeamVectorRange( team, 131 ), [&] ( int i ) { + values( i ) = 0; + }); + // Wait for all memory to be written. + team.team_barrier(); + + // Accumulate value into per thread shared memory. + // This is non blocking. + Kokkos::parallel_for( Kokkos::TeamVectorRange( team, 131 ), [&] ( int i ) + { + values( i ) += i - team.league_rank() + team.league_size() + team.team_size(); + }); + + // Wait for all memory to be written. + team.team_barrier(); + + // One thread per team executes the comparison. + Kokkos::single( Kokkos::PerTeam( team ), [&] () + { + Scalar test = 0; + Scalar value = 0; + + for ( int i = 0; i < 131; ++i ) { + test += i - team.league_rank() + team.league_size() + team.team_size(); + } + + for ( int i = 0; i < 131; ++i ) { + value += values( i ); + } + + if ( test != value ) { + printf ( "FAILED teamvector_parallel_for %i %i %f %f\n", + team.league_rank(), team.team_rank(), + static_cast( test ), static_cast( value ) ); + flag() = 1; + } + }); + } + } +}; + +template< typename Scalar, class ExecutionSpace > +struct functor_teamvector_reduce { + typedef Kokkos::TeamPolicy< ExecutionSpace > policy_type; + typedef ExecutionSpace execution_space; + + Kokkos::View< int, Kokkos::LayoutLeft, ExecutionSpace > flag; + + functor_teamvector_reduce( Kokkos::View< int, Kokkos::LayoutLeft, ExecutionSpace > flag_ ) : flag( flag_ ) {} + + typedef typename ExecutionSpace::scratch_memory_space shmem_space; + typedef Kokkos::View< Scalar*, shmem_space, Kokkos::MemoryUnmanaged > shared_scalar_t; + unsigned team_shmem_size( int team_size ) const { return shared_scalar_t::shmem_size(team_size*13); } + + KOKKOS_INLINE_FUNCTION + void operator()( typename policy_type::member_type team ) const { + Scalar value = Scalar(); + shared_scalar_t shared_value(team.team_scratch(0),1); + + Kokkos::parallel_reduce( Kokkos::TeamVectorRange( team, 131 ), [&] ( int i, Scalar & val ) + { + val += i - team.league_rank() + team.league_size() + team.team_size(); + }, shared_value(0) ); + + team.team_barrier(); + Kokkos::parallel_reduce( Kokkos::TeamVectorRange( team, 131 ), [&] ( int i, Scalar & val ) + { + val += i - team.league_rank() + team.league_size() + team.team_size(); + }, value ); + +// Kokkos::parallel_reduce( Kokkos::TeamVectorRange( team, 131 ), [&] ( int i, Scalar & val ) +// { +// val += i - team.league_rank() + team.league_size() + team.team_size(); +// }, shared_value(0) ); + + team.team_barrier(); + + Kokkos::single( Kokkos::PerTeam( team ), [&] () + { + Scalar test = 0; + + for ( int i = 0; i < 131; ++i ) { + test += i - team.league_rank() + team.league_size() + team.team_size(); + } + + if ( test != value ) { + if ( team.league_rank() == 0 ) { + printf( "FAILED teamvector_parallel_reduce %i %i %lf %lf %lu\n", + team.league_rank(), team.team_rank(), + static_cast( test ), static_cast( value ), sizeof( Scalar ) ); + } + + flag() = 1; + } + if ( test != shared_value(0) ) { + if ( team.league_rank() == 0 ) { + printf( "FAILED teamvector_parallel_reduce with shared result %i %i %lf %lf %lu\n", + team.league_rank(), team.team_rank(), + static_cast( test ), static_cast( shared_value(0) ), sizeof( Scalar ) ); + } + + flag() = 1; + } + }); + } +}; + +template< typename Scalar, class ExecutionSpace > +struct functor_teamvector_reduce_reducer { + typedef Kokkos::TeamPolicy< ExecutionSpace > policy_type; + typedef ExecutionSpace execution_space; + + Kokkos::View< int, Kokkos::LayoutLeft, ExecutionSpace > flag; + + functor_teamvector_reduce_reducer( Kokkos::View< int, Kokkos::LayoutLeft, ExecutionSpace > flag_ ) : flag( flag_ ) {} + + typedef typename ExecutionSpace::scratch_memory_space shmem_space; + typedef Kokkos::View< Scalar*, shmem_space, Kokkos::MemoryUnmanaged > shared_scalar_t; + unsigned team_shmem_size( int team_size ) const { return shared_scalar_t::shmem_size(team_size*13); } + + KOKKOS_INLINE_FUNCTION + void operator()( typename policy_type::member_type team ) const { + Scalar value = 0; + shared_scalar_t shared_value(team.team_scratch(0),1); + + Kokkos::parallel_reduce( Kokkos::TeamVectorRange( team, 131 ), [&] ( int i, Scalar & val ) + { + val += i - team.league_rank() + team.league_size() + team.team_size(); + }, + Kokkos::Sum(value) + ); + + Kokkos::parallel_reduce( Kokkos::TeamVectorRange( team, 131 ), [&] ( int i, Scalar & val ) + { + val += i - team.league_rank() + team.league_size() + team.team_size(); + }, + Kokkos::Sum(shared_value(0)) + ); + + team.team_barrier(); + + Kokkos::single( Kokkos::PerTeam( team ), [&] () + { + Scalar test = 0; + + for ( int i = 0; i < 131; ++i ) { + test += i - team.league_rank() + team.league_size() + team.team_size(); + } + + if ( test != value ) { + printf( "FAILED teamvector_parallel_reduce_reducer %i %i %lf %lf\n", + team.league_rank(), team.team_rank(), + static_cast( test ), static_cast( value ) ); + + flag() = 1; + } + if ( test != shared_value(0) ) { + printf( "FAILED teamvector_parallel_reduce_reducer shared value %i %i %lf %lf\n", + team.league_rank(), team.team_rank(), + static_cast( test ), static_cast( shared_value(0) ) ); + + flag() = 1; + } + }); + } +}; + +template< typename Scalar, class ExecutionSpace > +bool test_scalar( int nteams, int team_size, int test ) { + Kokkos::View< int, Kokkos::LayoutLeft, ExecutionSpace > d_flag( "flag" ); + typename Kokkos::View< int, Kokkos::LayoutLeft, ExecutionSpace >::HostMirror h_flag( "h_flag" ); + h_flag() = 0; + Kokkos::deep_copy( d_flag, h_flag ); + + if ( test == 0 ) { + Kokkos::parallel_for( "Test::TeamVectorFor", Kokkos::TeamPolicy< ExecutionSpace >( nteams, team_size, 8 ), + functor_teamvector_for< Scalar, ExecutionSpace >( d_flag ) ); + } + else if ( test == 1 ) { + Kokkos::parallel_for( "Test::TeamVectorReduce", Kokkos::TeamPolicy< ExecutionSpace >( nteams, team_size, 8 ), + functor_teamvector_reduce< Scalar, ExecutionSpace >( d_flag ) ); + } + else if ( test == 2 ) { + Kokkos::parallel_for( "Test::TeamVectorReduceReducer", Kokkos::TeamPolicy< ExecutionSpace >( nteams, team_size, 8 ), + functor_teamvector_reduce_reducer< Scalar, ExecutionSpace >( d_flag ) ); + } + + Kokkos::deep_copy( h_flag, d_flag ); + + return ( h_flag() == 0 ); +} + +template< class ExecutionSpace > +bool Test( int test ) { + bool passed = true; + + int team_size = 33; + if( team_size > int(ExecutionSpace::concurrency())) + team_size = int(ExecutionSpace::concurrency()); + passed = passed && test_scalar< int, ExecutionSpace >( 317, team_size, test ); + passed = passed && test_scalar< long long int, ExecutionSpace >( 317, team_size, test ); + passed = passed && test_scalar< float, ExecutionSpace >( 317, team_size, test ); + passed = passed && test_scalar< double, ExecutionSpace >( 317, team_size, test ); + passed = passed && test_scalar< my_complex, ExecutionSpace >( 317, team_size, test ); + + return passed; +} + +} // namespace TestTeamVectorRange + +namespace Test { + +TEST_F( TEST_CATEGORY, team_teamvector_range ) +{ + ASSERT_TRUE( ( TestTeamVectorRange::Test< TEST_EXECSPACE >( 0 ) ) ); + ASSERT_TRUE( ( TestTeamVectorRange::Test< TEST_EXECSPACE >( 1 ) ) ); + ASSERT_TRUE( ( TestTeamVectorRange::Test< TEST_EXECSPACE >( 2 ) ) ); +} +} diff --git a/lib/kokkos/core/unit_test/TestTile.hpp b/lib/kokkos/core/unit_test/TestTile.hpp index 704c7f9940..a58755dc9b 100644 --- a/lib/kokkos/core/unit_test/TestTile.hpp +++ b/lib/kokkos/core/unit_test/TestTile.hpp @@ -42,6 +42,9 @@ #ifndef TEST_TILE_HPP #define TEST_TILE_HPP +//======================================================================== +#ifdef KOKKOS_ENABLE_DEPRECATED_CODE + #include #include @@ -166,4 +169,8 @@ TEST_F( TEST_CATEGORY, tile_layout ) } } + +#endif // KOKKOS_ENABLE_DEPRECATED_CODE +//===================================================================== + #endif //TEST_TILE_HPP diff --git a/lib/kokkos/core/unit_test/TestViewAPI.hpp b/lib/kokkos/core/unit_test/TestViewAPI.hpp index 2ebd48cd61..e332bebff0 100644 --- a/lib/kokkos/core/unit_test/TestViewAPI.hpp +++ b/lib/kokkos/core/unit_test/TestViewAPI.hpp @@ -827,6 +827,48 @@ struct TestViewMirror ASSERT_EQ( a_org(5), a_h3(5) ); } + template< class MemoryTraits, class Space > + struct CopyUnInit { + typedef typename Kokkos::Impl::MirrorViewType::view_type mirror_view_type; + + mirror_view_type a_d; + + KOKKOS_INLINE_FUNCTION + CopyUnInit( mirror_view_type & a_d_ ) : a_d(a_d_) { + } + + KOKKOS_INLINE_FUNCTION + void operator() (const typename Space::size_type i) const { + a_d(i) = (double)(10-i); + } + + }; + + template< class MemoryTraits > + void static test_mirror_no_initialize() { + Kokkos::View< double*, Layout, Kokkos::HostSpace > a_org( "A", 10 ); + Kokkos::View< double*, Layout, Kokkos::HostSpace, MemoryTraits > a_h = a_org; + + for (int i = 0; i < 10; i++) + { + a_h(i) = (double)i; + } + auto a_d = Kokkos::create_mirror_view( DeviceType(), a_h, Kokkos::WithoutInitializing ); + + int equal_ptr_h_d = (a_h.data() == a_d.data()) ? 1 : 0; + constexpr int is_same_memspace = std::is_same< Kokkos::HostSpace, typename DeviceType::memory_space >::value ? 1 : 0; + + ASSERT_EQ( equal_ptr_h_d, is_same_memspace); + + Kokkos::parallel_for( Kokkos::RangePolicy< typename DeviceType::execution_space >( 0, int(10)), CopyUnInit< MemoryTraits, DeviceType >(a_d)); + + Kokkos::deep_copy( a_h, a_d ); + + for (int i = 0; i < 10; i++) + { + ASSERT_EQ(a_h(i), (double)(10-i)); + } + } void static testit() { test_mirror< Kokkos::MemoryTraits<0> >(); @@ -835,6 +877,8 @@ struct TestViewMirror test_mirror_view< Kokkos::MemoryTraits >(); test_mirror_copy< Kokkos::MemoryTraits<0> >(); test_mirror_copy< Kokkos::MemoryTraits >(); + test_mirror_no_initialize< Kokkos::MemoryTraits<0> >(); + test_mirror_no_initialize< Kokkos::MemoryTraits >(); } }; @@ -865,7 +909,7 @@ public: } static void run_test_view_operator_a() { - {TestViewOperator< T, device > f; Kokkos::parallel_for(int(N0),f);} + {TestViewOperator< T, device > f; Kokkos::parallel_for(int(N0),f); Kokkos::fence();} #ifndef KOKKOS_ENABLE_OPENMPTARGET TestViewOperator_LeftAndRight< int[2][3][4][2][3][4], device >f6; f6.testit(); TestViewOperator_LeftAndRight< int[2][3][4][2][3], device >f5; f5.testit(); diff --git a/lib/kokkos/core/unit_test/TestViewAPI_e.hpp b/lib/kokkos/core/unit_test/TestViewAPI_e.hpp index efb34a64cc..76815dc112 100644 --- a/lib/kokkos/core/unit_test/TestViewAPI_e.hpp +++ b/lib/kokkos/core/unit_test/TestViewAPI_e.hpp @@ -194,6 +194,7 @@ inline void test_anonymous_space() { d_anon_dyn_view(j) += 42; } }); + Kokkos::fence(); #endif } @@ -201,4 +202,45 @@ TEST_F( TEST_CATEGORY, anonymous_space ) { test_anonymous_space(); } + +template +struct TestViewOverloadResolution { + // Overload based on value_type and rank + static int foo(Kokkos::View a) { + return 1; + } + static int foo(Kokkos::View a) { + return 2; + } + static int foo(Kokkos::View a) { + return 3; + } + + // Overload based on compile time dimensions + static int bar(Kokkos::View a) { + return 4; + } + static int bar(Kokkos::View a) { + return 5; + } + + static void test_function_overload() { + Kokkos::View a("A",10,3); + int data_type_1 = foo(a); + int data_type_3 = foo(Kokkos::View(a)); + Kokkos::View b("B",10,3,4); + int data_type_2 = foo(b); + Kokkos::View c(a); + int static_extent = bar(c); + ASSERT_EQ(1,data_type_1); + ASSERT_EQ(3,data_type_2); + ASSERT_EQ(1,data_type_3); + ASSERT_EQ(4,static_extent); + } +}; + +TEST_F( TEST_CATEGORY, view_overload_resolution ) +{ + TestViewOverloadResolution::test_function_overload(); +} } diff --git a/lib/kokkos/core/unit_test/TestViewMapping_a.hpp b/lib/kokkos/core/unit_test/TestViewMapping_a.hpp index 03d5e501b9..69247902cd 100644 --- a/lib/kokkos/core/unit_test/TestViewMapping_a.hpp +++ b/lib/kokkos/core/unit_test/TestViewMapping_a.hpp @@ -1012,12 +1012,14 @@ void test_view_mapping() ASSERT_EQ( a.use_count(), 1 ); ASSERT_EQ( b.use_count(), 0 ); -#if !defined( KOKKOS_ENABLE_CUDA_LAMBDA ) && !defined( KOKKOS_ENABLE_ROCM ) +// TODO: a.use_count() and x.use_count() are 0 with the asynchronous HPX backend. Why? +#if !defined( KOKKOS_ENABLE_CUDA_LAMBDA ) && !defined( KOKKOS_ENABLE_ROCM ) && \ + !(defined( KOKKOS_ENABLE_HPX ) && defined( KOKKOS_ENABLE_HPX_ASYNC_DISPATCH )) // Cannot launch host lambda when CUDA lambda is enabled. typedef typename Kokkos::Impl::HostMirror< Space >::Space::execution_space host_exec_space; - Kokkos::parallel_for( Kokkos::RangePolicy< host_exec_space >( 0, 10 ), KOKKOS_LAMBDA ( int i ) { + Kokkos::parallel_for( Kokkos::RangePolicy< host_exec_space >( 0, 10 ), KOKKOS_LAMBDA ( int ) { // 'a' is captured by copy, and the capture mechanism converts 'a' to an // unmanaged copy. When the parallel dispatch accepts a move for the // lambda, this count should become 1. diff --git a/lib/kokkos/core/unit_test/TestViewMapping_b.hpp b/lib/kokkos/core/unit_test/TestViewMapping_b.hpp index 7c7807f60d..36fc0461a4 100644 --- a/lib/kokkos/core/unit_test/TestViewMapping_b.hpp +++ b/lib/kokkos/core/unit_test/TestViewMapping_b.hpp @@ -173,12 +173,12 @@ void test_view_mapping_class_value() { typedef typename Space::execution_space ExecSpace; - ExecSpace::fence(); + ExecSpace().fence(); { Kokkos::View< MappingClassValueType, ExecSpace > a( "a" ); - ExecSpace::fence(); + ExecSpace().fence(); } - ExecSpace::fence(); + ExecSpace().fence(); } TEST_F( TEST_CATEGORY , view_mapping_class_value ) diff --git a/lib/kokkos/core/unit_test/TestViewMapping_subview.hpp b/lib/kokkos/core/unit_test/TestViewMapping_subview.hpp index 0c2d22e013..62bd582871 100644 --- a/lib/kokkos/core/unit_test/TestViewMapping_subview.hpp +++ b/lib/kokkos/core/unit_test/TestViewMapping_subview.hpp @@ -201,6 +201,7 @@ struct TestViewMappingSubview long error_count = -1; Kokkos::parallel_reduce( Kokkos::RangePolicy< ExecSpace >( 0, 1 ), *this, error_count ); + ASSERT_EQ( error_count, 0 ); } }; diff --git a/lib/kokkos/core/unit_test/TestViewSubview.hpp b/lib/kokkos/core/unit_test/TestViewSubview.hpp index 207fbb148d..bffc77181f 100644 --- a/lib/kokkos/core/unit_test/TestViewSubview.hpp +++ b/lib/kokkos/core/unit_test/TestViewSubview.hpp @@ -48,6 +48,86 @@ #include #include #include +#include + +// TODO @refactoring move this to somewhere common + +//------------------------------------------------------------------------------ + +template +struct _kokkos____________________static_test_failure_____; + +template +struct static_predicate_message {}; + +//------------------------------------------------------------------------------ + +template class, class...> +struct static_assert_predicate_true_impl; + +template